[Quagga] Ignore wireless netlink messages
This patch fixes a bug where zebra terminates randomly with SIGABRT. The problem originates from zebra trying to parse wireless netlink messages. The following patch makes zebra ignore these messages. Signed-off-by: Acinonyx <acinonyxs@yahoo.gr> git-svn-id: svn://svn.openwrt.org/openwrt/packages@15676 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
parent
8aad134848
commit
a4205296d7
40
net/quagga/patches/130-netlink_ignore_wireless.patch
Normal file
40
net/quagga/patches/130-netlink_ignore_wireless.patch
Normal file
@ -0,0 +1,40 @@
|
||||
diff --git a/zebra/rt_netlink.c b/zebra/rt_netlink.c
|
||||
index 61b2505..e766259 100644
|
||||
--- a/zebra/rt_netlink.c
|
||||
+++ b/zebra/rt_netlink.c
|
||||
@@ -487,6 +487,17 @@ netlink_interface (struct sockaddr_nl *snl, struct nlmsghdr *h)
|
||||
/* Looking up interface name. */
|
||||
memset (tb, 0, sizeof tb);
|
||||
netlink_parse_rtattr (tb, IFLA_MAX, IFLA_RTA (ifi), len);
|
||||
+
|
||||
+#ifdef IFLA_WIRELESS
|
||||
+ /* check for wireless messages to ignore */
|
||||
+ if ((tb[IFLA_WIRELESS] != NULL) && (ifi->ifi_change == 0))
|
||||
+ {
|
||||
+ if (IS_ZEBRA_DEBUG_KERNEL)
|
||||
+ zlog_debug ("%s: ignoring IFLA_WIRELESS message", __func__);
|
||||
+ return 0;
|
||||
+ }
|
||||
+#endif /* IFLA_WIRELESS */
|
||||
+
|
||||
if (tb[IFLA_IFNAME] == NULL)
|
||||
return -1;
|
||||
name = (char *) RTA_DATA (tb[IFLA_IFNAME]);
|
||||
@@ -943,6 +954,17 @@ netlink_link_change (struct sockaddr_nl *snl, struct nlmsghdr *h)
|
||||
/* Looking up interface name. */
|
||||
memset (tb, 0, sizeof tb);
|
||||
netlink_parse_rtattr (tb, IFLA_MAX, IFLA_RTA (ifi), len);
|
||||
+
|
||||
+#ifdef IFLA_WIRELESS
|
||||
+ /* check for wireless messages to ignore */
|
||||
+ if ((tb[IFLA_WIRELESS] != NULL) && (ifi->ifi_change == 0))
|
||||
+ {
|
||||
+ if (IS_ZEBRA_DEBUG_KERNEL)
|
||||
+ zlog_debug ("%s: ignoring IFLA_WIRELESS message", __func__);
|
||||
+ return 0;
|
||||
+ }
|
||||
+#endif /* IFLA_WIRELESS */
|
||||
+
|
||||
if (tb[IFLA_IFNAME] == NULL)
|
||||
return -1;
|
||||
name = (char *) RTA_DATA (tb[IFLA_IFNAME]);
|
Loading…
x
Reference in New Issue
Block a user