diff options
-rw-r--r-- | regress/sbin/ifconfig/Makefile | 41 | ||||
-rw-r--r-- | regress/sbin/ifconfig/ifaddr.c | 13 |
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 */ |