libnl 3.7.0
|
Netlink Message Construction/Parsing Interface. More...
Modules | |
Attributes | |
Netlink Attributes Construction/Parsing Interface. | |
Macros | |
#define | NL_AUTO_PORT 0 |
Will cause the netlink port to be set to the port assigned to the netlink icoket ust before sending the message off. More... | |
#define | NL_AUTO_SEQ 0 |
May be used to refer to a sequence number which should be automatically set just before sending the message off. More... | |
Netlink Message Type Translations | |
char * | nl_nlmsgtype2str (int type, char *buf, size_t size) |
int | nl_str2nlmsgtype (const char *name) |
Size Calculations | |
int | nlmsg_size (int payload) |
Calculates size of netlink message based on payload length. More... | |
int | nlmsg_total_size (int payload) |
Calculates size of netlink message including padding based on payload length. More... | |
int | nlmsg_padlen (int payload) |
Size of padding that needs to be added at end of message. More... | |
Access to Message Payload | |
void * | nlmsg_data (const struct nlmsghdr *nlh) |
Return pointer to message payload. More... | |
void * | nlmsg_tail (const struct nlmsghdr *nlh) |
int | nlmsg_datalen (const struct nlmsghdr *nlh) |
Return length of message payload. More... | |
Attribute Access | |
struct nlattr * | nlmsg_attrdata (const struct nlmsghdr *nlh, int hdrlen) |
head of attributes data More... | |
int | nlmsg_attrlen (const struct nlmsghdr *nlh, int hdrlen) |
length of attributes data More... | |
Message Parsing | |
int | nlmsg_valid_hdr (const struct nlmsghdr *nlh, int hdrlen) |
int | nlmsg_ok (const struct nlmsghdr *nlh, int remaining) |
check if the netlink message fits into the remaining bytes More... | |
struct nlmsghdr * | nlmsg_next (struct nlmsghdr *nlh, int *remaining) |
next netlink message in message stream More... | |
int | nlmsg_parse (struct nlmsghdr *nlh, int hdrlen, struct nlattr *tb[], int maxtype, const struct nla_policy *policy) |
parse attributes of a netlink message More... | |
struct nlattr * | nlmsg_find_attr (struct nlmsghdr *nlh, int hdrlen, int attrtype) |
nlmsg_find_attr - find a specific attribute in a netlink message More... | |
int | nlmsg_validate (struct nlmsghdr *nlh, int hdrlen, int maxtype, const struct nla_policy *policy) |
nlmsg_validate - validate a netlink message including attributes More... | |
Message Building/Access | |
struct nl_msg * | nlmsg_alloc (void) |
Allocate a new netlink message with the default maximum payload size. More... | |
struct nl_msg * | nlmsg_alloc_size (size_t max) |
Allocate a new netlink message with maximum payload size specified. More... | |
struct nl_msg * | nlmsg_inherit (struct nlmsghdr *hdr) |
Allocate a new netlink message and inherit netlink message header. More... | |
struct nl_msg * | nlmsg_alloc_simple (int nlmsgtype, int flags) |
Allocate a new netlink message. More... | |
void | nlmsg_set_default_size (size_t max) |
Set the default maximum message payload size for allocated messages. More... | |
struct nl_msg * | nlmsg_convert (struct nlmsghdr *hdr) |
Convert a netlink message received from a netlink socket to a nl_msg. More... | |
void * | nlmsg_reserve (struct nl_msg *n, size_t len, int pad) |
Reserve room for additional data in a netlink message. More... | |
int | nlmsg_append (struct nl_msg *n, void *data, size_t len, int pad) |
Append data to tail of a netlink message. More... | |
int | nlmsg_expand (struct nl_msg *n, size_t newlen) |
Expand maximum payload size of a netlink message. More... | |
struct nlmsghdr * | nlmsg_put (struct nl_msg *n, uint32_t pid, uint32_t seq, int type, int payload, int flags) |
Add a netlink message header to a netlink message. More... | |
struct nlmsghdr * | nlmsg_hdr (struct nl_msg *n) |
Return actual netlink message. More... | |
void | nlmsg_get (struct nl_msg *msg) |
Acquire a reference on a netlink message. More... | |
void | nlmsg_free (struct nl_msg *msg) |
Release a reference from an netlink message. More... | |
Attributes | |
void | nlmsg_set_proto (struct nl_msg *msg, int protocol) |
int | nlmsg_get_proto (struct nl_msg *msg) |
size_t | nlmsg_get_max_size (struct nl_msg *msg) |
void | nlmsg_set_src (struct nl_msg *msg, struct sockaddr_nl *addr) |
struct sockaddr_nl * | nlmsg_get_src (struct nl_msg *msg) |
void | nlmsg_set_dst (struct nl_msg *msg, struct sockaddr_nl *addr) |
struct sockaddr_nl * | nlmsg_get_dst (struct nl_msg *msg) |
void | nlmsg_set_creds (struct nl_msg *msg, struct ucred *creds) |
struct ucred * | nlmsg_get_creds (struct nl_msg *msg) |
Netlink Message Flags Translations | |
char * | nl_nlmsg_flags2str (int flags, char *buf, size_t len) |
Direct Parsing | |
int | nl_msg_parse (struct nl_msg *msg, void(*cb)(struct nl_object *, void *), void *arg) |
Dumping | |
void | nl_msg_dump (struct nl_msg *msg, FILE *ofd) |
Dump message in human readable format to file descriptor. More... | |
Iterators | |
#define | nlmsg_for_each_attr(pos, nlh, hdrlen, rem) |
Iterate over a stream of attributes in a message. More... | |
#define | nlmsg_for_each(pos, head, len) |
Iterate over a stream of messages. More... | |
#define | nlmsg_for_each_msg(pos, head, len, rem) nlmsg_for_each(pos, head, len) |
Netlink Message Construction/Parsing Interface.
Related sections in the development guide:
#define NL_AUTO_PORT 0 |
Will cause the netlink port to be set to the port assigned to the netlink icoket ust before sending the message off.
#define NL_AUTO_SEQ 0 |
May be used to refer to a sequence number which should be automatically set just before sending the message off.
#define nlmsg_for_each_attr | ( | pos, | |
nlh, | |||
hdrlen, | |||
rem | |||
) |
Iterate over a stream of attributes in a message.
pos | loop counter, set to current attribute |
nlh | netlink message header |
hdrlen | length of family header |
rem | initialized to len, holds bytes currently remaining in stream |
#define nlmsg_for_each | ( | pos, | |
head, | |||
len | |||
) |
Iterate over a stream of messages.
pos | loop counter, set to current message |
head | head of message stream |
len | length of message stream |
#define nlmsg_for_each_msg | ( | pos, | |
head, | |||
len, | |||
rem | |||
) | nlmsg_for_each(pos, head, len) |
int nlmsg_size | ( | int | payload | ) |
int nlmsg_total_size | ( | int | payload | ) |
Calculates size of netlink message including padding based on payload length.
payload | Length of payload |
This function is idential to nlmsg_size() + nlmsg_padlen().
Definition at line 67 of file msg.c.
Referenced by nlmsg_padlen(), and nlmsg_set_default_size().
int nlmsg_padlen | ( | int | payload | ) |
Size of padding that needs to be added at end of message.
payload | Length of payload |
Calculates the number of bytes of padding which is required to be added to the end of the message to ensure that the next netlink message header begins properly aligned to NLMSG_ALIGNTO.
Definition at line 82 of file msg.c.
References nlmsg_total_size().
void * nlmsg_data | ( | const struct nlmsghdr * | nlh | ) |
Return pointer to message payload.
nlh | Netlink message header |
Definition at line 100 of file msg.c.
Referenced by genlmsg_hdr(), genlmsg_parse(), genlmsg_put(), genlmsg_valid_hdr(), genlmsg_validate(), nfnlmsg_family(), nfnlmsg_res_id(), nla_put(), nla_put_nested(), nla_reserve(), and nlmsg_attrdata().
int nlmsg_datalen | ( | const struct nlmsghdr * | nlh | ) |
Return length of message payload.
nlh | Netlink message header |
Definition at line 116 of file msg.c.
Referenced by nla_put_nested().
struct nlattr * nlmsg_attrdata | ( | const struct nlmsghdr * | nlh, |
int | hdrlen | ||
) |
head of attributes data
nlh | netlink message header |
hdrlen | length of family specific header |
Definition at line 138 of file msg.c.
References nlmsg_data().
Referenced by nlmsg_find_attr(), nlmsg_parse(), and nlmsg_validate().
int nlmsg_attrlen | ( | const struct nlmsghdr * | nlh, |
int | hdrlen | ||
) |
length of attributes data
nlh | netlink message header |
hdrlen | length of family specific header |
Definition at line 149 of file msg.c.
Referenced by nlmsg_find_attr(), nlmsg_parse(), and nlmsg_validate().
int nlmsg_valid_hdr | ( | const struct nlmsghdr * | nlh, |
int | hdrlen | ||
) |
int nlmsg_ok | ( | const struct nlmsghdr * | nlh, |
int | remaining | ||
) |
struct nlmsghdr * nlmsg_next | ( | struct nlmsghdr * | nlh, |
int * | remaining | ||
) |
int nlmsg_parse | ( | struct nlmsghdr * | nlh, |
int | hdrlen, | ||
struct nlattr * | tb[], | ||
int | maxtype, | ||
const struct nla_policy * | policy | ||
) |
parse attributes of a netlink message
nlh | netlink message header |
hdrlen | length of family specific header |
tb | destination array with maxtype+1 elements |
maxtype | maximum attribute type to be expected |
policy | validation policy |
See nla_parse()
Definition at line 208 of file msg.c.
References nla_parse(), nlmsg_attrdata(), and nlmsg_attrlen().
struct nlattr * nlmsg_find_attr | ( | struct nlmsghdr * | nlh, |
int | hdrlen, | ||
int | attrtype | ||
) |
nlmsg_find_attr - find a specific attribute in a netlink message
nlh | netlink message header |
hdrlen | length of familiy specific header |
attrtype | type of attribute to look for |
Returns the first attribute which matches the specified type.
Definition at line 226 of file msg.c.
References nla_find(), nlmsg_attrdata(), and nlmsg_attrlen().
int nlmsg_validate | ( | struct nlmsghdr * | nlh, |
int | hdrlen, | ||
int | maxtype, | ||
const struct nla_policy * | policy | ||
) |
nlmsg_validate - validate a netlink message including attributes
nlh | netlinket message header |
hdrlen | length of familiy specific header |
maxtype | maximum attribute type to be expected |
policy | validation policy |
Definition at line 239 of file msg.c.
References nla_validate(), nlmsg_attrdata(), and nlmsg_attrlen().
struct nl_msg * nlmsg_alloc | ( | void | ) |
Allocate a new netlink message with the default maximum payload size.
Allocates a new netlink message without any further payload. The maximum payload size defaults to PAGESIZE or as otherwise specified with nlmsg_set_default_size().
Definition at line 294 of file msg.c.
Referenced by nlmsg_inherit(), and rtnl_neightbl_build_change_request().
struct nl_msg * nlmsg_alloc_size | ( | size_t | max | ) |
struct nl_msg * nlmsg_inherit | ( | struct nlmsghdr * | hdr | ) |
Allocate a new netlink message and inherit netlink message header.
hdr | Netlink message header template |
Allocates a new netlink message and inherits the original message header. If hdr is not NULL it will be used as a template for the netlink message header, otherwise the header is left blank.
Definition at line 317 of file msg.c.
References nlmsg_alloc().
Referenced by nlmsg_alloc_simple().
struct nl_msg * nlmsg_alloc_simple | ( | int | nlmsgtype, |
int | flags | ||
) |
Allocate a new netlink message.
nlmsgtype | Netlink message type |
flags | Message flags. |
Definition at line 341 of file msg.c.
References NL_AUTO_SEQ, and nlmsg_inherit().
Referenced by flnl_lookup_build_request(), nfnlmsg_alloc_simple(), nl_send_simple(), rtnl_class_build_delete_request(), rtnl_link_build_delete_request(), rtnl_link_build_get_request(), rtnl_neightbl_build_change_request(), and rtnl_qdisc_build_delete_request().
void nlmsg_set_default_size | ( | size_t | max | ) |
Set the default maximum message payload size for allocated messages.
max | Size of payload in bytes. |
Definition at line 362 of file msg.c.
References nlmsg_total_size().
struct nl_msg * nlmsg_convert | ( | struct nlmsghdr * | hdr | ) |
Convert a netlink message received from a netlink socket to a nl_msg.
hdr | Netlink message received from netlink socket. |
Allocates a new netlink message and copies all of the data pointed to by hdr into the new message object.
void * nlmsg_reserve | ( | struct nl_msg * | n, |
size_t | len, | ||
int | pad | ||
) |
Reserve room for additional data in a netlink message.
n | netlink message |
len | length of additional data to reserve room for |
pad | number of bytes to align data to |
Reserves room for additional data at the tail of the an existing netlink message. Eventual padding required will be zeroed out.
Definition at line 404 of file msg.c.
Referenced by nlmsg_append(), and nlmsg_put().
int nlmsg_append | ( | struct nl_msg * | n, |
void * | data, | ||
size_t | len, | ||
int | pad | ||
) |
Append data to tail of a netlink message.
n | netlink message |
data | data to add |
len | length of data |
pad | Number of bytes to align data to. |
Extends the netlink message as needed and appends the data of given length to the message.
Definition at line 442 of file msg.c.
References nlmsg_reserve().
Referenced by flnl_lookup_build_request(), nl_send_simple(), rtnl_class_build_delete_request(), rtnl_link_build_delete_request(), rtnl_link_build_get_request(), rtnl_neightbl_build_change_request(), and rtnl_qdisc_build_delete_request().
int nlmsg_expand | ( | struct nl_msg * | n, |
size_t | newlen | ||
) |
Expand maximum payload size of a netlink message.
n | Netlink message. |
newlen | New maximum payload size. |
Reallocates the payload section of a netlink message and increases the maximum payload size of the message.
struct nlmsghdr * nlmsg_put | ( | struct nl_msg * | n, |
uint32_t | pid, | ||
uint32_t | seq, | ||
int | type, | ||
int | payload, | ||
int | flags | ||
) |
Add a netlink message header to a netlink message.
n | netlink message |
pid | netlink process id or NL_AUTO_PID |
seq | sequence number of message or NL_AUTO_SEQ |
type | message type |
payload | length of message payload |
flags | message flags |
Adds or overwrites the netlink message header in an existing message object. If payload is greater-than zero additional room will be reserved, f.e. for family specific headers. It can be accesed via nlmsg_data().
Definition at line 503 of file msg.c.
References nlmsg_reserve().
Referenced by genlmsg_put(), and nfnlmsg_put().
struct nlmsghdr * nlmsg_hdr | ( | struct nl_msg * | n | ) |
Return actual netlink message.
n | netlink message |
Returns the actual netlink message casted to the type of the netlink message header.
Definition at line 536 of file msg.c.
Referenced by genl_handle_msg(), nl_cache_parse_and_add(), nl_complete_msg(), nl_msg_dump(), and nl_send().
void nlmsg_get | ( | struct nl_msg * | msg | ) |
void nlmsg_free | ( | struct nl_msg * | msg | ) |
Release a reference from an netlink message.
msg | message to release reference from |
Frees memory after the last reference has been released.
Definition at line 558 of file msg.c.
Referenced by flnl_lookup(), flnl_lookup_build_request(), nfnlmsg_alloc_simple(), nl_send_simple(), nl_send_sync(), rtnl_addr_add(), rtnl_addr_delete(), rtnl_class_build_delete_request(), rtnl_neigh_add(), rtnl_neigh_delete(), rtnl_neightbl_build_change_request(), rtnl_neightbl_change(), rtnl_qdisc_build_delete_request(), rtnl_rule_add(), and rtnl_rule_delete().
void nlmsg_set_src | ( | struct nl_msg * | msg, |
struct sockaddr_nl * | addr | ||
) |
void nlmsg_set_dst | ( | struct nl_msg * | msg, |
struct sockaddr_nl * | addr | ||
) |
void nlmsg_set_creds | ( | struct nl_msg * | msg, |
struct ucred * | creds | ||
) |
char * nl_nlmsg_flags2str | ( | int | flags, |
char * | buf, | ||
size_t | len | ||
) |
int nl_msg_parse | ( | struct nl_msg * | msg, |
void(*)(struct nl_object *, void *) | cb, | ||
void * | arg | ||
) |
void nl_msg_dump | ( | struct nl_msg * | msg, |
FILE * | ofd | ||
) |
Dump message in human readable format to file descriptor.
msg | Message to print |
ofd | File descriptor. |
Definition at line 969 of file msg.c.
References nlmsg_hdr().