From 34195bf6ddec586df823c4adecd692424cf3a0fe Mon Sep 17 00:00:00 2001 From: hasso Date: Tue, 6 Apr 2004 12:07:06 +0000 Subject: [quagga-dev 1002]. Also fix date of previous commit in Chanelog. --- zebra/ChangeLog | 7 ++++++- zebra/rt_netlink.c | 8 +++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/zebra/ChangeLog b/zebra/ChangeLog index d337a3e5..981c85ce 100644 --- a/zebra/ChangeLog +++ b/zebra/ChangeLog @@ -1,4 +1,9 @@ -2004-04-18 Hasso Tepper +2004-04-06 Krzysztof Oledzki + + * rt_netlink.c: Do not ignore metric when reading kernel routing + table on Linux with rt_netlink interface. + +2004-03-18 Hasso Tepper * interface.c: Temporary fix for handling secondary addresses with label. diff --git a/zebra/rt_netlink.c b/zebra/rt_netlink.c index e50f12f7..fed8829b 100644 --- a/zebra/rt_netlink.c +++ b/zebra/rt_netlink.c @@ -633,6 +633,8 @@ netlink_routing_table (struct sockaddr_nl *snl, struct nlmsghdr *h) int index; int table; + int metric; + void *dest; void *gate; @@ -671,6 +673,7 @@ netlink_routing_table (struct sockaddr_nl *snl, struct nlmsghdr *h) flags |= ZEBRA_FLAG_SELFROUTE; index = 0; + metric = 0; dest = NULL; gate = NULL; @@ -686,6 +689,9 @@ netlink_routing_table (struct sockaddr_nl *snl, struct nlmsghdr *h) if (tb[RTA_GATEWAY]) gate = RTA_DATA (tb[RTA_GATEWAY]); + if (tb[RTA_PRIORITY]) + metric = *(int *) RTA_DATA(tb[RTA_PRIORITY]); + if (rtm->rtm_family == AF_INET) { struct prefix_ipv4 p; @@ -693,7 +699,7 @@ netlink_routing_table (struct sockaddr_nl *snl, struct nlmsghdr *h) memcpy (&p.prefix, dest, 4); p.prefixlen = rtm->rtm_dst_len; - rib_add_ipv4 (ZEBRA_ROUTE_KERNEL, flags, &p, gate, index, table, 0, 0); + rib_add_ipv4 (ZEBRA_ROUTE_KERNEL, flags, &p, gate, index, table, metric, 0); } #ifdef HAVE_IPV6 if (rtm->rtm_family == AF_INET6) -- cgit v1.2.1