diff --git a/netlabel_tools-0.17-newlibnl.patch b/netlabel_tools-0.17-newlibnl.patch
index 5931896..88eda66 100644
--- a/netlabel_tools-0.17-newlibnl.patch
+++ b/netlabel_tools-0.17-newlibnl.patch
@@ -1,5 +1,6 @@
---- netlabel_tools-0.17/libnetlabel/netlabel_comm.c.spc 2008-02-07 08:57:38.000000000 -0600
-+++ netlabel_tools-0.17/libnetlabel/netlabel_comm.c 2008-02-07 09:02:01.000000000 -0600
+diff -up netlabel_tools-0.17/libnetlabel/netlabel_internal.h.libnl netlabel_tools-0.17/libnetlabel/netlabel_internal.h
+--- netlabel_tools-0.17/libnetlabel/netlabel_internal.h.libnl 2006-09-28 17:18:05.000000000 -0500
++++ netlabel_tools-0.17/libnetlabel/netlabel_internal.h 2008-02-11 09:24:06.000000000 -0600
@@ -8,19 +8,17 @@
/*
* (c) Copyright Hewlett-Packard Development Company, L.P., 2006
@@ -27,86 +28,14 @@
*
*/
-@@ -100,7 +98,10 @@
- goto open_failure;
-
- /* set the netlink handle properties */
--#if LIBNL_VERSION >= 1006
-+#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
-@@ -177,7 +178,11 @@
- * 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);
-@@ -250,7 +255,11 @@
- * 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);
-@@ -349,6 +358,6 @@
- #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);
-+ return nl_send_auto_complete(hndl->nl_hndl, msg);
- #endif
- }
---- netlabel_tools-0.17/libnetlabel/netlabel_internal.h.spc 2008-02-07 08:58:27.000000000 -0600
-+++ netlabel_tools-0.17/libnetlabel/netlabel_internal.h 2008-02-07 09:02:01.000000000 -0600
-@@ -8,19 +8,17 @@
- /*
- * (c) Copyright Hewlett-Packard Development Company, L.P., 2006
- *
-- * This program is free software; you can redistribute it and/or modify
-- * it under the terms of the GNU General Public License as published by
-- * the Free Software Foundation; either version 2 of the License, or
-- * (at your option) any later version.
-+ * This program is free software: you can redistribute it and/or modify
-+ * it under the terms of version 2 of the GNU General Public License as
-+ * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
-- * but WITHOUT ANY WARRANTY; without even the implied warranty of
-- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
-- * the GNU General Public License for more details.
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
-- * along with this program; if not, write to the Free Software
-- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-+ * along with this program. If not, see .
- *
- */
-
-@@ -37,11 +35,12 @@
+@@ -37,11 +35,13 @@ struct nlbl_handle_s {
/* Specify which version of libnl we are using */
/* 1.0-pre5 => 1005 */
/* 1.0-pre6 => 1006 */
-#define LIBNL_VERSION 1005
+/* 1.0-pre8 => 1008 */
-+#define LIBNL_VERSION 1008
++/* 1.1 => 1100 */
++#define LIBNL_VERSION 1100
/* XXX - this whole block will most likely go away once libnl supports Generic
* Netlink */
@@ -115,8 +44,9 @@
/* Generic Netlink message header */
struct genlmsghdr {
---- netlabel_tools-0.17/libnetlabel/netlabel_msg.c.spc 2008-02-07 08:57:55.000000000 -0600
-+++ netlabel_tools-0.17/libnetlabel/netlabel_msg.c 2008-02-07 09:02:01.000000000 -0600
+diff -up netlabel_tools-0.17/libnetlabel/netlabel_msg.c.libnl netlabel_tools-0.17/libnetlabel/netlabel_msg.c
+--- netlabel_tools-0.17/libnetlabel/netlabel_msg.c.libnl 2006-09-28 17:18:05.000000000 -0500
++++ netlabel_tools-0.17/libnetlabel/netlabel_msg.c 2008-02-11 09:22:13.000000000 -0600
@@ -8,19 +8,17 @@
/*
* (c) Copyright Hewlett-Packard Development Company, L.P., 2006
@@ -144,7 +74,7 @@
*
*/
-@@ -52,7 +50,11 @@
+@@ -52,7 +50,11 @@ nlbl_msg *nlbl_msg_new(void)
struct genlmsghdr genl_hdr;
/* create the message with a simple netlink header */
@@ -156,3 +86,133 @@
if (msg == NULL)
goto msg_new_failure;
+diff -up netlabel_tools-0.17/libnetlabel/netlabel_comm.c.libnl netlabel_tools-0.17/libnetlabel/netlabel_comm.c
+--- netlabel_tools-0.17/libnetlabel/netlabel_comm.c.libnl 2006-09-28 17:18:05.000000000 -0500
++++ netlabel_tools-0.17/libnetlabel/netlabel_comm.c 2008-02-11 09:24:06.000000000 -0600
+@@ -8,28 +8,33 @@
+ /*
+ * (c) Copyright Hewlett-Packard Development Company, L.P., 2006
+ *
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 2 of the License, or
+- * (at your option) any later version.
++ * This program is free software: you can redistribute it and/or modify
++ * it under the terms of version 2 of the GNU General Public License as
++ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
+- * the GNU General Public License for more details.
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++ * along with this program. If not, see .
+ *
+ */
+
+ #include
+ #include
+ #include
++#include
+ #include
++
++#ifndef __USE_GNU
++#define __USE_GNU
+ #include
+-#include
++#undef __USE_GNU
++#else
++#include
++#endif
+
+ #include
+
+@@ -100,7 +105,10 @@ nlbl_handle *nlbl_comm_open(void)
+ goto open_failure;
+
+ /* set the netlink handle properties */
+-#if LIBNL_VERSION >= 1006
++#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
+@@ -177,7 +185,11 @@ int nlbl_comm_recv_raw(nlbl_handle *hndl
+ * 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);
+@@ -188,14 +200,12 @@ int nlbl_comm_recv_raw(nlbl_handle *hndl
+
+ /* perform the read operation */
+ *data = NULL;
+-#if LIBNL_VERSION == 1005
+- ret_val = nl_recv(hndl->nl_hndl, &peer_nladdr, data);
++#if LIBNL_VERSION >= 1006
++ ret_val = nl_recv(hndl->nl_hndl, &peer_nladdr, data, &creds);
+ if (ret_val < 0)
+ return ret_val;
+- /* XXX - avoid a compiler warning about unused variables */
+- creds = NULL;
+-#elif LIBNL_VERSION >= 1006
+- ret_val = nl_recv(hndl->nl_hndl, &peer_nladdr, data, &creds);
++#else
++ ret_val = nl_recv(hndl->nl_hndl, &peer_nladdr, data);
+ if (ret_val < 0)
+ return ret_val;
+ #endif
+@@ -250,7 +260,11 @@ int nlbl_comm_recv(nlbl_handle *hndl, nl
+ * 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);
+@@ -260,12 +274,16 @@ int nlbl_comm_recv(nlbl_handle *hndl, nl
+ return -EAGAIN;
+
+ /* perform the read operation */
+-#if LIBNL_VERSION == 1005
+- ret_val = nl_recv(hndl->nl_hndl, &peer_nladdr, &data);
++#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);
++ 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
+@@ -349,6 +367,6 @@ int nlbl_comm_send(nlbl_handle *hndl, nl
+ #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);
++ return nl_send_auto_complete(hndl->nl_hndl, msg);
+ #endif
+ }
diff --git a/netlabel_tools.spec b/netlabel_tools.spec
index 19541c2..ff5dcfe 100644
--- a/netlabel_tools.spec
+++ b/netlabel_tools.spec
@@ -29,7 +29,7 @@ configure the kernel subsystem.
%patch1 -p1
# Upstream patch.
%patch2 -p0
-%patch3 -p1
+%patch3 -p1 -b .libnl
%build
# Don't use _smp_mflags, it's small and a hand crafted Makefile