Module Name: src
Committed By: snj
Date: Fri Apr 3 17:59:03 UTC 2009
Modified Files:
src/sys/net [netbsd-5]: route.c route.h rtsock.c
src/usr.sbin/arp [netbsd-5]: arp.c
src/usr.sbin/pppd/pppd [netbsd-5]: sys-bsd.c
Log Message:
Pull up following revision(s) (requested by christos in ticket #650):
sys/net/route.c: revision 1.117
sys/net/route.h: revision 1.73
sys/net/rtsock.c: revision 1.125
usr.sbin/arp/arp.c: revision 1.48
usr.sbin/pppd/pppd/sys-bsd.c: revision 1.59
Centralize the ROUNDUP and ADVANCE macro in a header file, give them an
RT_ prefix and use them appropriately, instead of making copies. Make
pppd use the RT_ROUNDUP macro; fixes proxyarp setting on 64 bit hosts.
To generate a diff of this commit:
cvs rdiff -u -r1.113 -r1.113.4.1 src/sys/net/route.c
cvs rdiff -u -r1.70 -r1.70.16.1 src/sys/net/route.h
cvs rdiff -u -r1.115.2.3 -r1.115.2.4 src/sys/net/rtsock.c
cvs rdiff -u -r1.47 -r1.47.4.1 src/usr.sbin/arp/arp.c
cvs rdiff -u -r1.58 -r1.58.2.1 src/usr.sbin/pppd/pppd/sys-bsd.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/net/route.c
diff -u src/sys/net/route.c:1.113 src/sys/net/route.c:1.113.4.1
--- src/sys/net/route.c:1.113 Sat Oct 4 00:09:34 2008
+++ src/sys/net/route.c Fri Apr 3 17:59:03 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: route.c,v 1.113 2008/10/04 00:09:34 pooka Exp $ */
+/* $NetBSD: route.c,v 1.113.4.1 2009/04/03 17:59:03 snj Exp $ */
/*-
* Copyright (c) 1998, 2008 The NetBSD Foundation, Inc.
@@ -93,7 +93,7 @@
#include "opt_route.h"
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: route.c,v 1.113 2008/10/04 00:09:34 pooka Exp $");
+__KERNEL_RCSID(0, "$NetBSD: route.c,v 1.113.4.1 2009/04/03 17:59:03 snj Exp $");
#include <sys/param.h>
#include <sys/sysctl.h>
@@ -570,8 +570,6 @@
return ifa;
}
-#define ROUNDUP(a) (a>0 ? (1 + (((a) - 1) | (sizeof(long) - 1))) : sizeof(long))
-
int
rtrequest(int req, const struct sockaddr *dst, const struct sockaddr *gateway,
const struct sockaddr *netmask, int flags, struct rtentry **ret_nrt)
Index: src/sys/net/route.h
diff -u src/sys/net/route.h:1.70 src/sys/net/route.h:1.70.16.1
--- src/sys/net/route.h:1.70 Wed Mar 26 14:54:19 2008
+++ src/sys/net/route.h Fri Apr 3 17:59:03 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: route.h,v 1.70 2008/03/26 14:54:19 ad Exp $ */
+/* $NetBSD: route.h,v 1.70.16.1 2009/04/03 17:59:03 snj Exp $ */
/*
* Copyright (c) 1980, 1986, 1993
@@ -240,6 +240,10 @@
#define RTAX_BRD 7 /* for NEWADDR, broadcast or p-p dest addr */
#define RTAX_MAX 8 /* size of array to allocate */
+#define RT_ROUNDUP(a) \
+ ((a) > 0 ? (1 + (((a) - 1) | (sizeof(long) - 1))) : sizeof(long))
+#define RT_ADVANCE(x, n) (x += RT_ROUNDUP((n)->sa_len))
+
struct rt_addrinfo {
int rti_addrs;
const struct sockaddr *rti_info[RTAX_MAX];
Index: src/sys/net/rtsock.c
diff -u src/sys/net/rtsock.c:1.115.2.3 src/sys/net/rtsock.c:1.115.2.4
--- src/sys/net/rtsock.c:1.115.2.3 Sun Mar 15 20:00:30 2009
+++ src/sys/net/rtsock.c Fri Apr 3 17:59:03 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: rtsock.c,v 1.115.2.3 2009/03/15 20:00:30 snj Exp $ */
+/* $NetBSD: rtsock.c,v 1.115.2.4 2009/04/03 17:59:03 snj Exp $ */
/*
* Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
@@ -61,7 +61,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rtsock.c,v 1.115.2.3 2009/03/15 20:00:30 snj Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rtsock.c,v 1.115.2.4 2009/04/03 17:59:03 snj Exp $");
#include "opt_inet.h"
@@ -505,10 +505,6 @@
#undef metric
}
-#define ROUNDUP(a) \
- ((a) > 0 ? (1 + (((a) - 1) | (sizeof(long) - 1))) : sizeof(long))
-#define ADVANCE(x, n) (x += ROUNDUP((n)->sa_len))
-
static int
rt_xaddrs(u_char rtmtype, const char *cp, const char *cplim,
struct rt_addrinfo *rtinfo)
@@ -520,7 +516,7 @@
if ((rtinfo->rti_addrs & (1 << i)) == 0)
continue;
rtinfo->rti_info[i] = sa = (const struct sockaddr *)cp;
- ADVANCE(cp, sa);
+ RT_ADVANCE(cp, sa);
}
/*
@@ -536,7 +532,7 @@
/* Check for bad data length. */
if (cp != cplim) {
if (i == RTAX_NETMASK + 1 && sa != NULL &&
- cp - ROUNDUP(sa->sa_len) + sa->sa_len == cplim)
+ cp - RT_ROUNDUP(sa->sa_len) + sa->sa_len == cplim)
/*
* The last sockaddr was info.rti_info[RTAX_NETMASK].
* We accept this for now for the sake of old
@@ -611,7 +607,7 @@
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, sa);
len += dlen;
}
@@ -675,7 +671,7 @@
if ((sa = rtinfo->rti_info[i]) == NULL)
continue;
rtinfo->rti_addrs |= (1 << i);
- dlen = ROUNDUP(sa->sa_len);
+ dlen = RT_ROUNDUP(sa->sa_len);
if (cp) {
(void)memcpy(cp, sa, (size_t)dlen);
cp += dlen;
Index: src/usr.sbin/arp/arp.c
diff -u src/usr.sbin/arp/arp.c:1.47 src/usr.sbin/arp/arp.c:1.47.4.1
--- src/usr.sbin/arp/arp.c:1.47 Mon Jul 21 13:36:57 2008
+++ src/usr.sbin/arp/arp.c Fri Apr 3 17:59:03 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: arp.c,v 1.47 2008/07/21 13:36:57 lukem Exp $ */
+/* $NetBSD: arp.c,v 1.47.4.1 2009/04/03 17:59:03 snj Exp $ */
/*
* Copyright (c) 1984, 1993
@@ -42,7 +42,7 @@
#if 0
static char sccsid[] = "@(#)arp.c 8.3 (Berkeley) 4/28/95";
#else
-__RCSID("$NetBSD: arp.c,v 1.47 2008/07/21 13:36:57 lukem Exp $");
+__RCSID("$NetBSD: arp.c,v 1.47.4.1 2009/04/03 17:59:03 snj Exp $");
#endif
#endif /* not lint */
@@ -50,10 +50,6 @@
* arp - display, set, and delete arp table entries
*/
-/* Roundup the same way rt_xaddrs does */
-#define ROUNDUP(a) \
- ((a) > 0 ? (1 + (((a) - 1) | (sizeof(long) - 1))) : sizeof(long))
-
#include <sys/param.h>
#include <sys/file.h>
#include <sys/socket.h>
@@ -285,7 +281,7 @@
return (1);
}
sina = (struct sockaddr_inarp *)(void *)(rtm + 1);
- sdl = (struct sockaddr_dl *)(void *)(ROUNDUP(sina->sin_len) +
+ sdl = (struct sockaddr_dl *)(void *)(RT_ROUNDUP(sina->sin_len) +
(char *)(void *)sina);
if (sina->sin_addr.s_addr == sin_m.sin_addr.s_addr) {
if (is_llinfo(sdl, rtm->rtm_flags))
@@ -379,7 +375,7 @@
return (1);
}
sina = (struct sockaddr_inarp *)(void *)(rtm + 1);
- sdl = (struct sockaddr_dl *)(void *)(ROUNDUP(sina->sin_len) +
+ sdl = (struct sockaddr_dl *)(void *)(RT_ROUNDUP(sina->sin_len) +
(char *)(void *)sina);
if (sina->sin_addr.s_addr == sin_m.sin_addr.s_addr &&
is_llinfo(sdl, rtm->rtm_flags))
@@ -439,7 +435,7 @@
rtm = (struct rt_msghdr *)(void *)next;
sina = (struct sockaddr_inarp *)(void *)(rtm + 1);
sdl = (struct sockaddr_dl *)(void *)
- (ROUNDUP(sina->sin_len) + (char *)(void *)sina);
+ (RT_ROUNDUP(sina->sin_len) + (char *)(void *)sina);
if (addr) {
if (addr != sina->sin_addr.s_addr)
continue;
@@ -471,7 +467,7 @@
(void)printf(" published (proxy only)");
if (rtm->rtm_addrs & RTA_NETMASK) {
sina = (struct sockaddr_inarp *)(void *)
- (ROUNDUP(sdl->sdl_len) + (char *)(void *)sdl);
+ (RT_ROUNDUP(sdl->sdl_len) + (char *)(void *)sdl);
if (sina->sin_addr.s_addr == 0xffffffff)
(void)printf(" published");
if (sina->sin_len != 8)
@@ -626,7 +622,7 @@
if (rtm->rtm_addrs & (w)) { \
(void)memcpy(cp, &s, \
(size_t)((struct sockaddr *)(void *)&s)->sa_len); \
- cp += ROUNDUP(((struct sockaddr *)(void *)&s)->sa_len); \
+ RT_ADVANCE(cp, ((struct sockaddr *)(void *)&s)); \
}
NEXTADDR(RTA_DST, sin_m);
Index: src/usr.sbin/pppd/pppd/sys-bsd.c
diff -u src/usr.sbin/pppd/pppd/sys-bsd.c:1.58 src/usr.sbin/pppd/pppd/sys-bsd.c:1.58.2.1
--- src/usr.sbin/pppd/pppd/sys-bsd.c:1.58 Sat Oct 25 22:12:20 2008
+++ src/usr.sbin/pppd/pppd/sys-bsd.c Fri Apr 3 17:59:03 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: sys-bsd.c,v 1.58 2008/10/25 22:12:20 christos Exp $ */
+/* $NetBSD: sys-bsd.c,v 1.58.2.1 2009/04/03 17:59:03 snj Exp $ */
/*
* sys-bsd.c - System-dependent procedures for setting up
@@ -79,7 +79,7 @@
#if 0
#define RCSID "Id: sys-bsd.c,v 1.47 2000/04/13 12:04:23 paulus Exp "
#else
-__RCSID("$NetBSD: sys-bsd.c,v 1.58 2008/10/25 22:12:20 christos Exp $");
+__RCSID("$NetBSD: sys-bsd.c,v 1.58.2.1 2009/04/03 17:59:03 snj Exp $");
#endif
#endif
@@ -1615,7 +1615,7 @@
arpmsg.dst.sin_other = SIN_PROXY;
arpmsg.hdr.rtm_msglen = (char *) &arpmsg.hwa - (char *) &arpmsg
- + arpmsg.hwa.sdl_len;
+ + RT_ROUNDUP(arpmsg.hwa.sdl_len);
if (write(routes, &arpmsg, arpmsg.hdr.rtm_msglen) < 0) {
error("Couldn't add proxy arp entry: %m");
close(routes);