summaryrefslogtreecommitdiff
path: root/zebra
diff options
context:
space:
mode:
Diffstat (limited to 'zebra')
-rw-r--r--zebra/ChangeLog8
-rw-r--r--zebra/interface.c19
-rw-r--r--zebra/ioctl.c8
-rw-r--r--zebra/mtu_kvm.c4
-rw-r--r--zebra/rt_netlink.c6
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))