Use system's RT_ROUNDUP and RT_ADVANCE macros instead of local copies. netgraph7
authorNuno Antunes <nuno.antunes@gmail.com>
Fri, 18 Jul 2014 14:12:52 +0000 (15:12 +0100)
committerNuno Antunes <nuno.antunes@gmail.com>
Fri, 18 Jul 2014 14:12:52 +0000 (15:12 +0100)
26 files changed:
bin/hostname/hostname.c
lib/libc/net/getifaddrs.c
sbin/dhclient/dhclient.c
sbin/ifconfig/ifconfig.c
sbin/natd/natd.c
sbin/route/route.c
sbin/route/show.c
sbin/routed/if.c
sys/net/if.c
sys/net/route.c
sys/net/rtsock.c
sys/netgraph/eiface/ng_eiface.c
sys/netgraph7/eiface/ng_eiface.c
tools/tools/net80211/wlanwatch/wlanwatch.c
usr.bin/netstat/route.c
usr.sbin/arp/arp.c
usr.sbin/gifconfig/gifconfig.c
usr.sbin/ndp/ndp.c
usr.sbin/ppp/defs.h
usr.sbin/ppp/iface.c
usr.sbin/ppp/route.c
usr.sbin/route6d/route6d.c
usr.sbin/rtadvd/if.c
usr.sbin/rtsold/if.c
usr.sbin/rtsold/rtsock.c
usr.sbin/rwhod/rwhod.c

index 48874a9..672610e 100644 (file)
@@ -62,8 +62,6 @@
 #define HST_IF_V6 (1 << 1)
 #define HST_IF_V4 (1 << 2)
 
-
-
 /*
  * Expand the compacted form of addresses as returned via the
  * configuration read via sysctl().
 static void rt_xaddrs(caddr_t, caddr_t, struct rt_addrinfo *);
 static void usage (void);
 
-#define ROUNDUP(a) \
+#ifndef RT_ROUNDUP
+#define RT_ROUNDUP(a) \
        ((a) > 0 ? (1 + (((a) - 1) | (sizeof(long) - 1))) : sizeof(long))
-#define ADVANCE(x, n) (x += ROUNDUP((n)->sa_len))
+#endif
+#ifndef RT_ADVANCE
+#define RT_ADVANCE(x, n) (x += RT_ROUNDUP((n)->sa_len))
+#endif
 
 static
 void
@@ -89,7 +91,7 @@ rt_xaddrs(caddr_t cp, caddr_t cplim, struct rt_addrinfo *rtinfo)
                if ((rtinfo->rti_addrs & (1 << i)) == 0)
                        continue;
                rtinfo->rti_info[i] = sa = (struct sockaddr *)cp;
-               ADVANCE(cp, sa);
+               RT_ADVANCE(cp, sa);
        }
 }
 
index 816ee85..d248d29 100644 (file)
@@ -55,8 +55,7 @@
 #define        SA_LEN(sa)      (sa)->sa_len
 #endif
 
-#define        SALIGN  (sizeof(long) - 1)
-#define        SA_RLEN(sa)     ((sa)->sa_len ? (((sa)->sa_len + SALIGN) & ~SALIGN) : (SALIGN + 1))
+#define        SA_RLEN(sa)     RT_ROUNDUP((sa)->sa_len)
 
 #ifndef        ALIGNBYTES
 /*
index 159e956..9658f7e 100644 (file)
@@ -97,9 +97,6 @@ int            res_hnok(const char *dn);
 char           *option_as_string(unsigned int code, unsigned char *data, int len);
 int             fork_privchld(int, int);
 void            get_ifname(char *, char *);
-#define        ROUNDUP(a) \
-           ((a) > 0 ? (1 + (((a) - 1) | (sizeof(long) - 1))) : sizeof(long))
-#define        ADVANCE(x, n) (x += ROUNDUP((n)->sa_len))
 
 time_t scripttime;
 static FILE *leaseFile;
@@ -128,7 +125,7 @@ findproto(char *cp, int n)
                        case RTA_IFP:
                                break;
                        }
-                       ADVANCE(cp, sa);
+                       RT_ADVANCE(cp, sa);
                }
        }
        return (-1);
@@ -147,7 +144,7 @@ get_ifa(char *cp, int n)
                        sa = (struct sockaddr *)cp;
                        if (i == RTA_IFA)
                                return (sa);
-                       ADVANCE(cp, sa);
+                       RT_ADVANCE(cp, sa);
                }
 
        return (NULL);
index 9c4557a..0e9363d 100644 (file)
 #include "ifconfig.h"
 
 /*
- * This macro returns the size of a struct sockaddr when passed
- * through a routing socket. Basically we round up sa_len to
- * a multiple of sizeof(long), with a minimum of sizeof(long).
- * The check for a NULL pointer is just a convenience, probably never used.
- * The case sa_len == 0 should only apply to empty structures.
- */     
-#define SA_SIZE(sa)                                             \
-    (  (!(sa) || ((struct sockaddr *)(sa))->sa_len == 0) ?      \
-       sizeof(long)            :                               \
-       1 + ( (((struct sockaddr *)(sa))->sa_len - 1) | (sizeof(long) - 1) ) )
-
-/*
  * Since "struct ifreq" is composed of various union members, callers
  * should pay special attention to interprete the value.
  * (.e.g. little/big endian difference in the structure.)
@@ -867,7 +855,7 @@ rt_xaddrs(caddr_t cp, caddr_t cplim, struct rt_addrinfo *rtinfo)
                if ((rtinfo->rti_addrs & (1 << i)) == 0)
                        continue;
                rtinfo->rti_info[i] = sa = (struct sockaddr *)cp;
-               cp += SA_SIZE(sa);
+               RT_ADVANCE(cp, sa);
        }
 }
 
index 933120f..c1684f8 100644 (file)
@@ -742,13 +742,9 @@ SetAliasAddressFromIfName(const char *ifn)
                        int i;
                        char *cp = (char *)(ifam + 1);
 
-#define ROUNDUP(a) \
-       ((a) > 0 ? (1 + (((a) - 1) | (sizeof(long) - 1))) : sizeof(long))
-#define ADVANCE(x, n) (x += ROUNDUP((n)->sa_len))
-
                        for (i = 1; i < RTA_IFA; i <<= 1)
                                if (ifam->ifam_addrs & i)
-                                       ADVANCE(cp, (struct sockaddr *)cp);
+                                       RT_ADVANCE(cp, (struct sockaddr *)cp);
                        if (((struct sockaddr *)cp)->sa_family == AF_INET) {
                                s_in = (struct sockaddr_in *)cp;
                                break;
index f593a7a..924c764 100644 (file)
@@ -122,10 +122,6 @@ usage(const char *cp)
        /* NOTREACHED */
 }
 
