summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornorby <norby@openbsd.org>2006-06-17 16:53:33 +0000
committernorby <norby@openbsd.org>2006-06-17 16:53:33 +0000
commitacfb64038676783aa55987931aa76433f01eea32 (patch)
treed5a43f97b14b2bfd9d43fbdb9399e80a264ca120
parentupdate in regard to cardbus, we support more than just this one TI (diff)
downloadwireguard-openbsd-acfb64038676783aa55987931aa76433f01eea32.tar.xz
wireguard-openbsd-acfb64038676783aa55987931aa76433f01eea32.zip
make dvmrpd(8) behave correctly on sparc64 when generating and parsing
route reports. help from claudio@
-rw-r--r--usr.sbin/dvmrpd/report.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/usr.sbin/dvmrpd/report.c b/usr.sbin/dvmrpd/report.c
index b034c26658c..9aef66217f9 100644
--- a/usr.sbin/dvmrpd/report.c
+++ b/usr.sbin/dvmrpd/report.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: report.c,v 1.2 2006/06/02 15:43:16 norby Exp $ */
+/* $OpenBSD: report.c,v 1.3 2006/06/17 16:53:33 norby Exp $ */
/*
* Copyright (c) 2005, 2006 Esben Norby <norby@openbsd.org>
@@ -107,7 +107,9 @@ recv_report(struct nbr *nbr, char *buf, u_int16_t len)
/* read four bytes */
memcpy(&netmask, buf, sizeof(netmask));
/* ditch one byte, since we only need three */
- netmask = netmask << 8;
+ netmask = ntohl(netmask) >> 8;
+ netmask = htonl(netmask);
+
/* set the highest byte to 255 */
netmask = netmask | htonl(0xff000000);
buf += 3;
@@ -245,7 +247,8 @@ rr_list_send(struct rr_head *rr_list, struct iface *xiface, struct nbr *nbr)
netmask = le->re->mask.s_addr;
if (prefixlen != mask2prefixlen(netmask)) {
prefixlen = mask2prefixlen(netmask);
- netmask = netmask >> 8;
+ netmask = ntohl(netmask) << 8;
+ netmask = htonl(netmask);
buf_add(buf, &netmask, 3);
}
netid_len = PREFIX_SIZE(prefixlen);