From 0a49d8afa240553b6ca3facc4a419ff0439434a7 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Sat, 21 Mar 2015 13:53:08 +0000 Subject: [PATCH] Add patch to support libnl3, Use %%license, Cleanup spec --- 0001-Port-to-libnl3.patch | 222 ++++++++++++++++++++++++++++++++++++++ netlabel_tools.spec | 25 +++-- 2 files changed, 239 insertions(+), 8 deletions(-) create mode 100644 0001-Port-to-libnl3.patch diff --git a/0001-Port-to-libnl3.patch b/0001-Port-to-libnl3.patch new file mode 100644 index 0000000..e9e7f6d --- /dev/null +++ b/0001-Port-to-libnl3.patch @@ -0,0 +1,222 @@ +From d82ed2081cf58fb2504ba037d7a1e6444ec5019a Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Cristian=20Rodr=C3=ADguez?= +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 + ++#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 + diff --git a/netlabel_tools.spec b/netlabel_tools.spec index f7ba64d..ce394ac 100644 --- a/netlabel_tools.spec +++ b/netlabel_tools.spec @@ -6,13 +6,15 @@ License: GPLv2 Group: System Environment/Daemons URL: http://netlabel.sf.net/ Source0: http://downloads.sourceforge.net/netlabel/%{name}-%{version}.tar.gz -BuildRoot: %{_tmppath}/%{name}-%{version} -Requires: kernel >= 2.6.19 +# http://sourceforge.net/p/netlabel/bugs/1/ +Patch0: 0001-Port-to-libnl3.patch + +Requires: kernel Requires(post): systemd Requires(preun): systemd Requires(postun): systemd -BuildRequires: kernel-headers >= 2.6.19 -BuildRequires: libnl-devel +BuildRequires: kernel-headers +BuildRequires: libnl3-devel BuildRequires: doxygen BuildRequires: systemd @@ -25,13 +27,13 @@ kernel subsystem. %prep %setup -q +%patch0 -p1 -b .nl3 %build ./configure --prefix="%{_prefix}" --libdir="%{_libdir}" --enable-systemd CFLAGS="%{optflags}" make V=1 %{?_smp_mflags} %install -rm -rf "%{buildroot}" mkdir -p "%{buildroot}/etc" mkdir -p "%{buildroot}/%{_sbindir}" mkdir -p "%{buildroot}/%{_unitdir}" @@ -42,14 +44,15 @@ make V=1 DESTDIR="%{buildroot}" install %systemd_preun netlabel.service %postun -%systemd_postun +%systemd_postun netlabel.service %post %systemd_post netlabel.service %files -%defattr(-,root,root) -%doc README CHANGELOG LICENSE +%{!?_licensedir:%global license %%doc} +%license LICENSE +%doc README CHANGELOG %attr(0644,root,root) %{_mandir}/man8/* %attr(0755,root,root) %{_sbindir}/netlabelctl %attr(0755,root,root) %{_sbindir}/netlabel-config @@ -57,6 +60,11 @@ make V=1 DESTDIR="%{buildroot}" install %attr(0644,root,root) %config(noreplace) /etc/netlabel.rules %changelog +* Sat Mar 21 2015 Peter Robinson 0.20-5 +- Add patch to support libnl3 +- Use %%license +- Cleanup spec + * Sun Aug 17 2014 Fedora Release Engineering - 0.20-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild @@ -65,6 +73,7 @@ make V=1 DESTDIR="%{buildroot}" install * Thu Feb 27 2014 Paul Moore - 0.20-2 - Build with CFLAGS="${optflags}" + * Sat Aug 03 2013 Fedora Release Engineering - 0.20-1 - Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild