* [PATCH net] xfrm: provide correct dst in xfrm_neigh_lookup
@ 2017-02-25 15:57 Julian Anastasov
2017-02-27 2:35 ` David Miller
0 siblings, 1 reply; 3+ messages in thread
From: Julian Anastasov @ 2017-02-25 15:57 UTC (permalink / raw)
To: David Miller; +Cc: netdev, Steffen Klassert
Fix xfrm_neigh_lookup to provide dst->path to the
neigh_lookup dst_ops method.
When skb is provided, the IP address in packet should already
match the dst->path address family. But for the non-skb case,
we should consider the last tunnel address as nexthop address.
Fixes: f894cbf847c9 ("net: Add optional SKB arg to dst_ops->neigh_lookup().")
Signed-off-by: Julian Anastasov <ja@ssi.bg>
---
net/xfrm/xfrm_policy.c | 29 +++++++++++++++++++++--------
1 file changed, 21 insertions(+), 8 deletions(-)
diff --git a/net/xfrm/xfrm_policy.c b/net/xfrm/xfrm_policy.c
index 5f3e878..0806dcc 100644
--- a/net/xfrm/xfrm_policy.c
+++ b/net/xfrm/xfrm_policy.c
@@ -2836,14 +2836,8 @@ static unsigned int xfrm_mtu(const struct dst_entry *dst)
return mtu ? : dst_mtu(dst->path);
}
-static struct neighbour *xfrm_neigh_lookup(const struct dst_entry *dst,
- struct sk_buff *skb,
- const void *daddr)
-{
- return dst->path->ops->neigh_lookup(dst, skb, daddr);
-}
-
-static void xfrm_confirm_neigh(const struct dst_entry *dst, const void *daddr)
+static const void *xfrm_get_dst_nexthop(const struct dst_entry *dst,
+ const void *daddr)
{
const struct dst_entry *path = dst->path;
@@ -2857,6 +2851,25 @@ static void xfrm_confirm_neigh(const struct dst_entry *dst, const void *daddr)
else if (!(xfrm->type->flags & XFRM_TYPE_LOCAL_COADDR))
daddr = &xfrm->id.daddr;
}
+ return daddr;
+}
+
+static struct neighbour *xfrm_neigh_lookup(const struct dst_entry *dst,
+ struct sk_buff *skb,
+ const void *daddr)
+{
+ const struct dst_entry *path = dst->path;
+
+ if (!skb)
+ daddr = xfrm_get_dst_nexthop(dst, daddr);
+ return path->ops->neigh_lookup(path, skb, daddr);
+}
+
+static void xfrm_confirm_neigh(const struct dst_entry *dst, const void *daddr)
+{
+ const struct dst_entry *path = dst->path;
+
+ daddr = xfrm_get_dst_nexthop(dst, daddr);
path->ops->confirm_neigh(path, daddr);
}
--
1.9.3
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH net] xfrm: provide correct dst in xfrm_neigh_lookup
2017-02-25 15:57 [PATCH net] xfrm: provide correct dst in xfrm_neigh_lookup Julian Anastasov
@ 2017-02-27 2:35 ` David Miller
2017-02-27 12:08 ` Steffen Klassert
0 siblings, 1 reply; 3+ messages in thread
From: David Miller @ 2017-02-27 2:35 UTC (permalink / raw)
To: ja; +Cc: netdev, steffen.klassert
From: Julian Anastasov <ja@ssi.bg>
Date: Sat, 25 Feb 2017 17:57:43 +0200
> Fix xfrm_neigh_lookup to provide dst->path to the
> neigh_lookup dst_ops method.
>
> When skb is provided, the IP address in packet should already
> match the dst->path address family. But for the non-skb case,
> we should consider the last tunnel address as nexthop address.
>
> Fixes: f894cbf847c9 ("net: Add optional SKB arg to dst_ops->neigh_lookup().")
> Signed-off-by: Julian Anastasov <ja@ssi.bg>
This looks good to me.
Steffen, I applied this directly to my tree, I hope you don't mind.
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH net] xfrm: provide correct dst in xfrm_neigh_lookup
2017-02-27 2:35 ` David Miller
@ 2017-02-27 12:08 ` Steffen Klassert
0 siblings, 0 replies; 3+ messages in thread
From: Steffen Klassert @ 2017-02-27 12:08 UTC (permalink / raw)
To: David Miller; +Cc: ja, netdev
On Sun, Feb 26, 2017 at 09:35:48PM -0500, David Miller wrote:
> From: Julian Anastasov <ja@ssi.bg>
> Date: Sat, 25 Feb 2017 17:57:43 +0200
>
> > Fix xfrm_neigh_lookup to provide dst->path to the
> > neigh_lookup dst_ops method.
> >
> > When skb is provided, the IP address in packet should already
> > match the dst->path address family. But for the non-skb case,
> > we should consider the last tunnel address as nexthop address.
> >
> > Fixes: f894cbf847c9 ("net: Add optional SKB arg to dst_ops->neigh_lookup().")
> > Signed-off-by: Julian Anastasov <ja@ssi.bg>
>
> This looks good to me.
>
> Steffen, I applied this directly to my tree, I hope you don't mind.
That's ok, no problem.
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2017-02-27 12:17 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-02-25 15:57 [PATCH net] xfrm: provide correct dst in xfrm_neigh_lookup Julian Anastasov
2017-02-27 2:35 ` David Miller
2017-02-27 12:08 ` Steffen Klassert
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).