Re: [RFC PATCH 25/29] net: vrf: Handle VRF any context
flat view
From: Nicolas Dichtel <hidden>
Date: 2015-02-05 13:46:24
Le 05/02/2015 02:34, David Ahern a écrit :
VRF any context applies only to tasks to and sockets. Devices are associated with a single VRF, and skb's by extension are connected to a single VRF. Listen sockets and unconnected sockets can be opened in a "VRF any" context allowing a single daemon to provide service across all VRFs in a namespace. Connected sockets must be in a specific vrf context. Accepted sockets acquire the VRF context from the device the packet enters (via the skb). "VRF any" context is also useful for tasks wanting to view L3/L4 data for all VRFs. Signed-off-by: David Ahern <redacted> ---
[snip]
quoted hunk ↗ jump to hunk
+static inline int neigh_parms_net_ctx_eq_any(const struct neigh_parms *parms, + const struct net_ctx *net_ctx) +{ +#ifdef CONFIG_NET_NS + if (net_eq(neigh_parms_net(parms), net_ctx->net) && + (vrf_eq(neigh_parms_vrf(parms), net_ctx->vrf) || + vrf_is_any(net_ctx->vrf))) { + return 1; + } + + return 0; +#else + return 1; +#endif
If I understand well, the way the patch is done, VRF can be used only if CONFIG_NET_NS is enabled. But if I'm not wrong, it could be independent. Am I right?