-#define ROUNDUP(a) \
-       ((a) > 0 ? (1 + (((a) - 1) | (sizeof(long) - 1))) : sizeof(long))
-#define ADVANCE(x, n) (x += ROUNDUP((n)->sa_len))
-
 int
 main(int argc, char **argv)
 {
@@ -299,7 +295,7 @@ bad:                        usage(*argv);
                            printf("%-20.20s ", rtm->rtm_flags & RTF_HOST ?
                                routename(sa) : netname(sa));
                        }
-                       sa = (struct sockaddr *)(ROUNDUP(sa->sa_len) +
+                       sa = (struct sockaddr *)(RT_ROUNDUP(sa->sa_len) +
                            (char *)sa);
                        if (wflag) {
                            printf("%-20s ", routename(sa));
@@ -1262,7 +1258,7 @@ rtmsg(int cmd, int flags)
 
 #define NEXTADDR(w, u) \
        if (rtm_addrs & (w)) {\
-           l = ROUNDUP(u.sa.sa_len); memmove(cp, &(u), l); cp += l;\
+           l = RT_ROUNDUP(u.sa.sa_len); memmove(cp, &(u), l); cp += l;\
            if (verbose) sodump(&(u),"u");\
        }
 
@@ -1504,7 +1500,7 @@ print_getmsg(struct rt_msghdr *rtm, int msglen)
                                                ifp = (struct sockaddr_dl *)sa;
                                        break;
                                }
-                               ADVANCE(cp, sa);
+                               RT_ADVANCE(cp, sa);
                        }
        if (dst != NULL && mask != NULL)
                mask->sa_family = dst->sa_family;       /* XXX */
@@ -1586,7 +1582,7 @@ pmsg_addrs(char *cp, int addrs)
                if (i & addrs) {
                        sa = (struct sockaddr *)cp;
                        printf(" %s", routename(sa));
-                       ADVANCE(cp, sa);
+                       RT_ADVANCE(cp, sa);
                }
        putchar('\n');
        fflush(stdout);
index cefd49c..47fb057 100644 (file)
 #include "extern.h"
 #include "keywords.h"
 
-#define ROUNDUP(a) \
-       ((a) > 0 ? (1 + (((a) - 1) | (sizeof(long) - 1))) : sizeof(long))
-#define ADVANCE(x, n) (x += ROUNDUP((n)->sa_len))
-
 /*
  * Definitions for showing gateway flags.
  */
@@ -233,7 +229,7 @@ p_rtentry(struct rt_msghdr *rtm)
                p_sockaddr(sa, 0, WID_DST + WID_GW + 2);
        } else {
                width = p_sockaddr(sa, rtm->rtm_flags, WID_DST);
-               sa = (struct sockaddr *)(ROUNDUP(sa->sa_len) + (char *)sa);
+               sa = (struct sockaddr *)(RT_ROUNDUP(sa->sa_len) + (char *)sa);
                p_sockaddr(sa, 0, WID_GW + WID_DST - width);
        }
        p_flags(rtm->rtm_flags & interesting, "%-6.6s ");
