opnsense-src/tests/sys
Alexander V. Chernikov 81728a538d Split rtinit() into multiple functions.
rtinit[1]() is a function used to add or remove interface address prefix routes,
  similar to ifa_maintain_loopback_route().
It was intended to be family-agnostic. There is a problem with this approach
 in reality.

1) IPv6 code does not use it for the ifa routes. There is a separate layer,
  nd6_prelist_(), providing interface for maintaining interface routes. Its part,
  responsible for the actual route table interaction, mimics rtenty() code.

2) rtinit tries to combine multiple actions in the same function: constructing
  proper route attributes and handling iterations over multiple fibs, for the
  non-zero net.add_addr_allfibs use case. It notably increases the code complexity.

3) dstaddr handling. flags parameter re-uses RTF_ flags. As there is no special flag
 for p2p connections, host routes and p2p routes are handled in the same way.
 Additionally, mapping IFA flags to RTF flags makes the interface pretty messy.
 It make rtinit() to clash with ifa_mainain_loopback_route() for IPV4 interface
 aliases.

4) rtinit() is the last customer passing non-masked prefixes to rib_action(),
 complicating rib_action() implementation.

5) rtinit() coupled ifa announce/withdrawal notifications, producing "false positive"
 ifa messages in certain corner cases.

To address all these points, the following has been done:

* rtinit() has been split into multiple functions:
- Route attribute construction were moved to the per-address-family functions,
 dealing with (2), (3) and (4).
- funnction providing net.add_addr_allfibs handling and route rtsock notificaions
 is the new routing table inteface.
- rtsock ifa notificaion has been moved out as well. resulting set of funcion are only
 responsible for the actual route notifications.

Side effects:
* /32 alias does not result in interface routes (/32 route and "host" route)
* RTF_PINNED is now set for IPv6 prefixes corresponding to the interface addresses

Differential revision:	https://reviews.freebsd.org/D28186
2021-01-16 22:42:41 +00:00
..
acl Drop "All rights reserved" from all my stuff. This includes 2020-10-28 13:46:11 +00:00
aio lio_listio: validate aio_lio_opcode 2021-01-11 19:53:01 -07:00
audit Do a sweep and remove most WARNS=6 settings 2020-10-01 01:10:51 +00:00
auditpipe Do a sweep and remove most WARNS=6 settings 2020-10-01 01:10:51 +00:00
capsicum Temporarily skip failing test cases in CI: 2020-10-07 09:53:24 +00:00
cddl build: provide a default WARNS for all in-tree builds 2020-09-18 17:17:46 +00:00
common Add tests verifying IPv4/IPv6 output for TCP/UDP/raw paths. 2020-03-23 12:21:32 +00:00
devrandom Do a sweep and remove most WARNS=6 settings 2020-10-01 01:10:51 +00:00
fifo Avoid hard-coding pipe buffer sizes in the pipe and fifo kqueue tests. 2020-05-20 17:48:18 +00:00
file close_range/closefrom: fix regression from close_range introduction 2020-04-13 17:55:31 +00:00
fs fusefs: implement FUSE_COPY_FILE_RANGE. 2021-01-01 10:18:23 -07:00
geom build: provide a default WARNS for all in-tree builds 2020-09-18 17:17:46 +00:00
kern fdgrowtable_test.c: appease gcc 2020-12-11 22:52:16 +00:00
kqueue Enable timer tests in sys.kqueue.libkqueue.kqueue_test.main on i386 2020-04-22 09:53:41 +00:00
mac Resolve conflict between the fusefs(5) and mac_bsdextended(4) tests 2020-05-02 20:14:59 +00:00
mqueue Do a sweep and remove most WARNS=6 settings 2020-10-01 01:10:51 +00:00
net Split rtinit() into multiple functions. 2021-01-16 22:42:41 +00:00
netgraph New Netgraph module ng_macfilter: 2020-12-08 15:09:42 +00:00
netinet ping: fix some man pages and tests after r368045 2020-11-26 04:55:02 +00:00
netinet6 ping: fix some man pages and tests after r368045 2020-11-26 04:55:02 +00:00
netipsec ping: fix some man pages and tests after r368045 2020-11-26 04:55:02 +00:00
netmap Do a sweep and remove most WARNS=6 settings 2020-10-01 01:10:51 +00:00
netpfil pf tests: pass NULL buffer to DIOCRCLRTSTATS 2021-01-13 19:49:45 +01:00
opencrypto ossl: port to arm64 2020-12-04 21:12:17 +00:00
pjdfstest Do a sweep and remove most WARNS=6 settings 2020-10-01 01:10:51 +00:00
posixshm posixshm_test.c: remove tautological checks 2020-12-11 22:52:20 +00:00
sys Revert r357246 2020-01-29 22:37:01 +00:00
vfs vfs_lookup: Allow PATH_MAX-1 symlinks 2017-11-17 19:25:39 +00:00
vm [tests] Fix unused variable warning in gcc 2020-11-13 18:50:24 +00:00
Makefile New Netgraph module ng_macfilter: 2020-12-08 15:09:42 +00:00
Makefile.depend DIRDEPS_BUILD: Connect MK_TESTS. 2016-03-09 22:46:01 +00:00
Makefile.inc Do a sweep and remove most WARNS=6 settings 2020-10-01 01:10:51 +00:00