34 #ifndef NETLINK_XFRM_SA_H_
35 #define NETLINK_XFRM_SA_H_
37 #include <netlink/netlink.h>
38 #include <netlink/cache.h>
39 #include <netlink/addr.h>
40 #include <linux/xfrm.h>
48 extern struct xfrmnl_sa* xfrmnl_sa_alloc(
void);
49 extern void xfrmnl_sa_put(
struct xfrmnl_sa *);
51 extern int xfrmnl_sa_alloc_cache(
struct nl_sock *,
struct nl_cache **);
52 extern struct xfrmnl_sa* xfrmnl_sa_get(
struct nl_cache*,
struct nl_addr*,
unsigned int,
unsigned int);
54 extern int xfrmnl_sa_parse(
struct nlmsghdr *n,
struct xfrmnl_sa **result);
56 extern int xfrmnl_sa_build_get_request(
struct nl_addr*,
unsigned int,
unsigned int,
57 unsigned int,
unsigned int,
struct nl_msg **);
58 extern int xfrmnl_sa_get_kernel(
struct nl_sock*,
struct nl_addr*,
unsigned int,
59 unsigned int,
unsigned int,
unsigned int,
struct xfrmnl_sa**);
61 extern int xfrmnl_sa_build_add_request(
struct xfrmnl_sa*,
int,
struct nl_msg **);
62 extern int xfrmnl_sa_add(
struct nl_sock*,
struct xfrmnl_sa*,
int);
64 extern int xfrmnl_sa_build_update_request(
struct xfrmnl_sa*,
int,
struct nl_msg **);
65 extern int xfrmnl_sa_update(
struct nl_sock*,
struct xfrmnl_sa*,
int);
67 extern int xfrmnl_sa_build_delete_request(
struct xfrmnl_sa*,
int,
struct nl_msg **);
68 extern int xfrmnl_sa_delete(
struct nl_sock*,
struct xfrmnl_sa*,
int);
70 extern struct xfrmnl_sel* xfrmnl_sa_get_sel (
struct xfrmnl_sa*);
71 extern int xfrmnl_sa_set_sel (
struct xfrmnl_sa*,
struct xfrmnl_sel*);
73 extern struct nl_addr* xfrmnl_sa_get_daddr (
struct xfrmnl_sa*);
74 extern int xfrmnl_sa_set_daddr (
struct xfrmnl_sa*,
struct nl_addr*);
76 extern int xfrmnl_sa_get_spi (
struct xfrmnl_sa*);
77 extern int xfrmnl_sa_set_spi (
struct xfrmnl_sa*,
unsigned int);
79 extern int xfrmnl_sa_get_proto (
struct xfrmnl_sa*);
80 extern int xfrmnl_sa_set_proto (
struct xfrmnl_sa*,
unsigned int);
82 extern struct nl_addr* xfrmnl_sa_get_saddr (
struct xfrmnl_sa*);
83 extern int xfrmnl_sa_set_saddr (
struct xfrmnl_sa*,
struct nl_addr*);
85 extern struct xfrmnl_ltime_cfg* xfrmnl_sa_get_lifetime_cfg (
struct xfrmnl_sa*);
86 extern int xfrmnl_sa_set_lifetime_cfg (
struct xfrmnl_sa*,
struct xfrmnl_ltime_cfg*);
88 extern int xfrmnl_sa_get_curlifetime (
struct xfrmnl_sa*,
unsigned long long int*,
89 unsigned long long int*,
unsigned long long int*,
90 unsigned long long int*);
92 extern int xfrmnl_sa_get_stats (
struct xfrmnl_sa*,
unsigned long long int*,
93 unsigned long long int*,
unsigned long long int*);
95 extern int xfrmnl_sa_get_seq (
struct xfrmnl_sa*);
97 extern int xfrmnl_sa_get_reqid (
struct xfrmnl_sa*);
98 extern int xfrmnl_sa_set_reqid (
struct xfrmnl_sa*,
unsigned int);
100 extern int xfrmnl_sa_get_family (
struct xfrmnl_sa*);
101 extern int xfrmnl_sa_set_family (
struct xfrmnl_sa*,
unsigned int);
103 extern int xfrmnl_sa_get_mode (
struct xfrmnl_sa*);
104 extern int xfrmnl_sa_set_mode (
struct xfrmnl_sa*,
unsigned int);
106 extern int xfrmnl_sa_get_replay_window (
struct xfrmnl_sa*);
107 extern int xfrmnl_sa_set_replay_window (
struct xfrmnl_sa*,
unsigned int);
109 extern int xfrmnl_sa_get_flags (
struct xfrmnl_sa*);
110 extern int xfrmnl_sa_set_flags (
struct xfrmnl_sa*,
unsigned int);
112 extern int xfrmnl_sa_get_aead_params (
struct xfrmnl_sa*,
char*,
unsigned int*,
113 unsigned int*,
char*);
114 extern int xfrmnl_sa_set_aead_params (
struct xfrmnl_sa*,
char*,
unsigned int,
115 unsigned int,
char*);
117 extern int xfrmnl_sa_get_auth_params (
struct xfrmnl_sa*,
char*,
unsigned int*,
118 unsigned int*,
char*);
119 extern int xfrmnl_sa_set_auth_params (
struct xfrmnl_sa*,
char*,
unsigned int,
120 unsigned int,
char*);
122 extern int xfrmnl_sa_get_crypto_params (
struct xfrmnl_sa*,
char*,
unsigned int*,
char*);
123 extern int xfrmnl_sa_set_crypto_params (
struct xfrmnl_sa*,
char*,
unsigned int,
char*);
125 extern int xfrmnl_sa_get_comp_params (
struct xfrmnl_sa*,
char*,
unsigned int*,
char*);
126 extern int xfrmnl_sa_set_comp_params (
struct xfrmnl_sa*,
char*,
unsigned int,
char*);
128 extern int xfrmnl_sa_get_encap_tmpl (
struct xfrmnl_sa*,
unsigned int*,
unsigned int*,
129 unsigned int*,
struct nl_addr**);
130 extern int xfrmnl_sa_set_encap_tmpl (
struct xfrmnl_sa*,
unsigned int,
unsigned int,
131 unsigned int,
struct nl_addr*);
133 extern int xfrmnl_sa_get_tfcpad (
struct xfrmnl_sa*);
134 extern int xfrmnl_sa_set_tfcpad (
struct xfrmnl_sa*,
unsigned int);
136 extern struct nl_addr* xfrmnl_sa_get_coaddr (
struct xfrmnl_sa*);
137 extern int xfrmnl_sa_set_coaddr (
struct xfrmnl_sa*,
struct nl_addr*);
139 extern int xfrmnl_sa_get_mark (
struct xfrmnl_sa*,
unsigned int*,
unsigned int*);
140 extern int xfrmnl_sa_set_mark (
struct xfrmnl_sa*,
unsigned int,
unsigned int);
142 extern int xfrmnl_sa_get_sec_ctx (
struct xfrmnl_sa*,
unsigned int,
unsigned int,
143 unsigned int,
unsigned int,
char*);
144 extern int xfrmnl_sa_set_sec_ctx (
struct xfrmnl_sa*,
unsigned int,
unsigned int,
145 unsigned int,
unsigned int,
char*);
147 extern int xfrmnl_sa_get_replay_maxage (
struct xfrmnl_sa*);
148 extern int xfrmnl_sa_set_replay_maxage (
struct xfrmnl_sa*,
unsigned int);
150 extern int xfrmnl_sa_get_replay_maxdiff (
struct xfrmnl_sa*);
151 extern int xfrmnl_sa_set_replay_maxdiff (
struct xfrmnl_sa*,
unsigned int);
153 extern int xfrmnl_sa_get_replay_state (
struct xfrmnl_sa*,
unsigned int*,
154 unsigned int*,
unsigned int*);
155 extern int xfrmnl_sa_set_replay_state (
struct xfrmnl_sa*,
unsigned int,
156 unsigned int,
unsigned int);
158 extern int xfrmnl_sa_get_replay_state_esn (
struct xfrmnl_sa*,
unsigned int*,
unsigned int*,
159 unsigned int*,
unsigned int*,
unsigned int*,
160 unsigned int*,
unsigned int*);
161 extern int xfrmnl_sa_set_replay_state_esn (
struct xfrmnl_sa*,
unsigned int,
unsigned int,
162 unsigned int,
unsigned int,
unsigned int,
163 unsigned int,
unsigned int*);
165 extern int xfrmnl_sa_is_expiry_reached (
struct xfrmnl_sa*);
166 extern int xfrmnl_sa_is_hardexpiry_reached (
struct xfrmnl_sa*);
168 extern char* xfrmnl_sa_flags2str(
int,
char *,
size_t);
169 extern int xfrmnl_sa_str2flag(
const char *);
171 extern char* xfrmnl_sa_mode2str(
int,
char *,
size_t);
172 extern int xfrmnl_sa_str2mode(
const char *);