From d809e93036d15654f120d1f1ad0172942be12f53 Mon Sep 17 00:00:00 2001 From: "/C=DE/ST=Berlin/L=Berlin/O=Netfilter Project/OU=Development/CN=laforge/emailAddress=laforge@netfilter.org" Date: Thu, 26 Jan 2006 10:44:06 +0000 Subject: add 16bit attribute functions --- include/libnfnetlink/libnfnetlink.h | 2 ++ src/libnfnetlink.c | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/include/libnfnetlink/libnfnetlink.h b/include/libnfnetlink/libnfnetlink.h index 839a3ee..bc24757 100644 --- a/include/libnfnetlink/libnfnetlink.h +++ b/include/libnfnetlink/libnfnetlink.h @@ -117,8 +117,10 @@ extern struct nlmsghdr *nfnl_get_msg_next(struct nfnl_handle *h, /* nfnl attribute handling functions */ extern int nfnl_addattr_l(struct nlmsghdr *, int, int, void *, int); +extern int nfnl_addattr16(struct nlmsghdr *, int, int, u_int16_t); extern int nfnl_addattr32(struct nlmsghdr *, int, int, u_int32_t); extern int nfnl_nfa_addattr_l(struct nfattr *, int, int, void *, int); +extern int nfnl_nfa_addattr16(struct nfattr *, int, int, u_int16_t); extern int nfnl_nfa_addattr32(struct nfattr *, int, int, u_int32_t); extern int nfnl_parse_attr(struct nfattr **, int, struct nfattr *, int); #define nfnl_parse_nested(tb, max, nfa) \ diff --git a/src/libnfnetlink.c b/src/libnfnetlink.c index 5765072..47a95cd 100644 --- a/src/libnfnetlink.c +++ b/src/libnfnetlink.c @@ -20,6 +20,10 @@ * 2006-01-15 Pablo Neira Ayuso : * set missing subsys_id in nfnl_subsys_open * set missing nfnlh->local.nl_pid in nfnl_open + * + * 2006-01-26 Harald Welte : + * remove bogus nfnlh->local.nl_pid from nfnl_open ;) + * add 16bit attribute functions */ #include @@ -680,6 +684,36 @@ int nfnl_nfa_addattr_l(struct nfattr *nfa, int maxlen, int type, void *data, return 0; } +/** + * nfnl_nfa_addattr16 - Add u_int16_t attribute to struct nfattr + * + * nfa: struct nfattr + * maxlen: maximal length of nfattr buffer + * type: type for new attribute + * data: content of new attribute + * + */ +int nfnl_nfa_addattr16(struct nfattr *nfa, int maxlen, int type, + u_int16_t data) +{ + + return nfnl_nfa_addattr_l(nfa, maxlen, type, &data, sizeof(data)); +} + +/** + * nfnl_addattr16 - Add u_int16_t attribute to nlmsghdr + * + * n: netlink message header to which attribute is to be added + * maxlen: maximum length of netlink message header + * type: type of new attribute + * data: content of new attribute + * + */ +int nfnl_addattr16(struct nlmsghdr *n, int maxlen, int type, + u_int16_t data) +{ + return nfnl_addattr_l(n, maxlen, type, &data, sizeof(data)); +} /** * nfnl_nfa_addattr32 - Add u_int32_t attribute to struct nfattr -- cgit v1.2.3