Lines Matching refs:tunnel
307 struct ip_tunnel *tunnel; in __ip_tunnel_create() local
332 tunnel = netdev_priv(dev); in __ip_tunnel_create()
333 tunnel->parms = *parms; in __ip_tunnel_create()
334 tunnel->net = net; in __ip_tunnel_create()
365 struct ip_tunnel *tunnel = netdev_priv(dev); in ip_tunnel_bind_dev() local
369 int t_hlen = tunnel->hlen + sizeof(struct iphdr); in ip_tunnel_bind_dev()
371 iph = &tunnel->parms.iph; in ip_tunnel_bind_dev()
379 iph->saddr, tunnel->parms.o_key, in ip_tunnel_bind_dev()
380 RT_TOS(iph->tos), tunnel->parms.link); in ip_tunnel_bind_dev()
381 rt = ip_route_output_key(tunnel->net, &fl4); in ip_tunnel_bind_dev()
385 tunnel_dst_set(tunnel, &rt->dst, fl4.saddr); in ip_tunnel_bind_dev()
392 if (!tdev && tunnel->parms.link) in ip_tunnel_bind_dev()
393 tdev = __dev_get_by_index(tunnel->net, tunnel->parms.link); in ip_tunnel_bind_dev()
428 int ip_tunnel_rcv(struct ip_tunnel *tunnel, struct sk_buff *skb, in ip_tunnel_rcv() argument
438 tunnel->dev->stats.multicast++; in ip_tunnel_rcv()
443 if ((!(tpi->flags&TUNNEL_CSUM) && (tunnel->parms.i_flags&TUNNEL_CSUM)) || in ip_tunnel_rcv()
444 ((tpi->flags&TUNNEL_CSUM) && !(tunnel->parms.i_flags&TUNNEL_CSUM))) { in ip_tunnel_rcv()
445 tunnel->dev->stats.rx_crc_errors++; in ip_tunnel_rcv()
446 tunnel->dev->stats.rx_errors++; in ip_tunnel_rcv()
450 if (tunnel->parms.i_flags&TUNNEL_SEQ) { in ip_tunnel_rcv()
452 (tunnel->i_seqno && (s32)(ntohl(tpi->seq) - tunnel->i_seqno) < 0)) { in ip_tunnel_rcv()
453 tunnel->dev->stats.rx_fifo_errors++; in ip_tunnel_rcv()
454 tunnel->dev->stats.rx_errors++; in ip_tunnel_rcv()
457 tunnel->i_seqno = ntohl(tpi->seq) + 1; in ip_tunnel_rcv()
468 ++tunnel->dev->stats.rx_frame_errors; in ip_tunnel_rcv()
469 ++tunnel->dev->stats.rx_errors; in ip_tunnel_rcv()
474 tstats = this_cpu_ptr(tunnel->dev->tstats); in ip_tunnel_rcv()
480 skb_scrub_packet(skb, !net_eq(tunnel->net, dev_net(tunnel->dev))); in ip_tunnel_rcv()
482 if (tunnel->dev->type == ARPHRD_ETHER) { in ip_tunnel_rcv()
483 skb->protocol = eth_type_trans(skb, tunnel->dev); in ip_tunnel_rcv()
486 skb->dev = tunnel->dev; in ip_tunnel_rcv()
492 gro_cells_receive(&tunnel->gro_cells, skb); in ip_tunnel_rcv()
603 struct ip_tunnel *tunnel = netdev_priv(dev); in tnl_update_pmtu() local
604 int pkt_size = skb->len - tunnel->hlen - dev->hard_header_len; in tnl_update_pmtu()
609 - sizeof(struct iphdr) - tunnel->hlen; in tnl_update_pmtu()
631 if ((tunnel->parms.iph.daddr && in tnl_update_pmtu()
632 !ipv4_is_multicast(tunnel->parms.iph.daddr)) || in tnl_update_pmtu()
652 struct ip_tunnel *tunnel = netdev_priv(dev); in ip_tunnel_xmit() local
664 connected = (tunnel->parms.iph.daddr != 0); in ip_tunnel_xmit()
731 tunnel->parms.o_key, RT_TOS(tos), tunnel->parms.link); in ip_tunnel_xmit()
733 if (ip_tunnel_encap(skb, tunnel, &protocol, &fl4) < 0) in ip_tunnel_xmit()
736 rt = connected ? tunnel_rtable_get(tunnel, 0, &fl4.saddr) : NULL; in ip_tunnel_xmit()
739 rt = ip_route_output_key(tunnel->net, &fl4); in ip_tunnel_xmit()
746 tunnel_dst_set(tunnel, &rt->dst, fl4.saddr); in ip_tunnel_xmit()
760 if (tunnel->err_count > 0) { in ip_tunnel_xmit()
762 tunnel->err_time + IPTUNNEL_ERR_TIMEO)) { in ip_tunnel_xmit()
763 tunnel->err_count--; in ip_tunnel_xmit()
767 tunnel->err_count = 0; in ip_tunnel_xmit()
788 + rt->dst.header_len + ip_encap_hlen(&tunnel->encap); in ip_tunnel_xmit()
800 tos, ttl, df, !net_eq(tunnel->net, dev_net(dev))); in ip_tunnel_xmit()
953 struct ip_tunnel *tunnel = netdev_priv(dev); in __ip_tunnel_change_mtu() local
954 int t_hlen = tunnel->hlen + sizeof(struct iphdr); in __ip_tunnel_change_mtu()
980 struct ip_tunnel *tunnel = netdev_priv(dev); in ip_tunnel_dev_free() local
982 gro_cells_destroy(&tunnel->gro_cells); in ip_tunnel_dev_free()
983 free_percpu(tunnel->dst_cache); in ip_tunnel_dev_free()
990 struct ip_tunnel *tunnel = netdev_priv(dev); in ip_tunnel_dellink() local
993 itn = net_generic(tunnel->net, tunnel->ip_tnl_net_id); in ip_tunnel_dellink()
1004 struct ip_tunnel *tunnel = netdev_priv(dev); in ip_tunnel_get_link_net() local
1006 return tunnel->net; in ip_tunnel_get_link_net()
1012 struct ip_tunnel *tunnel = netdev_priv(dev); in ip_tunnel_get_iflink() local
1014 return tunnel->parms.link; in ip_tunnel_get_iflink()
1132 struct ip_tunnel *tunnel = netdev_priv(dev); in ip_tunnel_changelink() local
1133 struct net *net = tunnel->net; in ip_tunnel_changelink()
1134 struct ip_tunnel_net *itn = net_generic(net, tunnel->ip_tnl_net_id); in ip_tunnel_changelink()
1145 t = tunnel; in ip_tunnel_changelink()
1168 struct ip_tunnel *tunnel = netdev_priv(dev); in ip_tunnel_init() local
1169 struct iphdr *iph = &tunnel->parms.iph; in ip_tunnel_init()
1177 tunnel->dst_cache = alloc_percpu(struct ip_tunnel_dst); in ip_tunnel_init()
1178 if (!tunnel->dst_cache) { in ip_tunnel_init()
1183 err = gro_cells_init(&tunnel->gro_cells, dev); in ip_tunnel_init()
1185 free_percpu(tunnel->dst_cache); in ip_tunnel_init()
1190 tunnel->dev = dev; in ip_tunnel_init()
1191 tunnel->net = dev_net(dev); in ip_tunnel_init()
1192 strcpy(tunnel->parms.name, dev->name); in ip_tunnel_init()
1196 if (tunnel->collect_md) { in ip_tunnel_init()
1206 struct ip_tunnel *tunnel = netdev_priv(dev); in ip_tunnel_uninit() local
1207 struct net *net = tunnel->net; in ip_tunnel_uninit()
1210 itn = net_generic(net, tunnel->ip_tnl_net_id); in ip_tunnel_uninit()
1215 ip_tunnel_dst_reset_all(tunnel); in ip_tunnel_uninit()
1222 struct ip_tunnel *tunnel = netdev_priv(dev); in ip_tunnel_setup() local
1223 tunnel->ip_tnl_net_id = net_id; in ip_tunnel_setup()