From 83e5824c82ff01c8277b5ed88f8aa0f207efc8f4 Mon Sep 17 00:00:00 2001 From: Jeff Hill Date: Wed, 23 May 2001 21:39:28 +0000 Subject: [PATCH] better config of ifconfig differences --- src/ca/if_depen.c | 18 ++++++++---------- src/include/os/Linux/osiSock.h | 2 ++ src/include/os/WIN32/osiSock.h | 4 ++++ src/include/os/alpha/osiSock.h | 2 ++ src/include/os/cygwin32/osiSock.h | 2 ++ src/include/os/hp700/osiSock.h | 2 ++ src/include/os/sgi/osiSock.h | 2 ++ src/include/os/solaris/osiSock.h | 2 ++ src/include/os/sun4/osiSock.h | 2 ++ src/include/os/vms/osiSock.h | 2 ++ src/include/os/vxWorks/osiSock.h | 6 ++++++ 11 files changed, 34 insertions(+), 10 deletions(-) diff --git a/src/ca/if_depen.c b/src/ca/if_depen.c index 12a70571c..b5dec0003 100644 --- a/src/ca/if_depen.c +++ b/src/ca/if_depen.c @@ -54,18 +54,16 @@ static char *sccsId = "@(#) $Id$"; * Made difficult by the fact that addresses larger than the structure * size may be returned from the kernel. */ -static struct ifreq * ifreqNext (struct ifreq *pifreq) +static struct ifreq * ifreqNext ( struct ifreq *pifreq ) { - unsigned int size; + size_t size; -#if ( defined (BSD) && ( BSD >= 44 ) ) || defined ( SOCKADDR_HAS_LEN ) - size = pifreq->ifr_addr.sa_len + sizeof(pifreq->ifr_name); - if (size < sizeof(*pifreq)) - size = sizeof(*pifreq); -#else - size = sizeof(*pifreq); -#endif - return (struct ifreq *)(size + (char *)pifreq); + size = ifreq_size ( pifreq ); + if ( size < sizeof ( *pifreq ) ) { + size = sizeof ( *pifreq ); + } + + return ( struct ifreq * )( size + ( char * ) pifreq ); } /* diff --git a/src/include/os/Linux/osiSock.h b/src/include/os/Linux/osiSock.h index 4bda2841f..c399d5a13 100644 --- a/src/include/os/Linux/osiSock.h +++ b/src/include/os/Linux/osiSock.h @@ -68,5 +68,7 @@ typedef socklen_t osiSocklen_t; #define SOCK_EINTR EINTR #define SOCK_EPIPE EPIPE +#define ifreq_size(pifreq) sizeof(*pifreq) + #endif /*osiSockH*/ diff --git a/src/include/os/WIN32/osiSock.h b/src/include/os/WIN32/osiSock.h index 6f181c9dc..e3bdcc4aa 100644 --- a/src/include/os/WIN32/osiSock.h +++ b/src/include/os/WIN32/osiSock.h @@ -45,3 +45,7 @@ typedef int osiSocklen_t; * fd can be used with FD_SET(), FD_CLR(), and FD_ISSET(). */ #define FD_IN_FDSET(FD) (1) + +#define ifreq_size(pifreq) sizeof(*pifreq) + + diff --git a/src/include/os/alpha/osiSock.h b/src/include/os/alpha/osiSock.h index 580e3d67c..dcb4bb68a 100644 --- a/src/include/os/alpha/osiSock.h +++ b/src/include/os/alpha/osiSock.h @@ -62,5 +62,7 @@ typedef int osiSocklen_t; #define SOCK_EINTR EINTR #define SOCK_EPIPE EPIPE +#define ifreq_size(pifreq) sizeof(*pifreq) + #endif /*osiSockH*/ diff --git a/src/include/os/cygwin32/osiSock.h b/src/include/os/cygwin32/osiSock.h index 99630a1a2..2d360b684 100644 --- a/src/include/os/cygwin32/osiSock.h +++ b/src/include/os/cygwin32/osiSock.h @@ -80,5 +80,7 @@ typedef int osiSocklen_t; #define SOCK_EINTR EINTR #define SOCK_EPIPE EPIPE +#define ifreq_size(pifreq) sizeof(*pifreq) + #endif /*osiSockH*/ diff --git a/src/include/os/hp700/osiSock.h b/src/include/os/hp700/osiSock.h index 5d6760b93..cd1b402ec 100644 --- a/src/include/os/hp700/osiSock.h +++ b/src/include/os/hp700/osiSock.h @@ -64,5 +64,7 @@ typedef int osiSocklen_t; #define SOCK_EINTR EINTR #define SOCK_EPIPE EPIPE +#define ifreq_size(pifreq) sizeof(*pifreq) + #endif /*osiSockH*/ diff --git a/src/include/os/sgi/osiSock.h b/src/include/os/sgi/osiSock.h index 81a0567b9..e5f1192bb 100644 --- a/src/include/os/sgi/osiSock.h +++ b/src/include/os/sgi/osiSock.h @@ -61,5 +61,7 @@ typedef int osiSocklen_t; #define SOCK_EINTR EINTR #define SOCK_EPIPE EPIPE +#define ifreq_size(pifreq) sizeof(*pifreq) + #endif /*osiSockH*/ diff --git a/src/include/os/solaris/osiSock.h b/src/include/os/solaris/osiSock.h index 2a2da4a16..7279f7265 100644 --- a/src/include/os/solaris/osiSock.h +++ b/src/include/os/solaris/osiSock.h @@ -72,5 +72,7 @@ typedef int osiSocklen_t; #define SOCK_EINTR EINTR #define SOCK_EPIPE EPIPE +#define ifreq_size(pifreq) sizeof(*pifreq) + #endif /*osiSockH*/ diff --git a/src/include/os/sun4/osiSock.h b/src/include/os/sun4/osiSock.h index 1b31affae..7290e19a6 100644 --- a/src/include/os/sun4/osiSock.h +++ b/src/include/os/sun4/osiSock.h @@ -128,5 +128,7 @@ typedef int osiSocklen_t; #define SOCK_EINTR EINTR #define SOCK_EPIPE EPIPE +#define ifreq_size(pifreq) sizeof(*pifreq) + #endif /*osiSockH*/ diff --git a/src/include/os/vms/osiSock.h b/src/include/os/vms/osiSock.h index 31b83942b..2d08953d5 100644 --- a/src/include/os/vms/osiSock.h +++ b/src/include/os/vms/osiSock.h @@ -158,5 +158,7 @@ typedef int osiSocklen_t; # define FD_IN_FDSET(FD) ((FD)=0) #endif +#define ifreq_size(pifreq) sizeof(*pifreq) + #endif /*osiSockH*/ diff --git a/src/include/os/vxWorks/osiSock.h b/src/include/os/vxWorks/osiSock.h index d32a4f563..27350d3af 100644 --- a/src/include/os/vxWorks/osiSock.h +++ b/src/include/os/vxWorks/osiSock.h @@ -58,6 +58,12 @@ typedef int osiSocklen_t; #define INADDR_LOOPBACK 0x7F000001 #endif +#if ( defined (BSD) && ( BSD >= 44 ) ) +# define ifreq_size(pifreq) (pifreq->ifr_addr.sa_len + sizeof(pifreq->ifr_name)) +#else +# define ifreq_size(pifreq) sizeof(*pifreq) +#endif + #endif /*osiSockH*/