summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--debian/changelog48
-rw-r--r--debian/vyatta-quagga.prerm2
-rw-r--r--zebra/rt_netlink.c40
3 files changed, 75 insertions, 15 deletions
diff --git a/debian/changelog b/debian/changelog
index 4b3e200c..8b1075c2 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,51 @@
+vyatta-quagga (0.99.9-9) unstable; urgency=low
+
+ 3.0.5
+ [ Mark O'Brien ]
+
+
+ [ An-Cheng Huang ]
+ * fix package upgrade problem caused by prerm script.
+
+ [ Mark O'Brien ]
+
+ -- Mark O'Brien <mobrien@vyatta.com> Tue, 06 May 2008 12:43:40 -0700
+
+vyatta-quagga (0.99.9-8) unstable; urgency=low
+
+ 3.0.4
+ [ Mark O'Brien ]
+
+
+ [ Stephen Hemminger ]
+ * filter out all route change responses on listen socket
+ * quiet noisy errors from zebra
+
+ [ Mark O'Brien ]
+
+ -- Mark O'Brien <mobrien@vyatta.com> Mon, 05 May 2008 16:40:58 -0700
+
+vyatta-quagga (0.99.9-7) unstable; urgency=low
+
+ 3.0.3
+ [ Mark O'Brien ]
+
+
+ [ Stephen Hemminger ]
+ * mark static routes as inactive when link is down
+ * Don't build watchlink
+ * Don't build watchlink
+ * Check nexthop for internal routes
+ * Check nexthop status
+ * Two passes on update (ipv4 and ipv6)
+
+ [ rbalocca ]
+ * Indicate the VC4.0.2 release candidate in the changelog
+
+ [ Mark O'Brien ]
+
+ -- Mark O'Brien <mobrien@vyatta.com> Tue, 29 Apr 2008 16:42:45 -0700
+
vyatta-quagga (0.99.9-6) unstable; urgency=low
VC4.0.2
diff --git a/debian/vyatta-quagga.prerm b/debian/vyatta-quagga.prerm
index 4794d342..69792d27 100644
--- a/debian/vyatta-quagga.prerm
+++ b/debian/vyatta-quagga.prerm
@@ -1 +1,3 @@
+#!/bin/sh
+
case "$1" in upgrade) exit 0;; esac
diff --git a/zebra/rt_netlink.c b/zebra/rt_netlink.c
index 273c3121..c387917b 100644
--- a/zebra/rt_netlink.c
+++ b/zebra/rt_netlink.c
@@ -425,7 +425,13 @@ netlink_parse_info (int (*filter) (struct sockaddr_nl *, struct nlmsghdr *),
if (nl == &netlink_cmd
&& (-errnum == ENODEV || -errnum == ESRCH)
&& (msg_type == RTM_NEWROUTE || msg_type == RTM_DELROUTE))
- loglvl = LOG_DEBUG;
+ {
+ /* These errors are normal during link transistion */
+ if (IS_ZEBRA_DEBUG_KERNEL)
+ loglvl = LOG_DEBUG;
+ else
+ return -1;
+ }
zlog (NULL, loglvl, "%s error: %s, type=%s(%u), "
"seq=%u, pid=%u",
@@ -1939,22 +1945,26 @@ kernel_read (struct thread *thread)
return 0;
}
-/* Filter out messages from self that occur on listener socket */
-static void netlink_install_filter (int sock)
+/* Filter out messages from self that occur on listener socket,
+ caused by our actions on the command socket
+ */
+static void netlink_install_filter (int sock, __u32 pid)
{
- /* BPF code to exclude all RTM_NEWROUTE messages from ZEBRA */
struct sock_filter filter[] = {
+ /* 0: ldh [4] */
BPF_STMT(BPF_LD|BPF_ABS|BPF_H, offsetof(struct nlmsghdr, nlmsg_type)),
- /* 0: ldh [4] */
- BPF_JUMP(BPF_JMP|BPF_JEQ|BPF_K, htons(RTM_NEWROUTE), 0, 3),
- /* 1: jeq 0x18 jt 2 jf 5 */
- BPF_STMT(BPF_LD|BPF_ABS|BPF_B,
- sizeof(struct nlmsghdr) + offsetof(struct rtmsg, rtm_protocol)),
- /* 2: ldb [23] */
- BPF_JUMP(BPF_JMP+ BPF_B, RTPROT_ZEBRA, 0, 1),
- /* 3: jeq 0xb jt 4 jf 5 */
- BPF_STMT(BPF_RET|BPF_K, 0), /* 4: ret 0 */
- BPF_STMT(BPF_RET|BPF_K, 0xffff), /* 5: ret 0xffff */
+ /* 1: jeq 0x18 jt 3 jf 6 */
+ BPF_JUMP(BPF_JMP|BPF_JEQ|BPF_K, htons(RTM_NEWROUTE), 1, 0),
+ /* 2: jeq 0x19 jt 3 jf 6 */
+ BPF_JUMP(BPF_JMP|BPF_JEQ|BPF_K, htons(RTM_DELROUTE), 0, 3),
+ /* 3: ldw [12] */
+ BPF_STMT(BPF_LD|BPF_ABS|BPF_W, offsetof(struct nlmsghdr, nlmsg_pid)),
+ /* 4: jeq XX jt 5 jf 6 */
+ BPF_JUMP(BPF_JMP|BPF_JEQ|BPF_K, htonl(pid), 0, 1),
+ /* 5: ret 0 (skip) */
+ BPF_STMT(BPF_RET|BPF_K, 0),
+ /* 6: ret 0xffff (keep) */
+ BPF_STMT(BPF_RET|BPF_K, 0xffff),
};
struct sock_fprog prog = {
@@ -1983,7 +1993,7 @@ kernel_init (void)
/* Register kernel socket. */
if (netlink.sock > 0)
{
- netlink_install_filter (netlink.sock);
+ netlink_install_filter (netlink.sock, netlink_cmd.snl.nl_pid);
thread_add_read (zebrad.master, kernel_read, NULL, netlink.sock);
}
}