index 5060b82..0dbdf5a 100644 (file)
@@ -636,8 +636,7 @@ rt_xaddrs(struct rt_addrinfo *info,
 #define ROUNDUP(a) ((a) > 0 ? (1 + (((a) - 1) | (sizeof(__uint64_t) - 1))) \
                    : sizeof(__uint64_t))
 #else
-#define ROUNDUP(a) ((a) > 0 ? (1 + (((a) - 1) | (sizeof(long) - 1))) \
-                   : sizeof(long))
+#define ROUNDUP(a) RT_ROUNDUP(a)
 #endif
 
 
index c4cfa02..f8b77ad 100644 (file)
@@ -545,11 +545,9 @@ if_attach(struct ifnet *ifp, lwkt_serialize_t serializer)
        namelen = strlen(ifp->if_xname);
        masklen = offsetof(struct sockaddr_dl, sdl_data[0]) + namelen;
        socksize = masklen + ifp->if_addrlen;
-#define ROUNDUP(a) (1 + (((a) - 1) | (sizeof(long) - 1)))
        if (socksize < sizeof(*sdl))
                socksize = sizeof(*sdl);
-       socksize = ROUNDUP(socksize);
-#undef ROUNDUP
+       socksize = RT_ROUNDUP(socksize);
        ifasize = sizeof(struct ifaddr) + 2 * socksize;
        ifa = ifa_create(ifasize, M_WAITOK);
        sdl = (struct sockaddr_dl *)(ifa + 1);
index cf35135..b00cc8e 100644 (file)
@@ -1155,14 +1155,12 @@ rt_fixchange(struct radix_node *rn, void *vp)
                         rt->rt_flags, NULL);
 }
 
-#define ROUNDUP(a) (a>0 ? (1 + (((a) - 1) | (sizeof(long) - 1))) : sizeof(long))
-
 int
 rt_setgate(struct rtentry *rt0, struct sockaddr *dst, struct sockaddr *gate,
           boolean_t generate_report)
 {
        char *space, *oldspace;
-       int dlen = ROUNDUP(dst->sa_len), glen = ROUNDUP(gate->sa_len);
+       int dlen = RT_ROUNDUP(dst->sa_len), glen = RT_ROUNDUP(gate->sa_len);
        struct rtentry *rt = rt0;
        struct radix_node_head *rnh = rt_tables[mycpuid][dst->sa_family];
 
@@ -1191,7 +1189,8 @@ rt_setgate(struct rtentry *rt0, struct sockaddr *dst, struct sockaddr *gate,
         * if we need to malloc a new chunk, then keep the old one around
         * till we don't need it any more.
         */
-       if (rt->rt_gateway == NULL || glen > ROUNDUP(rt->rt_gateway->sa_len)) {
+       if (rt->rt_gateway == NULL ||
+           glen > RT_ROUNDUP(rt->rt_gateway->sa_len)) {
                oldspace = (char *)rt_key(rt);
                R_Malloc(space, char *, dlen + glen);
                if (space == NULL)
@@ -1331,7 +1330,7 @@ rt_setshims(struct rtentry *rt, struct sockaddr **rt_shim){
                if (shim == NULL)
                        break;
 
-               shimlen = ROUNDUP(shim->sa_len);
+               shimlen = RT_ROUNDUP(shim->sa_len);
                R_Malloc(rt->rt_shim[i], struct sockaddr *, shimlen);
                bcopy(shim, rt->rt_shim[i], shimlen);
        }
index 6a60ca5..82bbb65 100644 (file)
@@ -779,9 +779,6 @@ rt_setmetrics(u_long which, struct rt_metrics *in, struct rt_metrics *out)
 #undef setmetric
 }
 
-#define ROUNDUP(a) \
-       ((a) > 0 ? (1 + (((a) - 1) | (sizeof(long) - 1))) : sizeof(long))
-
 /*
  * Extract the addresses of the passed sockaddrs.
  * Do a little sanity checking so as to avoid bad memory references.
@@ -823,7 +820,7 @@ rt_xaddrs(char *cp, char *cplim, struct rt_addrinfo *rtinfo)
 
                /* Accept the sockaddr. */
                rtinfo->rti_info[i] = sa;
-               cp += ROUNDUP(sa->sa_len);
+               cp += RT_ROUNDUP(sa->sa_len);
        }
        return (0);
 }
@@ -856,7 +853,7 @@ rt_msgsize(int type, struct rt_addrinfo *rtinfo)
        len = rt_msghdrsize(type);
        for (i = 0; i < RTAX_MAX; i++) {
                if (rtinfo->rti_info[i] != NULL)
-                       len += ROUNDUP(rtinfo->rti_info[i]->sa_len);
+                       len += RT_ROUNDUP(rtinfo->rti_info[i]->sa_len);
        }
        len = ALIGN(len);
        return len;
@@ -892,7 +889,7 @@ rt_msg_buffer(int type, struct rt_addrinfo *rtinfo, void *buf, int msglen)
                if ((sa = rtinfo->rti_info[i]) == NULL)
                        continue;
                rtinfo->rti_addrs |= (1 << i);
-               dlen = ROUNDUP(sa->sa_len);
+               dlen = RT_ROUNDUP(sa->sa_len);
                bcopy(sa, cp, dlen);
                cp += dlen;
        }
