diff options
| -rw-r--r-- | zebra/ChangeLog | 7 | ||||
| -rw-r--r-- | zebra/ioctl.h | 10 | ||||
| -rw-r--r-- | zebra/kernel_socket.c | 4 | ||||
| -rw-r--r-- | zebra/redistribute.c | 7 | 
4 files changed, 23 insertions, 5 deletions
| diff --git a/zebra/ChangeLog b/zebra/ChangeLog index d453aea1..1b1e1a99 100644 --- a/zebra/ChangeLog +++ b/zebra/ChangeLog @@ -4,7 +4,12 @@  	* if_ioctl_solaris.c: Fixup some erroneous privilege changes and  	  add privs.h header.  	* ioctl_solaris.c: ditto -	  +	* ioctl.h: Add if_ioctl_ipv6 prototype and AF_IOCTL for SOLARIS_IPV6 +	* kernel_socket.c: Fix SAROUNDUP, compiler doesnt like do..while +	  RHS in assignments :) +	* redistribute.c: (zebra_interface_delete_update) only used +	  if RTM_IFANNOUNCE and NETLINK is available. +		   2004-05-09 Paul Jakma <paul@dishone.st>  	* zserv.c: (zsend_route_multipath) Set the nexthop_num diff --git a/zebra/ioctl.h b/zebra/ioctl.h index 157fc44e..eadc69a0 100644 --- a/zebra/ioctl.h +++ b/zebra/ioctl.h @@ -40,7 +40,15 @@ void if_get_mtu (struct interface *);  #ifdef HAVE_IPV6  int if_prefix_add_ipv6 (struct interface *, struct connected *);  int if_prefix_delete_ipv6 (struct interface *, struct connected *); -  #endif /* HAVE_IPV6 */ +#ifdef SOLARIS_IPV6 +int if_ioctl_ipv6(u_long, caddr_t); +struct connected *if_lookup_linklocal( struct interface *); + +#define AF_IOCTL(af, request, buffer) \ +        ((af) == AF_INET? if_ioctl(request, buffer) : \ +                          if_ioctl_ipv6(request, buffer)) +#endif /* SOLARIS_IPV6 */ +  #endif /* _ZEBRA_IOCTL_H */ diff --git a/zebra/kernel_socket.c b/zebra/kernel_socket.c index 9dd26157..20c6cc83 100644 --- a/zebra/kernel_socket.c +++ b/zebra/kernel_socket.c @@ -63,14 +63,12 @@ extern struct zebra_t zebrad;   * but round them up nonetheless.   */  #define SAROUNDUP(X) \ -    do { \      (((struct sockaddr *)(X))->sa_family == AF_INET ?   \        ROUNDUP(sizeof(struct sockaddr_in)):\        (((struct sockaddr *)(X))->sa_family == AF_INET6 ? \         ROUNDUP(sizeof(struct sockaddr_in6)) :  \         (((struct sockaddr *)(X))->sa_family == AF_LINK ? \ -         ROUNDUP(sizeof(struct sockaddr_dl)) : sizeof(struct sockaddr)))) \ -    } while (0) +         ROUNDUP(sizeof(struct sockaddr_dl)) : sizeof(struct sockaddr))))  #else /* HAVE_IPV6 */   #define SAROUNDUP(X) \        (((struct sockaddr *)(X))->sa_family == AF_INET ?   \ diff --git a/zebra/redistribute.c b/zebra/redistribute.c index ae61a448..a4335c17 100644 --- a/zebra/redistribute.c +++ b/zebra/redistribute.c @@ -347,6 +347,12 @@ zebra_interface_add_update (struct interface *ifp)  	zsend_interface_add (client, ifp);  } +/* + * This function is only called  when support for  + * RTM_IFANNOUNCE or AF_NETLINK sockets (RTM_DELLINK message) + * is available. It is not called on Solaris. + */ +#if (defined(RTM_IFANNOUNCE) || defined(HAVE_NETLINK))  void  zebra_interface_delete_update (struct interface *ifp)  { @@ -361,6 +367,7 @@ zebra_interface_delete_update (struct interface *ifp)        if (client->ifinfo)  	zsend_interface_delete (client, ifp);  } +#endif /* defined(RTM_IFANNOUNCE) || defined(HAVE_NETLINK) */  /* Interface address addition. */  void | 
