opnsense-src/sys/net
Kajetan Staszkiewicz d2761422eb pf: Use different address family for source and redirection address
The function pf_map_addr() and source tracking operate on a single
address family. This made sense before introducing address family
translation. When combining af-to with route-to or with sticky-address,
the next-hop or the NAT address are of different address family than
the source address. For example in NAT64 scenaro an IPv6 source address
is translated to an IPv4 address and routed over IPv4 gateway.

Make source nodes dual-AF, that is have a separate source AF and
redirection AF. Store route AF in struct pf_kstate, export it to pfctl.
When loading rules with redirection pools with pfctl store address
family of each address. When printing states don't deduce next-hop's
address family from af-to, use the one stored in state.

Reviewed by:	kp
Approved by:	kp
Sponsored by:	InnoGames GmbH
Differential Revision:	https://reviews.freebsd.org/D51659
2025-08-01 12:11:30 +02:00
..
altq altq: Stop checking for failures from malloc(M_WAITOK) 2024-09-03 18:25:19 +08:00
route machine/stdarg.h -> sys/stdarg.h 2025-06-11 17:39:02 +01:00
bpf.c bpf: avoid panic on multiple readers 2025-04-09 09:39:01 +02:00
bpf.h bpf: Make bpf.h self-contained 2025-05-03 20:44:45 +00:00
bpf_buffer.c sys: Remove ancient SCCS tags. 2023-11-26 22:23:30 -07:00
bpf_buffer.h sys: Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:11 -06:00
bpf_filter.c sys: Automated cleanup of cdefs and other formatting 2023-11-26 22:24:00 -07:00
bpf_jitter.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
bpf_jitter.h sys: Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:11 -06:00
bpf_zerocopy.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
bpf_zerocopy.h sys: Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:11 -06:00
bpfdesc.h sys: Remove ancient SCCS tags. 2023-11-26 22:23:30 -07:00
bridgestp.c bridge: store a bridge_iflist pointer in ifnet 2025-04-09 09:39:01 +02:00
bridgestp.h sys: Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:11 -06:00
debugnet.c debugnet: Use precise types when accessing mbuf contents 2024-10-11 13:23:25 +00:00
debugnet.h sys: Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:11 -06:00
debugnet_inet.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
debugnet_int.h sys: Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:11 -06:00
dlt.h sys: Remove ancient SCCS tags. 2023-11-26 22:23:30 -07:00
dummymbuf.c dummymbuf: add 'enlarge' 2025-01-17 17:00:08 +01:00
ethernet.h ethernet: Move the assertion of ether header sizes back into ethernet.h 2025-07-15 23:31:19 +08:00
firewire.h sys: Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:11 -06:00
ieee8023ad_lacp.c machine/stdarg.h -> sys/stdarg.h 2025-06-11 17:39:02 +01:00
ieee8023ad_lacp.h sys: Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:11 -06:00
ieee_oui.h sys: Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:11 -06:00
if.c if_vlan: add a prototype for vlan_input_p 2025-06-25 16:29:54 +01:00
if.h ifnet: Add handling for toggling IFF_ALLMULTI in ifhwioctl() 2024-09-06 16:58:44 +00:00
if_arp.h Support ARP for 802 networks 2024-04-23 12:30:53 -04:00
if_bridge.c bridge: do not allow a bridge SVI in a bridge 2025-07-28 18:38:02 +01:00
if_bridgevar.h bridge: be consistent about PVID terminology 2025-07-28 18:26:22 +01:00
if_clone.c if_clone: Use static initializers 2025-03-06 12:51:44 +08:00
if_clone.h if_clone: Use static initializers 2025-03-06 12:51:44 +08:00
if_dead.c sys: Automated cleanup of cdefs and other formatting 2023-11-26 22:24:00 -07:00
if_disc.c net: Remove unneeded NULL check for the allocated ifnet 2024-06-28 18:16:29 +08:00
if_dl.h link_addr: be more strict about address formats 2025-05-15 01:02:52 +01:00
if_edsc.c net: Remove unneeded NULL check for the allocated ifnet 2024-06-28 18:16:29 +08:00
if_enc.c if_enc(4): Use new KPI to create enc interface 2024-10-12 21:37:53 +08:00
if_enc.h sys: Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:11 -06:00
if_epair.c net: Remove unneeded NULL check for the allocated ifnet 2024-06-28 18:16:29 +08:00
if_ethersubr.c ethernet: Move the assertion of ether header sizes back into ethernet.h 2025-07-15 23:31:19 +08:00
if_fwsubr.c if_firewire: Make firewire_broadcastaddr static const 2025-06-01 22:47:24 +08:00
if_gif.c bpf: Make BPF interop consistent with if_loop 2024-04-19 14:48:37 -04:00
if_gif.h if_gif(4): Support the NOCLAMP flag to change MTU handling for IPv6 2025-07-21 22:47:28 +09:00
if_gre.c bpf: Make BPF interop consistent with if_loop 2024-04-19 14:48:37 -04:00
if_gre.h sys: Remove $FreeBSD$: one-line .h pattern 2023-08-16 11:54:18 -06:00
if_infiniband.c if_infininband: Support BPF write for broadcast frames 2025-02-23 16:13:09 -08:00
if_ipsec.c ipsec: allow it to work with unmapped mbufs 2025-01-13 21:29:32 +02:00
if_ipsec.h sys: Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:11 -06:00
if_lagg.c lagg: Fix if_hw_tsomax_update() not being called 2025-07-12 18:35:29 -04:00
if_lagg.h sys: Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:11 -06:00
if_llatbl.c if_llatbl: Fix a typo in a KASSERT message 2024-01-20 21:00:22 +01:00
if_llatbl.h sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
if_llc.h sys: Remove ancient SCCS tags. 2023-11-26 22:23:30 -07:00
if_loop.c net: Remove unneeded NULL check for the allocated ifnet 2024-06-28 18:16:29 +08:00
if_me.c bpf: Make BPF interop consistent with if_loop 2024-04-19 14:48:37 -04:00
if_media.c sys: don't panic on ifm_status being NULL 2025-05-06 21:22:18 -07:00
if_media.h net: if_media fix syntax/build 2025-02-08 17:10:27 -07:00
if_mib.c sys: Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:11 -06:00
if_mib.h sys: Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:11 -06:00
if_ovpn.c if_ovpn: Destroy cloned interfaces via a prison removal callback 2025-07-28 16:19:38 +00:00
if_ovpn.h if_ovpn: support floating clients 2025-07-28 16:36:54 +02:00
if_pflog.h pf: make log(matches) more useful 2025-02-21 09:11:03 +01:00
if_pfsync.h sys: Remove $FreeBSD$: one-line .h pattern 2023-08-16 11:54:18 -06:00
if_private.h sys/net: Add IPSEC_OFFLOAD interface cap and methods structure 2024-07-12 06:29:32 +03:00
if_stf.c machine/stdarg.h -> sys/stdarg.h 2025-06-11 17:39:02 +01:00
if_stf.h if_stf: make if_stf.h self-contained 2021-12-17 12:38:34 +01:00
if_strings.h <net/if_strings.h>: Conditionally export table of bit names 2025-04-28 13:05:38 -04:00
if_tap.h sys: Remove $FreeBSD$: one-line .h pattern 2023-08-16 11:54:18 -06:00
if_tun.h sys: Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:11 -06:00
if_tuntap.c if_tuntap: Try to fix device refcount bugs 2025-07-28 16:19:38 +00:00
if_types.h sys: add MBIM (mobile broadband interface module) interface type. 2025-01-20 23:39:17 +00:00
if_var.h send tags: add a status report method 2025-06-10 02:47:12 +03:00
if_vlan.c bridge: do not allow a bridge SVI in a bridge 2025-07-28 18:38:02 +01:00
if_vlan_var.h sys/net: move DOT1Q_VID_* constants to ethernet.h 2025-07-05 00:21:51 +01:00
if_vxlan.c if_vxlan(4): Prefer SYSCTL_INT over TUNABLE_INT 2025-01-27 23:54:43 +08:00
if_vxlan.h sys: Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:11 -06:00
ifdi_if.m ifdi: fix signature mismatch for null_priv_ioctl 2025-02-25 09:21:51 -05:00
iflib.c iflib: Some style(9) tweaks 2025-06-06 18:04:42 +08:00
iflib.h iflib(4): Replace admin taskqueue group with per-interface taskqueues 2025-01-24 14:08:12 -07:00
ifq.c sys: Remove ancient SCCS tags. 2023-11-26 22:23:30 -07:00
ifq.h sys: Remove ancient SCCS tags. 2023-11-26 22:23:30 -07:00
infiniband.h sys: Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:11 -06:00
mp_ring.c sys: Automated cleanup of cdefs and other formatting 2023-11-26 22:24:00 -07:00
mp_ring.h sys: Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:11 -06:00
mppc.h sys: Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:11 -06:00
mppcc.c sys: Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:11 -06:00
mppcd.c sys: Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:11 -06:00
netisr.c netisr: fix compilation without VIMAGE 2025-01-16 20:32:53 -08:00
netisr.h sys: Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:11 -06:00
netisr_internal.h sys: Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:11 -06:00
netmap.h sys: Remove $FreeBSD$: one-line .h pattern 2023-08-16 11:54:18 -06:00
netmap_legacy.h sys: Remove $FreeBSD$: one-line .h pattern 2023-08-16 11:54:18 -06:00
netmap_user.h sys: Remove $FreeBSD$: one-line .h pattern 2023-08-16 11:54:18 -06:00
netmap_virt.h sys: Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:11 -06:00
paravirt.h sys: Remove $FreeBSD$: one-line .h pattern 2023-08-16 11:54:18 -06:00
pfil.c pfil: PFIL_PASS never frees the mbuf 2024-01-29 14:10:19 +01:00
pfil.h sys: Remove $FreeBSD$: one-line .c comment pattern 2023-08-16 11:54:24 -06:00
pfkeyv2.h sys/pfkeyv2.h: define extensions for ipsec inline accel control 2024-07-12 06:29:31 +03:00
pflow.h pflow: show socket status in verbose mode 2024-01-25 17:37:51 +01:00
pfvar.h pf: Use different address family for source and redirection address 2025-08-01 12:11:30 +02:00
ppp_defs.h sys: Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:11 -06:00
radix.c sys: Remove ancient SCCS tags. 2023-11-26 22:23:30 -07:00
radix.h sys: Remove ancient SCCS tags. 2023-11-26 22:23:30 -07:00
rndis.h net: Fix typo (triple S) 2023-12-27 20:24:32 -07:00
route.c net: route: convert routing statistics to a sysctl 2024-10-23 22:15:55 -05:00
route.h ipfw: migrate ipfw to 32-bit size rule numbers 2025-03-03 21:15:17 +03:00
rss_config.c sys: Remove $FreeBSD$: two-line .c pattern 2023-08-16 11:54:30 -06:00
rss_config.h sys: Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:11 -06:00
rtsock.c socket: Move SO_SETFIB handling to protocol layers 2025-02-06 14:16:21 +00:00
sff8436.h sys: Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:11 -06:00
sff8472.h net/sff8472.h: add double-include protection 2025-04-29 06:20:10 +03:00
slcompress.c tcp: extend the use of the th_flags accessor function 2024-11-29 09:48:23 +01:00
slcompress.h sys: Remove $FreeBSD$: one-line .h pattern 2023-08-16 11:54:18 -06:00
toeplitz.c sys: Automated cleanup of cdefs and other formatting 2023-11-26 22:24:00 -07:00
toeplitz.h sys: Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:11 -06:00
vnet.c machine/stdarg.h -> sys/stdarg.h 2025-06-11 17:39:02 +01:00
vnet.h vnet: remove unneeded backslash 2024-03-15 12:17:04 -07:00