diff options
author | paul <paul> | 2004-05-08 05:00:31 +0000 |
---|---|---|
committer | paul <paul> | 2004-05-08 05:00:31 +0000 |
commit | 4a7aac1bc609ee147492b228af9222f526e2ca2f (patch) | |
tree | 4f764b16562766422bca65ff2f6668a51757b9ec /lib/if.c | |
parent | 5bd4189c17bad7a9e115ef573c0324c4b969a641 (diff) |
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.
Diffstat (limited to 'lib/if.c')
-rw-r--r-- | lib/if.c | 37 |
1 files changed, 35 insertions, 2 deletions
@@ -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) |