net/ipv6: Address checks need to consider the L3 domain
Get series with b4
b4 am [email protected]Versions newest first · linked by author and title
- v4 Latest6 patches 4 repliesIn review
- v35 patches 4 repliesSuperseded
- v25 patches 2 repliesSuperseded
Earlier versions · 1
| Version | Posted | Patches | Replies | Status |
|---|---|---|---|---|
| v1 | 1 patch | 1 reply | Superseded |
Patches in v4 No applies recorded yet
| # | Subject and files | Size | Replies | Applied |
|---|---|---|---|---|
| 1/6 | net/ipv6: Refactor gateway validation on route addnet/ | +66 | 1 reply | |
| 2/6 | net/ipv6: Change address check to always take a device argumentinclude/ net/ net/ +4 more | +43 | 1 reply | |
| 3/6 | net/ipv6: Add l3mdev check to ipv6_chk_addr_and_flagsnet/ | +15 | 1 reply | |
| 4/6 | selftests: fib_tests: Use an alias for ip commandtools/ | +85 | 0 replies | |
| 5/6 | selftests: fib_tests: Allow user to run a specific testtools/ | +7 | 0 replies | |
| 6/6 | selftests: fib_tests: Add IPv6 nexthop spec teststools/ | +178 | 0 replies |
Reviews trailers per patch
3 of 6 patches have a Reviewed-by or Acked-by.
| Patch | Ido Schimmel |
|---|---|
| 1/6 | R-b |
| 2/6 | R-b |
| 3/6 | R-b |
| 4/6 | |
| 5/6 | |
| 6/6 |
Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes.
Cover letter [PATCH v4 net-next 0/6] net/ipv6: Address checks need to consider the L3 domain
IPv6 prohibits a local address from being used as a gateway for a route. However, it is ok for the gateway to be a local address in a different L3 domain (e.g., VRF). This allows, for example, veth pairs to connect VRFs.
ip6_route_info_create calls ipv6_chk_addr_and_flags for gateway addresses to determine if the address is a local one, but ipv6_chk_addr_and_flags does not currently consider L3 domains. As a result routes can not be added in one VRF with a nexthop that points to a local address in a second VRF.
Resolve by comparing the l3mdev for the passed in device and requiring an l3mdev match with the device containing an address. The intent of checking for an address on the specified device versus any device in the domain is mantained by a new argument to skip the check between the passed in device and the device with the address.
Patch 1 moves the gateway validation from ip6_route_info_create into a helper; the function is long enough and refactoring drops the indent level.
Patch 2 adds a skip_dev_check argument to ipv6_chk_addr_and_flags to allow a device to always be passed yet skip the device check when looking at addresses and fixes up a few ipv6_chk_addr callers that pass a NULL device.
Patch 3 adds l3mdev checks to ipv6_chk_addr_and_flags.
Patches 4 and 5 do some refactoring to the fib_tests script and then patch 6 adds nexthop validation tests.
v4
- separated l3mdev check into a separate patch (patch 3 of this set) as suggested by Kirill
- consolidated dev and ipv6_chk_addr_and_flags call into 1 if (Kirill)
- added a temp variable for gw type (Kirill)
v3
- set skip_dev_check in ipv6_chk_addr based on dev == NULL (per comment from Ido)
v2
- handle 2 variations of route spec with sane error path
- add test cases
David Ahern (6):
net/ipv6: Refactor gateway validation on route add net/ipv6: Change address check to always take a device argument net/ipv6: Add l3mdev check to ipv6_chk_addr_and_flags
selftests: fib_tests: Use an alias for ip command
selftests: fib_tests: Allow user to run a specific test
selftests: fib_tests: Add IPv6 nexthop spec tests
include/net/addrconf.h | 4 +- net/ipv6/addrconf.c | 26 ++- net/ipv6/anycast.c | 9 +- net/ipv6/datagram.c | 5 +- net/ipv6/ip6_tunnel.c | 12 +- net/ipv6/ndisc.c | 2 +- net/ipv6/route.c | 131 ++++++----- tools/testing/selftests/net/fib_tests.sh | 359 +++++++++++++++++++++++-------- 8 files changed, 390 insertions(+), 158 deletions(-)
Signature · 1 line
2.11.0