diff options
| -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 *);  | 
