summaryrefslogtreecommitdiff
path: root/lib/if.c
diff options
context:
space:
mode:
authorpaul <paul>2004-05-08 05:00:31 +0000
committerpaul <paul>2004-05-08 05:00:31 +0000
commit4a7aac1bc609ee147492b228af9222f526e2ca2f (patch)
tree4f764b16562766422bca65ff2f6668a51757b9ec /lib/if.c
parent5bd4189c17bad7a9e115ef573c0324c4b969a641 (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.c37
1 files changed, 35 insertions, 2 deletions
diff --git a/lib/if.c b/lib/if.c
index 8237b2f2..e76f6092 100644
--- a/lib/if.c
+++ b/lib/if.c
@@ -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)