Up to [cvs.NetBSD.org] / src / tests / net / arp
Request diff between arbitrary revisions
Keyword substitution: kv
Default branch: MAIN
Pull up following revision(s) (requested by ozaki-r in ticket #859): tests/net/arp/t_arp.sh: revision 1.47 tests/net/arp/t_arp.sh: revision 1.48 sys/netinet/if_arp.c: revision 1.315 arp: allow to send packets without an ARP resolution just after receiving an ARP request On receiving an ARP request, the current implemention creates an ARP cache entry but with ND_LLINFO_NOSTATE. Such an entry still needs an ARP resolution to send back a packet to the requester. The original behavior before introducing the common ND framework didn't need the resolution. IPv6 doesn't as well. To restore the original behavior, make a new ARP cache entry with ND_LLINFO_STALE like IPv6 does. tests: dedup t_arp.sh like others (NFC) tests: add tests for ARP cache entry creations
Backout pullup of tests/net/arp/t_arp.sh 1.46 for ticket #1883, this part is not suitable for this branch. Requested by ozaki-r.
tests: add tests for ARP cache entry creations
tests: dedup t_arp.sh like others (NFC)
Pull up following revision(s) (requested by ozaki-r in ticket #1883): tests/net/arp/t_dad.sh: revision 1.16 sys/netinet/in.c: revision 1.248 tests/net/arp/t_arp.sh: revision 1.46 sys/netinet/if_arp.c: revision 1.314 arp: fix the behavior on detecting an address duplication without IPv4 DAD On receiving an ARP request that has the same source protocol address as the own address, i.e., address duplication, the original behavior of a kernel prior to supporing IPv4 DAD is to send an ARP reply. It is the same with a latest kernel with DAD enabled. However, a latest kernel without DAD sends back an GARP packet. Restore the original behavior. inet: send GARP on link up if DAD is disabled This behavior was accidentally removed at rev 1.233. tests, arp: add tests of address duplications without DAD tests, arp: add tests for GARP on link up
Pull up following revision(s) (requested by ozaki-r in ticket #812): tests/net/arp/t_dad.sh: revision 1.16 sys/netinet/in.c: revision 1.248 tests/net/arp/t_arp.sh: revision 1.46 sys/netinet/if_arp.c: revision 1.314 arp: fix the behavior on detecting an address duplication without IPv4 DAD On receiving an ARP request that has the same source protocol address as the own address, i.e., address duplication, the original behavior of a kernel prior to supporing IPv4 DAD is to send an ARP reply. It is the same with a latest kernel with DAD enabled. However, a latest kernel without DAD sends back an GARP packet. Restore the original behavior. inet: send GARP on link up if DAD is disabled This behavior was accidentally removed at rev 1.233. tests, arp: add tests of address duplications without DAD tests, arp: add tests for GARP on link up
tests, arp: add tests for GARP on link up
arp tests: Delete ARP entry after failed ping test As it might hang around in WAITDELETE for a few seconds.
arp_rtm: Only ping once Pointless doing 10 pings. On a slow system, it's possible that many RTM_MISS messages could overflow into the next test.
Don't check lifetime when testing published
arp test: Use the ndp cache expiration test in place of the old one As the logic is the same. While here, GC some variables and comment out a redundant sleep.
Mostly merge changes from HEAD upto 20200411
tests: check RTA_AUTHOR in messages
t_arp: Wait for 10 seconds for RTM_MISS Let's try increasing the ping timeout to try and fix PR misc/54525.
Pull up following revision(s) (requested by roy in ticket #175): tests/net/arp/t_arp.sh: revision 1.39 tests/net/ndp/t_ndp.sh: revision 1.36 tests: fix ARP and NDP tests for RTM_* messages While here add tests for RTM_MISS.
tests: fix ARP and NDP tests for RTM_* messages While here add tests for RTM_MISS.
tests: use rump_server_add_iface to create interfaces
Sync with HEAD
Get rid of all the -lrumpdev and -lrumpvfs that are no longer needed after moving rump's mainbus from rumpdev to rumpkern. Produces the same atf-run results as before.
Pull up following revision(s) (requested by ozaki-r in ticket #701): sys/netinet/in.c: 1.227 sys/netinet6/in6.c: 1.265 tests/net/arp/t_arp.sh: 1.35-1.36 Make GARP work again when DAD is disabled The change avoids setting an IP address tentative on initializing it when the IPv4 DAD is disabled (net.inet.ip.dad_count=0), which allows a GARP packet to be sent (see arpannounce). This is the same behavior of NetBSD 7, i.e., before introducing the IPv4 DAD. Additionally do the same change to IPv6 DAD for consistency. The change is suggested by roy@ -- Improve packet checks and error reporting -- Add tests for GARP without DAD Additionally make the existing tests for GARP more explicit.
Sync with HEAD. 77 conflicts resolved - all of them $NetBSD$
Add tests for GARP without DAD Additionally make the existing tests for GARP more explicit.
Improve packet checks and error reporting
Clean up the arp_rtm subtest... 1. Be assertive when claiming the pid of the background route monitor command, not polite... (ie: $! will give you the pid, $? is just 0 there). 2. Since "wait 0" simply (always) exits with status 127, immediately (we know without thinking that we have no child with pid 0) the waits were ineffective - now (after fix #1) they work .. which requires the route monitor that watches the arp -d to exit after 1 message, not 2, as 1 is all it gets. (If there really should be 2, someone needs to find out why the kernel is sending only 1 - I am not that someone). 3. The file contents need to be read only once, no matter how many patterns we need to look for, save some work, and do it that way (this is not really a bug,m but saving time for the ATF tests is always a good thing.) Not sure if this will stop it randomly failing on bablyon5, but it might. (The likely cause is that the "route.monitor" has not flushed its stdout buffers at the time the "grep -A 3" [aside: why that way to read the file??] is performed, so fails to find its expected output ... the route monitor would get an extra message once interfaces start being destroyed, I assume, and would exit then, flushing its buffer, but by then it is too late. If that is/was the cause, then it should be fixed now.)
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
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
Restore ARP/NDP entries to route show and netstat -r Requested by dyoung@ some time ago
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.
Drop RTF_UP from a routing message of a deleted ARP/NDP entry
Improve backward compatibility of (fake) routing messages on adding an ARP/NDP entry A message originally included only DST and GATEWAY. Restore it.
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.
Test implicit removals of ARP/NDP entries One test case reproudces 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).
Set net.inet.arp.keep only if it's required
Add missing declarations for cleanup
Test routing messages emitted on operations of ARP/NDP entries
Sync with HEAD. (Note that most of these changes are simply $NetBSD$ tag issues.)
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.
Move get_macaddr to net_common.sh
Move HIJACKING definition to net_common.sh
Reduce duplicate codes Introduce net_common.sh that is to share common functions used in tests for networking. This commit commonizes extract_new_packets. Other duplicate codes will be moved to the file in further commits.
Accept DEBUG environment variable By doing so, we can easily turn DEBUG on/off without modifying the ATF scripts.
no functional change
Make a bunch of test names self-descriptive
Add a test case for static ARP It tests receiving an ARP request that has a spa (i.e., IP address) whose ARP entry already exists in the table as a static ARP entry.
Separate nexthop caches from the routing table By this change, nexthop caches (IP-MAC address pair) are not stored in the routing table anymore. Instead nexthop caches are stored in each network interface; we already have lltable/llentry data structure for this purpose. This change also obsoletes the concept of cloning/cloned routes. Cloned routes no longer exist while cloning routes still exist with renamed to connected routes. Noticeable changes are: - Nexthop caches aren't listed in route show/netstat -r - sysctl(NET_RT_DUMP) doesn't return them - If RTF_LLDATA is specified, it returns nexthop caches - Several definitions of routing flags and messages are removed - RTF_CLONING, RTF_XRESOLVE, RTF_LLINFO, RTF_CLONED and RTM_RESOLVE - RTF_CONNECTED is added - It has the same value of RTF_CLONING for backward compatibility - route's -xresolve, -[no]cloned and -llinfo options are removed - -[no]cloning remains because it seems there are users - -[no]connected is introduced and recommended to be used instead of -[no]cloning - route show/netstat -r drops some flags - 'L' and 'c' are not seen anymore - 'C' now indicates a connected route - Gateway value of a route of an interface address is now not a L2 address but "link#N" like a connected (cloning) route - Proxy ARP: "arp -s ... pub" doesn't create a route You can know details of behavior changes by seeing diffs under tests/. Proposed on tech-net and tech-kern: http://mail-index.netbsd.org/tech-net/2016/03/11/msg005701.html
Improve tests of proxy arp The tests make it clear how it behaves though, I don't know if the current behavior is what it should be.
Add tests on activating a new MAC address
Add basic tests for Proxy ARP The tests don't much enough and need more realitic tests, for example tests for a setup using ppp found in PR 44032.
Make checks strict rump.arp should fail with File exists (EEXIST).
Reflect the current ARP cache implementation in tests net.inet.arp.prune and net.inet.arp.refresh were obsoleted.
Reflect a fix on rt_refcnt The test was adjusted based on wrong behavior.
Check MAC address of ARP caches additionally
Return 0 explicitly to avoid unexpected failures when $DEBUG=false
Add tests of cache overwriting
Add tests for temp option
Add tests for arp -a option
Add tests for GARP
Add tests for ARP