tunnel: introduce udp_tun_rx_dst()
Introduce function udp_tun_rx_dst() to initialize tunnel dst on
receive path.
Signed-off-by: Pravin B Shelar <pshelar@nicira.com>
Reviewed-by: Jesse Gross <jesse@nicira.com>
Acked-by: Thomas Graf <tgraf@suug.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
diff --git a/net/ipv4/ip_gre.c b/net/ipv4/ip_gre.c
index 1bf3281..faf1cde 100644
--- a/net/ipv4/ip_gre.c
+++ b/net/ipv4/ip_gre.c
@@ -400,25 +400,14 @@
if (tunnel) {
skb_pop_mac_header(skb);
if (tunnel->collect_md) {
- struct ip_tunnel_info *info;
+ __be16 flags;
+ __be64 tun_id;
- tun_dst = metadata_dst_alloc(0, GFP_ATOMIC);
+ flags = tpi->flags & (TUNNEL_CSUM | TUNNEL_KEY);
+ tun_id = key_to_tunnel_id(tpi->key);
+ tun_dst = ip_tun_rx_dst(skb, flags, tun_id, 0);
if (!tun_dst)
return PACKET_REJECT;
-
- info = &tun_dst->u.tun_info;
- info->key.u.ipv4.src = iph->saddr;
- info->key.u.ipv4.dst = iph->daddr;
- info->key.tos = iph->tos;
- info->key.ttl = iph->ttl;
-
- info->mode = IP_TUNNEL_INFO_RX;
- info->key.tun_flags = tpi->flags &
- (TUNNEL_CSUM | TUNNEL_KEY);
- info->key.tun_id = key_to_tunnel_id(tpi->key);
-
- info->key.tp_src = 0;
- info->key.tp_dst = 0;
}
ip_tunnel_rcv(tunnel, skb, tpi, tun_dst, log_ecn_error);