diff options
author | rbalocca <rbalocca@vyatta.com> | 2008-05-07 15:26:08 -0700 |
---|---|---|
committer | rbalocca <rbalocca@vyatta.com> | 2008-05-07 15:26:08 -0700 |
commit | 80e8c9a7cabc4717f58b5cd83047bf1e880df85b (patch) | |
tree | 4c1440f5263e6652026dd1af12f55c05c719673b | |
parent | 6e4fa7d9e4e3d86d3ad992c2ac9cf561c93973f4 (diff) | |
parent | b805b43fde589feee4823145e1dc7b5ac5d4f080 (diff) | |
download | quagga-80e8c9a7cabc4717f58b5cd83047bf1e880df85b.tar.bz2 quagga-80e8c9a7cabc4717f58b5cd83047bf1e880df85b.tar.xz |
Merge branch 'hollywood' of git:/git/vyatta-quagga into hollywood
-rw-r--r-- | zebra/rt_netlink.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/zebra/rt_netlink.c b/zebra/rt_netlink.c index c387917b..b794f18a 100644 --- a/zebra/rt_netlink.c +++ b/zebra/rt_netlink.c @@ -1015,6 +1015,7 @@ netlink_link_change (struct sockaddr_nl *snl, struct nlmsghdr *h) /* Add interface. */ if (h->nlmsg_type == RTM_NEWLINK) { + unsigned long flag = ifi->ifi_flags & 0x0000fffff; ifp = if_lookup_by_name (name); if (ifp == NULL || !CHECK_FLAG (ifp->status, ZEBRA_INTERFACE_ACTIVE)) @@ -1022,8 +1023,11 @@ netlink_link_change (struct sockaddr_nl *snl, struct nlmsghdr *h) if (ifp == NULL) ifp = if_get_by_name (name); + zlog_info ("interface %s index %d %s added.", + name, ifi->ifi_index, if_flag_dump(flag)); + set_ifindex(ifp, ifi->ifi_index); - ifp->flags = ifi->ifi_flags & 0x0000fffff; + ifp->flags = flag; ifp->mtu6 = ifp->mtu = *(int *) RTA_DATA (tb[IFLA_MTU]); ifp->metric = 1; @@ -1037,9 +1041,11 @@ netlink_link_change (struct sockaddr_nl *snl, struct nlmsghdr *h) ifp->mtu6 = ifp->mtu = *(int *) RTA_DATA (tb[IFLA_MTU]); ifp->metric = 1; + zlog_info ("interface %s index %d changed %s.", + name, ifi->ifi_index, if_flag_dump(flag)); if (if_is_operative (ifp)) { - ifp->flags = ifi->ifi_flags & 0x0000fffff; + ifp->flags = flag; if (!if_is_operative (ifp)) if_down (ifp); else @@ -1065,6 +1071,9 @@ netlink_link_change (struct sockaddr_nl *snl, struct nlmsghdr *h) name); return 0; } + else + zlog_info ("interface %s index %d deleted.", + name, ifi->ifi_index); if_delete_update (ifp); } |