| /linux/net/ipv4/ |
| H A D | inet_hashtables.c | 77 int l3mdev) in inet_bind_bucket_create() argument 83 tb->l3mdev = l3mdev; in inet_bind_bucket_create() 117 unsigned short port, int l3mdev) in inet_bind_bucket_match() argument 120 tb->l3mdev == l3mdev; in inet_bind_bucket_match() 130 tb2->l3mdev = tb->l3mdev; in inet_bind2_bucket_init() 262 int bhash, l3mdev; in __inet_inherit_port() local 278 l3mdev = inet_sk_bound_l3mdev(sk); in __inet_inherit_port() 286 if (inet_bind_bucket_match(tb, net, port, l3mdev)) in __inet_inherit_port() 291 net, head, port, l3mdev); in __inet_inherit_port() 303 l3mdev = inet_sk_bound_l3mdev(sk); in __inet_inherit_port() [all …]
|
| H A D | inet_connection_sock.c | 274 static bool inet_bhash2_addr_any_conflict(const struct sock *sk, int port, int l3mdev, in inet_bhash2_addr_any_conflict() argument 296 if (!inet_bind2_bucket_match_addr_any(tb2, net, port, l3mdev, sk)) in inet_bhash2_addr_any_conflict() 321 int i, low, high, attempt_half, port, l3mdev; in inet_csk_find_open_port() local 329 l3mdev = inet_sk_bound_l3mdev(sk); in inet_csk_find_open_port() 366 if (inet_bhash2_addr_any_conflict(sk, port, l3mdev, relax, false)) in inet_csk_find_open_port() 372 tb2 = inet_bind2_bucket_find(head2, net, port, l3mdev, sk); in inet_csk_find_open_port() 374 if (inet_bind_bucket_match(tb, net, port, l3mdev)) { in inet_csk_find_open_port() 507 int ret = -EADDRINUSE, port = snum, l3mdev; in inet_csk_get_port() local 514 l3mdev = inet_sk_bound_l3mdev(sk); in inet_csk_get_port() 531 if (inet_bind_bucket_match(tb, net, port, l3mdev)) in inet_csk_get_port() [all …]
|
| H A D | fib_rules.c | 64 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 | 2229 struct net_device *l3mdev; in fib_select_path() local 2231 l3mdev = dev_get_by_index_rcu(net, fl4->flowi4_l3mdev); in fib_select_path() 2233 if (!l3mdev || in fib_select_path() 2234 l3mdev_master_dev_rcu(FIB_RES_DEV(*res)) == l3mdev) in fib_select_path() 2237 fl4->saddr = inet_select_addr(l3mdev, 0, RT_SCOPE_LINK); in fib_select_path()
|
| /linux/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 220 const unsigned short snum, int l3mdev); 225 int l3mdev); 239 unsigned short port, int l3mdev, 244 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/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() 1202 (rule->l3mdev && in fib_nl_fill_rule() 1203 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/net/l3mdev/ |
| H A D | Makefile | 6 obj-y += l3mdev.o
|
| /linux/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/net/ |
| H A D | Makefile | 75 obj-$(CONFIG_NET_L3_MASTER_DEV) += l3mdev/
|
| H A D | Kconfig | 282 source "net/l3mdev/Kconfig"
|
| /linux/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 | 82 #include <net/l3mdev.h> 1982 struct net_device *l3mdev, *ndev; in __ipv6_chk_addr_and_flags() local 1988 l3mdev = l3mdev_master_dev_rcu(dev); in __ipv6_chk_addr_and_flags() 1995 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/drivers/net/ethernet/mellanox/mlxsw/ |
| H A D | spectrum_router.c | 8080 if (!fib4_rule_default(rule) && !rule->l3mdev) in mlxsw_sp_router_fib_rule_event() 8084 if (!fib6_rule_default(rule) && !rule->l3mdev) in mlxsw_sp_router_fib_rule_event() 8088 if (!ipmr_rule_default(rule) && !rule->l3mdev) in mlxsw_sp_router_fib_rule_event() 8092 if (!ip6mr_rule_default(rule) && !rule->l3mdev) in mlxsw_sp_router_fib_rule_event()
|
| /linux/ |
| H A D | MAINTAINERS | 14378 F: include/net/l3mdev.h 14379 F: net/l3mdev
|