aboutsummaryrefslogtreecommitdiffstats
path: root/net/xfrm/xfrm_interface.c
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2019-05-02 22:14:21 -0400
committerDavid S. Miller <davem@davemloft.net>2019-05-02 22:14:21 -0400
commitff24e4980a68d83090a02fda081741a410fe8eef (patch)
tree4d874dfcaf2bb8c3abc2446af9447a983402c0ae /net/xfrm/xfrm_interface.c
parent26f146ed971c0e4a264ce525d7a66a71ef73690d (diff)
parentea9866793d1e925b4d320eaea409263b2a568f38 (diff)
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Three trivial overlapping conflicts. Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/xfrm/xfrm_interface.c')
-rw-r--r--net/xfrm/xfrm_interface.c17
1 files changed, 14 insertions, 3 deletions
diff --git a/net/xfrm/xfrm_interface.c b/net/xfrm/xfrm_interface.c
index b9f118530db6..ad3a2555c517 100644
--- a/net/xfrm/xfrm_interface.c
+++ b/net/xfrm/xfrm_interface.c
@@ -70,17 +70,28 @@ static struct xfrm_if *xfrmi_lookup(struct net *net, struct xfrm_state *x)
70 return NULL; 70 return NULL;
71} 71}
72 72
73static struct xfrm_if *xfrmi_decode_session(struct sk_buff *skb) 73static struct xfrm_if *xfrmi_decode_session(struct sk_buff *skb,
74 unsigned short family)
74{ 75{
75 struct xfrmi_net *xfrmn; 76 struct xfrmi_net *xfrmn;
76 int ifindex;
77 struct xfrm_if *xi; 77 struct xfrm_if *xi;
78 int ifindex = 0;
78 79
79 if (!secpath_exists(skb) || !skb->dev) 80 if (!secpath_exists(skb) || !skb->dev)
80 return NULL; 81 return NULL;
81 82
83 switch (family) {
84 case AF_INET6:
85 ifindex = inet6_sdif(skb);
86 break;
87 case AF_INET:
88 ifindex = inet_sdif(skb);
89 break;
90 }
91 if (!ifindex)
92 ifindex = skb->dev->ifindex;
93
82 xfrmn = net_generic(xs_net(xfrm_input_state(skb)), xfrmi_net_id); 94 xfrmn = net_generic(xs_net(xfrm_input_state(skb)), xfrmi_net_id);
83 ifindex = skb->dev->ifindex;
84 95
85 for_each_xfrmi_rcu(xfrmn->xfrmi[0], xi) { 96 for_each_xfrmi_rcu(xfrmn->xfrmi[0], xi) {
86 if (ifindex == xi->dev->ifindex && 97 if (ifindex == xi->dev->ifindex &&