50#include "nl-default.h"
52#include <netlink/xfrm/selector.h>
57 struct nl_addr* daddr;
58 struct nl_addr* saddr;
78 fprintf(stderr,
"BUG: %s:%d\n", __FILE__, __LINE__);
149 if (sel->refcnt == 1)
162 return sel->refcnt > 1;
185 ((a->sport & a->sport_mask) != (b->sport & b->sport_mask)) ||
186 ((a->dport & a->dport_mask) != (b->dport & b->dport_mask)) ||
187 (a->family != b->family) ||
188 (a->proto && (a->proto != b->proto)) ||
189 (a->ifindex && a->ifindex != b->ifindex) ||
190 (a->user != b->user))
199 char dst[INET6_ADDRSTRLEN+5], src[INET6_ADDRSTRLEN+5];
202 nl_dump_line(p,
"\t\tsrc %s dst %s family: %s\n",
nl_addr2str(sel->saddr, src,
sizeof(src)),
203 nl_addr2str (sel->daddr, dst, sizeof (dst)), nl_af2str (sel->family, buf, 128));
204 nl_dump_line (p,
"\t\tsrc port/mask: %d/%d dst port/mask: %d/%d\n",
205 sel->dport, sel->dport_mask, sel->sport, sel->sport_mask);
206 nl_dump_line (p,
"\t\tprotocol: %s ifindex: %u user: %u\n",
207 nl_ip_proto2str (sel->proto, buf,
sizeof(buf)), sel->ifindex, sel->user);
219struct nl_addr* xfrmnl_sel_get_daddr (
struct xfrmnl_sel* sel)
224int xfrmnl_sel_set_daddr (
struct xfrmnl_sel* sel,
struct nl_addr* addr)
235struct nl_addr* xfrmnl_sel_get_saddr (
struct xfrmnl_sel* sel)
240int xfrmnl_sel_set_saddr (
struct xfrmnl_sel* sel,
struct nl_addr* addr)
251int xfrmnl_sel_get_dport (
struct xfrmnl_sel* sel)
256int xfrmnl_sel_set_dport (
struct xfrmnl_sel* sel,
unsigned int dport)
263int xfrmnl_sel_get_dportmask (
struct xfrmnl_sel* sel)
265 return sel->dport_mask;
268int xfrmnl_sel_set_dportmask (
struct xfrmnl_sel* sel,
unsigned int dport_mask)
270 sel->dport_mask = dport_mask;
275int xfrmnl_sel_get_sport (
struct xfrmnl_sel* sel)
280int xfrmnl_sel_set_sport (
struct xfrmnl_sel* sel,
unsigned int sport)
287int xfrmnl_sel_get_sportmask (
struct xfrmnl_sel* sel)
289 return sel->sport_mask;
292int xfrmnl_sel_set_sportmask (
struct xfrmnl_sel* sel,
unsigned int sport_mask)
294 sel->sport_mask = sport_mask;
299int xfrmnl_sel_get_family(
struct xfrmnl_sel *sel)
304int xfrmnl_sel_set_family(
struct xfrmnl_sel *sel,
unsigned int family)
306 sel->family = family;
311int xfrmnl_sel_get_prefixlen_d (
struct xfrmnl_sel* sel)
313 return sel->prefixlen_d;
316int xfrmnl_sel_set_prefixlen_d (
struct xfrmnl_sel* sel,
unsigned int prefixlen)
318 sel->prefixlen_d = prefixlen;
323int xfrmnl_sel_get_prefixlen_s (
struct xfrmnl_sel* sel)
325 return sel->prefixlen_s;
328int xfrmnl_sel_set_prefixlen_s (
struct xfrmnl_sel* sel,
unsigned int prefixlen)
330 sel->prefixlen_s = prefixlen;
335int xfrmnl_sel_get_proto (
struct xfrmnl_sel* sel)
340int xfrmnl_sel_set_proto (
struct xfrmnl_sel* sel,
unsigned int protocol)
342 sel->proto = protocol;
347int xfrmnl_sel_get_ifindex (
struct xfrmnl_sel* sel)
352int xfrmnl_sel_set_ifindex (
struct xfrmnl_sel* sel,
unsigned int ifindex)
354 sel->ifindex = ifindex;
359int xfrmnl_sel_get_userid (
struct xfrmnl_sel* sel)
364int xfrmnl_sel_set_userid (
struct xfrmnl_sel* sel,
unsigned int userid)
int xfrmnl_sel_shared(struct xfrmnl_sel *sel)
Check whether an selector object is shared.
int xfrmnl_sel_cmp(struct xfrmnl_sel *a, struct xfrmnl_sel *b)
Compares two selector objects.
struct xfrmnl_sel * xfrmnl_sel_alloc()
Allocate new selector object.
struct xfrmnl_sel * xfrmnl_sel_clone(struct xfrmnl_sel *sel)
Clone existing selector 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.