@@ -934,7 +931,7 @@ rt_msg_mbuf(int type, struct rt_addrinfo *rtinfo)
                if ((sa = rtinfo->rti_info[i]) == NULL)
                        continue;
                rtinfo->rti_addrs |= (1 << i);
-               dlen = ROUNDUP(sa->sa_len);
+               dlen = RT_ROUNDUP(sa->sa_len);
                m_copyback(m, len, dlen, (caddr_t)sa); /* can grow mbuf chain */
                len += dlen;
        }
index 939a2fd..53b620c 100644 (file)
@@ -434,7 +434,7 @@ ng_eiface_rcvmsg(node_p node, struct ng_mesg *msg,
                        caddr_t ptr;
                        int buflen;
 
-#define SA_SIZE(s)     ((s)->sa_len<sizeof(*(s))? sizeof(*(s)):(s)->sa_len)
+#define SA_SIZE(s)     RT_ROUNDUP((s)->sa_len)
 
                        /* Determine size of response and allocate it */
                        buflen = 0;
index 7c57c28..45b36c1 100644 (file)
@@ -42,6 +42,7 @@
 #include <net/if_types.h>
 #include <net/ifq_var.h>
 #include <net/netisr.h>
+#include <net/route.h>
 
 #include <netgraph7/netgraph.h>
 #include <netgraph7/ng_message.h>
@@ -450,7 +451,7 @@ ng_eiface_rcvmsg(node_p node, item_p item, hook_p lasthook)
                        caddr_t ptr;
                        int buflen;
 
-#define SA_SIZE(s)     ((s)->sa_len<sizeof(*(s))? sizeof(*(s)):(s)->sa_len)
+#define SA_SIZE(s)     RT_ROUNDUP((s)->sa_len)
 
                        /* Determine size of response and allocate it */
                        buflen = 0;
index 1aba01d..27ed217 100644 (file)
@@ -231,20 +231,6 @@ routename(struct sockaddr *sa)
        return (line);
 }
 
-#ifndef SA_SIZE
-/*
- * This macro returns the size of a struct sockaddr when passed
- * through a routing socket. Basically we round up sa_len to
- * a multiple of sizeof(long), with a minimum of sizeof(long).
- * The check for a NULL pointer is just a convenience, probably never used.
- * The case sa_len == 0 should only apply to empty structures.
- */
-#define SA_SIZE(sa)                                            \
-    (  (!(sa) || ((struct sockaddr *)(sa))->sa_len == 0) ?     \
-       sizeof(long)            :                               \
-       1 + ( (((struct sockaddr *)(sa))->sa_len - 1) | (sizeof(long) - 1) ) )
-#endif
-
 static void
 pmsg_addrs(char *cp, int addrs)
 {
@@ -262,7 +248,7 @@ pmsg_addrs(char *cp, int addrs)
                if (i & addrs) {
                        sa = (struct sockaddr *)cp;
                        printf(" %s", routename(sa));
-                       cp += SA_SIZE(sa);
+                       RT_ADVANCE(cp, sa);
                }
        putchar('\n');
 }
index 5bca67d..f613e8c 100644 (file)
 
 #define kget(p, d) (kread((u_long)(p), (char *)&(d), sizeof (d)))
 
-
-/* alignment constraint for routing socket */
-#define ROUNDUP(a) \
-       ((a) > 0 ? (1 + (((a) - 1) | (sizeof(long) - 1))) : sizeof(long))
-#define ADVANCE(x, n) (x += ROUNDUP((n)->sa_len))
-
 /*
  * Definitions for showing gateway flags.
  */
@@ -594,7 +588,7 @@ np_rtentry(struct rt_msghdr *rtm)
                p_sockaddr(sa, NULL, 0, 36);
        else {
                p_sockaddr(sa, NULL, rtm->rtm_flags, 16);
-               sa = (struct sockaddr *)(ROUNDUP(sa->sa_len) + (char *)sa);
+               sa = (struct sockaddr *)(RT_ROUNDUP(sa->sa_len) + (char *)sa);
                p_sockaddr(sa, NULL, 0, 18);
        }
        p_flags(rtm->rtm_flags & interesting, "%-6.6s ");
