From 6502208c3217e52e693146e6b72e76fd76982a51 Mon Sep 17 00:00:00 2001 From: Paul Jakma Date: Tue, 6 Mar 2007 13:43:05 +0000 Subject: [zebra] Fix interface metric bug on BSD 2007-03-06 Paul Jakma * kernel_socket.c: (ifam_read) Do not update interface metric on receipt of NEW/DEL ADDR messages, bogus as: a) some systems dont include iface metric for address events b) we didn't update clients either. Initial diagnosis by Eugene Grosbein. --- zebra/ChangeLog | 7 +++++++ zebra/kernel_socket.c | 9 ++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) (limited to 'zebra') diff --git a/zebra/ChangeLog b/zebra/ChangeLog index 7bdec921..97dcd5f5 100644 --- a/zebra/ChangeLog +++ b/zebra/ChangeLog @@ -1,3 +1,10 @@ +2007-03-06 Paul Jakma + + * kernel_socket.c: (ifam_read) Do not update interface metric on + receipt of NEW/DEL ADDR messages, bogus as: a) some systems + dont include iface metric for address events b) we didn't + update clients either. Initial diagnosis by Eugene Grosbein. + 2007-02-26 Robert Olsson * irdp_main.c: (irdp_send_thread) Skip non-AF_INET addresses, diff --git a/zebra/kernel_socket.c b/zebra/kernel_socket.c index ac06566a..52812367 100644 --- a/zebra/kernel_socket.c +++ b/zebra/kernel_socket.c @@ -585,8 +585,15 @@ ifam_read (struct ifa_msghdr *ifam) if (ifnlen && strncmp (ifp->name, ifname, INTERFACE_NAMSIZ)) isalias = 1; +#if 0 + /* it might seem cute to grab the interface metric here, however + * we're processing an address update message, and so some systems + * (e.g. FBSD) dont bother to fill in ifam_metric. Disabled, but left + * in deliberately, as comment. + */ ifp->metric = ifam->ifam_metric; - +#endif + /* Add connected address. */ switch (sockunion_family (&addr)) { -- cgit v1.2.1