multiple delayed NAs on same ifa can happen at the same time.
Make sure the previous pending NA for the same ifa is cancelled and reuse its ndq memory.
Also, don't count for non-GRAND NAs.
Details
Increase grand count before running tests:
sysctl net.inet6.ip6.grand_count=10
then, simply run kyua network tests:
kyua -k /usr/tests/Kyuafile sys/net kyua -k /usr/tests/Kyuafile sys/netinet6 kyua -k /usr/tests/Kyuafile sys/netlink kyua -k /usr/tests/Kyuafile sys/netgraph
or you can add multiple v6 addresses followed by changing
the mac address of interface.
Do it in jail and destroy it for stress.
Diff Detail
- Repository
- rG FreeBSD src repository
- Lint
Lint Passed - Unit
No Test Coverage - Build Status
Buildable 71473 Build 68356: arc lint + arc unit
Event Timeline
| sys/netinet6/nd6_nbr.c | ||
|---|---|---|
| 1769–1784 | This logic can be achieved without new boolean, just using blocks. Also we need not to leak a lock in case of malloc(9) failure. | |
| 1871–1872 | I would say that previous version was easier to read. A single version of nd6_queue_rel() that requires lock on entry and returns unlocked. Then in this cycle use return; instead of break;. Basically nd6_queue_stop() doesn't need any changes. And second version of nd6_queue_rel_locked() isn't needed. | |
I'd suggest to use more specific commit line, e.g. ndp: handle a case when two timers coalesce for the same ifa. Or something else that you can come up with. Just more specific than "make things better" :)