diff options
author | paul <paul> | 2004-05-08 05:00:31 +0000 |
---|---|---|
committer | paul <paul> | 2004-05-08 05:00:31 +0000 |
commit | e4de185299ceb9dfbfdab87c878bf662467f353a (patch) | |
tree | 61e0db63a5ff9955e6cdac68a73a2ce51de1e877 | |
parent | 8a5e9596301214461f84abf178d1a6b265629d94 (diff) | |
download | quagga-e4de185299ceb9dfbfdab87c878bf662467f353a.tar.bz2 quagga-e4de185299ceb9dfbfdab87c878bf662467f353a.tar.xz |
2004-05-08 Sowmini Varadhan <sowmini.varadhan@sun.com>
* if.h: Add mtu6 field to struct interface, IPv6 MTU may differ
from IPv4, and Solaris treats the MTU's differently.
Add connected_add_by_prefix, for use by later patch.
* if.c: (connected_add_by_prefix) Add prefix to connected list.
(if_flag_dump) Solaris: Dump IFF_IPv4/6 flag
(if_dump) Dump mtu6 flag, for HAVE_IPV6.
-rw-r--r-- | lib/ChangeLog | 9 | ||||
-rw-r--r-- | lib/if.c | 37 | ||||
-rw-r--r-- | lib/if.h | 12 |
3 files changed, 53 insertions, 5 deletions
diff --git a/lib/ChangeLog b/lib/ChangeLog index 121d1d62..b7c54228 100644 --- a/lib/ChangeLog +++ b/lib/ChangeLog @@ -1,3 +1,12 @@ +2004-05-08 Sowmini Varadhan <sowmini.varadhan@sun.com> + + * if.h: Add mtu6 field to struct interface, IPv6 MTU may differ + from IPv4, and Solaris treats the MTU's differently. + Add connected_add_by_prefix, for use by later patch. + * if.c: (connected_add_by_prefix) Add prefix to connected list. + (if_flag_dump) Solaris: Dump IFF_IPv4/6 flag + (if_dump) Dump mtu6 flag, for HAVE_IPV6. + 2004-04-21 Boris Kovalenko <boris@tagnet.ru> * daemon.c: (daemon) fix check for error return from setsid @@ -30,7 +30,6 @@ #include "if.h" #include "sockunion.h" #include "prefix.h" -#include "zebra/connected.h" #include "memory.h" #include "table.h" #include "buffer.h" @@ -402,6 +401,10 @@ if_flag_dump (unsigned long flag) IFF_OUT_LOG (IFF_LINK1, "LINK1"); IFF_OUT_LOG (IFF_LINK2, "LINK2"); IFF_OUT_LOG (IFF_MULTICAST, "MULTICAST"); +#ifdef SOLARIS_IPV6 + IFF_OUT_LOG (IFF_IPV4, "IFF_IPv4"); + IFF_OUT_LOG (IFF_IPV6, "IFF_IPv6"); +#endif /* SOLARIS_IPV6 */ strlcat (logbuf, ">", BUFSIZ); @@ -414,8 +417,15 @@ if_dump (struct interface *ifp) { listnode node; - zlog_info ("Interface %s index %d metric %d mtu %d %s", + zlog_info ("Interface %s index %d metric %d mtu %d " +#ifdef HAVE_IPV6 + "mtu6 %d " +#endif /* HAVE_IPV6 */ + "%s", ifp->name, ifp->ifindex, ifp->metric, ifp->mtu, +#ifdef HAVE_IPV6 + ifp->mtu6, +#endif /* HAVE_IPV6 */ if_flag_dump (ifp->flags)); for (node = listhead (ifp->connected); node; nextnode (node)) @@ -709,6 +719,29 @@ connected_lookup_address (struct interface *ifp, struct in_addr dst) return match; } +struct connected * +connected_add_by_prefix (struct interface *ifp, struct prefix *p, + struct prefix *destination) +{ + struct connected *ifc; + + /* Allocate new connected address. */ + ifc = connected_new (); + ifc->ifp = ifp; + + /* Fetch interface address */ + ifc->address = prefix_new(); + memcpy (ifc->address, p, sizeof(struct prefix)); + + /* Fetch dest address */ + ifc->destination = prefix_new(); + memcpy (ifc->destination, destination, sizeof(struct prefix)); + + /* Add connected address to the interface. */ + listnode_add (ifp->connected, ifc); + return ifc; +} + #ifndef HAVE_IF_NAMETOINDEX unsigned int if_nametoindex (const char *name) @@ -94,7 +94,8 @@ struct interface int metric; /* Interface MTU. */ - int mtu; + int mtu; /* IPv4 MTU */ + int mtu6; /* IPv6 MTU - probably, but not neccessarily same as mtu */ /* Hardware address. */ #ifdef HAVE_SOCKADDR_DL @@ -205,8 +206,13 @@ char *ifindex2ifname (unsigned int); struct connected *connected_new (); void connected_free (struct connected *); void connected_add (struct interface *, struct connected *); -struct connected *connected_delete_by_prefix (struct interface *, struct prefix *); -struct connected *connected_lookup_address (struct interface *, struct in_addr); +struct connected *connected_add_by_prefix (struct interface *, + struct prefix *, + struct prefix *); +struct connected *connected_delete_by_prefix (struct interface *, + struct prefix *); +struct connected *connected_lookup_address (struct interface *, + struct in_addr); #ifndef HAVE_IF_NAMETOINDEX unsigned int if_nametoindex (const char *); |