summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--regress/sbin/ifconfig/Makefile41
-rw-r--r--regress/sbin/ifconfig/ifaddr.c13
2 files changed, 44 insertions, 10 deletions
diff --git a/regress/sbin/ifconfig/Makefile b/regress/sbin/ifconfig/Makefile
index 7292d97139b..5324ff0ec63 100644
--- a/regress/sbin/ifconfig/Makefile
+++ b/regress/sbin/ifconfig/Makefile
@@ -1,4 +1,4 @@
-# $OpenBSD: Makefile,v 1.3 2019/10/25 14:57:19 bluhm Exp $
+# $OpenBSD: Makefile,v 1.4 2019/11/30 05:51:20 bluhm Exp $
# Copyright (c) 2019 Alexander Bluhm <bluhm@openbsd.org>
#
@@ -59,6 +59,15 @@ run-ether-netmask:
/sbin/ifconfig ${ETHER_IF} >ifconfig.out
grep 'inet ${ETHER_ADDR} netmask 0xffffff00 ' ifconfig.out
+REGRESS_TARGETS += run-ether-contiguous-netmask
+run-ether-contiguous-netmask:
+ @echo '======== $@ ========'
+ ${IFCONFIG} ${ETHER_IF} ${ETHER_ADDR} netmask 255.255.255.0
+ ${IFCONFIG} ${ETHER_IF} ${ETHER_ADDR} delete
+ ! ${IFCONFIG} ${ETHER_IF} ${ETHER_ADDR} netmask 255.255.255.64
+ /sbin/ifconfig ${ETHER_IF} >ifconfig.out
+ ! grep 'inet ${ETHER_ADDR} ' ifconfig.out
+
REGRESS_TARGETS += run-ether-len
run-ether-len:
@echo '======== $@ ========'
@@ -299,6 +308,15 @@ run-ether-ifaddr-netmask:
/sbin/ifconfig ${ETHER_IF} >ifconfig.out
grep 'inet ${ETHER_ADDR} netmask 0xffffff00 ' ifconfig.out
+REGRESS_TARGETS += run-ether-ifaddr-contiguous-netmask
+run-ether-ifaddr-contiguous-netmask:
+ @echo '======== $@ ========'
+ ${IFADDR} ${ETHER_IF} ${ETHER_ADDR} netmask 255.255.255.0
+ ${IFADDR} ${ETHER_IF} ${ETHER_ADDR} delete
+ ! ${IFADDR} ${ETHER_IF} ${ETHER_ADDR} netmask 255.255.255.64
+ /sbin/ifconfig ${ETHER_IF} >ifconfig.out
+ ! grep 'inet ${ETHER_ADDR} netmask 0xffffff' ifconfig.out
+
REGRESS_TARGETS += run-ether-ifaddr-prefixlen
run-ether-ifaddr-prefixlen:
@echo '======== $@ ========'
@@ -397,8 +415,25 @@ run-ether-inet6-netmask:
/sbin/ifconfig ${ETHER_IF} >ifconfig.out
grep 'inet6 ${ETHER_ADDR6} prefixlen 80 ' ifconfig.out
-# XXX currently inet6 netmask is silently ignored
-REGRESS_EXPECTED_FAILURES += run-ether-inet6-netmask
+REGRESS_TARGETS += run-ether-inet6-contiguous-netmask
+run-ether-inet6-contiguous-netmask:
+ @echo '======== $@ ========'
+ ${IFCONFIG} ${ETHER_IF} inet6 ${ETHER_ADDR6}\
+ netmask ffff:ffff:ffff:ffff:ffff::
+ ${IFCONFIG} ${ETHER_IF} inet6 ${ETHER_ADDR6} delete
+ ! ${IFCONFIG} ${ETHER_IF} inet6 ${ETHER_ADDR6}\
+ netmask ffff:ffff:ffff:ffff:ffff:4000::
+ /sbin/ifconfig ${ETHER_IF} >ifconfig.out
+ ! grep 'inet6 ${ETHER_ADDR6} ' ifconfig.out
+
+REGRESS_TARGETS += run-ether-inet6-contiguous-gap
+run-ether-inet6-contiguous-gap:
+ @echo '======== $@ ========'
+ ${IFCONFIG} ${ETHER_IF} inet6 ${ETHER_ADDR6} netmask ffff::
+ ${IFCONFIG} ${ETHER_IF} inet6 ${ETHER_ADDR6} delete
+ ! ${IFCONFIG} ${ETHER_IF} inet6 ${ETHER_ADDR6} netmask ffff::ff00:8
+ /sbin/ifconfig ${ETHER_IF} >ifconfig.out
+ ! grep 'inet6 ${ETHER_ADDR6} ' ifconfig.out
REGRESS_TARGETS += run-ether-inet6-len
run-ether-inet6-len:
diff --git a/regress/sbin/ifconfig/ifaddr.c b/regress/sbin/ifconfig/ifaddr.c
index 0cc223c7ab7..07cfbf6261b 100644
--- a/regress/sbin/ifconfig/ifaddr.c
+++ b/regress/sbin/ifconfig/ifaddr.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ifaddr.c,v 1.1 2019/10/24 22:55:07 bluhm Exp $ */
+/* $OpenBSD: ifaddr.c,v 1.2 2019/11/30 05:51:20 bluhm Exp $ */
/*
* This file has been copied from ifconfig and adapted to test
@@ -111,6 +111,7 @@
#include <string.h>
#include <unistd.h>
#include <limits.h>
+#include <resolv.h>
#include <util.h>
#include <ifaddrs.h>
@@ -324,11 +325,11 @@ main(int argc, char *argv[])
errx(1, "interface name '%s' too long", *argv);
argc--, argv++;
- if (unveil("/etc/resolv.conf", "r") == -1)
+ if (unveil(_PATH_RESCONF, "r") == -1)
err(1, "unveil");
- if (unveil("/etc/hosts", "r") == -1)
+ if (unveil(_PATH_HOSTS, "r") == -1)
err(1, "unveil");
- if (unveil("/etc/services", "r") == -1)
+ if (unveil(_PATH_SERVICES, "r") == -1)
err(1, "unveil");
if (unveil(NULL, NULL) == -1)
err(1, "unveil");
@@ -717,6 +718,7 @@ setifnetmask(const char *addr, int ignored)
{
setmask++;
afp->af_getaddr(addr, MASK);
+ explicit_prefix = 1;
}
/* ARGSUSED */
@@ -1638,9 +1640,6 @@ in_getaddr(const char *s, int which)
else
errx(1, "%s: bad value", s);
}
- if (which == MASK && (ntohl(sin->sin_addr.s_addr) &
- (~ntohl(sin->sin_addr.s_addr) >> 1)))
- errx(1, "%s: non-contiguous mask", s);
}
/* ARGSUSED */