Replace ROUNDUP/ADVANCE with SA_SIZE

This commit is contained in:
Luigi Rizzo 2004-04-13 11:24:43 +00:00
parent e74642df71
commit 0b46c08590
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=128186
9 changed files with 17 additions and 60 deletions

View file

@ -371,10 +371,6 @@ struct afswtch {
* 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)
{
@ -386,7 +382,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);
cp += SA_SIZE(sa);
}
}

View file

@ -756,13 +756,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);
cp += SA_SIZE((struct sockaddr *)cp);
if (((struct sockaddr *)cp)->sa_family == AF_INET) {
sin = (struct sockaddr_in *)cp;
break;

View file

@ -124,10 +124,6 @@ usage(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(argc, argv)
int argc;
@ -283,7 +279,7 @@ bad: usage(*argv);
struct sockaddr *sa = (struct sockaddr *)(rtm + 1);
(void) printf("%-20.20s ", rtm->rtm_flags & RTF_HOST ?
routename(sa) : netname(sa));
sa = (struct sockaddr *)(ROUNDUP(sa->sa_len) + (char *)sa);
sa = (struct sockaddr *)(SA_SIZE(sa) + (char *)sa);
(void) printf("%-20.20s ", routename(sa));
(void) printf("done\n");
}
@ -1167,7 +1163,7 @@ rtmsg(cmd, flags)
#define NEXTADDR(w, u) \
if (rtm_addrs & (w)) {\
l = ROUNDUP(u.sa.sa_len); memmove(cp, &(u), l); cp += l;\
l = SA_SIZE(&(u.sa)); memmove(cp, &(u), l); cp += l;\
if (verbose) sodump(&(u),"u");\
}
@ -1410,7 +1406,7 @@ print_getmsg(rtm, msglen)
ifp = (struct sockaddr_dl *)sa;
break;
}
ADVANCE(cp, sa);
cp += SA_SIZE(sa);
}
if (dst && mask)
mask->sa_family = dst->sa_family; /* XXX */
@ -1489,7 +1485,7 @@ pmsg_addrs(cp, addrs)
if (i & addrs) {
sa = (struct sockaddr *)cp;
(void) printf(" %s", routename(sa));
ADVANCE(cp, sa);
cp += SA_SIZE(sa);
}
(void) putchar('\n');
(void) fflush(stdout);

View file

@ -637,29 +637,14 @@ rt_xaddrs(struct rt_addrinfo *info,
#ifdef _HAVE_SA_LEN
static struct sockaddr sa_zero;
#endif
#ifdef sgi
#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))
#endif
memset(info, 0, sizeof(*info));
info->rti_addrs = addrs;
for (i = 0; i < RTAX_MAX && sa < lim; i++) {
if ((addrs & (1 << i)) == 0)
continue;
#ifdef _HAVE_SA_LEN
info->rti_info[i] = (sa->sa_len != 0) ? sa : &sa_zero;
sa = (struct sockaddr *)((char*)(sa)
+ ROUNDUP(sa->sa_len));
#else
info->rti_info[i] = sa;
sa = (struct sockaddr *)((char*)(sa)
+ ROUNDUP(_FAKE_SA_LEN_DST(sa)));
#endif
sa = (struct sockaddr *)((char*)(sa) + SA_SIZE(sa));
}
}

View file

@ -72,12 +72,6 @@ static const char rcsid[] =
#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.
*/
@ -536,7 +530,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 *)(SA_SIZE(sa) + (char *)sa);
p_sockaddr(sa, NULL, 0, 18);
}
p_flags(rtm->rtm_flags & interesting, "%-6.6s ");

View file

@ -81,15 +81,11 @@ quit(s)
}
struct rt_addrinfo info;
/* Sleazy use of local variables throughout file, warning!!!! */
/* XXX Sleazy use of local variables throughout file, warning!!!! */
#define netmask info.rti_info[RTAX_NETMASK]
#define ifaaddr info.rti_info[RTAX_IFA]
#define brdaddr info.rti_info[RTAX_BRD]
#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(cp, cplim, rtinfo)
register caddr_t cp, cplim;
@ -103,7 +99,7 @@ rt_xaddrs(cp, cplim, rtinfo)
if ((rtinfo->rti_addrs & (1 << i)) == 0)
continue;
rtinfo->rti_info[i] = sa = (struct sockaddr *)cp;
ADVANCE(cp, sa);
cp += SA_SIZE(sa);
}
}

View file

@ -4,6 +4,6 @@
PROG= arp
MAN= arp.4 arp.8
WARNS?= 3
WARNS?= 5
.include <bsd.prog.mk>

View file

@ -113,8 +113,6 @@ static int expire_time, flags, doing_proxy, proxy_only;
#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
@ -319,7 +317,7 @@ set(int argc, char **argv)
return (1);
}
addr = (struct sockaddr_inarp *)(rtm + 1);
sdl = (struct sockaddr_dl *)(ROUNDUP(addr->sin_len) + (char *)addr);
sdl = (struct sockaddr_dl *)(SA_SIZE(addr) + (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) &&
@ -417,7 +415,7 @@ delete(char *host, char *info)
return (1);
}
addr = (struct sockaddr_inarp *)(rtm + 1);
sdl = (struct sockaddr_dl *)(ROUNDUP(addr->sin_len) + (char *)addr);
sdl = (struct sockaddr_dl *)(SA_SIZE(addr) + (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) &&
@ -484,7 +482,7 @@ search(u_long addr, action_fn *action)
for (next = buf; next < lim; next += rtm->rtm_msglen) {
rtm = (struct rt_msghdr *)next;
sin2 = (struct sockaddr_inarp *)(rtm + 1);
(char *)sdl = (char *)sin2 + ROUNDUP(sin2->sin_len);
(char *)sdl = (char *)sin2 + SA_SIZE(sin2);
if (rifname && if_indextoname(sdl->sdl_index, ifname) &&
strcmp(ifname, rifname))
continue;
@ -537,7 +535,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);
(SA_SIZE(sdl) + (char *)sdl);
if (addr->sin_addr.s_addr == 0xffffffff)
printf(" published");
if (addr->sin_len != 8)
@ -673,7 +671,7 @@ rtmsg(int cmd)
}
#define NEXTADDR(w, s) \
if (rtm->rtm_addrs & (w)) { \
bcopy((char *)&s, cp, sizeof(s)); cp += ROUNDUP(sizeof(s));}
bcopy((char *)&s, cp, sizeof(s)); cp += SA_SIZE(&s);}
NEXTADDR(RTA_DST, sin_m);
NEXTADDR(RTA_GATEWAY, sdl_m);

View file

@ -525,10 +525,6 @@ quit(msg)
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(cp, cplim, rtinfo)
register caddr_t cp, cplim;
@ -542,7 +538,7 @@ rt_xaddrs(cp, cplim, rtinfo)
if ((rtinfo->rti_addrs & (1 << i)) == 0)
continue;
rtinfo->rti_info[i] = sa = (struct sockaddr *)cp;
ADVANCE(cp, sa);
cp += SA_SIZE(sa);
}
}