218 lines
8.4 KiB
Diff
218 lines
8.4 KiB
Diff
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
|
|
*
|
|
- * 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 <http://www.gnu.org/licenses/>.
|
|
*
|
|
*/
|
|
|
|
@@ -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 */
|
|
+/* 1.1 => 1100 */
|
|
+#define LIBNL_VERSION 1100
|
|
|
|
/* XXX - this whole block will most likely go away once libnl supports Generic
|
|
* Netlink */
|
|
-#if 1 /* Generic Netlink types */
|
|
+#if LIBNL_VERSION <= 1006 /* Generic Netlink types */
|
|
|
|
/* Generic Netlink message header */
|
|
struct genlmsghdr {
|
|
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
|
|
*
|
|
- * 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 <http://www.gnu.org/licenses/>.
|
|
*
|
|
*/
|
|
|
|
@@ -52,7 +50,11 @@ 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 -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 <http://www.gnu.org/licenses/>.
|
|
*
|
|
*/
|
|
|
|
#include <stdlib.h>
|
|
#include <errno.h>
|
|
#include <unistd.h>
|
|
+#include <linux/types.h>
|
|
#include <sys/types.h>
|
|
+
|
|
+#ifndef __USE_GNU
|
|
+#define __USE_GNU
|
|
#include <sys/socket.h>
|
|
-#include <linux/types.h>
|
|
+#undef __USE_GNU
|
|
+#else
|
|
+#include <sys/socket.h>
|
|
+#endif
|
|
|
|
#include <libnetlabel.h>
|
|
|
|
@@ -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
|
|
}
|