File 0001-Port-to-libnl3.patch of Package netlabel

From d82ed2081cf58fb2504ba037d7a1e6444ec5019a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Cristian=20Rodr=C3=ADguez?= <crrodriguez@opensuse.org>
Date: Wed, 28 May 2014 00:11:37 -0400
Subject: [PATCH] Port to libnl3

---
 libnetlabel/netlabel_comm.c     | 35 -----------------------------
 libnetlabel/netlabel_internal.h | 49 +++++++----------------------------------
 libnetlabel/netlabel_msg.c      |  4 ----
 macros.mk                       |  2 +-
 netlabelctl/Makefile            |  2 +-
 5 files changed, 10 insertions(+), 82 deletions(-)

diff --git a/libnetlabel/netlabel_comm.c b/libnetlabel/netlabel_comm.c
index 289629b..02869e8 100644
--- a/libnetlabel/netlabel_comm.c
+++ b/libnetlabel/netlabel_comm.c
@@ -102,13 +102,8 @@ struct nlbl_handle *nlbl_comm_open(void)
 		goto open_failure;
 
 	/* set the netlink handle properties */
-#if LIBNL_VERSION >= 1008
 	nl_socket_set_peer_port(hndl->nl_hndl, 0);
 	nl_set_passcred(hndl->nl_hndl, 1);
-#elif LIBNL_VERSION == 1006
-	nl_handle_set_peer_pid(hndl->nl_hndl, 0);
-	nl_set_passcred(hndl->nl_hndl, 1);
-#endif
 	nl_disable_sequence_check(hndl->nl_hndl);
 
 	/* connect to the generic netlink subsystem in the kernel */
@@ -177,11 +172,7 @@ int nlbl_comm_recv_raw(struct nlbl_handle *hndl, unsigned char **data)
 	 * no data is waiting to be read from the handle */
 	timeout.tv_sec = nlcomm_read_timeout;
 	timeout.tv_usec = 0;
-#if LIBNL_VERSION >= 1008
 	nl_fd = nl_socket_get_fd(hndl->nl_hndl);
-#else
-	nl_fd = nl_handle_get_fd(hndl->nl_hndl);
-#endif
 	FD_ZERO(&read_fds);
 	FD_SET(nl_fd, &read_fds);
 	ret_val = select(nl_fd + 1, &read_fds, NULL, NULL, &timeout);
@@ -192,15 +183,9 @@ int nlbl_comm_recv_raw(struct nlbl_handle *hndl, unsigned char **data)
 
 	/* perform the read operation */
 	*data = NULL;
-#if LIBNL_VERSION >= 1006
 	ret_val = nl_recv(hndl->nl_hndl, &peer_nladdr, data, &creds);
 	if (ret_val < 0)
 		return ret_val;
-#else
-	ret_val = nl_recv(hndl->nl_hndl, &peer_nladdr, data);
-	if (ret_val < 0)
-		return ret_val;
-#endif
 
 	/* if we are setup to receive credentials, only accept messages from
 	 * the kernel (ignore all others and send an -EAGAIN) */
@@ -251,11 +236,7 @@ int nlbl_comm_recv(struct nlbl_handle *hndl, nlbl_msg **msg)
 	 * no data is waiting to be read from the handle */
 	timeout.tv_sec = nlcomm_read_timeout;
 	timeout.tv_usec = 0;
-#if LIBNL_VERSION >= 1008
 	nl_fd = nl_socket_get_fd(hndl->nl_hndl);
-#else
-	nl_fd = nl_handle_get_fd(hndl->nl_hndl);
-#endif
 	FD_ZERO(&read_fds);
 	FD_SET(nl_fd, &read_fds);
 	ret_val = select(nl_fd + 1, &read_fds, NULL, NULL, &timeout);
@@ -265,19 +246,9 @@ int nlbl_comm_recv(struct nlbl_handle *hndl, nlbl_msg **msg)
 		return -EAGAIN;
 
 	/* perform the read operation */
-#if LIBNL_VERSION >= 1100
 	ret_val = nl_recv(hndl->nl_hndl, &peer_nladdr, &data, &creds);
 	if (ret_val < 0)
 		return ret_val;
-#elif LIBNL_VERSION >= 1006
-	ret_val = nl_recv(hndl->nl_hndl, &peer_nladdr, data, &creds);
-	if (ret_val < 0)
-		return ret_val;
-#else
-	ret_val = nl_recv(hndl->nl_hndl, &peer_nladdr, data);
-	if (ret_val < 0)
-		return ret_val;
-#endif
 
 	/* if we are setup to receive credentials, only accept messages from
 	 * the kernel (ignore all others and send an -EAGAIN) */
@@ -344,9 +315,7 @@ int nlbl_comm_send(struct nlbl_handle *hndl, nlbl_msg *msg)
 	creds.gid = getegid();
 
 	/* set the message properties */
-#if LIBNL_VERSION >= 1006
 	nlmsg_set_creds(msg, &creds);
-#endif
 
 	/* request a netlink ack message */
 	nl_hdr = nlbl_msg_nlhdr(msg);
