libnl 3.7.0

Allocation/Freeing

struct rtnl_rule * rtnl_rule_alloc (void)
 
void rtnl_rule_put (struct rtnl_rule *rule)
 

Cache Management

int rtnl_rule_alloc_cache (struct nl_sock *sock, int family, struct nl_cache **result)
 Build a rule cache including all rules currently configured in the kernel. More...
 

Rule Addition

int rtnl_rule_build_add_request (struct rtnl_rule *tmpl, int flags, struct nl_msg **result)
 Build netlink request message to add a new rule. More...
 
int rtnl_rule_add (struct nl_sock *sk, struct rtnl_rule *tmpl, int flags)
 Add a new rule. More...
 

Rule Deletion

int rtnl_rule_build_delete_request (struct rtnl_rule *rule, int flags, struct nl_msg **result)
 Build a netlink request message to delete a rule. More...
 
int rtnl_rule_delete (struct nl_sock *sk, struct rtnl_rule *rule, int flags)
 Delete a rule. More...
 

Attribute Modification

void rtnl_rule_set_family (struct rtnl_rule *rule, int family)
 
int rtnl_rule_get_family (struct rtnl_rule *rule)
 
void rtnl_rule_set_prio (struct rtnl_rule *rule, uint32_t prio)
 
uint32_t rtnl_rule_get_prio (struct rtnl_rule *rule)
 
void rtnl_rule_set_mark (struct rtnl_rule *rule, uint32_t mark)
 
uint32_t rtnl_rule_get_mark (struct rtnl_rule *rule)
 
void rtnl_rule_set_mask (struct rtnl_rule *rule, uint32_t mask)
 
uint32_t rtnl_rule_get_mask (struct rtnl_rule *rule)
 
void rtnl_rule_set_table (struct rtnl_rule *rule, uint32_t table)
 
uint32_t rtnl_rule_get_table (struct rtnl_rule *rule)
 
void rtnl_rule_set_dsfield (struct rtnl_rule *rule, uint8_t dsfield)
 
uint8_t rtnl_rule_get_dsfield (struct rtnl_rule *rule)
 
int rtnl_rule_set_src (struct rtnl_rule *rule, struct nl_addr *src)
 
struct nl_addr * rtnl_rule_get_src (struct rtnl_rule *rule)
 
int rtnl_rule_set_dst (struct rtnl_rule *rule, struct nl_addr *dst)
 
struct nl_addr * rtnl_rule_get_dst (struct rtnl_rule *rule)
 
int rtnl_rule_set_iif (struct rtnl_rule *rule, const char *dev)
 
char * rtnl_rule_get_iif (struct rtnl_rule *rule)
 
int rtnl_rule_set_oif (struct rtnl_rule *rule, const char *dev)
 
char * rtnl_rule_get_oif (struct rtnl_rule *rule)
 
void rtnl_rule_set_action (struct rtnl_rule *rule, uint8_t action)
 
uint8_t rtnl_rule_get_action (struct rtnl_rule *rule)
 
void rtnl_rule_set_l3mdev (struct rtnl_rule *rule, int value)
 Set l3mdev value of the rule (FRA_L3MDEV) More...
 
int rtnl_rule_get_l3mdev (struct rtnl_rule *rule)
 Get l3mdev value of the rule (FRA_L3MDEV) More...
 
int rtnl_rule_set_protocol (struct rtnl_rule *rule, uint8_t protocol)
 
int rtnl_rule_get_protocol (struct rtnl_rule *rule, uint8_t *protocol)
 
int rtnl_rule_set_ipproto (struct rtnl_rule *rule, uint8_t ip_proto)
 
int rtnl_rule_get_ipproto (struct rtnl_rule *rule, uint8_t *ip_proto)
 
int rtnl_rule_set_sport (struct rtnl_rule *rule, uint16_t sport)
 
int rtnl_rule_set_sport_range (struct rtnl_rule *rule, uint16_t start, uint16_t end)
 
