summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/libnfnetlink/libnfnetlink.h2
-rw-r--r--src/libnfnetlink.c34
2 files changed, 36 insertions, 0 deletions
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 <pablo@netfilter.org>:
* set missing subsys_id in nfnl_subsys_open
* set missing nfnlh->local.nl_pid in nfnl_open
+ *
+ * 2006-01-26 Harald Welte <laforge@netfilter.org>:
+ * remove bogus nfnlh->local.nl_pid from nfnl_open ;)
+ * add 16bit attribute functions
*/
#include <stdlib.h>
@@ -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