diff options
Diffstat (limited to 'zebra')
-rw-r--r-- | zebra/ChangeLog | 8 | ||||
-rw-r--r-- | zebra/interface.c | 19 | ||||
-rw-r--r-- | zebra/ioctl.c | 8 | ||||
-rw-r--r-- | zebra/mtu_kvm.c | 4 | ||||
-rw-r--r-- | zebra/rt_netlink.c | 6 |
5 files changed, 35 insertions, 10 deletions
diff --git a/zebra/ChangeLog b/zebra/ChangeLog index a543da8e..9ac66dcc 100644 --- a/zebra/ChangeLog +++ b/zebra/ChangeLog @@ -7,6 +7,10 @@ (zsend_ipv4_delete) ditto. (zsend_ipv6_add) ditto. (zsend_ipv6_delete) ditto. + * ioctl.c: (if_get_mtu) set mtu6 to mtu + * mtu_kvm.c: (if_kvm_get_mtu) set mtu6 to mtu + * rt_netlink.c: (netlink_interface) set mtu6 to mtu + (netlink_link_change) ditto 2004-05-09 Sowmini Varadhan <sowmini.varadhan@sun.com> @@ -21,6 +25,10 @@ (various) Apply static qualifier. Add comments. * zserv.h: Definitions changed as per above. * redistribute.c: Changes as per zserv.c. + * interface.c: (if_delete_update) only used with HAVE_NETLINK + and RTM_IFANNOUNCE. + (if_flag_dump_vty) Solaris IFF_IPV4 and IFF_IPV6 if flags + (if_dump_vty) print mtu6 if not same as mtu 2004-04-06 Krzysztof Oledzki <oleq@ans.pl> diff --git a/zebra/interface.c b/zebra/interface.c index 84bac4a0..748bf00d 100644 --- a/zebra/interface.c +++ b/zebra/interface.c @@ -209,7 +209,14 @@ if_add_update (struct interface *ifp) } } -/* Handle an interface delete event */ + +/* Handle an interface delete event + * + * This function is only called when support for + * RTM_IFANNOUNCE or AF_NETLINK sockets (RTM_DELLINK message) + * is available. It is not called on, eg, Solaris. + */ +#if (defined(RTM_IFANNOUNCE) || defined(HAVE_NETLINK)) void if_delete_update (struct interface *ifp) { @@ -261,6 +268,7 @@ if_delete_update (struct interface *ifp) } zebra_interface_delete_update (ifp); } +#endif /* (defined(RTM_IFANNOUNCE) || defined(HAVE_NETLINK) */ /* Interface is up. */ void @@ -381,6 +389,10 @@ if_flag_dump_vty (struct vty *vty, unsigned long flag) IFF_OUT_VTY (IFF_LINK1, "LINK1"); IFF_OUT_VTY (IFF_LINK2, "LINK2"); IFF_OUT_VTY (IFF_MULTICAST, "MULTICAST"); +#ifdef SOLARIS_IPV6 + IFF_OUT_VTY (IFF_IPV4, "IFF_IPv4"); + IFF_OUT_VTY (IFF_IPV6, "IFF_IPv6"); +#endif /* SOLARIS_IPV6 */ vty_out (vty, ">"); } @@ -514,6 +526,11 @@ if_dump_vty (struct vty *vty, struct interface *ifp) vty_out (vty, " index %d metric %d mtu %d ", ifp->ifindex, ifp->metric, ifp->mtu); if_flag_dump_vty (vty, ifp->flags); +#ifdef HAVE_IPV6 + if (ifp->mtu6 != ifp->mtu) + vty_out (vty, "mtu6 %d ", ifp->mtu6); +#endif + vty_out (vty, "%s", VTY_NEWLINE); /* Hardware address. */ diff --git a/zebra/ioctl.c b/zebra/ioctl.c index ff253be1..eca0e769 100644 --- a/zebra/ioctl.c +++ b/zebra/ioctl.c @@ -148,19 +148,19 @@ if_get_mtu (struct interface *ifp) if (if_ioctl (SIOCGIFMTU, (caddr_t) & ifreq) < 0) { zlog_info ("Can't lookup mtu by ioctl(SIOCGIFMTU)"); - ifp->mtu = -1; + ifp->mtu6 = ifp->mtu = -1; return; } #ifdef SUNOS_5 - ifp->mtu = ifreq.ifr_metric; + ifp->mtu6 = ifp->mtu = ifreq.ifr_metric; #else - ifp->mtu = ifreq.ifr_mtu; + ifp->mtu6 = ifp->mtu = ifreq.ifr_mtu; #endif /* SUNOS_5 */ #else zlog (NULL, LOG_INFO, "Can't lookup mtu on this system"); - ifp->mtu = -1; + ifp->mtu6 = ifp->mtu = -1; #endif } diff --git a/zebra/mtu_kvm.c b/zebra/mtu_kvm.c index 3731dab6..d37bb9bb 100644 --- a/zebra/mtu_kvm.c +++ b/zebra/mtu_kvm.c @@ -46,7 +46,7 @@ if_kvm_get_mtu (struct interface *ifp) {""} }; - ifp->mtu = -1; + ifp->mtu6 = ifp->mtu = -1; kvmd = kvm_openfiles (NULL, NULL, NULL, O_RDONLY, buf); @@ -93,5 +93,5 @@ if_kvm_get_mtu (struct interface *ifp) return ; } - ifp->mtu = ifnet.if_mtu; + ifp->mtu6 = ifp->mtu = ifnet.if_mtu; } diff --git a/zebra/rt_netlink.c b/zebra/rt_netlink.c index fed8829b..26369dd8 100644 --- a/zebra/rt_netlink.c +++ b/zebra/rt_netlink.c @@ -447,7 +447,7 @@ netlink_interface (struct sockaddr_nl *snl, struct nlmsghdr *h) ifp->ifindex = ifi->ifi_index; ifp->flags = ifi->ifi_flags & 0x0000fffff; - ifp->mtu = *(int *) RTA_DATA (tb[IFLA_MTU]); + ifp->mtu6 = ifp->mtu = *(int *) RTA_DATA (tb[IFLA_MTU]); ifp->metric = 1; /* Hardware type and address. */ @@ -910,7 +910,7 @@ netlink_link_change (struct sockaddr_nl *snl, struct nlmsghdr *h) ifp->ifindex = ifi->ifi_index; ifp->flags = ifi->ifi_flags & 0x0000fffff; - ifp->mtu = *(int *) RTA_DATA (tb[IFLA_MTU]); + ifp->mtu6 = ifp->mtu = *(int *) RTA_DATA (tb[IFLA_MTU]); ifp->metric = 1; /* If new link is added. */ @@ -920,7 +920,7 @@ netlink_link_change (struct sockaddr_nl *snl, struct nlmsghdr *h) { /* Interface status change. */ ifp->ifindex = ifi->ifi_index; - ifp->mtu = *(int *) RTA_DATA (tb[IFLA_MTU]); + ifp->mtu6 = ifp->mtu = *(int *) RTA_DATA (tb[IFLA_MTU]); ifp->metric = 1; if (if_is_operative (ifp)) |