| /linux-6.15/net/ipv4/ |
| H A D | inet_hashtables.c | 68 int l3mdev) in inet_bind_bucket_create() argument 74 tb->l3mdev = l3mdev; in inet_bind_bucket_create() 99 tb->l3mdev == l3mdev; in inet_bind_bucket_match() 109 tb2->l3mdev = tb->l3mdev; in inet_bind2_bucket_init() 226 int bhash, l3mdev; in __inet_inherit_port() local 242 l3mdev = inet_sk_bound_l3mdev(sk); in __inet_inherit_port() 255 net, head, port, l3mdev); in __inet_inherit_port() 267 l3mdev = inet_sk_bound_l3mdev(sk); in __inet_inherit_port() 833 tb->l3mdev != l3mdev) in inet_bind2_bucket_match() 843 tb->l3mdev != l3mdev) in inet_bind2_bucket_match_addr_any() [all …]
|
| H A D | inet_connection_sock.c | 309 if (!inet_bind2_bucket_match_addr_any(tb2, net, port, l3mdev, sk)) in inet_bhash2_addr_any_conflict() 334 int i, low, high, attempt_half, port, l3mdev; in inet_csk_find_open_port() local 342 l3mdev = inet_sk_bound_l3mdev(sk); in inet_csk_find_open_port() 385 tb2 = inet_bind2_bucket_find(head2, net, port, l3mdev, sk); in inet_csk_find_open_port() 387 if (inet_bind_bucket_match(tb, net, port, l3mdev)) { in inet_csk_find_open_port() 519 int ret = -EADDRINUSE, port = snum, l3mdev; in inet_csk_get_port() local 526 l3mdev = inet_sk_bound_l3mdev(sk); in inet_csk_get_port() 543 if (inet_bind_bucket_match(tb, net, port, l3mdev)) in inet_csk_get_port() 549 head, port, l3mdev); in inet_csk_get_port() 564 if (inet_bhash2_addr_any_conflict(sk, port, l3mdev, true, true)) in inet_csk_get_port() [all …]
|
| H A D | fib_rules.c | 63 rule->l3mdev) in fib4_rule_default() 309 if (rule->table == RT_TABLE_UNSPEC && !rule->l3mdev) { in fib4_rule_configure()
|
| H A D | fib_semantics.c | 2224 struct net_device *l3mdev; in fib_select_path() local 2226 l3mdev = dev_get_by_index_rcu(net, fl4->flowi4_l3mdev); in fib_select_path() 2228 if (!l3mdev || in fib_select_path() 2229 l3mdev_master_dev_rcu(FIB_RES_DEV(*res)) == l3mdev) in fib_select_path() 2232 fl4->saddr = inet_select_addr(l3mdev, 0, RT_SCOPE_LINK); in fib_select_path()
|
| /linux-6.15/include/net/ |
| H A D | ip6_route.h | 133 struct net_device *l3mdev; in ip6_route_get_saddr() local 140 l3mdev = dev_get_by_index_rcu(net, l3mdev_index); in ip6_route_get_saddr() 141 if (!f6i || !f6i->fib6_prefsrc.plen || l3mdev) in ip6_route_get_saddr() 143 same_vrf = !l3mdev || l3mdev_master_dev_rcu(dev) == l3mdev; in ip6_route_get_saddr() 147 err = ipv6_dev_get_saddr(net, same_vrf ? dev : l3mdev, daddr, prefs, saddr); in ip6_route_get_saddr()
|
| H A D | inet_hashtables.h | 79 int l3mdev; member 97 int l3mdev; member 229 const unsigned short snum, int l3mdev); 234 int l3mdev); 248 unsigned short port, int l3mdev, 253 int l3mdev, const struct sock *sk);
|
| H A D | fib_rules.h | 29 u8 l3mdev; member 124 return rule->l3mdev ? arg->table : rule->table; in fib_rule_get_table()
|
| /linux-6.15/net/l3mdev/ |
| H A D | Makefile | 6 obj-y += l3mdev.o
|
| /linux-6.15/net/core/ |
| H A D | fib_rules.c | 298 if (rule->l3mdev && !l3mdev_fib_rule_match(rule->fr_net, fl, arg)) in fib_rule_match() 483 if (rule->l3mdev && r->l3mdev != rule->l3mdev) in rule_find() 525 nlrule->l3mdev = nla_get_u8(nla); in fib_nl2rule_l3mdev() 526 if (nlrule->l3mdev != 1) { in fib_nl2rule_l3mdev() 665 if (nlrule->l3mdev && nlrule->table) { in fib_nl2rule() 812 if (r->l3mdev != rule->l3mdev) in rule_exists() 1200 (rule->l3mdev && in fib_nl_fill_rule() 1201 nla_put_u8(skb, FRA_L3MDEV, rule->l3mdev)) || in fib_nl_fill_rule()
|
| H A D | lwt_bpf.c | 180 struct net_device *l3mdev = l3mdev_master_dev_rcu(skb_dst(skb)->dev); in bpf_lwt_xmit_reroute() local 181 int oif = l3mdev ? l3mdev->ifindex : 0; in bpf_lwt_xmit_reroute()
|
| /linux-6.15/Documentation/netlink/specs/ |
| H A D | rt_rule.yaml | 152 name: l3mdev 221 - l3mdev
|
| /linux-6.15/Documentation/networking/ |
| H A D | vrf.rst | 72 2. An l3mdev FIB rule directs lookups to the table associated with the device. 73 A single l3mdev rule is sufficient for all VRFs. The VRF device adds the 74 l3mdev rule for IPv4 and IPv6 when the first device is created with a 122 arriving on interfaces enslaved to an l3mdev and processes may bind to 123 the same port if they bind to an l3mdev. 174 As of v4.8 the kernel supports the l3mdev FIB rule where a single rule 175 covers all VRFs. The l3mdev rule is created for IPv4 and IPv6 on first
|
| /linux-6.15/net/ |
| H A D | Makefile | 75 obj-$(CONFIG_NET_L3_MASTER_DEV) += l3mdev/
|
| H A D | Kconfig | 277 source "net/l3mdev/Kconfig"
|
| /linux-6.15/net/ipv6/ |
| H A D | fib6_rules.c | 48 rule->l3mdev) in fib6_rule_default() 450 if (rule->action == FR_ACT_TO_TBL && !rule->l3mdev) { in fib6_rule_configure()
|
| H A D | addrconf.c | 1978 struct net_device *l3mdev, *ndev; in __ipv6_chk_addr_and_flags() local 1984 l3mdev = l3mdev_master_dev_rcu(dev); in __ipv6_chk_addr_and_flags() 1991 if (l3mdev_master_dev_rcu(ndev) != l3mdev) in __ipv6_chk_addr_and_flags()
|
| H A D | ip6mr.c | 297 rule->table == RT6_TABLE_DFLT && !rule->l3mdev; in ip6mr_rule_default()
|
| /linux-6.15/drivers/net/ethernet/mellanox/mlxsw/ |
| H A D | spectrum_router.c | 8082 if (!fib4_rule_default(rule) && !rule->l3mdev) in mlxsw_sp_router_fib_rule_event() 8086 if (!fib6_rule_default(rule) && !rule->l3mdev) in mlxsw_sp_router_fib_rule_event() 8090 if (!ipmr_rule_default(rule) && !rule->l3mdev) in mlxsw_sp_router_fib_rule_event() 8094 if (!ip6mr_rule_default(rule) && !rule->l3mdev) in mlxsw_sp_router_fib_rule_event()
|
| /linux-6.15/ |
| H A D | MAINTAINERS | 13390 F: include/net/l3mdev.h 13391 F: net/l3mdev
|