50#include "nl-default.h"
52#include <netlink/xfrm/template.h>
55#include "nl-priv-dynamic-core/nl-core.h"
84 nl_init_list_head(&utmpl->utmpl_list);
116static const struct trans_tbl tmpl_modes[] = {
117 __ADD(XFRM_MODE_TRANSPORT, transport),
118 __ADD(XFRM_MODE_TUNNEL, tunnel),
119 __ADD(XFRM_MODE_ROUTEOPTIMIZATION, route optimization),
120 __ADD(XFRM_MODE_IN_TRIGGER, in trigger),
121 __ADD(XFRM_MODE_BEET, beet),
124char* xfrmnl_user_tmpl_mode2str(
int mode,
char *buf,
size_t len)
126 return __type2str (mode, buf, len, tmpl_modes, ARRAY_SIZE(tmpl_modes));
129int xfrmnl_user_tmpl_str2mode(
const char *name)
131 return __str2type (name, tmpl_modes, ARRAY_SIZE(tmpl_modes));
152 (a->id.spi != b->id.spi) ||
153 (a->id.proto && (a->id.proto != b->id.proto)) ||
155 (a->family != b->family) ||
156 (a->reqid != b->reqid) ||
157 (a->mode != b->mode) ||
158 (a->share != b->share) ||
159 (a->aalgos != b->aalgos) ||
160 (a->ealgos != b->ealgos) ||
161 (a->calgos != b->calgos))
170 char dst[INET6_ADDRSTRLEN+5], src[INET6_ADDRSTRLEN+5];
173 nl_dump_line(p,
"\t\tsrc %s dst %s family: %s \n",
176 nl_af2str (tmpl->family, buf, 128));
177 nl_dump_line (p,
"\t\tprotocol: %s spi: 0x%x reqid: %u mode: %s\n",
178 nl_ip_proto2str (tmpl->id.proto, buf,
sizeof(buf)),
179 tmpl->id.spi, tmpl->reqid,
180 xfrmnl_user_tmpl_mode2str (tmpl->mode, buf, 128));
181 nl_dump_line (p,
"\t\tAuth Algo: 0x%x Crypto Algo: 0x%x Compr Algo: 0x%x\n",
182 tmpl->aalgos, tmpl->ealgos, tmpl->calgos);
195 return utmpl->id.daddr;
198int xfrmnl_user_tmpl_set_daddr (
struct xfrmnl_user_tmpl* utmpl,
struct nl_addr* addr)
204 utmpl->id.daddr = addr;
211 return utmpl->id.spi;
214int xfrmnl_user_tmpl_set_spi (
struct xfrmnl_user_tmpl* utmpl,
unsigned int spi)
223 return utmpl->id.proto;
226int xfrmnl_user_tmpl_set_proto (
struct xfrmnl_user_tmpl* utmpl,
unsigned int protocol)
228 utmpl->id.proto = protocol;
235 return utmpl->family;
238int xfrmnl_user_tmpl_set_family(
struct xfrmnl_user_tmpl *utmpl,
unsigned int family)
240 utmpl->family = family;
250int xfrmnl_user_tmpl_set_saddr (
struct xfrmnl_user_tmpl* utmpl,
struct nl_addr* addr)
266int xfrmnl_user_tmpl_set_reqid (
struct xfrmnl_user_tmpl* utmpl,
unsigned int reqid)
268 utmpl->reqid = reqid;
278int xfrmnl_user_tmpl_set_mode (
struct xfrmnl_user_tmpl* utmpl,
unsigned int mode)
290int xfrmnl_user_tmpl_set_share (
struct xfrmnl_user_tmpl* utmpl,
unsigned int share)
292 utmpl->share = share;
299 return utmpl->optional;
302int xfrmnl_user_tmpl_set_optional (
struct xfrmnl_user_tmpl* utmpl,
unsigned int optional)
304 utmpl->optional = optional;
311 return utmpl->aalgos;
314int xfrmnl_user_tmpl_set_aalgos (
struct xfrmnl_user_tmpl* utmpl,
unsigned int aalgos)
316 utmpl->aalgos = aalgos;
323 return utmpl->ealgos;
326int xfrmnl_user_tmpl_set_ealgos (
struct xfrmnl_user_tmpl* utmpl,
unsigned int ealgos)
328 utmpl->ealgos = ealgos;
335 return utmpl->calgos;
338int xfrmnl_user_tmpl_set_calgos (
struct xfrmnl_user_tmpl* utmpl,
unsigned int calgos)
340 utmpl->calgos = calgos;
struct xfrmnl_user_tmpl * xfrmnl_user_tmpl_clone(struct xfrmnl_user_tmpl *utmpl)
Clone existing user template object.
int xfrmnl_user_tmpl_cmp(struct xfrmnl_user_tmpl *a, struct xfrmnl_user_tmpl *b)
Compares two user template objects.
struct xfrmnl_user_tmpl * xfrmnl_user_tmpl_alloc()
Allocate new user template object.
struct nl_addr * nl_addr_get(struct nl_addr *addr)
Increase the reference counter of an abstract address.
struct nl_addr * nl_addr_clone(const struct nl_addr *addr)
Clone existing abstract address object.
int nl_addr_cmp_prefix(const struct nl_addr *a, const struct nl_addr *b)
Compare the prefix of two abstract addresses.
char * nl_addr2str(const struct nl_addr *addr, char *buf, size_t size)
Convert abstract address object to character string.
void nl_addr_put(struct nl_addr *addr)
Decrease the reference counter of an abstract address.