Commit b8812fa8 authored by John W. Linville's avatar John W. Linville Committed by David S. Miller

geneve: add IPv6 bits to geneve_fill_metadata_dst

Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
Reviewed-by: default avatarJesse Gross <jesse@nicira.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 3a56f86f
...@@ -1006,16 +1006,31 @@ static int geneve_fill_metadata_dst(struct net_device *dev, struct sk_buff *skb) ...@@ -1006,16 +1006,31 @@ static int geneve_fill_metadata_dst(struct net_device *dev, struct sk_buff *skb)
struct geneve_dev *geneve = netdev_priv(dev); struct geneve_dev *geneve = netdev_priv(dev);
struct rtable *rt; struct rtable *rt;
struct flowi4 fl4; struct flowi4 fl4;
#if IS_ENABLED(CONFIG_IPV6)
struct dst_entry *dst;
struct flowi6 fl6;
#endif
if (ip_tunnel_info_af(info) != AF_INET) if (ip_tunnel_info_af(info) == AF_INET) {
return -EINVAL; rt = geneve_get_v4_rt(skb, dev, &fl4, info);
if (IS_ERR(rt))
return PTR_ERR(rt);
rt = geneve_get_v4_rt(skb, dev, &fl4, info); ip_rt_put(rt);
if (IS_ERR(rt)) info->key.u.ipv4.src = fl4.saddr;
return PTR_ERR(rt); #if IS_ENABLED(CONFIG_IPV6)
} else if (ip_tunnel_info_af(info) == AF_INET6) {
dst = geneve_get_v6_dst(skb, dev, &fl6, info);
if (IS_ERR(dst))
return PTR_ERR(dst);
dst_release(dst);
info->key.u.ipv6.src = fl6.saddr;
#endif
} else {
return -EINVAL;
}
ip_rt_put(rt);
info->key.u.ipv4.src = fl4.saddr;
info->key.tp_src = udp_flow_src_port(geneve->net, skb, info->key.tp_src = udp_flow_src_port(geneve->net, skb,
1, USHRT_MAX, true); 1, USHRT_MAX, true);
info->key.tp_dst = geneve->dst_port; info->key.tp_dst = geneve->dst_port;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment