Lines Matching refs:tunnel

239 	struct ip_tunnel *tunnel;  in __ip_tunnel_create()  local
265 tunnel = netdev_priv(dev); in __ip_tunnel_create()
266 tunnel->parms = *parms; in __ip_tunnel_create()
267 tunnel->net = net; in __ip_tunnel_create()
284 struct ip_tunnel *tunnel = netdev_priv(dev); in ip_tunnel_bind_dev() local
288 int t_hlen = tunnel->hlen + sizeof(struct iphdr); in ip_tunnel_bind_dev()
290 iph = &tunnel->parms.iph; in ip_tunnel_bind_dev()
298 iph->saddr, tunnel->parms.o_key, in ip_tunnel_bind_dev()
299 RT_TOS(iph->tos), tunnel->parms.link, in ip_tunnel_bind_dev()
300 tunnel->fwmark, 0); in ip_tunnel_bind_dev()
301 rt = ip_route_output_key(tunnel->net, &fl4); in ip_tunnel_bind_dev()
310 dst_cache_reset(&tunnel->dst_cache); in ip_tunnel_bind_dev()
313 if (!tdev && tunnel->parms.link) in ip_tunnel_bind_dev()
314 tdev = __dev_get_by_index(tunnel->net, tunnel->parms.link); in ip_tunnel_bind_dev()
361 int ip_tunnel_rcv(struct ip_tunnel *tunnel, struct sk_buff *skb, in ip_tunnel_rcv() argument
371 tunnel->dev->stats.multicast++; in ip_tunnel_rcv()
376 if ((!(tpi->flags&TUNNEL_CSUM) && (tunnel->parms.i_flags&TUNNEL_CSUM)) || in ip_tunnel_rcv()
377 ((tpi->flags&TUNNEL_CSUM) && !(tunnel->parms.i_flags&TUNNEL_CSUM))) { in ip_tunnel_rcv()
378 tunnel->dev->stats.rx_crc_errors++; in ip_tunnel_rcv()
379 tunnel->dev->stats.rx_errors++; in ip_tunnel_rcv()
383 if (tunnel->parms.i_flags&TUNNEL_SEQ) { in ip_tunnel_rcv()
385 (tunnel->i_seqno && (s32)(ntohl(tpi->seq) - tunnel->i_seqno) < 0)) { in ip_tunnel_rcv()
386 tunnel->dev->stats.rx_fifo_errors++; in ip_tunnel_rcv()
387 tunnel->dev->stats.rx_errors++; in ip_tunnel_rcv()
390 tunnel->i_seqno = ntohl(tpi->seq) + 1; in ip_tunnel_rcv()
401 ++tunnel->dev->stats.rx_frame_errors; in ip_tunnel_rcv()
402 ++tunnel->dev->stats.rx_errors; in ip_tunnel_rcv()
407 tstats = this_cpu_ptr(tunnel->dev->tstats); in ip_tunnel_rcv()
413 skb_scrub_packet(skb, !net_eq(tunnel->net, dev_net(tunnel->dev))); in ip_tunnel_rcv()
415 if (tunnel->dev->type == ARPHRD_ETHER) { in ip_tunnel_rcv()
416 skb->protocol = eth_type_trans(skb, tunnel->dev); in ip_tunnel_rcv()
419 skb->dev = tunnel->dev; in ip_tunnel_rcv()
425 gro_cells_receive(&tunnel->gro_cells, skb); in ip_tunnel_rcv()
494 struct ip_tunnel *tunnel = netdev_priv(dev); in tnl_update_pmtu() local
498 tunnel_hlen = md ? tunnel_hlen : tunnel->hlen; in tnl_update_pmtu()
526 daddr = md ? dst : tunnel->parms.iph.daddr; in tnl_update_pmtu()
550 struct ip_tunnel *tunnel = netdev_priv(dev); in ip_md_tunnel_xmit() local
578 if (tunnel->encap.type != TUNNEL_ENCAP_NONE) in ip_md_tunnel_xmit()
585 rt = ip_route_output_key(tunnel->net, &fl4); in ip_md_tunnel_xmit()
631 df, !net_eq(tunnel->net, dev_net(dev))); in ip_md_tunnel_xmit()
646 struct ip_tunnel *tunnel = netdev_priv(dev); in ip_tunnel_xmit() local
660 connected = (tunnel->parms.iph.daddr != 0); in ip_tunnel_xmit()
736 tunnel->parms.o_key, RT_TOS(tos), tunnel->parms.link, in ip_tunnel_xmit()
737 tunnel->fwmark, skb_get_hash(skb)); in ip_tunnel_xmit()
739 if (ip_tunnel_encap(skb, tunnel, &protocol, &fl4) < 0) in ip_tunnel_xmit()
748 rt = connected ? dst_cache_get_ip4(&tunnel->dst_cache, in ip_tunnel_xmit()
753 rt = ip_route_output_key(tunnel->net, &fl4); in ip_tunnel_xmit()
763 dst_cache_set_ip4(&tunnel->dst_cache, &rt->dst, in ip_tunnel_xmit()
779 if (tunnel->err_count > 0) { in ip_tunnel_xmit()
781 tunnel->err_time + IPTUNNEL_ERR_TIMEO)) { in ip_tunnel_xmit()
782 tunnel->err_count--; in ip_tunnel_xmit()
786 tunnel->err_count = 0; in ip_tunnel_xmit()
803 if (skb->protocol == htons(ETH_P_IP) && !tunnel->ignore_df) in ip_tunnel_xmit()
807 + rt->dst.header_len + ip_encap_hlen(&tunnel->encap); in ip_tunnel_xmit()
819 df, !net_eq(tunnel->net, dev_net(dev))); in ip_tunnel_xmit()
971 struct ip_tunnel *tunnel = netdev_priv(dev); in __ip_tunnel_change_mtu() local
972 int t_hlen = tunnel->hlen + sizeof(struct iphdr); in __ip_tunnel_change_mtu()
998 struct ip_tunnel *tunnel = netdev_priv(dev); in ip_tunnel_dev_free() local
1000 gro_cells_destroy(&tunnel->gro_cells); in ip_tunnel_dev_free()
1001 dst_cache_destroy(&tunnel->dst_cache); in ip_tunnel_dev_free()
1007 struct ip_tunnel *tunnel = netdev_priv(dev); in ip_tunnel_dellink() local
1010 itn = net_generic(tunnel->net, tunnel->ip_tnl_net_id); in ip_tunnel_dellink()
1021 struct ip_tunnel *tunnel = netdev_priv(dev); in ip_tunnel_get_link_net() local
1023 return tunnel->net; in ip_tunnel_get_link_net()
1029 struct ip_tunnel *tunnel = netdev_priv(dev); in ip_tunnel_get_iflink() local
1031 return tunnel->parms.link; in ip_tunnel_get_iflink()
1174 struct ip_tunnel *tunnel = netdev_priv(dev); in ip_tunnel_changelink() local
1175 struct net *net = tunnel->net; in ip_tunnel_changelink()
1176 struct ip_tunnel_net *itn = net_generic(net, tunnel->ip_tnl_net_id); in ip_tunnel_changelink()
1187 t = tunnel; in ip_tunnel_changelink()
1210 struct ip_tunnel *tunnel = netdev_priv(dev); in ip_tunnel_init() local
1211 struct iphdr *iph = &tunnel->parms.iph; in ip_tunnel_init()
1220 err = dst_cache_init(&tunnel->dst_cache, GFP_KERNEL); in ip_tunnel_init()
1226 err = gro_cells_init(&tunnel->gro_cells, dev); in ip_tunnel_init()
1228 dst_cache_destroy(&tunnel->dst_cache); in ip_tunnel_init()
1233 tunnel->dev = dev; in ip_tunnel_init()
1234 tunnel->net = dev_net(dev); in ip_tunnel_init()
1235 strcpy(tunnel->parms.name, dev->name); in ip_tunnel_init()
1239 if (tunnel->collect_md) { in ip_tunnel_init()
1249 struct ip_tunnel *tunnel = netdev_priv(dev); in ip_tunnel_uninit() local
1250 struct net *net = tunnel->net; in ip_tunnel_uninit()
1253 itn = net_generic(net, tunnel->ip_tnl_net_id); in ip_tunnel_uninit()
1258 dst_cache_reset(&tunnel->dst_cache); in ip_tunnel_uninit()
1265 struct ip_tunnel *tunnel = netdev_priv(dev); in ip_tunnel_setup() local
1266 tunnel->ip_tnl_net_id = net_id; in ip_tunnel_setup()