diff options
-rw-r--r-- | ChangeLog | 22 | ||||
-rw-r--r-- | bgpd/Makefile.am | 2 | ||||
-rw-r--r-- | bgpd/bgp_network.c | 8 | ||||
-rwxr-xr-x | configure.ac | 450 | ||||
-rw-r--r-- | isisd/isis_circuit.c | 6 | ||||
-rw-r--r-- | lib/if.h | 4 | ||||
-rw-r--r-- | lib/smux.c | 4 | ||||
-rw-r--r-- | lib/sockunion.c | 16 | ||||
-rw-r--r-- | lib/vty.c | 4 | ||||
-rw-r--r-- | lib/zclient.c | 12 | ||||
-rw-r--r-- | lib/zebra.h | 2 | ||||
-rw-r--r-- | ospfclient/ospf_apiclient.c | 12 | ||||
-rw-r--r-- | ospfd/ospf_packet.c | 4 | ||||
-rw-r--r-- | ripd/ripd.c | 12 | ||||
-rw-r--r-- | vtysh/vtysh.c | 4 | ||||
-rw-r--r-- | watchquagga/watchquagga.c | 6 | ||||
-rw-r--r-- | zebra/interface.c | 8 | ||||
-rw-r--r-- | zebra/ioctl.c | 28 | ||||
-rw-r--r-- | zebra/kernel_socket.c | 8 | ||||
-rw-r--r-- | zebra/rt_ioctl.c | 32 | ||||
-rw-r--r-- | zebra/rt_socket.c | 16 | ||||
-rw-r--r-- | zebra/rtadv.c | 8 | ||||
-rw-r--r-- | zebra/rtadv.h | 6 | ||||
-rw-r--r-- | zebra/zserv.c | 12 |
24 files changed, 360 insertions, 326 deletions
@@ -1,3 +1,25 @@ +2007-05-09 Paul Jakma <paul.jakma@sun.com> + + * configure.ac: sys/conf.h depends on sys/param.h, at least on + FBSD 6.2. + (bug #363) Should check for in_pktinfo for IRDP + +2006-05-27 Paul Jakma <paul.jakma@sun.com> + + * configure.ac: General cleanup of header and type checks, introducing + an internal define, QUAGGA_INCLUDES, to build up a list of + stuff to include so as to avoid 'present but cant be compiled' + warnings. + Misc additional checks of things missing according to autoscan. + Add LIBM, for bgpd's use of libm, so as to avoid burdening + LIBS, and all the binaries, with libm linkage. + Remove the bad practice of using m4 changequote(), just + quote the []'s in the case statements properly. + This should fix bugs 162, 303 and 178. + * */*.{c,h}: Update all HAVE_* to the standard autoconf namespaced + HAVE_* defines. I.e. HAVE_SA_LEN -> HAVE_STRUCT_SOCKADDR_SA_LEN, + * bgpd/Makefile.am: Add LIBM to bgpd's LDADD, for pow(). + 2007-04-30 Andrew J. Schorr <ajschorr@alumni.princeton.edu> * configure.ac: Change gcc CFLAGS from '-std=c99' to '-std=gnu99' diff --git a/bgpd/Makefile.am b/bgpd/Makefile.am index 0fe82ae0..80e93284 100644 --- a/bgpd/Makefile.am +++ b/bgpd/Makefile.am @@ -22,7 +22,7 @@ noinst_HEADERS = \ bgp_advertise.h bgp_snmp.h bgp_vty.h bgpd_SOURCES = bgp_main.c -bgpd_LDADD = libbgp.a ../lib/libzebra.la @LIBCAP@ +bgpd_LDADD = libbgp.a ../lib/libzebra.la @LIBCAP@ @LIBM@ examplesdir = $(exampledir) dist_examples_DATA = bgpd.conf.sample bgpd.conf.sample2 diff --git a/bgpd/bgp_network.c b/bgpd/bgp_network.c index 61661c0d..8040e47d 100644 --- a/bgpd/bgp_network.c +++ b/bgpd/bgp_network.c @@ -159,9 +159,9 @@ bgp_bind_address (int sock, struct in_addr *addr) memset (&local, 0, sizeof (struct sockaddr_in)); local.sin_family = AF_INET; -#ifdef HAVE_SIN_LEN +#ifdef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN local.sin_len = sizeof(struct sockaddr_in); -#endif /* HAVE_SIN_LEN */ +#endif /* HAVE_STRUCT_SOCKADDR_IN_SIN_LEN */ memcpy (&local.sin_addr, addr, sizeof (struct in_addr)); if ( bgpd_privs.change (ZPRIVS_RAISE) ) @@ -379,9 +379,9 @@ bgp_socket (struct bgp *bgp, unsigned short port) sin.sin_family = AF_INET; sin.sin_port = htons (port); socklen = sizeof (struct sockaddr_in); -#ifdef HAVE_SIN_LEN +#ifdef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN sin.sin_len = socklen; -#endif /* HAVE_SIN_LEN */ +#endif /* HAVE_STRUCT_SOCKADDR_IN_SIN_LEN */ if ( bgpd_privs.change (ZPRIVS_RAISE) ) zlog_err ("bgp_socket: could not raise privs"); diff --git a/configure.ac b/configure.ac index b24ab916..7e493608 100755 --- a/configure.ac +++ b/configure.ac @@ -143,9 +143,9 @@ dnl -------------- dnl Check programs dnl -------------- AC_PROG_INSTALL +AC_PROG_LN_S AC_PROG_MAKE_SET AC_CHECK_TOOL(AR, ar) -AC_CHECK_TOOL(RANLIB, ranlib, :) dnl --------------------------- dnl We, perhaps unfortunately, @@ -268,8 +268,7 @@ fi if test "${enable_broken_aliases}" = "yes"; then if test "${enable_netlink}" = "yes" then - echo "Sorry, you can't use netlink with broken aliases" - exit 1 + AC_MSG_FAILURE([Sorry you can not use netlink with broken aliases]) fi AC_DEFINE(HAVE_BROKEN_ALIASES,,Broken Alias) enable_netlink=no @@ -342,46 +341,130 @@ AC_DEFINE_UNQUOTED(CONFIGFILE_MASK, ${enable_configfile_mask}, Mask for config f enable_logfile_mask=${enable_logfile_mask:-0600} AC_DEFINE_UNQUOTED(LOGFILE_MASK, ${enable_logfile_mask}, Mask for log files) -changequote(, )dnl - MULTIPATH_NUM=1 case "${enable_multipath}" in - [0-9]|[1-9][0-9]) + [[0-9]|[1-9][0-9]]) MULTIPATH_NUM="${enable_multipath}" ;; "") ;; *) - echo "Please specify digit to --enable-multipath ARG." - exit 1 + AC_MSG_FAILURE([Please specify digit to enable multipath ARG]) ;; esac -changequote([, ])dnl - AC_SUBST(MULTIPATH_NUM) -dnl ------------------- -dnl Check header files. -dnl ------------------- +dnl ------------------------------------ +dnl Check C keywords and standard types +dnl ------------------------------------ +AC_C_CONST +AC_C_INLINE +AC_C_RESTRICT +AC_C_VOLATILE AC_HEADER_STDC -AC_CHECK_HEADERS([string.h stropts.h sys/conf.h sys/ksym.h sys/time.h \ - sys/times.h sys/select.h sys/sysctl.h sys/sockio.h \ - sys/types.h linux/version.h kvm.h netdb.h asm/types.h \ - sys/param.h libutil.h limits.h stdint.h]) +AC_HEADER_TIME +AC_HEADER_SYS_WAIT +dnl AC_TYPE_PID_T +AC_TYPE_UID_T +AC_TYPE_MODE_T +AC_TYPE_SIZE_T +AC_TYPE_SIGNAL +AC_STRUCT_TM -AC_CHECK_HEADERS([sys/socket.h netinet/in_systm.h netinet/in.h \ - net/if_dl.h net/netopt.h inet/nd.h net/route.h \ - net/if.h net/if_var.h netinet/in_var.h]) +dnl ------------------------- +dnl Check other header files. +dnl ------------------------- +AC_CHECK_HEADERS([stropts.h sys/ksym.h sys/times.h sys/select.h \ + sys/types.h linux/version.h netdb.h asm/types.h \ + sys/param.h limits.h signal.h libutil.h \ + sys/socket.h netinet/in.h]) + +dnl Utility macro to avoid retyping includes all the time +m4_define([QUAGGA_INCLUDES], +[#ifdef SUNOS_5 +#define _XPG4_2 +#define __EXTENSIONS__ +#endif +#include <stdio.h> +#if STDC_HEADERS +# include <stdlib.h> +# include <stddef.h> +#else +# if HAVE_STDLIB_H +# include <stdlib.h> +# endif +#endif +#if HAVE_SYS_TYPES_H +# include <sys/types.h> +#endif +/* sys/conf.h depends on param.h on FBSD at least */ +#if HAVE_SYS_PARAM_H +# include <sys/param.h> +#endif +/* Required for MAXSIG */ +#if HAVE_SIGNAL_H +# include <signal.h> +#endif +#if HAVE_SYS_SOCKET_H +# include <sys/socket.h> +#endif +#if HAVE_NETINET_IN_H +# include <netinet/in.h> +#endif +])dnl + +AC_CHECK_HEADERS([sys/un.h net/if.h netinet/in_systm.h netinet/in_var.h \ + net/if_dl.h net/if_var.h net/netopt.h net/route.h \ + inet/nd.h arpa/inet.h \ + fcntl.h stddef.h sys/ioctl.h syslog.h wchar.h wctype.h \ + sys/sysctl.h sys/sockio.h kvm.h sys/conf.h], + [], [], QUAGGA_INCLUDES) + +AC_CHECK_HEADERS([ucontext.h], [], [], +[#ifndef __USE_GNU +#define __USE_GNU +#endif /* __USE_GNU */ +QUAGGA_INCLUDES +]) + +m4_define([QUAGGA_INCLUDES], +QUAGGA_INCLUDES +[#if HAVE_NET_IF_H +# include <net/if.h> +#endif +#if HAVE_SYS_UN_H +# include <sys/un.h> +#endif +#if HAVE_NETINET_IN_SYSTM_H +# include <netinet/in_systm.h> +#endif +#if HAVE_NETINET_IN_VAR_H +# include <netinet/in_var.h> +#endif +#if HAVE_NET_IF_DL_H +# include <net/if_dl.h> +#endif +#if HAVE_NET_IF_VAR_H +# include <net/if_var.h> +#endif +#if HAVE_NET_NETOPT_H +# include <net/netopt.h> +#endif +#if HAVE_NET_ROUTE_H +# include <net/route.h> +#endif +#if HAVE_INET_ND_H +# include <inet/nd.h> +#endif +#if HAVE_ARPA_INET_H +# include <arpa/inet.h> +#endif +])dnl dnl V6 headers are checked below, after we check for v6 -dnl check some types -AC_C_CONST -dnl AC_TYPE_PID_T -AC_TYPE_SIGNAL - dnl Some systems (Solaris 2.x) require libnsl (Network Services Library) case "$host" in [*-sunos5.[6-7]*] | [*-solaris2.[6-7]*]) @@ -446,7 +529,7 @@ case "${enable_vtysh}" in AC_DEFINE(VTYSH,,VTY shell) AC_PATH_PROG(PERL, perl) dnl Vtysh uses libreadline, which looks for termcap functions at -dnl configure time. We follow readline's search order. +dnl configure time. We follow readlines search order. dnl The required procedures are in libtermcap on NetBSD, in dnl [TODO] on Linux, and in [TODO] on Solaris. AC_CHECK_LIB(termcap, tputs, LIBREADLINE="$LIBREADLINE -ltermcap", @@ -481,18 +564,18 @@ dnl ---------- dnl PAM module dnl ---------- if test "$with_libpam" = "yes"; then - AC_CHECK_HEADER(security/pam_misc.h) - if test "$ac_cv_header_security_pam_misc_h" = yes; then - AC_DEFINE(HAVE_PAM_MISC_H,,Have pam_misc.h) - AC_DEFINE(PAM_CONV_FUNC,misc_conv,Have misc_conv) - pam_conv_func="misc_conv" - fi - AC_CHECK_HEADER(security/openpam.h) - if test "$ac_cv_header_security_openpam_h" = yes; then - AC_DEFINE(HAVE_OPENPAM_H,,Have openpam.h) - AC_DEFINE(PAM_CONV_FUNC,openpam_ttyconv,Have openpam_ttyconv) - pam_conv_func="openpam_ttyconv" - fi + AC_CHECK_HEADER([security/pam_misc.h], + [AC_DEFINE(HAVE_PAM_MISC_H,,Have pam_misc.h) + AC_DEFINE(PAM_CONV_FUNC,misc_conv,Have misc_conv) + pam_conv_func="misc_conv" + ], + [], QUAGGA_INCLUDES) + AC_CHECK_HEADER([security/openpam.h], + [AC_DEFINE(HAVE_OPENPAM_H,,Have openpam.h) + AC_DEFINE(PAM_CONV_FUNC,openpam_ttyconv,Have openpam_ttyconv) + pam_conv_func="openpam_ttyconv" + ], + [], QUAGGA_INCLUDES) if test -z "$ac_cv_header_security_pam_misc_h$ac_cv_header_security_openpam_h" ; then AC_MSG_WARN([*** pam support will not be built ***]) with_libpam="no" @@ -500,7 +583,7 @@ if test "$with_libpam" = "yes"; then fi if test "$with_libpam" = "yes"; then -dnl took this test from proftpd's configure.in and suited to our needs +dnl took this test from proftpds configure.in and suited to our needs dnl ------------------------------------------------------------------------- dnl dnl This next check looks funky due to a linker problem with some versions @@ -546,9 +629,51 @@ dnl AC_CHECK_SIZEOF(long) dnl ---------------------------- dnl check existance of functions dnl ---------------------------- -AC_CHECK_FUNCS(memset memcpy strerror inet_aton daemon snprintf vsnprintf \ - strlcat strlcpy if_nametoindex if_indextoname getifaddrs \ - fcntl strnlen strndup) +AC_FUNC_CHOWN +AC_FUNC_FNMATCH +AC_FUNC_FORK +AC_FUNC_MALLOC +AC_FUNC_MEMCMP +AC_FUNC_MKTIME +AC_FUNC_STRFTIME +AC_FUNC_REALLOC +AC_FUNC_STAT +AC_FUNC_SELECT_ARGTYPES +AC_FUNC_STRFTIME +AC_FUNC_STRNLEN +AC_FUNC_VPRINTF + +dnl ------------------------------- +dnl bgpd needs pow() and hence libm +dnl ------------------------------- +TMPLIBS="$LIBS" +AC_CHECK_HEADER([math.h], + [AC_CHECK_LIB([m], [pow], + [LIBM="-lm" + LIBS="$LIBS $LIBM" + AC_DEFINE(HAVE_LIBM,, Have libm) + AC_CHECK_FUNCS(pow,[],[LIBM=""]) + ]) +]) +if test x"$LIBM" = x ; then + AC_MSG_WARN([Unable to find working pow function - bgpd may not link]) +fi +LIBS="$TMPLIBS" +AC_SUBST(LIBM) + +dnl --------------- +dnl other functions +dnl --------------- +AC_CHECK_FUNCS([dup2 ftruncate getcwd gethostbyname getpagesize gettimeofday \ + inet_ntoa \ + memchr memmove memset select socket \ + strcasecmp strchr strcspn strdup strerror \ + strncasecmp strndup strrchr strspn strstr \ + strtol strtoul strlcat strlcpy \ + daemon snprintf vsnprintf \ + if_nametoindex if_indextoname getifaddrs \ + uname fcntl]) + AC_CHECK_FUNCS(setproctitle, , [AC_CHECK_LIB(util, setproctitle, [LIBS="$LIBS -lutil" @@ -626,9 +751,15 @@ AC_RUN_IFELSE([AC_LANG_SOURCE([[ #define _XPG4_2 #define __EXTENSIONS__ #endif -#include <stdlib.h> +#ifdef HAVE_STDLIB_H +# include <stdlib.h> +#endif +#ifdef HAVE_SYS_TYPES_H #include <sys/types.h> +#endif +#ifdef HAVE_SYS_SOCKET_H #include <sys/socket.h> +#endif main() { @@ -707,12 +838,7 @@ AC_SUBST(IOCTL_METHOD) dnl --------------------------------------------------------------- dnl figure out how to specify an interface in multicast sockets API dnl --------------------------------------------------------------- -AC_CHECK_MEMBERS([struct ip_mreqn.imr_ifindex],,,[#ifdef HAVE_SYS_TYPES_H -#include <sys/types.h> -#endif -#ifdef HAVE_NETINET_IN_H -#include <netinet/in.h> -#endif]) +AC_CHECK_MEMBERS([struct ip_mreqn.imr_ifindex], [], [], QUAGGA_INCLUDES) AC_MSG_CHECKING([for BSD struct ip_mreq hack]) AC_TRY_COMPILE([#ifdef HAVE_SYS_PARAM_H @@ -911,9 +1037,29 @@ dnl IPv6 header checks dnl ------------------ if test "x${zebra_cv_ipv6}" = "xyes"; then AC_CHECK_HEADERS([netinet6/in6.h netinet/in6_var.h netinet/icmp6.h \ - netinet6/in6_var.h netinet6/nd6.h]) + netinet6/in6_var.h netinet6/nd6.h], [], [], + QUAGGA_INCLUDES) fi +m4_define([QUAGGA_INCLUDES],dnl +QUAGGA_INCLUDES +[#if HAVE_NETINET6_IN6_H +#include <netinet6/in6.h> +#endif +#if HAVE_NETINET_IN6_VAR_H +#include <netinet/in6_var.h> +#endif +#if HAVE_NETINET_ICMP6_H +# include <netinet/icmp6.h> +#endif +#if HAVE_NETINET6_IN6_VAR_H +# include <netinet6/in6_var.h> +#endif +#if HAVE_NETINET6_ND6_H +# include <netinet6/nd.h> +#endif +])dnl + dnl -------------------- dnl Daemon disable check dnl -------------------- @@ -998,7 +1144,6 @@ AC_CHECK_LIB(c, inet_ntop, [AC_DEFINE(HAVE_INET_NTOP,,inet_ntop)]) AC_CHECK_LIB(c, inet_pton, [AC_DEFINE(HAVE_INET_PTON,,inet_pton)]) AC_CHECK_LIB(crypt, crypt) AC_CHECK_LIB(resolv, res_init) -AC_CHECK_LIB(m, main) dnl --------------------------------------------------- dnl BSD/OS 4.1 define inet_XtoY function as __inet_XtoY @@ -1047,154 +1192,35 @@ if test "${enable_snmp}" = "yes"; then AC_SUBST(SNMP_INCLUDES) fi -dnl ---------------------------- -dnl check sa_len of sockaddr -dnl ---------------------------- -AC_MSG_CHECKING(whether struct sockaddr has a sa_len field) -AC_TRY_COMPILE([#include <sys/types.h> -#include <sys/socket.h> -],[static struct sockaddr ac_i;int ac_j = sizeof (ac_i.sa_len);], -[AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_SA_LEN,,sa_len)], - AC_MSG_RESULT(no)) - -dnl ---------------------------- -dnl check sin_len of sockaddr_in -dnl ---------------------------- -AC_MSG_CHECKING(whether struct sockaddr_in has a sin_len field) -AC_TRY_COMPILE([#include <sys/types.h> -#include <netinet/in.h> -],[static struct sockaddr_in ac_i;int ac_j = sizeof (ac_i.sin_len);], -[AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_SIN_LEN,,sin_len)], - AC_MSG_RESULT(no)) - -dnl ---------------------------- -dnl check sun_len of sockaddr_un -dnl ---------------------------- -AC_MSG_CHECKING(whether struct sockaddr_un has a sun_len field) -AC_TRY_COMPILE([#include <sys/types.h> -#include <sys/un.h> -],[static struct sockaddr_un ac_i;int ac_j = sizeof (ac_i.sun_len);], -[AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_SUN_LEN,,sun_len)], - AC_MSG_RESULT(no)) - -dnl ----------------------------------- -dnl check sin6_scope_id of sockaddr_in6 -dnl ----------------------------------- -if test "$zebra_cv_ipv6" = yes; then - AC_MSG_CHECKING(whether struct sockaddr_in6 has a sin6_scope_id field) - AC_TRY_COMPILE([#include <sys/types.h> -#include <netinet/in.h> -],[static struct sockaddr_in6 ac_i;int ac_j = sizeof (ac_i.sin6_scope_id);], -[AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_SIN6_SCOPE_ID,,scope id)], - AC_MSG_RESULT(no)) -fi - -dnl ---------------------------- -dnl check socklen_t exist or not -dnl ---------------------------- -AC_MSG_CHECKING(whther socklen_t is defined) -AC_TRY_COMPILE([#include <sys/types.h> -#include <sys/socket.h> -#include <netinet/in.h> -],[socklen_t ac_x;], -[AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_SOCKLEN_T,,socklen_t)], - AC_MSG_RESULT(no)) - -dnl ------------------------ -dnl check struct sockaddr_dl -dnl ------------------------ -AC_MSG_CHECKING(whether struct sockaddr_dl exist) -AC_EGREP_HEADER(sockaddr_dl, -net/if_dl.h, -[AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_SOCKADDR_DL,,sockaddr_dl)], - AC_MSG_RESULT(no)) - -dnl -------------------------- -dnl check structure ifaliasreq -dnl -------------------------- -AC_MSG_CHECKING(whether struct ifaliasreq exist) -AC_EGREP_HEADER(ifaliasreq, -net/if.h, -[AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_IFALIASREQ,,ifaliasreq)], - AC_MSG_RESULT(no)) - -dnl ---------------------------- -dnl check structure in6_aliasreq -dnl ---------------------------- -AC_MSG_CHECKING(whether struct in6_aliasreq exist) -AC_EGREP_HEADER(in6_aliasreq, -netinet6/in6_var.h, -[AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_IN6_ALIASREQ,,in6_aliasreq)], - AC_MSG_RESULT(no)) - -dnl ----------------------------------- -dnl check ifra_lifetime of in6_aliasreq -dnl ----------------------------------- -AC_MSG_CHECKING(whether in6_aliasreq.ifra_lifetime exist) -AC_TRY_COMPILE([#include <sys/types.h> -#include <netinet6/in6_var.h> -],[static struct if6_aliasreq ac_i;int ac_j = sizeof (ac_i.ifra_lifetime);], -[AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_IFRA_LIFETIME,,Have in6_aliasreq.ifra_lifetime)], - AC_MSG_RESULT(no)) - dnl --------------------------- -dnl check structure rt_addrinfo +dnl sockaddr and netinet checks dnl --------------------------- -AC_MSG_CHECKING(whether struct rt_addrinfo exist) -AC_EGREP_HEADER(rt_addrinfo, -net/route.h, -[AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_RT_ADDRINFO,,rt_addrinfo)], - AC_MSG_RESULT(no)) - -dnl -------------------------- -dnl check structure in_pktinfo -dnl -------------------------- -AC_MSG_CHECKING(whether struct in_pktinfo exist) -AC_TRY_COMPILE([#include <netinet/in.h> -],[struct in_pktinfo ac_x;], -[AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_INPKTINFO,,in_pktinfo)], - AC_MSG_RESULT(no)) - -dnl ---------------------------------- -dnl check struct nd_opt_homeagent_info -dnl ---------------------------------- -AC_MSG_CHECKING(whether struct nd_opt_homeagent_info exist) -AC_EGREP_HEADER(nd_opt_homeagent_info, -netinet/icmp6.h, -[AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_ND_OPT_HOMEAGENT_INFO,,nd_opt_homeagent_info)], - AC_MSG_RESULT(no)) +AC_CHECK_TYPES([struct sockaddr, struct sockaddr_in, + struct sockaddr_in6, struct sockaddr_un, struct sockaddr_dl, + socklen_t, + struct ifaliasreq, struct if6_aliasreq, struct in6_aliasreq, + struct nd_opt_adv_interval, struct rt_addrinfo, + struct nd_opt_homeagent_info, struct nd_opt_adv_interval, + struct in_pktinfo], + [], [], QUAGGA_INCLUDES) + +AC_CHECK_MEMBERS([struct sockaddr.sa_len, + struct sockaddr_in.sin_len, struct sockaddr_un.sun_len, + struct sockaddr_in6.sin6_scope_id, + struct if6_aliasreq.ifra_lifetime, + struct nd_opt_adv_interval.nd_opt_ai_type], + [], [], QUAGGA_INCLUDES) -dnl -------------------------------- -dnl check struct nd_opt_adv_interval -dnl -------------------------------- -AC_MSG_CHECKING(whether struct nd_opt_adv_interval exist) -AC_EGREP_HEADER(nd_opt_adv_interval, -netinet/icmp6.h, -[AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_ND_OPT_ADV_INTERVAL,,nd_opt_adv_interval)], - AC_MSG_RESULT(no)) - -dnl ------------------------------------ -dnl check fields in nd_opt_adv_interval -dnl ------------------------------------ -AC_MSG_CHECKING(whether nd_opt_ai_type field exist) -AC_EGREP_HEADER(nd_opt_ai_type, -netinet/icmp6.h, -[AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_ND_OPT_ADV_INTERVAL_AI_FIELDS,,nd_opt_ai_type)], - AC_MSG_RESULT(no)) +dnl --------------------------- +dnl pktinfo checks +dnl --------------------------- +AC_CHECK_TYPES([struct in_pktinfo], + [if test "${enable_irdp}" != "no"; then + AC_DEFINE(HAVE_IRDP,, IRDP) + fi], + [if test "${enable_irdp}" = "yes"; then + AC_MSG_ERROR(['IRDP requires in_pktinfo at the moment!']) + fi], [QUAGGA_INCLUDES]) dnl -------------------------------------- dnl checking for getrusage struct and call @@ -1245,11 +1271,6 @@ if test "${enable_capabilities}" != "no"; then fi AC_SUBST(LIBCAP) -dnl ------------------- -dnl test for ucontext.h -dnl ------------------- -AC_CHECK_HEADERS(ucontext.h) - dnl --------------------------- dnl check for glibc 'backtrace' dnl --------------------------- @@ -1269,7 +1290,7 @@ dnl order to check no alternative allocator dnl has been specified, which might not provide dnl mallinfo, e.g. such as Umem on Solaris. dnl ----------------------------------------- -AC_CHECK_HEADERS(malloc.h, +AC_CHECK_HEADER([malloc.h], [AC_MSG_CHECKING(whether mallinfo is available) AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <malloc.h>]], [[struct mallinfo ac_x; ac_x = mallinfo ();]])], @@ -1277,8 +1298,7 @@ AC_CHECK_HEADERS(malloc.h, AC_DEFINE(HAVE_MALLINFO,,mallinfo)], AC_MSG_RESULT(no) ) - ] -) + ], [], QUAGGA_INCLUDES) dnl ---------- dnl configure date @@ -1347,19 +1367,11 @@ dnl --------------------------- dnl Check htonl works correctly dnl --------------------------- AC_MSG_CHECKING(for working htonl) -AC_CACHE_VAL(ac_cv_htonl_works, [ -AC_TRY_LINK([#ifdef HAVE_SYS_TYPES_H -#include <sys/types.h> -#endif -#ifdef HAVE_NETDB_H -#include <netdb.h> -#endif -#ifdef HAVE_NETINET_IN_H -#include <netinet/in.h> -#endif], -[htonl (0);], -ac_cv_htonl_works=yes, -ac_cv_htonl_works=no)]) +AC_CACHE_VAL(ac_cv_htonl_works, + [AC_LINK_IFELSE([AC_LANG_PROGRAM([QUAGGA_INCLUDES],[htonl (0);])], + [ac_cv_htonl_works=yes], [ac_cv_htonl_works=no]) + ] +) AC_MSG_RESULT($ac_cv_htonl_works) AC_CONFIG_FILES([Makefile lib/Makefile zebra/Makefile ripd/Makefile @@ -1378,7 +1390,6 @@ AC_CONFIG_FILES([solaris/Makefile]) AC_CONFIG_FILES([vtysh/extract.pl],[chmod +x vtysh/extract.pl]) ## Hack, but working solution to avoid rebuilding of quagga.info. ## It's already in CVS until texinfo 4.7 is more common. -AC_CONFIG_COMMANDS([info-time],[touch doc/quagga.info]) AC_OUTPUT echo " @@ -1389,8 +1400,9 @@ host operationg system : ${host_os} source code location : ${srcdir} compiler : ${CC} compiler flags : ${CFLAGS} +make : ${MAKE-make} includes : ${INCLUDES} ${SNMP_INCLUDES} -linker flags : ${LDFLAGS} ${LIBS} ${LIBCAP} ${LIBREADLINE} +linker flags : ${LDFLAGS} ${LIBS} ${LIBCAP} ${LIBREADLINE} ${LIBM} state file directory : ${quagga_statedir} config file directory : `eval echo \`echo ${sysconfdir}\`` example directory : `eval echo \`echo ${exampledir}\`` diff --git a/isisd/isis_circuit.c b/isisd/isis_circuit.c index 6ef24a9a..fe3eb827 100644 --- a/isisd/isis_circuit.c +++ b/isisd/isis_circuit.c @@ -380,7 +380,7 @@ isis_circuit_if_add (struct isis_circuit *circuit, struct interface *ifp) /* * Get the Hardware Address */ -#ifdef HAVE_SOCKADDR_DL +#ifdef HAVE_STRUCT_SOCKADDR_DL if (circuit->interface->sdl.sdl_alen != ETHER_ADDR_LEN) zlog_warn ("unsupported link layer"); else @@ -401,7 +401,7 @@ isis_circuit_if_add (struct isis_circuit *circuit, struct interface *ifp) snpa_print (circuit->u.bc.snpa)); #endif /* EXTREME_DEBUG */ -#endif /* HAVE_SOCKADDR_DL */ +#endif /* HAVE_STRUCT_SOCKADDR_DL */ } else if (if_is_pointopoint (ifp)) { @@ -446,7 +446,7 @@ isis_circuit_update_params (struct isis_circuit *circuit, /* * Get the Hardware Address */ -#ifdef HAVE_SOCKADDR_DL +#ifdef HAVE_STRUCT_SOCKADDR_DL if (circuit->interface->sdl.sdl_alen != ETHER_ADDR_LEN) zlog_warn ("unsupported link layer"); else @@ -102,13 +102,13 @@ struct interface unsigned int mtu6; /* IPv6 MTU - probably, but not neccessarily same as mtu */ /* Hardware address. */ -#ifdef HAVE_SOCKADDR_DL +#ifdef HAVE_STRUCT_SOCKADDR_DL struct sockaddr_dl sdl; #else unsigned short hw_type; u_char hw_addr[INTERFACE_HWADDR_MAX]; int hw_addr_len; -#endif /* HAVE_SOCKADDR_DL */ +#endif /* HAVE_STRUCT_SOCKADDR_DL */ /* interface bandwidth, kbits */ unsigned int bandwidth; @@ -237,9 +237,9 @@ smux_socket () memset (&serv, 0, sizeof (struct sockaddr_in)); serv.sin_family = AF_INET; -#ifdef HAVE_SIN_LEN +#ifdef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN serv.sin_len = sizeof (struct sockaddr_in); -#endif /* HAVE_SIN_LEN */ +#endif /* HAVE_STRUCT_SOCKADDR_IN_SIN_LEN */ sp = getservbyname ("smux", "tcp"); if (sp != NULL) diff --git a/lib/sockunion.c b/lib/sockunion.c index 109f3bdd..7721666e 100644 --- a/lib/sockunion.c +++ b/lib/sockunion.c @@ -143,9 +143,9 @@ str2sockunion (const char *str, union sockunion *su) if (ret > 0) /* Valid IPv4 address format. */ { su->sin.sin_family = AF_INET; -#ifdef HAVE_SIN_LEN +#ifdef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN su->sin.sin_len = sizeof(struct sockaddr_in); -#endif /* HAVE_SIN_LEN */ +#endif /* HAVE_STRUCT_SOCKADDR_IN_SIN_LEN */ return 0; } #ifdef HAVE_IPV6 @@ -187,9 +187,9 @@ sockunion_str2su (const char *str) if (ret > 0) /* Valid IPv4 address format. */ { su->sin.sin_family = AF_INET; -#ifdef HAVE_SIN_LEN +#ifdef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN su->sin.sin_len = sizeof(struct sockaddr_in); -#endif /* HAVE_SIN_LEN */ +#endif /* HAVE_STRUCT_SOCKADDR_IN_SIN_LEN */ return su; } #ifdef HAVE_IPV6 @@ -342,12 +342,12 @@ sockunion_connect (int fd, union sockunion *peersu, unsigned short port, #ifdef KAME if (IN6_IS_ADDR_LINKLOCAL(&su.sin6.sin6_addr) && ifindex) { -#ifdef HAVE_SIN6_SCOPE_ID +#ifdef HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID /* su.sin6.sin6_scope_id = ifindex; */ #ifdef MUSICA su.sin6.sin6_scope_id = ifindex; #endif -#endif /* HAVE_SIN6_SCOPE_ID */ +#endif /* HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID */ #ifndef MUSICA SET_IN6_LINKLOCAL_IFINDEX (su.sin6.sin6_addr, ifindex); #endif @@ -416,9 +416,9 @@ sockunion_bind (int sock, union sockunion *su, unsigned short port, { size = sizeof (struct sockaddr_in); su->sin.sin_port = htons (port); -#ifdef HAVE_SIN_LEN +#ifdef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN su->sin.sin_len = size; -#endif /* HAVE_SIN_LEN */ +#endif /* HAVE_STRUCT_SOCKADDR_IN_SIN_LEN */ if (su_addr == NULL) su->sin.sin_addr.s_addr = htonl (INADDR_ANY); } @@ -1924,11 +1924,11 @@ vty_serv_un (const char *path) memset (&serv, 0, sizeof (struct sockaddr_un)); serv.sun_family = AF_UNIX; strncpy (serv.sun_path, path, strlen (path)); -#ifdef HAVE_SUN_LEN +#ifdef HAVE_STRUCT_SOCKADDR_UN_SUN_LEN len = serv.sun_len = SUN_LEN(&serv); #else len = sizeof (serv.sun_family) + strlen (serv.sun_path); -#endif /* HAVE_SUN_LEN */ +#endif /* HAVE_STRUCT_SOCKADDR_UN_SUN_LEN */ ret = bind (sock, (struct sockaddr *) &serv, len); if (ret < 0) diff --git a/lib/zclient.c b/lib/zclient.c index 09a7d25e..10e6b5fd 100644 --- a/lib/zclient.c +++ b/lib/zclient.c @@ -164,9 +164,9 @@ zclient_socket(void) memset (&serv, 0, sizeof (struct sockaddr_in)); serv.sin_family = AF_INET; serv.sin_port = htons (ZEBRA_PORT); -#ifdef HAVE_SIN_LEN +#ifdef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN serv.sin_len = sizeof (struct sockaddr_in); -#endif /* HAVE_SIN_LEN */ +#endif /* HAVE_STRUCT_SOCKADDR_IN_SIN_LEN */ serv.sin_addr.s_addr = htonl (INADDR_LOOPBACK); /* Connect to zebra. */ @@ -197,11 +197,11 @@ zclient_socket_un (const char *path) memset (&addr, 0, sizeof (struct sockaddr_un)); addr.sun_family = AF_UNIX; strncpy (addr.sun_path, path, strlen (path)); -#ifdef HAVE_SUN_LEN +#ifdef HAVE_STRUCT_SOCKADDR_UN_SUN_LEN len = addr.sun_len = SUN_LEN(&addr); #else len = sizeof (addr.sun_family) + strlen (addr.sun_path); -#endif /* HAVE_SUN_LEN */ +#endif /* HAVE_STRUCT_SOCKADDR_UN_SUN_LEN */ ret = connect (sock, (struct sockaddr *) &addr, len); if (ret < 0) @@ -625,13 +625,13 @@ zebra_interface_add_read (struct stream *s) ifp->mtu = stream_getl (s); ifp->mtu6 = stream_getl (s); ifp->bandwidth = stream_getl (s); -#ifdef HAVE_SOCKADDR_DL +#ifdef HAVE_STRUCT_SOCKADDR_DL stream_get (&ifp->sdl, s, sizeof (ifp->sdl)); #else ifp->hw_addr_len = stream_getl (s); if (ifp->hw_addr_len) stream_get (ifp->hw_addr, s, ifp->hw_addr_len); -#endif /* HAVE_SOCKADDR_DL */ +#endif /* HAVE_STRUCT_SOCKADDR_DL */ return ifp; } diff --git a/lib/zebra.h b/lib/zebra.h index 85537399..3c01aec3 100644 --- a/lib/zebra.h +++ b/lib/zebra.h @@ -312,7 +312,7 @@ typedef int socklen_t; /* The definition of struct in_pktinfo is missing in old version of GLIBC 2.1 (Redhat 6.1). */ -#if defined (GNU_LINUX) && ! defined (HAVE_INPKTINFO) +#if defined (GNU_LINUX) && ! defined (HAVE_STRUCT_IN_PKTINFO) struct in_pktinfo { int ipi_ifindex; diff --git a/ospfclient/ospf_apiclient.c b/ospfclient/ospf_apiclient.c index 09d90b3a..64b83123 100644 --- a/ospfclient/ospf_apiclient.c +++ b/ospfclient/ospf_apiclient.c @@ -118,9 +118,9 @@ ospf_apiclient_connect (char *host, int syncport) myaddr_async.sin_addr.s_addr = htonl (INADDR_ANY); myaddr_async.sin_port = htons (syncport+1); size = sizeof (struct sockaddr_in); -#ifdef HAVE_SIN_LEN +#ifdef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN myaddr_async.sin_len = size; -#endif /* HAVE_SIN_LEN */ +#endif /* HAVE_STRUCT_SOCKADDR_IN_SIN_LEN */ /* This is a server socket, reuse addr and port */ ret = setsockopt (async_server_sock, SOL_SOCKET, @@ -209,9 +209,9 @@ ospf_apiclient_connect (char *host, int syncport) memset (&myaddr_sync, 0, sizeof (struct sockaddr_in)); myaddr_sync.sin_family = AF_INET; myaddr_sync.sin_port = htons (syncport); -#ifdef HAVE_SIN_LEN +#ifdef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN myaddr_sync.sin_len = sizeof (struct sockaddr_in); -#endif /* HAVE_SIN_LEN */ +#endif /* HAVE_STRUCT_SOCKADDR_IN_SIN_LEN */ ret = bind (fd1, (struct sockaddr *) &myaddr_sync, size); if (ret < 0) @@ -225,9 +225,9 @@ ospf_apiclient_connect (char *host, int syncport) memcpy (&myaddr_sync.sin_addr, hp->h_addr, hp->h_length); myaddr_sync.sin_family = AF_INET; myaddr_sync.sin_port = htons(ospf_apiclient_getport ()); -#ifdef HAVE_SIN_LEN +#ifdef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN myaddr_sync.sin_len = sizeof (struct sockaddr_in); -#endif /* HAVE_SIN_LEN */ +#endif /* HAVE_STRUCT_SOCKADDR_IN_SIN_LEN */ /* Now establish synchronous channel with OSPF daemon */ ret = connect (fd1, (struct sockaddr *) &myaddr_sync, diff --git a/ospfd/ospf_packet.c b/ospfd/ospf_packet.c index 2addc497..4735f99b 100644 --- a/ospfd/ospf_packet.c +++ b/ospfd/ospf_packet.c @@ -628,9 +628,9 @@ ospf_write (struct thread *thread) memset (&sa_dst, 0, sizeof (sa_dst)); sa_dst.sin_family = AF_INET; -#ifdef HAVE_SIN_LEN +#ifdef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN sa_dst.sin_len = sizeof(sa_dst); -#endif /* HAVE_SIN_LEN */ +#endif /* HAVE_STRUCT_SOCKADDR_IN_SIN_LEN */ sa_dst.sin_addr = op->dst; sa_dst.sin_port = htons (0); diff --git a/ripd/ripd.c b/ripd/ripd.c index 7c463d50..75ac2159 100644 --- a/ripd/ripd.c +++ b/ripd/ripd.c @@ -1352,9 +1352,9 @@ rip_create_socket (struct sockaddr_in *from) { addr.sin_family = AF_INET; addr.sin_addr.s_addr = INADDR_ANY; -#ifdef HAVE_SINLEN +#ifdef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN addr.sin_len = sizeof (struct sockaddr_in); -#endif /* HAVE_SINLEN */ +#endif /* HAVE_STRUCT_SOCKADDR_IN_SIN_LEN */ } else { memcpy(&addr, from, sizeof(addr)); } @@ -1457,9 +1457,9 @@ rip_send_packet (u_char * buf, int size, struct sockaddr_in *to, /* Make destination address. */ memset (&sin, 0, sizeof (struct sockaddr_in)); sin.sin_family = AF_INET; -#ifdef HAVE_SIN_LEN +#ifdef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN sin.sin_len = sizeof (struct sockaddr_in); -#endif /* HAVE_SIN_LEN */ +#endif /* HAVE_STRUCT_SOCKADDR_IN_SIN_LEN */ /* When destination is specified, use it's port and address. */ if (to) @@ -1479,9 +1479,9 @@ rip_send_packet (u_char * buf, int size, struct sockaddr_in *to, from.sin_family = AF_INET; from.sin_port = htons (RIP_PORT_DEFAULT); from.sin_addr = ifc->address->u.prefix4; -#ifdef HAVE_SIN_LEN +#ifdef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN from.sin_len = sizeof (struct sockaddr_in); -#endif /* HAVE_SIN_LEN */ +#endif /* HAVE_STRUCT_SOCKADDR_IN_SIN_LEN */ /* * we have to open a new socket for each packet because this diff --git a/vtysh/vtysh.c b/vtysh/vtysh.c index 2b907ca2..777a7ac2 100644 --- a/vtysh/vtysh.c +++ b/vtysh/vtysh.c @@ -2122,11 +2122,11 @@ vtysh_connect (struct vtysh_client *vclient) memset (&addr, 0, sizeof (struct sockaddr_un)); addr.sun_family = AF_UNIX; strncpy (addr.sun_path, vclient->path, strlen (vclient->path)); -#ifdef HAVE_SUN_LEN +#ifdef HAVE_STRUCT_SOCKADDR_UN_SUN_LEN len = addr.sun_len = SUN_LEN(&addr); #else len = sizeof (addr.sun_family) + strlen (addr.sun_path); -#endif /* HAVE_SUN_LEN */ +#endif /* HAVE_STRUCT_SOCKADDR_UN_SUN_LEN */ ret = connect (sock, (struct sockaddr *) &addr, len); if (ret < 0) diff --git a/watchquagga/watchquagga.c b/watchquagga/watchquagga.c index f49cb927..f4c483cf 100644 --- a/watchquagga/watchquagga.c +++ b/watchquagga/watchquagga.c @@ -1,5 +1,5 @@ /* - $Id: watchquagga.c,v 1.11 2005/02/17 20:11:58 ajs Exp $ + $Id$ Monitor status of quagga daemons and restart if necessary. @@ -743,11 +743,11 @@ try_connect(struct daemon *dmn) addr.sun_family = AF_UNIX; snprintf(addr.sun_path, sizeof(addr.sun_path), "%s/%s.vty", gs.vtydir,dmn->name); -#ifdef HAVE_SUN_LEN +#ifdef HAVE_STRUCT_SOCKADDR_UN_SUN_LEN len = addr.sun_len = SUN_LEN(&addr); #else len = sizeof (addr.sun_family) + strlen (addr.sun_path); -#endif /* HAVE_SUN_LEN */ +#endif /* HAVE_STRUCT_SOCKADDR_UN_SUN_LEN */ /* Quick check to see if we might succeed before we go to the trouble of creating a socket. */ diff --git a/zebra/interface.c b/zebra/interface.c index 1c8d3a48..184b42a0 100644 --- a/zebra/interface.c +++ b/zebra/interface.c @@ -644,9 +644,9 @@ nd_dump_vty (struct vty *vty, struct interface *ifp) static void if_dump_vty (struct vty *vty, struct interface *ifp) { -#ifdef HAVE_SOCKADDR_DL +#ifdef HAVE_STRUCT_SOCKADDR_DL struct sockaddr_dl *sdl; -#endif /* HAVE_SOCKADDR_DL */ +#endif /* HAVE_STRUCT_SOCKADDR_DL */ struct connected *connected; struct listnode *node; struct route_node *rn; @@ -696,7 +696,7 @@ if_dump_vty (struct vty *vty, struct interface *ifp) if_flag_dump (ifp->flags), VTY_NEWLINE); /* Hardware address. */ -#ifdef HAVE_SOCKADDR_DL +#ifdef HAVE_STRUCT_SOCKADDR_DL sdl = &ifp->sdl; if (sdl != NULL && sdl->sdl_alen != 0) { @@ -718,7 +718,7 @@ if_dump_vty (struct vty *vty, struct interface *ifp) vty_out (vty, "%s%02x", i == 0 ? "" : ":", ifp->hw_addr[i]); vty_out (vty, "%s", VTY_NEWLINE); } -#endif /* HAVE_SOCKADDR_DL */ +#endif /* HAVE_STRUCT_SOCKADDR_DL */ /* Bandwidth in kbps */ if (ifp->bandwidth != 0) diff --git a/zebra/ioctl.c b/zebra/ioctl.c index ccb927ac..c9ec8d57 100644 --- a/zebra/ioctl.c +++ b/zebra/ioctl.c @@ -179,7 +179,7 @@ if_unset_prefix (struct interface *ifp, struct connected *ifc) return kernel_address_delete_ipv4 (ifp, ifc); } #else /* ! HAVE_NETLINK */ -#ifdef HAVE_IFALIASREQ +#ifdef HAVE_STRUCT_IFALIASREQ /* Set up interface's IP address, netmask (and broadcas? ). *BSD may has ifaliasreq structure. */ int @@ -199,7 +199,7 @@ if_set_prefix (struct interface *ifp, struct connected *ifc) memset (&addr, 0, sizeof (struct sockaddr_in)); addr.sin_addr = p->prefix; addr.sin_family = p->family; -#ifdef HAVE_SIN_LEN +#ifdef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN addr.sin_len = sizeof (struct sockaddr_in); #endif memcpy (&addreq.ifra_addr, &addr, sizeof (struct sockaddr_in)); @@ -207,7 +207,7 @@ if_set_prefix (struct interface *ifp, struct connected *ifc) memset (&mask, 0, sizeof (struct sockaddr_in)); masklen2ip (p->prefixlen, &mask.sin_addr); mask.sin_family = p->family; -#ifdef HAVE_SIN_LEN +#ifdef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN mask.sin_len = sizeof (struct sockaddr_in); #endif memcpy (&addreq.ifra_mask, &mask, sizeof (struct sockaddr_in)); @@ -237,7 +237,7 @@ if_unset_prefix (struct interface *ifp, struct connected *ifc) memset (&addr, 0, sizeof (struct sockaddr_in)); addr.sin_addr = p->prefix; addr.sin_family = p->family; -#ifdef HAVE_SIN_LEN +#ifdef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN addr.sin_len = sizeof (struct sockaddr_in); #endif memcpy (&addreq.ifra_addr, &addr, sizeof (struct sockaddr_in)); @@ -245,7 +245,7 @@ if_unset_prefix (struct interface *ifp, struct connected *ifc) memset (&mask, 0, sizeof (struct sockaddr_in)); masklen2ip (p->prefixlen, &mask.sin_addr); mask.sin_family = p->family; -#ifdef HAVE_SIN_LEN +#ifdef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN mask.sin_len = sizeof (struct sockaddr_in); #endif memcpy (&addreq.ifra_mask, &mask, sizeof (struct sockaddr_in)); @@ -335,7 +335,7 @@ if_unset_prefix (struct interface *ifp, struct connected *ifc) return 0; } -#endif /* HAVE_IFALIASREQ */ +#endif /* HAVE_STRUCT_IFALIASREQ */ #endif /* HAVE_NETLINK */ /* get interface flags */ @@ -457,7 +457,7 @@ if_prefix_delete_ipv6 (struct interface *ifp, struct connected *ifc) return ret; } #else /* LINUX_IPV6 */ -#ifdef HAVE_IN6_ALIASREQ +#ifdef HAVE_STRUCT_IN6_ALIASREQ #ifndef ND6_INFINITE_LIFETIME #define ND6_INFINITE_LIFETIME 0xffffffffL #endif /* ND6_INFINITE_LIFETIME */ @@ -478,7 +478,7 @@ if_prefix_add_ipv6 (struct interface *ifp, struct connected *ifc) memset (&addr, 0, sizeof (struct sockaddr_in6)); addr.sin6_addr = p->prefix; addr.sin6_family = p->family; -#ifdef HAVE_SIN_LEN +#ifdef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN addr.sin6_len = sizeof (struct sockaddr_in6); #endif memcpy (&addreq.ifra_addr, &addr, sizeof (struct sockaddr_in6)); @@ -486,7 +486,7 @@ if_prefix_add_ipv6 (struct interface *ifp, struct connected *ifc) memset (&mask, 0, sizeof (struct sockaddr_in6)); masklen2ip6 (p->prefixlen, &mask.sin6_addr); mask.sin6_family = p->family; -#ifdef HAVE_SIN_LEN +#ifdef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN mask.sin6_len = sizeof (struct sockaddr_in6); #endif memcpy (&addreq.ifra_prefixmask, &mask, sizeof (struct sockaddr_in6)); @@ -494,7 +494,7 @@ if_prefix_add_ipv6 (struct interface *ifp, struct connected *ifc) addreq.ifra_lifetime.ia6t_vltime = 0xffffffff; addreq.ifra_lifetime.ia6t_pltime = 0xffffffff; -#ifdef HAVE_IFRA_LIFETIME +#ifdef HAVE_STRUCT_IF6_ALIASREQ_IFRA_LIFETIME addreq.ifra_lifetime.ia6t_pltime = ND6_INFINITE_LIFETIME; addreq.ifra_lifetime.ia6t_vltime = ND6_INFINITE_LIFETIME; #endif @@ -522,7 +522,7 @@ if_prefix_delete_ipv6 (struct interface *ifp, struct connected *ifc) memset (&addr, 0, sizeof (struct sockaddr_in6)); addr.sin6_addr = p->prefix; addr.sin6_family = p->family; -#ifdef HAVE_SIN_LEN +#ifdef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN addr.sin6_len = sizeof (struct sockaddr_in6); #endif memcpy (&addreq.ifra_addr, &addr, sizeof (struct sockaddr_in6)); @@ -530,12 +530,12 @@ if_prefix_delete_ipv6 (struct interface *ifp, struct connected *ifc) memset (&mask, 0, sizeof (struct sockaddr_in6)); masklen2ip6 (p->prefixlen, &mask.sin6_addr); mask.sin6_family = p->family; -#ifdef HAVE_SIN_LEN +#ifdef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN mask.sin6_len = sizeof (struct sockaddr_in6); #endif memcpy (&addreq.ifra_prefixmask, &mask, sizeof (struct sockaddr_in6)); -#ifdef HAVE_IFRA_LIFETIME +#ifdef HAVE_STRUCT_IF6_ALIASREQ_IFRA_LIFETIME addreq.ifra_lifetime.ia6t_pltime = ND6_INFINITE_LIFETIME; addreq.ifra_lifetime.ia6t_vltime = ND6_INFINITE_LIFETIME; #endif @@ -557,7 +557,7 @@ if_prefix_delete_ipv6 (struct interface *ifp, struct connected *ifc) { return 0; } -#endif /* HAVE_IN6_ALIASREQ */ +#endif /* HAVE_STRUCT_IN6_ALIASREQ */ #endif /* LINUX_IPV6 */ diff --git a/zebra/kernel_socket.c b/zebra/kernel_socket.c index b7c7ccc1..795ed55f 100644 --- a/zebra/kernel_socket.c +++ b/zebra/kernel_socket.c @@ -56,7 +56,7 @@ extern struct zebra_t zebrad; * Given a pointer (sockaddr or void *), return the number of bytes * taken up by the sockaddr and any padding needed for alignment. */ -#if defined(HAVE_SA_LEN) +#if defined(HAVE_STRUCT_SOCKADDR_SA_LEN) #define SAROUNDUP(X) ROUNDUP(((struct sockaddr *)(X))->sa_len) #elif defined(HAVE_IPV6) /* @@ -76,7 +76,7 @@ extern struct zebra_t zebrad; ROUNDUP(sizeof(struct sockaddr_in)):\ (((struct sockaddr *)(X))->sa_family == AF_LINK ? \ ROUNDUP(sizeof(struct sockaddr_dl)) : sizeof(struct sockaddr))) -#endif /* HAVE_SA_LEN */ +#endif /* HAVE_STRUCT_SOCKADDR_SA_LEN */ /* We use an additional pointer in following, pdest, rather than (DEST) * directly, because gcc will warn if the macro is expanded and DEST is NULL, @@ -902,7 +902,7 @@ rtm_write (int message, msg.rtm.rtm_flags |= RTF_REJECT; -#ifdef HAVE_SIN_LEN +#ifdef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN #define SOCKADDRSET(X,R) \ if (msg.rtm.rtm_addrs & (R)) \ { \ @@ -918,7 +918,7 @@ rtm_write (int message, memcpy (pnt, (caddr_t)(X), len); \ pnt += len; \ } -#endif /* HAVE_SIN_LEN */ +#endif /* HAVE_STRUCT_SOCKADDR_IN_SIN_LEN */ pnt = (caddr_t) msg.buf; diff --git a/zebra/rt_ioctl.c b/zebra/rt_ioctl.c index f4997e22..a5d588c7 100644 --- a/zebra/rt_ioctl.c +++ b/zebra/rt_ioctl.c @@ -50,9 +50,9 @@ kernel_read (int sock) /* Initialization prototype of struct sockaddr_in. */ static struct sockaddr_in sin_proto = { -#ifdef HAVE_SIN_LEN +#ifdef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN sizeof (struct sockaddr_in), -#endif /* HAVE_SIN_LEN */ +#endif /* HAVE_STRUCT_SOCKADDR_IN_SIN_LEN */ AF_INET, 0, {0}, {0} }; #endif /* 0 */ @@ -77,9 +77,9 @@ kernel_add_route (struct prefix_ipv4 *dest, struct in_addr *gate, /* Make destination. */ memset (&sin_dest, 0, sizeof (struct sockaddr_in)); sin_dest.sin_family = AF_INET; -#ifdef HAVE_SIN_LEN +#ifdef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN sin_dest.sin_len = sizeof (struct sockaddr_in); -#endif /* HAVE_SIN_LEN */ +#endif /* HAVE_STRUCT_SOCKADDR_IN_SIN_LEN */ sin_dest.sin_addr = dest->prefix; /* Make gateway. */ @@ -87,17 +87,17 @@ kernel_add_route (struct prefix_ipv4 *dest, struct in_addr *gate, { memset (&sin_gate, 0, sizeof (struct sockaddr_in)); sin_gate.sin_family = AF_INET; -#ifdef HAVE_SIN_LEN +#ifdef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN sin_gate.sin_len = sizeof (struct sockaddr_in); -#endif /* HAVE_SIN_LEN */ +#endif /* HAVE_STRUCT_SOCKADDR_IN_SIN_LEN */ sin_gate.sin_addr = *gate; } memset (&sin_mask, 0, sizeof (struct sockaddr_in)); sin_mask.sin_family = AF_INET; -#ifdef HAVE_SIN_LEN +#ifdef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN sin_gate.sin_len = sizeof (struct sockaddr_in); -#endif /* HAVE_SIN_LEN */ +#endif /* HAVE_STRUCT_SOCKADDR_IN_SIN_LEN */ masklen2ip (dest->prefixlen, &sin_mask.sin_addr); /* Set destination address, mask and gateway.*/ @@ -178,9 +178,9 @@ kernel_ioctl_ipv4 (u_long cmd, struct prefix *p, struct rib *rib, int family) /* Make destination. */ memset (&sin_dest, 0, sizeof (struct sockaddr_in)); sin_dest.sin_family = AF_INET; -#ifdef HAVE_SIN_LEN +#ifdef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN sin_dest.sin_len = sizeof (struct sockaddr_in); -#endif /* HAVE_SIN_LEN */ +#endif /* HAVE_STRUCT_SOCKADDR_IN_SIN_LEN */ sin_dest.sin_addr = p->u.prefix4; if (CHECK_FLAG (rib->flags, ZEBRA_FLAG_BLACKHOLE)) @@ -210,9 +210,9 @@ kernel_ioctl_ipv4 (u_long cmd, struct prefix *p, struct rib *rib, int family) nexthop->rtype == NEXTHOP_TYPE_IPV4_IFINDEX) { sin_gate.sin_family = AF_INET; -#ifdef HAVE_SIN_LEN +#ifdef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN sin_gate.sin_len = sizeof (struct sockaddr_in); -#endif /* HAVE_SIN_LEN */ +#endif /* HAVE_STRUCT_SOCKADDR_IN_SIN_LEN */ sin_gate.sin_addr = nexthop->rgate.ipv4; rtentry.rt_flags |= RTF_GATEWAY; } @@ -232,9 +232,9 @@ kernel_ioctl_ipv4 (u_long cmd, struct prefix *p, struct rib *rib, int family) nexthop->type == NEXTHOP_TYPE_IPV4_IFINDEX) { sin_gate.sin_family = AF_INET; -#ifdef HAVE_SIN_LEN +#ifdef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN sin_gate.sin_len = sizeof (struct sockaddr_in); -#endif /* HAVE_SIN_LEN */ +#endif /* HAVE_STRUCT_SOCKADDR_IN_SIN_LEN */ sin_gate.sin_addr = nexthop->gate.ipv4; rtentry.rt_flags |= RTF_GATEWAY; } @@ -269,9 +269,9 @@ kernel_ioctl_ipv4 (u_long cmd, struct prefix *p, struct rib *rib, int family) memset (&sin_mask, 0, sizeof (struct sockaddr_in)); sin_mask.sin_family = AF_INET; -#ifdef HAVE_SIN_LEN +#ifdef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN sin_mask.sin_len = sizeof (struct sockaddr_in); -#endif /* HAVE_SIN_LEN */ +#endif /* HAVE_STRUCT_SOCKADDR_IN_SIN_LEN */ masklen2ip (p->prefixlen, &sin_mask.sin_addr); /* Set destination address, mask and gateway.*/ diff --git a/zebra/rt_socket.c b/zebra/rt_socket.c index f9f194eb..0182fbd6 100644 --- a/zebra/rt_socket.c +++ b/zebra/rt_socket.c @@ -78,18 +78,18 @@ kernel_rtm_ipv4 (int cmd, struct prefix *p, struct rib *rib, int family) memset (&sin_dest, 0, sizeof (struct sockaddr_in)); sin_dest.sin_family = AF_INET; -#ifdef HAVE_SIN_LEN +#ifdef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN sin_dest.sin_len = sizeof (struct sockaddr_in); -#endif /* HAVE_SIN_LEN */ +#endif /* HAVE_STRUCT_SOCKADDR_IN_SIN_LEN */ sin_dest.sin_addr = p->u.prefix4; memset (&sin_mask, 0, sizeof (struct sockaddr_in)); memset (&sin_gate, 0, sizeof (struct sockaddr_in)); sin_gate.sin_family = AF_INET; -#ifdef HAVE_SIN_LEN +#ifdef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN sin_gate.sin_len = sizeof (struct sockaddr_in); -#endif /* HAVE_SIN_LEN */ +#endif /* HAVE_STRUCT_SOCKADDR_IN_SIN_LEN */ /* Make gateway. */ for (nexthop = rib->nexthop; nexthop; nexthop = nexthop->next) @@ -147,9 +147,9 @@ kernel_rtm_ipv4 (int cmd, struct prefix *p, struct rib *rib, int family) { masklen2ip (p->prefixlen, &sin_mask.sin_addr); sin_mask.sin_family = AF_INET; -#ifdef HAVE_SIN_LEN +#ifdef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN sin_mask.sin_len = sin_masklen (sin_mask.sin_addr); -#endif /* HAVE_SIN_LEN */ +#endif /* HAVE_STRUCT_SOCKADDR_IN_SIN_LEN */ mask = &sin_mask; } } @@ -327,9 +327,9 @@ kernel_rtm_ipv6_multipath (int cmd, struct prefix *p, struct rib *rib, memset (&sin_gate, 0, sizeof (struct sockaddr_in6)); sin_gate.sin6_family = AF_INET6; -#ifdef HAVE_SIN_LEN +#ifdef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN sin_gate.sin6_len = sizeof (struct sockaddr_in6); -#endif /* HAVE_SIN_LEN */ +#endif /* HAVE_STRUCT_SOCKADDR_IN_SIN_LEN */ /* Make gateway. */ for (nexthop = rib->nexthop; nexthop; nexthop = nexthop->next) diff --git a/zebra/rtadv.c b/zebra/rtadv.c index 83c3e777..4bdb83d5 100644 --- a/zebra/rtadv.c +++ b/zebra/rtadv.c @@ -157,9 +157,9 @@ rtadv_send_packet (int sock, struct interface *ifp) struct cmsghdr *cmsgptr; struct in6_pktinfo *pkt; struct sockaddr_in6 addr; -#ifdef HAVE_SOCKADDR_DL +#ifdef HAVE_STRUCT_SOCKADDR_DL struct sockaddr_dl *sdl; -#endif /* HAVE_SOCKADDR_DL */ +#endif /* HAVE_STRUCT_SOCKADDR_DL */ static void *adata = NULL; unsigned char buf[RTADV_MSG_SIZE]; struct nd_router_advert *rtadv; @@ -285,7 +285,7 @@ rtadv_send_packet (int sock, struct interface *ifp) } /* Hardware address. */ -#ifdef HAVE_SOCKADDR_DL +#ifdef HAVE_STRUCT_SOCKADDR_DL sdl = &ifp->sdl; if (sdl != NULL && sdl->sdl_alen != 0) { @@ -304,7 +304,7 @@ rtadv_send_packet (int sock, struct interface *ifp) memcpy (buf + len, ifp->hw_addr, ifp->hw_addr_len); len += ifp->hw_addr_len; } -#endif /* HAVE_SOCKADDR_DL */ +#endif /* HAVE_STRUCT_SOCKADDR_DL */ msg.msg_name = (void *) &addr; msg.msg_namelen = sizeof (struct sockaddr_in6); diff --git a/zebra/rtadv.h b/zebra/rtadv.h index 0a65df23..36655037 100644 --- a/zebra/rtadv.h +++ b/zebra/rtadv.h @@ -66,7 +66,7 @@ extern void rtadv_init (void); #define ND_OPT_HA_INFORMATION 8 /* HA Information Option */ #endif -#ifndef HAVE_ND_OPT_ADV_INTERVAL +#ifndef HAVE_STRUCT_ND_OPT_ADV_INTERVAL struct nd_opt_adv_interval { /* Advertisement interval option */ uint8_t nd_opt_ai_type; uint8_t nd_opt_ai_len; @@ -74,7 +74,7 @@ struct nd_opt_adv_interval { /* Advertisement interval option */ uint32_t nd_opt_ai_interval; } __attribute__((__packed__)); #else -#ifndef HAVE_ND_OPT_ADV_INTERVAL_AI_FIELDS +#ifndef HAVE_STRUCT_ND_OPT_ADV_INTERVAL_ND_OPT_AI_TYPE /* fields may have to be renamed */ #define nd_opt_ai_type nd_opt_adv_interval_type #define nd_opt_ai_len nd_opt_adv_interval_len @@ -83,7 +83,7 @@ struct nd_opt_adv_interval { /* Advertisement interval option */ #endif #endif -#ifndef HAVE_ND_OPT_HOMEAGENT_INFO +#ifndef HAVE_STRUCT_ND_OPT_HOMEAGENT_INFO struct nd_opt_homeagent_info { /* Home Agent info */ u_int8_t nd_opt_hai_type; u_int8_t nd_opt_hai_len; diff --git a/zebra/zserv.c b/zebra/zserv.c index 22a6bed2..ef79eaad 100644 --- a/zebra/zserv.c +++ b/zebra/zserv.c @@ -166,13 +166,13 @@ zsend_interface_add (struct zserv *client, struct interface *ifp) stream_putl (s, ifp->mtu); stream_putl (s, ifp->mtu6); stream_putl (s, ifp->bandwidth); -#ifdef HAVE_SOCKADDR_DL +#ifdef HAVE_STRUCT_SOCKADDR_DL stream_put (s, &ifp->sdl, sizeof (ifp->sdl)); #else stream_putl (s, ifp->hw_addr_len); if (ifp->hw_addr_len) stream_put (s, ifp->hw_addr, ifp->hw_addr_len); -#endif /* HAVE_SOCKADDR_DL */ +#endif /* HAVE_STRUCT_SOCKADDR_DL */ /* Write packet size. */ stream_putw_at (s, 0, stream_get_endp (s)); @@ -1355,9 +1355,9 @@ zebra_serv () memset (&addr, 0, sizeof (struct sockaddr_in)); addr.sin_family = AF_INET; addr.sin_port = htons (ZEBRA_PORT); -#ifdef HAVE_SIN_LEN +#ifdef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN addr.sin_len = sizeof (struct sockaddr_in); -#endif /* HAVE_SIN_LEN */ +#endif /* HAVE_STRUCT_SOCKADDR_IN_SIN_LEN */ addr.sin_addr.s_addr = htonl (INADDR_LOOPBACK); sockopt_reuseaddr (accept_sock); @@ -1426,11 +1426,11 @@ zebra_serv_un (const char *path) memset (&serv, 0, sizeof (struct sockaddr_un)); serv.sun_family = AF_UNIX; strncpy (serv.sun_path, path, strlen (path)); -#ifdef HAVE_SUN_LEN +#ifdef HAVE_STRUCT_SOCKADDR_UN_SUN_LEN len = serv.sun_len = SUN_LEN(&serv); #else len = sizeof (serv.sun_family) + strlen (serv.sun_path); -#endif /* HAVE_SUN_LEN */ +#endif /* HAVE_STRUCT_SOCKADDR_UN_SUN_LEN */ ret = bind (sock, (struct sockaddr *) &serv, len); if (ret < 0) |