[package] ipset: fix ipset for kernel 2.6.35
[openwrt.git] / package / swconfig / src / swlib.c
index fbc0365..59456a3 100644 (file)
@@ -24,6 +24,9 @@
 #include <sys/socket.h>
 #include <linux/switch.h>
 #include "swlib.h"
+#include <netlink/netlink.h>
+#include <netlink/genl/genl.h>
+#include <netlink/genl/family.h>
 
 //#define DEBUG 1
 #ifdef DEBUG
@@ -32,7 +35,7 @@
 #define DPRINTF(fmt, ...) do {} while (0)
 #endif
 
-static struct nl_handle *handle;
+static struct nl_sock *handle;
 static struct nl_cache *cache;
 static struct genl_family *family;
 static struct nlattr *tb[SWITCH_ATTR_MAX];
@@ -507,7 +510,7 @@ swlib_priv_free(void)
        if (cache)
                nl_cache_free(cache);
        if (handle)
-               nl_handle_destroy(handle);
+               nl_socket_free(handle);
        handle = NULL;
        cache = NULL;
 }
@@ -515,7 +518,9 @@ swlib_priv_free(void)
 static int
 swlib_priv_init(void)
 {
-       handle = nl_handle_alloc();
+       int ret;
+
+       handle = nl_socket_alloc();
        if (!handle) {
                DPRINTF("Failed to create handle\n");
                goto err;
@@ -526,8 +531,8 @@ swlib_priv_init(void)
                goto err;
        }
 
-       cache = genl_ctrl_alloc_cache(handle);
-       if (!cache) {
+       ret = genl_ctrl_alloc_cache(handle, &cache);
+       if (ret < 0) {
                DPRINTF("Failed to allocate netlink cache\n");
                goto err;
        }
@@ -576,11 +581,13 @@ add_switch(struct nl_msg *msg, void *arg)
        if (tb[SWITCH_ATTR_ID])
                dev->id = nla_get_u32(tb[SWITCH_ATTR_ID]);
        if (tb[SWITCH_ATTR_NAME])
-               dev->name = strdup(nla_get_string(tb[SWITCH_ATTR_DEV_NAME]));
+               dev->name = strdup(nla_get_string(tb[SWITCH_ATTR_NAME]));
        if (tb[SWITCH_ATTR_PORTS])
                dev->ports = nla_get_u32(tb[SWITCH_ATTR_PORTS]);
        if (tb[SWITCH_ATTR_VLANS])
                dev->vlans = nla_get_u32(tb[SWITCH_ATTR_VLANS]);
+       if (tb[SWITCH_ATTR_CPU_PORT])
+               dev->cpu_port = nla_get_u32(tb[SWITCH_ATTR_CPU_PORT]);
 
        if (!sa->head) {
                sa->head = dev;
This page took 0.026914 seconds and 4 git commands to generate.