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.
diff --git a/lib/if.c b/lib/if.c
index 8237b2f..e76f609 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 @@
   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 @@
 {
   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 @@
   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)