int rtnl_rule_get_sport (struct rtnl_rule *rule, uint16_t *start, uint16_t *end)
 
int rtnl_rule_set_dport (struct rtnl_rule *rule, uint16_t dport)
 
int rtnl_rule_set_dport_range (struct rtnl_rule *rule, uint16_t start, uint16_t end)
 
int rtnl_rule_get_dport (struct rtnl_rule *rule, uint16_t *start, uint16_t *end)
 
void rtnl_rule_set_realms (struct rtnl_rule *rule, uint32_t realms)
 
uint32_t rtnl_rule_get_realms (struct rtnl_rule *rule)
 
void rtnl_rule_set_goto (struct rtnl_rule *rule, uint32_t ref)
 
uint32_t rtnl_rule_get_goto (struct rtnl_rule *rule)
 

Detailed Description

Function Documentation

◆ rtnl_rule_alloc()

struct rtnl_rule * rtnl_rule_alloc ( void  )

Definition at line 371 of file rule.c.

◆ rtnl_rule_put()

void rtnl_rule_put ( struct rtnl_rule *  rule)

Definition at line 376 of file rule.c.

◆ rtnl_rule_alloc_cache()

int rtnl_rule_alloc_cache ( struct nl_sock *  sock,
int  family,
struct nl_cache **  result 
)

Build a rule cache including all rules currently configured in the kernel.

Parameters
sockNetlink socket.
familyAddress family or AF_UNSPEC.
resultPointer to store resulting cache.

Allocates a new rule cache, initializes it properly and updates it to include all rules currently configured in the kernel.

Returns
0 on success or a negative error code.

Definition at line 399 of file rule.c.

References nl_cache_alloc(), and nl_cache_refill().

+ Here is the call graph for this function:

◆ rtnl_rule_build_add_request()

int rtnl_rule_build_add_request ( struct rtnl_rule *  tmpl,
int  flags,
struct nl_msg **  result 
)

Build netlink request message to add a new rule.

Parameters
tmpltemplate with data of new rule
flagsadditional netlink message flags
resultResult pointer

Builds a new netlink message requesting a addition of a new rule. The netlink message header isn't fully equipped with all relevant fields and must thus be sent out via nl_send_auto_complete() or supplemented as needed. tmpl must contain the attributes of the new address set via rtnl_rule_set_* functions.

Returns
0 on success or a negative error code.

Definition at line 524 of file rule.c.

Referenced by rtnl_rule_add().

+ Here is the caller graph for this function:

◆ rtnl_rule_add()

int rtnl_rule_add ( struct nl_sock *  sk,
struct rtnl_rule *  tmpl,
int  flags 
)

Add a new rule.

Parameters
skNetlink socket.
tmpltemplate with requested changes
flagsadditional netlink message flags

Builds a netlink message by calling rtnl_rule_build_add_request(), sends the request to the kernel and waits for the next ACK to be received and thus blocks until the request has been fullfilled.

Returns
0 on success or a negative error if an error occured.

Definition at line 543 of file rule.c.

References nl_send_auto_complete(), nlmsg_free(), and rtnl_rule_build_add_request().

+ Here is the call graph for this function:

◆ rtnl_rule_build_delete_request()

int rtnl_rule_build_delete_request ( struct rtnl_rule *  rule,
int  flags,
struct nl_msg **  result 
)

Build a netlink request message to delete a rule.

Parameters
rulerule to delete
flagsadditional netlink message flags
resultResult pointer

Builds a new netlink message requesting a deletion of a rule. The netlink message header isn't fully equipped with all relevant fields and must thus be sent out via nl_send_auto_complete() or supplemented as needed. rule must point to an existing address.

Returns
0 on success or a negative error code.

Definition at line 580 of file rule.c.

Referenced by rtnl_rule_delete().

+ Here is the caller graph for this function:

◆ rtnl_rule_delete()

int rtnl_rule_delete ( struct nl_sock *  sk,
struct rtnl_rule *  rule,
int  flags 
)

Delete a rule.