index 3d7e0b4..4fd5f84 100644 (file)
@@ -107,8 +107,6 @@ struct      {
 #define F_REPLACE      4
 #define F_DELETE       5
 
-#define ROUNDUP(a) \
-       ((a) > 0 ? (1 + (((a) - 1) | (sizeof(long) - 1))) : sizeof(long))
 #define SETFUNC(f)     { if (func) usage(); func = (f); }
 
 int
@@ -316,7 +314,7 @@ tryagain:
                return(1);
        }
        addr = (struct sockaddr_inarp *)(rtm + 1);
-       sdl = (struct sockaddr_dl *)(ROUNDUP(addr->sin_len) + (char *)addr);
+       sdl = (struct sockaddr_dl *)(RT_ROUNDUP(addr->sin_len) + (char *)addr);
        if (addr->sin_addr.s_addr == sin_m.sin_addr.s_addr) {
                if (sdl->sdl_family == AF_LINK &&
                    (rtm->rtm_flags & RTF_LLINFO) &&
@@ -408,7 +406,7 @@ tryagain:
                return(1);
        }
        addr = (struct sockaddr_inarp *)(rtm + 1);
-       sdl = (struct sockaddr_dl *)(ROUNDUP(addr->sin_len) + (char *)addr);
+       sdl = (struct sockaddr_dl *)(RT_ROUNDUP(addr->sin_len) + (char *)addr);
        if (addr->sin_addr.s_addr == sin_m.sin_addr.s_addr) {
                if (sdl->sdl_family == AF_LINK &&
                    (rtm->rtm_flags & RTF_LLINFO) &&
@@ -486,7 +484,8 @@ search(u_long addr, void (*action)(struct sockaddr_dl *sdl,
        for (next = buf; next < lim; next += rtm->rtm_msglen) {
                rtm = (struct rt_msghdr *)next;
                sin2 = (struct sockaddr_inarp *)(rtm + 1);
-               sdl = (struct sockaddr_dl *)((char *)sin2 + ROUNDUP(sin2->sin_len));
+               sdl = (struct sockaddr_dl *)((char *)sin2 +
+                           RT_ROUNDUP(sin2->sin_len));
                if (addr) {
                        if (addr != sin2->sin_addr.s_addr)
                                continue;
@@ -533,7 +532,7 @@ print_entry(struct sockaddr_dl *sdl,
                printf(" published (proxy only)");
        if (rtm->rtm_addrs & RTA_NETMASK) {
                addr = (struct sockaddr_inarp *)
-                       (ROUNDUP(sdl->sdl_len) + (char *)sdl);
+                       (RT_ROUNDUP(sdl->sdl_len) + (char *)sdl);
                if (addr->sin_addr.s_addr == 0xffffffff)
                        printf(" published");
                if (addr->sin_len != 8)
@@ -633,9 +632,12 @@ rtmsg(int cmd)
        case RTM_GET:
                rtm->rtm_addrs |= RTA_DST;
        }
-#define NEXTADDR(w, s) \
-       if (rtm->rtm_addrs & (w)) { \
-               bcopy((char *)&s, cp, sizeof(s)); cp += ROUNDUP(sizeof(s));}
+
+#define NEXTADDR(w, s)                                 \
+       if (rtm->rtm_addrs & (w)) {                     \
+               bcopy((char *)&s, cp, sizeof(s));       \
+               cp += RT_ROUNDUP(sizeof(s));            \
+       }
 
        NEXTADDR(RTA_DST, sin_m);
        NEXTADDR(RTA_GATEWAY, sdl_m);
index 79a4f7f..5672f0a 100644 (file)
@@ -170,17 +170,6 @@ struct afswtch *afp = NULL;        /*the address family being set or asked about*/
 void   rt_xaddrs(caddr_t, caddr_t, struct rt_addrinfo *);
 int    ifconfig(int argc, char *argv[], int af, struct afswtch *rafp);
 
-
-
-/*
- * Expand the compacted form of addresses as returned via the
- * configuration read via sysctl().
- */
-
-#define ROUNDUP(a) \
-       ((a) > 0 ? (1 + (((a) - 1) | (sizeof(long) - 1))) : sizeof(long))
-#define ADVANCE(x, n) (x += ROUNDUP((n)->sa_len))
-
 void
 rt_xaddrs(caddr_t cp, caddr_t cplim, struct rt_addrinfo *rtinfo)
 {
@@ -192,7 +181,7 @@ rt_xaddrs(caddr_t cp, caddr_t cplim, struct rt_addrinfo *rtinfo)
                if ((rtinfo->rti_addrs & (1 << i)) == 0)
                        continue;
                rtinfo->rti_info[i] = sa = (struct sockaddr *)cp;
-               ADVANCE(cp, sa);
+               RT_ADVANCE(cp, sa);
        }
 }
 
index 5210558..184d20e 100644 (file)
 #define NI_WITHSCOPEID 0
 #endif
 
-/* packing rule for routing socket */
-#define ROUNDUP(a) \
-       ((a) > 0 ? (1 + (((a) - 1) | (sizeof(long) - 1))) : sizeof(long))
-#define ADVANCE(x, n) (x += ROUNDUP((n)->sa_len))
-
 static int pid;
 static int cflag;
 static int nflag;
@@ -400,7 +395,7 @@ set(int argc, char **argv)
                return (1);
        }
        sin = (struct sockaddr_in6 *)(rtm + 1);
-       sdl = (struct sockaddr_dl *)(ROUNDUP(sin->sin6_len) + (char *)sin);
+       sdl = (struct sockaddr_dl *)(RT_ROUNDUP(sin->sin6_len) + (char *)sin);
        if (IN6_ARE_ADDR_EQUAL(&sin->sin6_addr, &sin_m.sin6_addr)) {
                if (sdl->sdl_family == AF_LINK &&
                    (rtm->rtm_flags & RTF_LLINFO) &&
@@ -497,7 +492,7 @@ delete(char *host)
                return (1);
        }
        sin = (struct sockaddr_in6 *)(rtm + 1);
-       sdl = (struct sockaddr_dl *)(ROUNDUP(sin->sin6_len) + (char *)sin);
+       sdl = (struct sockaddr_dl *)(RT_ROUNDUP(sin->sin6_len) + (char *)sin);
        if (IN6_ARE_ADDR_EQUAL(&sin->sin6_addr, &sin_m.sin6_addr)) {
                if (sdl->sdl_family == AF_LINK &&
                    (rtm->rtm_flags & RTF_LLINFO) &&
@@ -589,7 +584,8 @@ again:;
 
                rtm = (struct rt_msghdr *)next;
                sin = (struct sockaddr_in6 *)(rtm + 1);
-               sdl = (struct sockaddr_dl *)((char *)sin + ROUNDUP(sin->sin6_len));
+               sdl = (struct sockaddr_dl *)((char *)sin +
+                           RT_ROUNDUP(sin->sin6_len));
 
                /*
                 * Some OSes can produce a route that has the LINK flag but
index 8418573..3b562ba 100644 (file)
 #define        LOAD_QUIETLY    1
 #define        LOAD_VERBOSLY   2
 
-#define ROUNDUP(x) ((x) ? (1 + (((x) - 1) | (sizeof(long) - 1))) : sizeof(long))
-
 #if defined(__NetBSD__)
 extern void randinit(void);
 #else
index 311667c..9126e40 100644 (file)
@@ -713,7 +713,7 @@ iface_ParseHdr(struct ifa_msghdr *ifam, struct sockaddr *sa[RTAX_MAX])
   for (rtax = 0; rtax < RTAX_MAX; rtax++)
     if (ifam->ifam_addrs & (1 << rtax)) {
       sa[rtax] = (struct sockaddr *)wp;
-      wp += ROUNDUP(sa[rtax]->sa_len);
+      wp += RT_ROUNDUP(sa[rtax]->sa_len);
     } else
       sa[rtax] = NULL;
 }
index 666c6e3..7b12266 100644 (file)
@@ -318,7 +318,7 @@ route_ParseHdr(struct rt_msghdr *rtm, struct sockaddr *sa[RTAX_MAX])
   for (rtax = 0; rtax < RTAX_MAX; rtax++)
     if (rtm->rtm_addrs & (1 << rtax)) {
       sa[rtax] = (struct sockaddr *)wp;
-      wp += ROUNDUP(sa[rtax]->sa_len);
+      wp += RT_ROUNDUP(sa[rtax]->sa_len);
       if (sa[rtax]->sa_family == 0)
         sa[rtax] = NULL;       /* ??? */
     } else
@@ -701,7 +701,7 @@ memcpy_roundup(char *cp, const void *data, size_t len)
 {
   size_t padlen;
 
-  padlen = ROUNDUP(len);
+  padlen = RT_ROUNDUP(len);
   memcpy(cp, data, len);
   if (padlen > len)
     memset(cp + len, '\0', padlen - len);
index fffe619..d8df30b 100644 (file)
 #define        INIT_INTERVAL6  10      /* Wait to submit a initial riprequest */
 #endif
 
-/* alignment constraint for routing socket */
-#define ROUNDUP(a) \
-       ((a) > 0 ? (1 + (((a) - 1) | (sizeof(long) - 1))) : sizeof(long))
-#define ADVANCE(x, n) (x += ROUNDUP((n)->sa_len))
-
 /*
  * Following two macros are highly depending on KAME Release
  */
@@ -1555,7 +1550,7 @@ rtrecv(void)
                for (i = 0; i < RTAX_MAX; i++) {
                        if (addrs & (1 << i)) {
                                rta[i] = (struct sockaddr_in6 *)q;
-                               q += ROUNDUP(rta[i]->sin6_len);
+                               q += RT_ROUNDUP(rta[i]->sin6_len);
                        }
                }
 
@@ -2464,22 +2459,22 @@ rt_entry(struct rt_msghdr *rtm, int again)
        if ((rtm->rtm_addrs & RTA_DST) == 0)
                return;         /* ignore routes without destination address */
        sin6_dst = (struct sockaddr_in6 *)rtmp;
-       rtmp += ROUNDUP(sin6_dst->sin6_len);
+       rtmp += RT_ROUNDUP(sin6_dst->sin6_len);
        if (rtm->rtm_addrs & RTA_GATEWAY) {
                sin6_gw = (struct sockaddr_in6 *)rtmp;
-               rtmp += ROUNDUP(sin6_gw->sin6_len);
+               rtmp += RT_ROUNDUP(sin6_gw->sin6_len);
        }
        if (rtm->rtm_addrs & RTA_NETMASK) {
                sin6_mask = (struct sockaddr_in6 *)rtmp;
-               rtmp += ROUNDUP(sin6_mask->sin6_len);
+               rtmp += RT_ROUNDUP(sin6_mask->sin6_len);
        }
        if (rtm->rtm_addrs & RTA_GENMASK) {
                sin6_genmask = (struct sockaddr_in6 *)rtmp;
-               rtmp += ROUNDUP(sin6_genmask->sin6_len);
+               rtmp += RT_ROUNDUP(sin6_genmask->sin6_len);
        }
        if (rtm->rtm_addrs & RTA_IFP) {
                sin6_ifp = (struct sockaddr_in6 *)rtmp;
-               rtmp += ROUNDUP(sin6_ifp->sin6_len);
+               rtmp += RT_ROUNDUP(sin6_ifp->sin6_len);
        }
 
        /* Destination */
@@ -2628,17 +2623,17 @@ addroute(struct riprt *rrt, const struct in6_addr *gw, struct ifc *ifcp)
        sin->sin6_len = sizeof(struct sockaddr_in6);
        sin->sin6_family = AF_INET6;
        sin->sin6_addr = np->rip6_dest;
-       sin = (struct sockaddr_in6 *)((char *)sin + ROUNDUP(sin->sin6_len));
+       sin = (struct sockaddr_in6 *)((char *)sin + RT_ROUNDUP(sin->sin6_len));
        /* Gateway */
        sin->sin6_len = sizeof(struct sockaddr_in6);
        sin->sin6_family = AF_INET6;
        sin->sin6_addr = *gw;
-       sin = (struct sockaddr_in6 *)((char *)sin + ROUNDUP(sin->sin6_len));
+       sin = (struct sockaddr_in6 *)((char *)sin + RT_ROUNDUP(sin->sin6_len));
        /* Netmask */
        sin->sin6_len = sizeof(struct sockaddr_in6);
        sin->sin6_family = AF_INET6;
        sin->sin6_addr = *(plen2mask(np->rip6_plen));
-       sin = (struct sockaddr_in6 *)((char *)sin + ROUNDUP(sin->sin6_len));
+       sin = (struct sockaddr_in6 *)((char *)sin + RT_ROUNDUP(sin->sin6_len));
 
        len = (char *)sin - (char *)buf;
        rtm->rtm_msglen = len;
@@ -2693,17 +2688,17 @@ delroute(struct netinfo6 *np, struct in6_addr *gw)
        sin->sin6_len = sizeof(struct sockaddr_in6);
        sin->sin6_family = AF_INET6;
        sin->sin6_addr = np->rip6_dest;
-       sin = (struct sockaddr_in6 *)((char *)sin + ROUNDUP(sin->sin6_len));
+       sin = (struct sockaddr_in6 *)((char *)sin + RT_ROUNDUP(sin->sin6_len));
        /* Gateway */
        sin->sin6_len = sizeof(struct sockaddr_in6);
        sin->sin6_family = AF_INET6;
        sin->sin6_addr = *gw;
-       sin = (struct sockaddr_in6 *)((char *)sin + ROUNDUP(sin->sin6_len));
+       sin = (struct sockaddr_in6 *)((char *)sin + RT_ROUNDUP(sin->sin6_len));
        /* Netmask */
        sin->sin6_len = sizeof(struct sockaddr_in6);
        sin->sin6_family = AF_INET6;
        sin->sin6_addr = *(plen2mask(np->rip6_plen));
-       sin = (struct sockaddr_in6 *)((char *)sin + ROUNDUP(sin->sin6_len));
+       sin = (struct sockaddr_in6 *)((char *)sin + RT_ROUNDUP(sin->sin6_len));
 
        len = (char *)sin - (char *)buf;
        rtm->rtm_msglen = len;
@@ -2764,7 +2759,7 @@ getroute(struct netinfo6 *np, struct in6_addr *gw)
        sin = (struct sockaddr_in6 *)&buf[sizeof(struct rt_msghdr)];
        if (rtm->rtm_addrs & RTA_DST) {
                sin = (struct sockaddr_in6 *)
-                       ((char *)sin + ROUNDUP(sin->sin6_len));
+                       ((char *)sin + RT_ROUNDUP(sin->sin6_len));
        }
        if (rtm->rtm_addrs & RTA_GATEWAY) {
                *gw = sin->sin6_addr;
index 90408e6..32efd9b 100644 (file)
 #include "rtadvd.h"
 #include "if.h"
 
-#define ROUNDUP(a, size) \
-       (((a) & ((size)-1)) ? (1 + ((a) | ((size)-1))) : (a))
-
-#define NEXT_SA(ap) (ap) = (struct sockaddr *) \
-       ((caddr_t)(ap) + ((ap)->sa_len ? ROUNDUP((ap)->sa_len,\
-                                                sizeof(u_long)) :\
-                                                sizeof(u_long)))
-
 struct if_msghdr **iflist;
 int iflist_init_ok;
 size_t ifblock_size;
@@ -88,7 +80,7 @@ get_rtaddrs(int addrs, struct sockaddr *sa, struct sockaddr **rti_info)
        for (i = 0; i < RTAX_MAX; i++) {
                if (addrs & (1 << i)) {
                        rti_info[i] = sa;
-                       NEXT_SA(sa);
+                       RT_ADVANCE(sa, sa);
                }
                else
                        rti_info[i] = NULL;
index a45437f..cb273c3 100644 (file)
@@ -205,13 +205,6 @@ interface_status(struct ifinfo *ifinfo)
        return(1);
 }
 
-#define ROUNDUP(a, size) \
-       (((a) & ((size)-1)) ? (1 + ((a) | ((size)-1))) : (a))
-
-#define NEXT_SA(ap) (ap) = (struct sockaddr *) \
-       ((caddr_t)(ap) + ((ap)->sa_len ? ROUNDUP((ap)->sa_len,\
-                                                sizeof(u_long)) :\
-                                                sizeof(u_long)))
 #define ROUNDUP8(a) (1 + (((a) - 1) | 7))
 
 int
@@ -461,7 +454,7 @@ get_rtaddrs(int addrs, struct sockaddr *sa, struct sockaddr **rti_info)
        for (i = 0; i < RTAX_MAX; i++) {
                if (addrs & (1 << i)) {
                        rti_info[i] = sa;
-                       NEXT_SA(sa);
+                       RT_ADVANCE(sa, sa);
                }
                else
                        rti_info[i] = NULL;
index bf0c322..fb7acc6 100644 (file)
 #include <syslog.h>
 #include "rtsold.h"
 
-#define ROUNDUP(a, size) \
-       (((a) & ((size)-1)) ? (1 + ((a) | ((size)-1))) : (a))
-
-#define NEXT_SA(ap) (ap) = (struct sockaddr *) \
-       ((caddr_t)(ap) + \
-        ((ap)->sa_len ? ROUNDUP((ap)->sa_len, sizeof(u_long)) \
-                      : sizeof(u_long)))
-
 #ifdef RTM_IFANNOUNCE  /*NetBSD 1.5 or later*/
 static int rtsock_input_ifannounce(int, struct rt_msghdr *, char *);
 #endif
index d7c00ce..3ca3a77 100644 (file)
@@ -574,10 +574,6 @@ quit(const char *msg, int wrterrno)
        exit(1);
 }
 
-#define ROUNDUP(a) \
-       ((a) > 0 ? (1 + (((a) - 1) | (sizeof(long) - 1))) : sizeof(long))
-#define ADVANCE(x, n) (x += ROUNDUP((n)->sa_len))
-
 void
 rt_xaddrs(caddr_t cp, caddr_t cplim, struct rt_addrinfo *rtinfo)
 {
@@ -589,7 +585,7 @@ rt_xaddrs(caddr_t cp, caddr_t cplim, struct rt_addrinfo *rtinfo)
                if ((rtinfo->rti_addrs & (1 << i)) == 0)
                        continue;
                rtinfo->rti_info[i] = sa = (struct sockaddr *)cp;
-               ADVANCE(cp, sa);
+               RT_ADVANCE(cp, sa);
        }
 }