12 #ifndef NETLINK_MSG_H_ 13 #define NETLINK_MSG_H_ 15 #include <netlink/netlink.h> 16 #include <netlink/object.h> 17 #include <netlink/attr.h> 55 extern void * nlmsg_tail(
const struct nlmsghdr *);
62 extern int nlmsg_valid_hdr(
const struct nlmsghdr *,
int);
72 #define nlmsg_new() nlmsg_alloc() 73 #define nlmsg_build_simple(a, b) nlmsg_alloc_simple(a, b) 74 #define nlmsg_build(ptr) nlmsg_inherit(ptr) 83 extern int nlmsg_append(
struct nl_msg *,
void *,
size_t,
int);
92 extern void nlmsg_set_proto(
struct nl_msg *,
int);
93 extern int nlmsg_get_proto(
struct nl_msg *);
94 extern size_t nlmsg_get_max_size(
struct nl_msg *);
95 extern void nlmsg_set_src(
struct nl_msg *,
struct sockaddr_nl *);
96 extern struct sockaddr_nl *nlmsg_get_src(
struct nl_msg *);
97 extern void nlmsg_set_dst(
struct nl_msg *,
struct sockaddr_nl *);
98 extern struct sockaddr_nl *nlmsg_get_dst(
struct nl_msg *);
99 extern void nlmsg_set_creds(
struct nl_msg *,
struct ucred *);
100 extern struct ucred * nlmsg_get_creds(
struct nl_msg *);
102 extern char * nl_nlmsgtype2str(
int,
char *,
size_t);
103 extern int nl_str2nlmsgtype(
const char *);
105 extern char * nl_nlmsg_flags2str(
int,
char *,
size_t);
107 extern int nl_msg_parse(
struct nl_msg *,
108 void (*cb)(
struct nl_object *,
void *),
126 #define nlmsg_for_each_attr(pos, nlh, hdrlen, rem) \ 127 nla_for_each_attr(pos, nlmsg_attrdata(nlh, hdrlen), \ 128 nlmsg_attrlen(nlh, hdrlen), rem) 137 #define nlmsg_for_each_msg(pos, head, len, rem) \ 138 for (pos = head, rem = len; \ 139 nlmsg_ok(pos, rem); \ 140 pos = nlmsg_next(pos, &(rem))) struct nl_msg * nlmsg_alloc_size(size_t)
Allocate a new netlink message with maximum payload size specified.
int nlmsg_attrlen(const struct nlmsghdr *, int)
length of attributes data
void * nlmsg_data(const struct nlmsghdr *)
head of message payload
struct nl_msg * nlmsg_inherit(struct nlmsghdr *)
Allocate a new netlink message and inherit netlink message header.
void * nlmsg_reserve(struct nl_msg *, size_t, int)
Reserve room for additional data in a netlink message.
attribute validation policy
struct nl_msg * nlmsg_alloc(void)
Allocate a new netlink message with the default maximum payload size.
void nlmsg_set_default_size(size_t)
Set the default maximum message payload size for allocated messages.
void nlmsg_free(struct nl_msg *)
Free a netlink message.
int nlmsg_ok(const struct nlmsghdr *, int)
check if the netlink message fits into the remaining bytes
int nlmsg_parse(struct nlmsghdr *nlh, int hdrlen, struct nlattr *tb[], int maxtype, struct nla_policy *policy)
parse attributes of a netlink message
struct nlattr * nlmsg_find_attr(struct nlmsghdr *, int, int)
nlmsg_find_attr - find a specific attribute in a netlink message
int nlmsg_total_size(int)
length of netlink message including padding
struct nlattr * nlmsg_attrdata(const struct nlmsghdr *, int)
head of attributes data
struct nlmsghdr * nlmsg_next(struct nlmsghdr *, int *)
next netlink message in message stream
struct nlmsghdr * nlmsg_put(struct nl_msg *, uint32_t, uint32_t, int, int, int)
Add a netlink message header to a netlink message.
void nl_msg_dump(struct nl_msg *, FILE *)
Dump message in human readable format to file descriptor.
struct nlmsghdr * nlmsg_hdr(struct nl_msg *)
Return actual netlink message.
int nlmsg_expand(struct nl_msg *, size_t)
Expand maximum payload size of a netlink message.
int nlmsg_padlen(int)
length of padding at the message's tail
int nlmsg_append(struct nl_msg *, void *, size_t, int)
Append data to tail of a netlink message.
struct nl_msg * nlmsg_alloc_simple(int, int)
Allocate a new netlink message.
int nlmsg_len(const struct nlmsghdr *)
length of message payload
int nlmsg_validate(struct nlmsghdr *, int, int, struct nla_policy *)
nlmsg_validate - validate a netlink message including attributes
struct nl_msg * nlmsg_convert(struct nlmsghdr *)
Convert a netlink message received from a netlink socket to a nl_msg.
int nlmsg_msg_size(int)
length of netlink message not including padding