Add nlif_* prototypes and 64-bit converters to libnetfilter_queue.h. Update (deprecated) include/libnetfilter_queue/linux_nfnetlink_queue.h to use /usr/include/linux/nfnetlink.h instead of libnfnetlink/linux_nfnetlink.h As an aside, everything compiles fine with this line removed (i.e library, utils and examples all compile), so maybe we can do without it. Signed-off-by: Duncan Roe <duncan_roe@xxxxxxxxxxxxxxx> --- Changes in v2: - This was patch 18 v1 - Update commit message: - libnetfilter_queue.c has no libnfnetlink.h references (removed in patch 6 v2). - Incorporate patch 22 v1 .../libnetfilter_queue/libnetfilter_queue.h | 36 ++++++++++++++++++- .../linux_nfnetlink_queue.h | 3 +- 2 files changed, 37 insertions(+), 2 deletions(-) diff --git a/include/libnetfilter_queue/libnetfilter_queue.h b/include/libnetfilter_queue/libnetfilter_queue.h index 9327f8c..46289f2 100644 --- a/include/libnetfilter_queue/libnetfilter_queue.h +++ b/include/libnetfilter_queue/libnetfilter_queue.h @@ -14,7 +14,7 @@ #define __LIBCTNETLINK_H #include <sys/time.h> -#include <libnfnetlink/libnfnetlink.h> +#include <libmnl/libmnl.h> #include <libnetfilter_queue/linux_nfnetlink_queue.h> @@ -25,6 +25,7 @@ extern "C" { struct nfq_handle; struct nfq_q_handle; struct nfq_data; +struct nlif_handle; extern int nfq_errno; @@ -155,8 +156,41 @@ int nfq_nlmsg_parse(const struct nlmsghdr *nlh, struct nlattr **attr); struct nlmsghdr *nfq_nlmsg_put(char *buf, int type, uint32_t queue_num); struct nlmsghdr *nfq_nlmsg_put2(char *buf, int type, uint32_t queue_num, uint16_t flags); +/* + * Network Interface Table API + */ + +#ifndef IFNAMSIZ +#define IFNAMSIZ 16 +#endif + +struct nlif_handle *nlif_open(void); +void nlif_close(struct nlif_handle *orig); +int nlif_fd(struct nlif_handle *nlif_handle); +int nlif_query(struct nlif_handle *nlif_handle); +int nlif_catch(struct nlif_handle *nlif_handle); +int nlif_index2name(struct nlif_handle *nlif_handle, unsigned int if_index, char *name); +int nlif_get_ifflags(const struct nlif_handle *h, unsigned int index, unsigned int *flags); + #ifdef __cplusplus } /* extern "C" */ #endif +/* + * __be46 stuff - should be in libmnl.h maybe? + */ + +#include <byteswap.h> +#if __BYTE_ORDER == __BIG_ENDIAN +# ifndef __be64_to_cpu +# define __be64_to_cpu(x) (x) +# endif +# else +# if __BYTE_ORDER == __LITTLE_ENDIAN +# ifndef __be64_to_cpu +# define __be64_to_cpu(x) __bswap_64(x) +# endif +# endif +#endif + #endif /* __LIBNFQNETLINK_H */ diff --git a/include/libnetfilter_queue/linux_nfnetlink_queue.h b/include/libnetfilter_queue/linux_nfnetlink_queue.h index 6844270..82d8ece 100644 --- a/include/libnetfilter_queue/linux_nfnetlink_queue.h +++ b/include/libnetfilter_queue/linux_nfnetlink_queue.h @@ -8,7 +8,8 @@ #endif #include <linux/types.h> -#include <libnfnetlink/linux_nfnetlink.h> +/* Use the real header since libnfnetlink is going away. */ +#include <linux/nfnetlink.h> enum nfqnl_msg_types { NFQNL_MSG_PACKET, /* packet from kernel to userspace */ -- 2.35.8