Parameters
skNetlink socket.
rulerule to delete
flagsadditional netlink message flags

Builds a netlink message by calling rtnl_rule_build_delete_request(), sends the request to the kernel and waits for the next ACK to be received and thus blocks until the request has been fullfilled.

Returns
0 on success or a negative error if an error occured.

Definition at line 598 of file rule.c.

References nl_send_auto_complete(), nlmsg_free(), and rtnl_rule_build_delete_request().

+ Here is the call graph for this function:

◆ rtnl_rule_set_family()

void rtnl_rule_set_family ( struct rtnl_rule *  rule,
int  family 
)

Definition at line 621 of file rule.c.

◆ rtnl_rule_get_family()

int rtnl_rule_get_family ( struct rtnl_rule *  rule)

Definition at line 627 of file rule.c.

◆ rtnl_rule_set_prio()

void rtnl_rule_set_prio ( struct rtnl_rule *  rule,
uint32_t  prio 
)

Definition at line 635 of file rule.c.

◆ rtnl_rule_get_prio()

uint32_t rtnl_rule_get_prio ( struct rtnl_rule *  rule)

Definition at line 641 of file rule.c.

◆ rtnl_rule_set_mark()

void rtnl_rule_set_mark ( struct rtnl_rule *  rule,
uint32_t  mark 
)

Definition at line 646 of file rule.c.

◆ rtnl_rule_get_mark()

uint32_t rtnl_rule_get_mark ( struct rtnl_rule *  rule)

Definition at line 652 of file rule.c.

◆ rtnl_rule_set_mask()

void rtnl_rule_set_mask ( struct rtnl_rule *  rule,
uint32_t  mask 
)

Definition at line 657 of file rule.c.

◆ rtnl_rule_get_mask()

uint32_t rtnl_rule_get_mask ( struct rtnl_rule *  rule)

Definition at line 663 of file rule.c.

◆ rtnl_rule_set_table()

void rtnl_rule_set_table ( struct rtnl_rule *  rule,
uint32_t  table 
)

Definition at line 668 of file rule.c.

◆ rtnl_rule_get_table()

uint32_t rtnl_rule_get_table ( struct rtnl_rule *  rule)

Definition at line 674 of file rule.c.

◆ rtnl_rule_set_dsfield()

void rtnl_rule_set_dsfield ( struct rtnl_rule *  rule,
uint8_t  dsfield 
)

Definition at line 679 of file rule.c.

◆ rtnl_rule_get_dsfield()

uint8_t rtnl_rule_get_dsfield ( struct rtnl_rule *  rule)

Definition at line 685 of file rule.c.

◆ rtnl_rule_set_src()

int rtnl_rule_set_src ( struct rtnl_rule *  rule,
struct nl_addr *  src 
)

Definition at line 710 of file rule.c.

◆ rtnl_rule_get_src()

struct nl_addr * rtnl_rule_get_src ( struct rtnl_rule *  rule)

Definition at line 715 of file rule.c.

◆ rtnl_rule_set_dst()

int rtnl_rule_set_dst ( struct rtnl_rule *  rule,
struct nl_addr *  dst 
)

Definition at line 720 of file rule.c.

◆ rtnl_rule_get_dst()

struct nl_addr * rtnl_rule_get_dst ( struct rtnl_rule *  rule)

Definition at line 725 of file rule.c.

◆ rtnl_rule_set_iif()

int rtnl_rule_set_iif ( struct rtnl_rule *  rule,
const char *  dev 
)

Definition at line 730 of file rule.c.

◆ rtnl_rule_get_iif()

char * rtnl_rule_get_iif ( struct rtnl_rule *  rule)

Definition at line 740 of file rule.c.

◆ rtnl_rule_set_oif()

int rtnl_rule_set_oif ( struct rtnl_rule *  rule,
const char *  dev 
)

Definition at line 748 of file rule.c.

◆ rtnl_rule_get_oif()

char * rtnl_rule_get_oif ( struct rtnl_rule *  rule)

Definition at line 758 of file rule.c.

