Lines Matching full:tunnel
82 /* Tunnel hash table */
93 it will match only tunnel with the same key; if it is not present,
94 it will match only keyless tunnel.
97 will match fallback tunnel.
113 /* Given src, dst and key, find appropriate for input tunnel. */
445 net_dbg_ratelimited("%s: Too small hop limit or routing loop in tunnel!\n", in ip6gre_err()
461 net_dbg_ratelimited("%s: Too small encapsulation limit or routing loop in tunnel!\n", in ip6gre_err()
491 struct ip6_tnl *tunnel; in ip6gre_rcv() local
494 tunnel = ip6gre_tunnel_lookup(skb->dev, in ip6gre_rcv()
497 if (tunnel) { in ip6gre_rcv()
498 if (tunnel->parms.collect_md) { in ip6gre_rcv()
510 ip6_tnl_rcv(tunnel, skb, tpi, tun_dst, log_ecn_error); in ip6gre_rcv()
512 ip6_tnl_rcv(tunnel, skb, tpi, NULL, log_ecn_error); in ip6gre_rcv()
528 struct ip6_tnl *tunnel; in ip6erspan_rcv() local
535 tunnel = ip6gre_tunnel_lookup(skb->dev, in ip6erspan_rcv()
538 if (tunnel) { in ip6erspan_rcv()
549 if (tunnel->parms.collect_md) { in ip6erspan_rcv()
583 ip6_tnl_rcv(tunnel, skb, tpi, tun_dst, log_ecn_error); in ip6erspan_rcv()
586 ip6_tnl_rcv(tunnel, skb, tpi, NULL, log_ecn_error); in ip6erspan_rcv()
747 struct ip6_tnl *tunnel = netdev_priv(dev); in __gre6_xmit() local
757 fl6->daddr = tunnel->parms.raddr; in __gre6_xmit()
762 if (tunnel->parms.collect_md) { in __gre6_xmit()
785 if (skb_cow_head(skb, dev->needed_headroom ?: tun_hlen + tunnel->encap_hlen)) in __gre6_xmit()
791 (flags & TUNNEL_SEQ) ? htonl(atomic_fetch_inc(&tunnel->o_seqno)) in __gre6_xmit()
795 if (skb_cow_head(skb, dev->needed_headroom ?: tunnel->hlen)) in __gre6_xmit()
798 flags = tunnel->parms.o_flags; in __gre6_xmit()
800 gre_build_header(skb, tunnel->tun_hlen, flags, in __gre6_xmit()
801 protocol, tunnel->parms.o_key, in __gre6_xmit()
802 (flags & TUNNEL_SEQ) ? htonl(atomic_fetch_inc(&tunnel->o_seqno)) in __gre6_xmit()
874 * ip6gre_tnl_addr_conflict - compare packet addresses to tunnel's own
875 * @t: the outgoing tunnel device
879 * Avoid trivial tunneling loop by checking that tunnel exit-point
1006 /* For collect_md mode, derive fl6 from the tunnel key, in ip6erspan_tunnel_xmit()
1194 static int ip6gre_calc_hlen(struct ip6_tnl *tunnel) in ip6gre_calc_hlen() argument
1198 tunnel->tun_hlen = gre_calc_hlen(tunnel->parms.o_flags); in ip6gre_calc_hlen()
1199 tunnel->hlen = tunnel->tun_hlen + tunnel->encap_hlen; in ip6gre_calc_hlen()
1201 t_hlen = tunnel->hlen + sizeof(struct ipv6hdr); in ip6gre_calc_hlen()
1203 if (tunnel->dev->header_ops) in ip6gre_calc_hlen()
1204 tunnel->dev->hard_header_len = LL_MAX_HEADER + t_hlen; in ip6gre_calc_hlen()
1206 tunnel->dev->needed_headroom = LL_MAX_HEADER + t_hlen; in ip6gre_calc_hlen()
1498 struct ip6_tnl *tunnel; in ip6gre_tunnel_init_common() local
1502 tunnel = netdev_priv(dev); in ip6gre_tunnel_init_common()
1504 tunnel->dev = dev; in ip6gre_tunnel_init_common()
1505 tunnel->net = dev_net(dev); in ip6gre_tunnel_init_common()
1506 strcpy(tunnel->parms.name, dev->name); in ip6gre_tunnel_init_common()
1512 ret = dst_cache_init(&tunnel->dst_cache, GFP_KERNEL); in ip6gre_tunnel_init_common()
1516 ret = gro_cells_init(&tunnel->gro_cells, dev); in ip6gre_tunnel_init_common()
1520 t_hlen = ip6gre_calc_hlen(tunnel); in ip6gre_tunnel_init_common()
1524 if (!(tunnel->parms.flags & IP6_TNL_F_IGN_ENCAP_LIMIT)) in ip6gre_tunnel_init_common()
1527 if (tunnel->parms.collect_md) { in ip6gre_tunnel_init_common()
1532 netdev_hold(dev, &tunnel->dev_tracker, GFP_KERNEL); in ip6gre_tunnel_init_common()
1536 dst_cache_destroy(&tunnel->dst_cache); in ip6gre_tunnel_init_common()
1545 struct ip6_tnl *tunnel; in ip6gre_tunnel_init() local
1552 tunnel = netdev_priv(dev); in ip6gre_tunnel_init()
1554 if (tunnel->parms.collect_md) in ip6gre_tunnel_init()
1557 __dev_addr_set(dev, &tunnel->parms.laddr, sizeof(struct in6_addr)); in ip6gre_tunnel_init()
1558 memcpy(dev->broadcast, &tunnel->parms.raddr, sizeof(struct in6_addr)); in ip6gre_tunnel_init()
1560 if (ipv6_addr_any(&tunnel->parms.raddr)) in ip6gre_tunnel_init()
1568 struct ip6_tnl *tunnel = netdev_priv(dev); in ip6gre_fb_tunnel_init() local
1570 tunnel->dev = dev; in ip6gre_fb_tunnel_init()
1571 tunnel->net = dev_net(dev); in ip6gre_fb_tunnel_init()
1572 strcpy(tunnel->parms.name, dev->name); in ip6gre_fb_tunnel_init()
1574 tunnel->hlen = sizeof(struct ipv6hdr) + 4; in ip6gre_fb_tunnel_init()
1877 static int ip6erspan_calc_hlen(struct ip6_tnl *tunnel) in ip6erspan_calc_hlen() argument
1881 tunnel->tun_hlen = 8; in ip6erspan_calc_hlen()
1882 tunnel->hlen = tunnel->tun_hlen + tunnel->encap_hlen + in ip6erspan_calc_hlen()
1883 erspan_hdr_len(tunnel->parms.erspan_ver); in ip6erspan_calc_hlen()
1885 t_hlen = tunnel->hlen + sizeof(struct ipv6hdr); in ip6erspan_calc_hlen()
1886 tunnel->dev->needed_headroom = LL_MAX_HEADER + t_hlen; in ip6erspan_calc_hlen()
1892 struct ip6_tnl *tunnel; in ip6erspan_tap_init() local
1896 tunnel = netdev_priv(dev); in ip6erspan_tap_init()
1898 tunnel->dev = dev; in ip6erspan_tap_init()
1899 tunnel->net = dev_net(dev); in ip6erspan_tap_init()
1900 strcpy(tunnel->parms.name, dev->name); in ip6erspan_tap_init()
1906 ret = dst_cache_init(&tunnel->dst_cache, GFP_KERNEL); in ip6erspan_tap_init()
1910 ret = gro_cells_init(&tunnel->gro_cells, dev); in ip6erspan_tap_init()
1914 t_hlen = ip6erspan_calc_hlen(tunnel); in ip6erspan_tap_init()
1918 if (!(tunnel->parms.flags & IP6_TNL_F_IGN_ENCAP_LIMIT)) in ip6erspan_tap_init()
1922 ip6erspan_tnl_link_config(tunnel, 1); in ip6erspan_tap_init()
1924 netdev_hold(dev, &tunnel->dev_tracker, GFP_KERNEL); in ip6erspan_tap_init()
1928 dst_cache_destroy(&tunnel->dst_cache); in ip6erspan_tap_init()