@@ -355,9 +324,5 @@ int nlbl_comm_send(struct nlbl_handle *hndl, nlbl_msg *msg)
 	nl_hdr->nlmsg_flags |= NLM_F_ACK;
 
 	/* send the message */
-#if LIBNL_VERSION == 1005
-	return nl_send_auto_complete(hndl->nl_hndl, nlbl_msg_nlhdr(msg));
-#elif LIBNL_VERSION >= 1006
 	return nl_send_auto_complete(hndl->nl_hndl, msg);
-#endif
 }
diff --git a/libnetlabel/netlabel_internal.h b/libnetlabel/netlabel_internal.h
index acc2f03..54200af 100644
--- a/libnetlabel/netlabel_internal.h
+++ b/libnetlabel/netlabel_internal.h
@@ -27,6 +27,14 @@
 
 #include <netlink/netlink.h>
 
+#define nl_handle_alloc             nl_socket_alloc
+#define nl_handle_destroy           nl_socket_free
+#define nl_handle                   nl_sock
+#define nlmsg_build(ptr)            nlmsg_inherit(ptr)
+#define nl_set_passcred             nl_socket_set_passcred
+#define nl_disable_sequence_check   nl_socket_disable_seq_check
+#define nlmsg_len                   nlmsg_datalen
+
 /* NetLabel communication handle */
 struct nlbl_handle {
 	struct nl_handle *nl_hndl;
@@ -37,46 +45,5 @@ struct nlbl_handle {
 	 (((hdr)->nlmsg_flags & NLM_F_MULTI) && \
 	  ((hdr)->nlmsg_type != NLMSG_DONE)))
 
-/* Specify which version of libnl we are using */
-/*  1.0-pre5 => 1005 */
-/*  1.0-pre6 => 1006 */
-/*  1.0-pre8 => 1008 */
-/*  1.1      => 1100 */
-#define LIBNL_VERSION		1100
-
-/* XXX - this whole block will most likely go away once libnl supports Generic
- * Netlink */
-#if LIBNL_VERSION <= 1006 /* Generic Netlink types */
-
-/* Generic Netlink message header */
-struct genlmsghdr {
-	uint8_t cmd;
-	uint8_t version;
-	uint16_t reserved;
-};
-
-#define GENL_ID_CTRL		0x10
-
-enum {
-	CTRL_CMD_UNSPEC,
-	CTRL_CMD_NEWFAMILY,
-	CTRL_CMD_DELFAMILY,
-	CTRL_CMD_GETFAMILY,
-	CTRL_CMD_NEWOPS,
-	CTRL_CMD_DELOPS,
-	CTRL_CMD_GETOPS,
-	__CTRL_CMD_MAX,
-};
-#define CTRL_CMD_MAX (__CTRL_CMD_MAX - 1)
-
-enum {
-	CTRL_ATTR_UNSPEC,
-	CTRL_ATTR_FAMILY_ID,
-	CTRL_ATTR_FAMILY_NAME,
-	__CTRL_ATTR_MAX,
-};
-#define CTRL_ATTR_MAX (__CTRL_ATTR_MAX - 1)
-
-#endif /* Generic Netlink types */
 
 #endif
diff --git a/libnetlabel/netlabel_msg.c b/libnetlabel/netlabel_msg.c
index fb2fc58..af00fbe 100644
--- a/libnetlabel/netlabel_msg.c
+++ b/libnetlabel/netlabel_msg.c
@@ -63,11 +63,7 @@ nlbl_msg *nlbl_msg_new(void)
 	struct genlmsghdr genl_hdr;
 
 	/* create the message with a simple netlink header */
-#if LIBNL_VERSION >= 1008
 	msg = nlmsg_alloc();
-#else
-	msg = nlmsg_build_no_hdr();
-#endif
 	if (msg == NULL)
 		goto msg_new_failure;
 
diff --git a/macros.mk b/macros.mk
index a9466f0..b9f8813 100644
--- a/macros.mk
+++ b/macros.mk
@@ -53,7 +53,7 @@ CPPFLAGS += -I$(TOPDIR) -I$(TOPDIR)/include
 LIBFLAGS =
 
 CFLAGS ?= -Wl,-z,relro -Wall -O0 -g
-CFLAGS += -fPIC
+CFLAGS += `pkg-config --cflags libnl-3.0` -fPIC
 LDFLAGS ?= -z relro -g
 
 #
diff --git a/netlabelctl/Makefile b/netlabelctl/Makefile
index 06af6a5..07cebbb 100644
--- a/netlabelctl/Makefile
+++ b/netlabelctl/Makefile
@@ -49,7 +49,7 @@ CONF_FILE = netlabel.rules
 
 OBJS = main.o mgmt.o map.o unlabeled.o cipsov4.o
 
-LDFLAGS := ../libnetlabel/libnetlabel.a -lnl -lm
+LDFLAGS := ../libnetlabel/libnetlabel.a `pkg-config --libs libnl-3.0` -lm
 
 DEPS = $(OBJS:%.o=%.d)
 
-- 
1.8.4.5

openSUSE Build Service is sponsored by