Up to [cvs.NetBSD.org] / src / tests / net / ndp
Request diff between arbitrary revisions
Keyword substitution: kv
Default branch: MAIN
Remove in-kernel handling of Router Advertisements This is much better handled by a user-land tool. Proposed on tech-net here: https://mail-index.netbsd.org/tech-net/2020/04/22/msg007766.html Note that the ioctl SIOCGIFINFO_IN6 no longer sets flags. That now needs to be done using the pre-existing SIOCSIFINFO_FLAGS ioctl. Compat is fully provided where it makes sense, but trying to turn on RA handling will obviously throw an error as it no longer exists. Note that if you use IPv6 temporary addresses, this now needs to be turned on in dhcpcd.conf(5) rather than in sysctl.conf(5).
Mostly merge changes from HEAD upto 20200411
Pull up following revision(s) (requested by ozaki-r in ticket #368): sys/netinet6/in6_ifattach.h: revision 1.14 sys/netinet6/ip6_input.c: revision 1.212 sys/netinet6/ip6_input.c: revision 1.213 sys/netinet6/ip6_input.c: revision 1.214 sys/netinet6/in6_var.h: revision 1.101 sys/netinet6/in6_var.h: revision 1.102 sys/netinet6/in6_ifattach.c: revision 1.116 sys/netinet6/in6_ifattach.c: revision 1.117 tests/net/ndp/t_ra.sh: revision 1.33 Reorganize in6_tmpaddrtimer stuffs - Move the related functions to where in6_tmpaddrtimer_ch exists - Hide global variable in6_tmpaddrtimer_ch - Rename ip6_init2 to in6_tmpaddrtimer_init - Reduce callers of callout_reset - Use callout_schedule Validate ip6_temp_preferred_lifetime (net.inet6.ip6.temppltime) on a change ip6_temp_preferred_lifetime is used to calculate an interval period to regenerate temporary addresse by TEMP_PREFERRED_LIFETIME - REGEN_ADVANCE - DESYNC_FACTOR as per RFC 3041 3.5. So it must be greater than (REGEN_ADVANCE + DESYNC_FACTOR), otherwise it will be negative and go wrong, for example KASSERT(to_ticks >= 0) in callout_schedule_locked fails. tests: add tests for the validateion of net.inet6.ip6.temppltime in6: reset the temporary address timer on a change of the interval period
tests: add tests for the validateion of net.inet6.ip6.temppltime
Make this test somewhat deterministic - far fewer races, and most of what are left are "race for the bus" type - if we lose, we just wait for the next one ... slower but still reliable. There are two exceptions ... when starting more than one rtadvd (on different routers) we expect to receive an RA from each, but all that we can check is that we received the (at least) right number of RAs. It is possible (though unlikely) that one router sent two before another sent any, in which case we will not have the data we expect, and a sub-test will fail. Second, there is no way to know for sure that we have waited long enough when we're waiting for data to expire - in systems with correctly working clocks that actually measure time, this should not be an issue, if data is due to expire in < 5 seconds, and we wait 5 seconds, and the data is still there, then that indicates a failure, which should be detected. Unfortunately with QEMU testing time just isn't that reliable. But fortunately, it is generally the sleep which takes longer, while other timers run correctly, which is the way that makes us happy... While here lots of cleanups - everything from white space and line wrapping, to removing superfluous quotes and adding some (but probably not enough) that are not (though given the data is all known here, lack of quotes will rarely hurt.) Also take note of the fact that current rtadvd *cannot* delete its pidfile, so waiting for that file to be removed is doomed to failure. Do things in a way that works, rather than simply resorting to assassination. Because we do a lot less "sleep and hope it is long enough" and more "wait until it is observed to happen" the tests generally run in less elapsed time than before (20% less has been observed.) But because we "wait until it is observed to happen" rather than just "sleep and hope it is long enough" sometimes things take longer (and when that happens, we no longer fail). Up to 7% slower (overall) has been observed. (Observations on an amd64 DomU, no idea yet as to what QEMU might observe.)
Pull up following revision(s) (requested by ozaki-r in ticket #358): usr.sbin/rtadvd/rtadvd.c: revision 1.54-1.58 usr.sbin/rtadvd/config.c: revision 1.37 usr.sbin/rtadvd/if.c: revision 1.25 usr.sbin/rtadvd/dump.c: revision 1.15 usr.sbin/rtadvd/rrenum.c: revision 1.20 usr.sbin/rtadvd/logit.h: revision 1.1 usr.sbin/rtadvd/rtadvd.8: revision 1.26 tests/net/ndp/t_ra.sh: revision 1.30 usr.sbin/rtadvd/timer.c: revision 1.14 tests/net/ndp/t_ra.sh: revision 1.31 usr.sbin/rtadvd/advcap.c: revision 1.17 KNF, fix time printing formats. Don't start another copy of rtadvd if one is running. PR/52618: Shinichi Doyashiki: Don't exit if adding interface to multicast group fails. This happens with empty vlan interfaces - make syscalls checks against -1 - fix errors to print %s: instead of <%s> XXX: if_vlan is the only pseudo interface in net/ that returns such an error.. Kill rtadvd surely even if the tests fail in the middle It may help PR bin/52701. Change the meaning of the D flag to print errors to stderr instead of syslog(3) and exit if poll(2) fails (intended to be used with unit-tests). Mark expandm as preserving format strings. Let rtadvd not use syslog for logging Thanks to christos@ now rtadvd can log via stderr instead of syslog by -D option. Address PR bin/52701
Let rtadvd not use syslog for logging Thanks to christos@ now rtadvd can log via stderr instead of syslog by -D option. Address PR bin/52701
Kill rtadvd surely even if the tests fail in the middle It may help PR bin/52701.
Pull up following revision(s) (requested by ozaki-r in ticket #107): usr.sbin/arp/arp.c: revision 1.56 sys/net/rtsock.c: revision 1.218 sys/net/if_llatbl.c: revision 1.20 usr.sbin/arp/arp.c: revision 1.57 sys/net/rtsock.c: revision 1.219 sys/net/if_llatbl.c: revision 1.21 usr.sbin/arp/arp.c: revision 1.58 tests/net/net_common.sh: revision 1.19 sys/netinet6/nd6.h: revision 1.84 sys/netinet6/nd6.h: revision 1.85 tests/net/arp/t_arp.sh: revision 1.23 sys/netinet6/in6.c: revision 1.246 tests/net/arp/t_arp.sh: revision 1.24 sys/netinet6/in6.c: revision 1.247 tests/net/arp/t_arp.sh: revision 1.25 sys/netinet6/in6.c: revision 1.248 tests/net/arp/t_arp.sh: revision 1.26 usr.sbin/ndp/ndp.c: revision 1.49 tests/net/arp/t_arp.sh: revision 1.27 tests/net/ndp/t_ndp.sh: revision 1.20 tests/net/arp/t_arp.sh: revision 1.28 tests/net/ndp/t_ndp.sh: revision 1.21 tests/net/arp/t_arp.sh: revision 1.29 tests/net/ndp/t_ndp.sh: revision 1.22 tests/net/ndp/t_ndp.sh: revision 1.23 tests/net/route/t_flags6.sh: revision 1.13 tests/net/ndp/t_ndp.sh: revision 1.24 tests/net/route/t_flags6.sh: revision 1.14 tests/net/ndp/t_ndp.sh: revision 1.25 tests/net/route/t_flags6.sh: revision 1.15 tests/net/ndp/t_ndp.sh: revision 1.26 sbin/route/rtutil.c: revision 1.9 tests/net/ndp/t_ndp.sh: revision 1.27 tests/net/ndp/t_ndp.sh: revision 1.28 tests/net/net/t_ipv6address.sh: revision 1.14 tests/net/ndp/t_ra.sh: revision 1.28 tests/net/ndp/t_ndp.sh: revision 1.29 sys/net/route.h: revision 1.113 tests/net/ndp/t_ra.sh: revision 1.29 sys/net/rtsock.c: revision 1.220 sys/net/rtsock.c: revision 1.221 sys/net/rtsock.c: revision 1.222 sys/net/rtsock.c: revision 1.223 tests/net/route/t_route.sh: revision 1.13 sys/net/rtsock.c: revision 1.224 sys/net/route.c: revision 1.196 sys/net/if_llatbl.c: revision 1.19 sys/net/route.c: revision 1.197 sbin/route/route.c: revision 1.156 tests/net/route/t_flags.sh: revision 1.16 tests/net/route/t_flags.sh: revision 1.17 usr.sbin/ndp/ndp.c: revision 1.50 tests/net/route/t_flags.sh: revision 1.18 sys/netinet/in.c: revision 1.204 tests/net/route/t_flags.sh: revision 1.19 sys/netinet/in.c: revision 1.205 tests/net/arp/t_arp.sh: revision 1.30 tests/net/arp/t_arp.sh: revision 1.31 sys/net/if_llatbl.h: revision 1.11 tests/net/arp/t_arp.sh: revision 1.32 sys/net/if_llatbl.h: revision 1.12 tests/net/arp/t_arp.sh: revision 1.33 sys/netinet6/nd6.c: revision 1.233 sys/netinet6/nd6.c: revision 1.234 sys/netinet/if_arp.c: revision 1.251 sys/netinet6/nd6.c: revision 1.235 sys/netinet/if_arp.c: revision 1.252 sbin/route/route.8: revision 1.57 sys/net/rtsock.c: revision 1.214 sys/net/rtsock.c: revision 1.215 sys/net/rtsock.c: revision 1.216 sys/net/rtsock.c: revision 1.217 whitespace police Simplify We can assume that rt_ifp is always non-NULL. Sending a routing message (RTM_ADD) on adding an llentry A message used to be sent on adding a cloned route. Restore the behavior for backward compatibility. Requested by ryo@ Drop RTF_CONNECTED from a result of RTM_GET for ARP/NDP entries ARP/NDP entries aren't connected routes. Reported by ryo@ Support -c <count> option for route monitor route command exits if it receives <count> routing messages where <count> is a value specified by -c. The option is useful to get only particular message(s) in a test script. Test routing messages emitted on operations of ARP/NDP entries Do netstat -a for an appropriate protocol Add missing declarations for cleanup Set net.inet.arp.keep only if it's required Don't create a permanent L2 cache entry on adding an address to an interface It was created to copy FreeBSD, however actually the cache isn't necessary. Remove it to simplify the code and reduce the cost to maintain it (e.g., keep a consistency with a corresponding local route). Fix typo Fix in_lltable_match_prefix The function has not been used but will be used soon. Remove unused function (nd6_rem_ifa_lle) Allow in6_lltable_free_entry to be called without holding the afdata lock of ifp as well as in_lltable_free_entry This behavior is a bit odd and should be fixed in the future... Purge ARP/NDP entries on an interface when the interface is down Fix PR kern/51179 Purge all related L2 caches on removing a route The change addresses situations similar to PR 51179. Purge L2 caches on changing an interface of a route The change addresses situations similar to PR 51179. Test implicit removals of ARP/NDP entries One test case reproudces PR 51179. Fix build of kernels without both INET and INET6 Tweak lltable_sysctl_dumparp - Rename lltable_sysctl_dumparp to lltable_sysctl_dump because it's not only for ARP - Enable it not only for INET but also for INET6 Fix usage of routing messages on arp -d and ndp -d It didn't work as we expected; we should set RTA_GATEWAY not RTA_IFP on RTM_GET to return an if_index and the kernel should use it on RTM_DELETE. Improve backward compatibility of (fake) routing messages on adding an ARP/NDP entry A message originally included only DST and GATEWAY. Restore it. Fix ifdef; care about a case w/ INET6 and w/o INET Drop RTF_UP from a routing message of a deleted ARP/NDP entry Check existence of ARP/NDP entries Checking ARP/NDP entries is valid rather than checking routes. Fix wrong comment Drop RTF_LLINFO flag (now it's RTF_LLDATA) from local routes They don't have llinfo anymore. And also the change fixes unexpected behavior of ARP proxy. Restore ARP/NDP entries to route show and netstat -r Requested by dyoung@ some time ago Enable to remove multiple ARP/NDP entries for one destination The kernel can have multiple ARP/NDP entries which have an indentical destination on different interfaces. This is normal and can be reproduce easily by ping -I or ping6 -S. We should be able to remove such entries. arp -d <ip> and ndp -d <ip> are changed to fetch all ARP/NDP entries and remove matched entries. So we can remove multiple entries described above. This fetch all and selective removal behavior is the same as arp <ip> and ndp <ip>; they also do fetch all entries and show only matched entries. Related to PR 51179 Check if ARP/NDP entries are purged when a related route is deleted
Purge all related L2 caches on removing a route The change addresses situations similar to PR 51179.
Don't create a permanent L2 cache entry on adding an address to an interface It was created to copy FreeBSD, however actually the cache isn't necessary. Remove it to simplify the code and reduce the cost to maintain it (e.g., keep a consistency with a corresponding local route).
Change the default value of DEBUG of stable tests to false
Sync with HEAD
Sync with HEAD
Provide a more robust regexp for time formats of 1day-ish
Add tests for expiration of default router and prefix entries
Remove a check added wrongly
Add tests for net.inet6.ip6.prefer_tempaddr
Remove extra checks and cleanup
Cope with tentative state
Add a test case for IPv6 temporary address
Check autoconf flag
Sync with HEAD. (Note that most of these changes are simply $NetBSD$ tag issues.)
Fix typo
Restore multiple_routers_single_prefix_cleanup removed wrongly
Reduce unnecessary wait
Add a test case for exceeding the number of maximum prefixes The test case pinpoints purge_detached.
Add tests for multiple routers with a single prefix
Fix the description of a test
Add tests for multiple routers
Unify common routines
Avoid using /var/run/rump.rtadvd.pid
Add a test case that deletes auto-configured addresses
Improve stability of the tests - Do ifconfig -w 10 after ifconfig up - Accept /1d0h0m..s/ in addition to /23h59m..s/ for expiration time - Prevent new RA messages from coming after flushing entries The changes should fix flapping of test results on babylon5.
Add tests for flushing prefix and default router entries
Share rump_server start/stop and interface creation/destruction functions The common functions store socks of rump_servers, interfaces of rump_servers and buses that intefaces connect and allow to destroy them with common functions without specifying which socks, interfaces and buses we should destroy. This change reduces lots of similar setup/cleanup codes.
Accept DEBUG environment variable By doing so, we can easily turn DEBUG on/off without modifying the ATF scripts.
Sync with HEAD
Make test names self-descriptive
+ -lrumpdev
Fix up the header Remove unnecessary shebang and add missing keyword expansion, copyright and license.
Add tests for RA From s-yamaguchi@IIJ (with some tweaks by me)