From 0404a29bfe7a24ca0c6d4f94405a01f6ff942f43 Mon Sep 17 00:00:00 2001 From: Martin Willi Date: Wed, 9 Jul 2014 15:47:24 +0200 Subject: kernel-netlink: Define netlink buffer as an union having a netlink header This allows us to streamline the netlink buffers, and avoid extensive casting. --- src/libhydra/plugins/kernel_netlink/kernel_netlink_shared.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src/libhydra/plugins/kernel_netlink/kernel_netlink_shared.h') diff --git a/src/libhydra/plugins/kernel_netlink/kernel_netlink_shared.h b/src/libhydra/plugins/kernel_netlink/kernel_netlink_shared.h index 8be935bc3..1a03a89a8 100644 --- a/src/libhydra/plugins/kernel_netlink/kernel_netlink_shared.h +++ b/src/libhydra/plugins/kernel_netlink/kernel_netlink_shared.h @@ -26,7 +26,10 @@ * 1024 byte is currently sufficient for all operations. Some platform * require an enforced aligment to four bytes (e.g. ARM). */ -typedef u_char netlink_buf_t[1024] __attribute__((aligned(RTA_ALIGNTO))); +typedef union { + struct nlmsghdr hdr; + u_char bytes[1024]; +} netlink_buf_t __attribute__((aligned(RTA_ALIGNTO))); typedef struct netlink_socket_t netlink_socket_t; -- cgit v1.2.3 From c94e93a7ab2f07ee7197fd33d4f0e20f2d7d9671 Mon Sep 17 00:00:00 2001 From: Martin Willi Date: Thu, 10 Jul 2014 14:21:20 +0200 Subject: kernel-netlink: Pass protocol specific enum names to socket constructor This avoid the hard dependency on enum names, and makes kernel_netlink_shared independent of kernel_netlink_ipsec. --- src/libhydra/plugins/kernel_netlink/kernel_netlink_shared.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'src/libhydra/plugins/kernel_netlink/kernel_netlink_shared.h') diff --git a/src/libhydra/plugins/kernel_netlink/kernel_netlink_shared.h b/src/libhydra/plugins/kernel_netlink/kernel_netlink_shared.h index 1a03a89a8..069f746d1 100644 --- a/src/libhydra/plugins/kernel_netlink/kernel_netlink_shared.h +++ b/src/libhydra/plugins/kernel_netlink/kernel_netlink_shared.h @@ -64,9 +64,10 @@ struct netlink_socket_t { /** * Create a netlink_socket_t object. * - * @param protocol protocol type (e.g. NETLINK_XFRM or NETLINK_ROUTE) + * @param protocol protocol type (e.g. NETLINK_XFRM or NETLINK_ROUTE) + * @param names optional enum names for Netlink messages */ -netlink_socket_t *netlink_socket_create(int protocol); +netlink_socket_t *netlink_socket_create(int protocol, enum_name_t *names); /** * Creates an rtattr and adds it to the given netlink message. -- cgit v1.2.3