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))  | 