◆ rtnl_rule_set_action()

void rtnl_rule_set_action ( struct rtnl_rule *  rule,
uint8_t  action 
)

Definition at line 766 of file rule.c.

◆ rtnl_rule_get_action()

uint8_t rtnl_rule_get_action ( struct rtnl_rule *  rule)

Definition at line 772 of file rule.c.

◆ rtnl_rule_set_l3mdev()

void rtnl_rule_set_l3mdev ( struct rtnl_rule *  rule,
int  value 
)

Set l3mdev value of the rule (FRA_L3MDEV)

Parameters
rulerule
valuevalue to set

Set the l3mdev value to value. Currently supported values are only 1 (set it) and -1 (unset it). All other values are reserved.

Definition at line 786 of file rule.c.

◆ rtnl_rule_get_l3mdev()

int rtnl_rule_get_l3mdev ( struct rtnl_rule *  rule)

Get l3mdev value of the rule (FRA_L3MDEV)

Parameters
rulerule
Returns
a negative error code, including -NLE_MISSING_ATTR if the property is unset. Otherwise returns a non-negative value. As FRA_L3MDEV is a boolean, the only expected value at the moment is 1.

Definition at line 806 of file rule.c.

◆ rtnl_rule_set_protocol()

int rtnl_rule_set_protocol ( struct rtnl_rule *  rule,
uint8_t  protocol 
)

Definition at line 815 of file rule.c.

◆ rtnl_rule_get_protocol()

int rtnl_rule_get_protocol ( struct rtnl_rule *  rule,
uint8_t *  protocol 
)

Definition at line 827 of file rule.c.

◆ rtnl_rule_set_ipproto()

int rtnl_rule_set_ipproto ( struct rtnl_rule *  rule,
uint8_t  ip_proto 
)

Definition at line 836 of file rule.c.

◆ rtnl_rule_get_ipproto()

int rtnl_rule_get_ipproto ( struct rtnl_rule *  rule,
uint8_t *  ip_proto 
)

Definition at line 848 of file rule.c.

◆ rtnl_rule_set_sport()

int rtnl_rule_set_sport ( struct rtnl_rule *  rule,
uint16_t  sport 
)

Definition at line 877 of file rule.c.

◆ rtnl_rule_set_sport_range()

int rtnl_rule_set_sport_range ( struct rtnl_rule *  rule,
uint16_t  start,
uint16_t  end 
)

Definition at line 883 of file rule.c.

◆ rtnl_rule_get_sport()

int rtnl_rule_get_sport ( struct rtnl_rule *  rule,
uint16_t *  start,
uint16_t *  end 
)

Definition at line 890 of file rule.c.

◆ rtnl_rule_set_dport()

int rtnl_rule_set_dport ( struct rtnl_rule *  rule,
uint16_t  dport 
)

Definition at line 900 of file rule.c.

◆ rtnl_rule_set_dport_range()

int rtnl_rule_set_dport_range ( struct rtnl_rule *  rule,
uint16_t  start,
uint16_t  end 
)

Definition at line 906 of file rule.c.

◆ rtnl_rule_get_dport()

int rtnl_rule_get_dport ( struct rtnl_rule *  rule,
uint16_t *  start,
uint16_t *  end 
)

Definition at line 913 of file rule.c.

◆ rtnl_rule_set_realms()

void rtnl_rule_set_realms ( struct rtnl_rule *  rule,
uint32_t  realms 
)

Definition at line 923 of file rule.c.

◆ rtnl_rule_get_realms()

uint32_t rtnl_rule_get_realms ( struct rtnl_rule *  rule)

Definition at line 929 of file rule.c.

◆ rtnl_rule_set_goto()

void rtnl_rule_set_goto ( struct rtnl_rule *  rule,
uint32_t  ref 
)

Definition at line 934 of file rule.c.

◆ rtnl_rule_get_goto()

uint32_t rtnl_rule_get_goto ( struct rtnl_rule *  rule)

Definition at line 940 of file rule.c.