From 5697a9353c6582639fe3166fa06a7e8370193e15 Mon Sep 17 00:00:00 2001 From: Cedric Roux <cedric.roux@eurecom.fr> Date: Sun, 24 Nov 2013 17:15:58 +0000 Subject: [PATCH] - Update for kernel versions > 3.5.0 pre-ci ok git-svn-id: http://svn.eurecom.fr/openair4G/trunk@4505 818b1a75-f10b-46b9-bf7c-635c3b92a50f --- openair2/NAS/DRIVER/MESH/netlink.c | 46 +++++++++++++++++++++--------- 1 file changed, 33 insertions(+), 13 deletions(-) diff --git a/openair2/NAS/DRIVER/MESH/netlink.c b/openair2/NAS/DRIVER/MESH/netlink.c index 49d72d921e..574f311549 100644 --- a/openair2/NAS/DRIVER/MESH/netlink.c +++ b/openair2/NAS/DRIVER/MESH/netlink.c @@ -34,6 +34,7 @@ */ //#include <linux/config.h> +#include <linux/version.h> #include <linux/socket.h> #include <linux/kernel.h> #include <linux/module.h> @@ -57,7 +58,9 @@ static struct sock *nas_nl_sk = NULL; static int exit_netlink_thread=0; static int nas_netlink_rx_thread(void *); - +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,0) +struct netlink_kernel_cfg oai_netlink_cfg; +#endif static DEFINE_MUTEX(nasmesh_mutex); @@ -152,20 +155,33 @@ int nas_netlink_init() { printk("[NAS][NETLINK] Running init ...\n"); - - nas_nl_sk = netlink_kernel_create( -#ifdef KERNEL_VERSION_GREATER_THAN_2622 - &init_net, -#endif - NAS_NETLINK_ID, - 0, - nas_nl_data_ready, -#ifdef KERNEL_VERSION_GREATER_THAN_2622 - &nasmesh_mutex, // NULL -#endif - THIS_MODULE); +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,0) + oai_netlink_cfg.groups = 0; + oai_netlink_cfg.input = nas_nl_data_ready; + oai_netlink_cfg.cb_mutex = &nasmesh_mutex; + oai_netlink_cfg.bind = NULL; + nas_nl_sk = netlink_kernel_create( + &init_net, + NAS_NETLINK_ID, +# if LINUX_VERSION_CODE < KERNEL_VERSION(3,8,0) + THIS_MODULE, +# endif + &oai_netlink_cfg); +#else /* LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,0) */ + nas_nl_sk = netlink_kernel_create( +# ifdef KERNEL_VERSION_GREATER_THAN_2622 + &init_net, +# endif + NAS_NETLINK_ID, + 0, + nas_nl_data_ready, +# ifdef KERNEL_VERSION_GREATER_THAN_2622 + &nasmesh_mutex, // NULL +# endif + THIS_MODULE); +#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,0) */ if (nas_nl_sk == NULL) { @@ -224,7 +240,11 @@ int nas_netlink_send(unsigned char *data,unsigned int len) { nlh->nlmsg_pid = 0; /* from kernel */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,7,0) + NETLINK_CB(nl_skb).portid = 0; +#else NETLINK_CB(nl_skb).pid = 0; +#endif #ifdef NETLINK_DEBUG printk("[NAS][NETLINK] In nas_netlink_send, nl_skb %p, nl_sk %x, nlh %p, nlh->nlmsg_len %d\n",nl_skb,nas_nl_sk,nlh,nlh->nlmsg_len); -- GitLab