Lines Matching refs:tunnel
455 struct ip6_tnl *tunnel; in ip6gre_rcv() local
490 tunnel = ip6gre_tunnel_lookup(skb->dev, in ip6gre_rcv()
493 if (tunnel) { in ip6gre_rcv()
499 if (!ip6_tnl_rcv_ctl(tunnel, &ipv6h->daddr, &ipv6h->saddr)) { in ip6gre_rcv()
500 tunnel->dev->stats.rx_dropped++; in ip6gre_rcv()
520 (!(flags&GRE_CSUM) && tunnel->parms.i_flags&GRE_CSUM)) { in ip6gre_rcv()
521 tunnel->dev->stats.rx_crc_errors++; in ip6gre_rcv()
522 tunnel->dev->stats.rx_errors++; in ip6gre_rcv()
525 if (tunnel->parms.i_flags&GRE_SEQ) { in ip6gre_rcv()
527 (tunnel->i_seqno && in ip6gre_rcv()
528 (s32)(seqno - tunnel->i_seqno) < 0)) { in ip6gre_rcv()
529 tunnel->dev->stats.rx_fifo_errors++; in ip6gre_rcv()
530 tunnel->dev->stats.rx_errors++; in ip6gre_rcv()
533 tunnel->i_seqno = seqno + 1; in ip6gre_rcv()
537 if (tunnel->dev->type == ARPHRD_ETHER) { in ip6gre_rcv()
539 tunnel->dev->stats.rx_length_errors++; in ip6gre_rcv()
540 tunnel->dev->stats.rx_errors++; in ip6gre_rcv()
545 skb->protocol = eth_type_trans(skb, tunnel->dev); in ip6gre_rcv()
549 __skb_tunnel_rx(skb, tunnel->dev, tunnel->net); in ip6gre_rcv()
560 ++tunnel->dev->stats.rx_frame_errors; in ip6gre_rcv()
561 ++tunnel->dev->stats.rx_errors; in ip6gre_rcv()
566 tstats = this_cpu_ptr(tunnel->dev->tstats); in ip6gre_rcv()
609 struct ip6_tnl *tunnel = netdev_priv(dev); in ip6gre_xmit2() local
610 struct net *net = tunnel->net; in ip6gre_xmit2()
618 struct net_device_stats *stats = &tunnel->dev->stats; in ip6gre_xmit2()
632 gre_hlen = tunnel->hlen; in ip6gre_xmit2()
633 fl6->daddr = tunnel->parms.raddr; in ip6gre_xmit2()
637 dst = ip6_tnl_dst_check(tunnel); in ip6gre_xmit2()
658 tunnel->parms.name); in ip6gre_xmit2()
677 if (tunnel->err_count > 0) { in ip6gre_xmit2()
679 tunnel->err_time + IP6TUNNEL_ERR_TIMEO)) { in ip6gre_xmit2()
680 tunnel->err_count--; in ip6gre_xmit2()
684 tunnel->err_count = 0; in ip6gre_xmit2()
687 skb_scrub_packet(skb, !net_eq(tunnel->net, dev_net(dev))); in ip6gre_xmit2()
733 ipv6h->hop_limit = tunnel->parms.hop_limit; in ip6gre_xmit2()
738 ((__be16 *)(ipv6h + 1))[0] = tunnel->parms.o_flags; in ip6gre_xmit2()
743 if (tunnel->parms.o_flags&(GRE_KEY|GRE_CSUM|GRE_SEQ)) { in ip6gre_xmit2()
744 __be32 *ptr = (__be32 *)(((u8 *)ipv6h) + tunnel->hlen - 4); in ip6gre_xmit2()
746 if (tunnel->parms.o_flags&GRE_SEQ) { in ip6gre_xmit2()
747 ++tunnel->o_seqno; in ip6gre_xmit2()
748 *ptr = htonl(tunnel->o_seqno); in ip6gre_xmit2()
751 if (tunnel->parms.o_flags&GRE_KEY) { in ip6gre_xmit2()
752 *ptr = tunnel->parms.o_key; in ip6gre_xmit2()
755 if (tunnel->parms.o_flags&GRE_CSUM) { in ip6gre_xmit2()
766 ip6_tnl_dst_store(tunnel, ndst); in ip6gre_xmit2()
1249 struct ip6_tnl *tunnel; in ip6gre_tunnel_init() local
1251 tunnel = netdev_priv(dev); in ip6gre_tunnel_init()
1253 tunnel->dev = dev; in ip6gre_tunnel_init()
1254 tunnel->net = dev_net(dev); in ip6gre_tunnel_init()
1255 strcpy(tunnel->parms.name, dev->name); in ip6gre_tunnel_init()
1257 memcpy(dev->dev_addr, &tunnel->parms.laddr, sizeof(struct in6_addr)); in ip6gre_tunnel_init()
1258 memcpy(dev->broadcast, &tunnel->parms.raddr, sizeof(struct in6_addr)); in ip6gre_tunnel_init()
1260 if (ipv6_addr_any(&tunnel->parms.raddr)) in ip6gre_tunnel_init()
1272 struct ip6_tnl *tunnel = netdev_priv(dev); in ip6gre_fb_tunnel_init() local
1274 tunnel->dev = dev; in ip6gre_fb_tunnel_init()
1275 tunnel->net = dev_net(dev); in ip6gre_fb_tunnel_init()
1276 strcpy(tunnel->parms.name, dev->name); in ip6gre_fb_tunnel_init()
1278 tunnel->hlen = sizeof(struct ipv6hdr) + 4; in ip6gre_fb_tunnel_init()
1461 struct ip6_tnl *tunnel; in ip6gre_tap_init() local
1463 tunnel = netdev_priv(dev); in ip6gre_tap_init()
1465 tunnel->dev = dev; in ip6gre_tap_init()
1466 tunnel->net = dev_net(dev); in ip6gre_tap_init()
1467 strcpy(tunnel->parms.name, dev->name); in ip6gre_tap_init()
1469 ip6gre_tnl_link_config(tunnel, 1); in ip6gre_tap_init()