Lines Matching refs:t

78 	for (t = rcu_dereference(start); t; t = rcu_dereference(t->next))
96 struct ip6_tnl *t; in vti6_tnl_lookup() local
101 if (ipv6_addr_equal(local, &t->parms.laddr) && in vti6_tnl_lookup()
102 ipv6_addr_equal(remote, &t->parms.raddr) && in vti6_tnl_lookup()
103 (t->dev->flags & IFF_UP)) in vti6_tnl_lookup()
104 return t; in vti6_tnl_lookup()
110 if (ipv6_addr_equal(local, &t->parms.laddr) && in vti6_tnl_lookup()
111 (t->dev->flags & IFF_UP)) in vti6_tnl_lookup()
112 return t; in vti6_tnl_lookup()
117 if (ipv6_addr_equal(remote, &t->parms.raddr) && in vti6_tnl_lookup()
118 (t->dev->flags & IFF_UP)) in vti6_tnl_lookup()
119 return t; in vti6_tnl_lookup()
122 t = rcu_dereference(ip6n->tnls_wc[0]); in vti6_tnl_lookup()
123 if (t && (t->dev->flags & IFF_UP)) in vti6_tnl_lookup()
124 return t; in vti6_tnl_lookup()
155 vti6_tnl_link(struct vti6_net *ip6n, struct ip6_tnl *t) in vti6_tnl_link() argument
157 struct ip6_tnl __rcu **tp = vti6_tnl_bucket(ip6n, &t->parms); in vti6_tnl_link()
159 rcu_assign_pointer(t->next , rtnl_dereference(*tp)); in vti6_tnl_link()
160 rcu_assign_pointer(*tp, t); in vti6_tnl_link()
164 vti6_tnl_unlink(struct vti6_net *ip6n, struct ip6_tnl *t) in vti6_tnl_unlink() argument
169 for (tp = vti6_tnl_bucket(ip6n, &t->parms); in vti6_tnl_unlink()
172 if (t == iter) { in vti6_tnl_unlink()
173 rcu_assign_pointer(*tp, t->next); in vti6_tnl_unlink()
187 struct ip6_tnl *t = netdev_priv(dev); in vti6_tnl_create2() local
196 strcpy(t->parms.name, dev->name); in vti6_tnl_create2()
200 vti6_tnl_link(ip6n, t); in vti6_tnl_create2()
211 struct ip6_tnl *t; in vti6_tnl_create() local
220 dev = alloc_netdev(sizeof(*t), name, NET_NAME_UNKNOWN, vti6_dev_setup); in vti6_tnl_create()
226 t = netdev_priv(dev); in vti6_tnl_create()
227 t->parms = *p; in vti6_tnl_create()
228 t->net = dev_net(dev); in vti6_tnl_create()
234 return t; in vti6_tnl_create()
262 struct ip6_tnl *t; in vti6_locate() local
266 (t = rtnl_dereference(*tp)) != NULL; in vti6_locate()
267 tp = &t->next) { in vti6_locate()
268 if (ipv6_addr_equal(local, &t->parms.laddr) && in vti6_locate()
269 ipv6_addr_equal(remote, &t->parms.raddr)) { in vti6_locate()
273 return t; in vti6_locate()
290 struct ip6_tnl *t = netdev_priv(dev); in vti6_dev_uninit() local
291 struct vti6_net *ip6n = net_generic(t->net, vti6_net_id); in vti6_dev_uninit()
296 vti6_tnl_unlink(ip6n, t); in vti6_dev_uninit()
302 struct ip6_tnl *t; in vti6_rcv() local
306 t = vti6_tnl_lookup(dev_net(skb->dev), &ipv6h->saddr, &ipv6h->daddr); in vti6_rcv()
307 if (t) { in vti6_rcv()
308 if (t->parms.proto != IPPROTO_IPV6 && t->parms.proto != 0) { in vti6_rcv()
318 if (!ip6_tnl_rcv_ctl(t, &ipv6h->daddr, &ipv6h->saddr)) { in vti6_rcv()
319 t->dev->stats.rx_dropped++; in vti6_rcv()
324 XFRM_TUNNEL_SKB_CB(skb)->tunnel.ip6 = t; in vti6_rcv()
343 struct ip6_tnl *t = XFRM_TUNNEL_SKB_CB(skb)->tunnel.ip6; in vti6_rcv_cb() local
347 if (!t) in vti6_rcv_cb()
350 dev = t->dev; in vti6_rcv_cb()
362 skb->mark = be32_to_cpu(t->parms.i_key); in vti6_rcv_cb()
369 skb_scrub_packet(skb, !net_eq(t->net, dev_net(skb->dev))); in vti6_rcv_cb()
395 vti6_addr_conflict(const struct ip6_tnl *t, const struct ipv6hdr *hdr) in vti6_addr_conflict() argument
397 return ipv6_addr_equal(&t->parms.raddr, &hdr->saddr); in vti6_addr_conflict()
432 struct ip6_tnl *t = netdev_priv(dev); in vti6_xmit() local
433 struct net_device_stats *stats = &t->dev->stats; in vti6_xmit()
444 dst = xfrm_lookup(t->net, dst, fl, NULL, 0); in vti6_xmit()
452 if (!vti6_state_check(x, &t->parms.raddr, &t->parms.laddr)) in vti6_xmit()
455 if (!ip6_tnl_xmit_ctl(t, (const struct in6_addr *)&x->props.saddr, in vti6_xmit()
464 t->parms.name); in vti6_xmit()
468 skb_scrub_packet(skb, !net_eq(t->net, dev_net(dev))); in vti6_xmit()
510 struct ip6_tnl *t = netdev_priv(dev); in vti6_tnl_xmit() local
511 struct net_device_stats *stats = &t->dev->stats; in vti6_tnl_xmit()
522 if ((t->parms.proto != IPPROTO_IPV6 && t->parms.proto != 0) || in vti6_tnl_xmit()
523 vti6_addr_conflict(t, ipv6h)) in vti6_tnl_xmit()
538 fl.flowi_mark = be32_to_cpu(t->parms.o_key); in vti6_tnl_xmit()
559 struct ip6_tnl *t; in vti6_err() local
567 t = vti6_tnl_lookup(dev_net(skb->dev), &iph->daddr, &iph->saddr); in vti6_err()
568 if (!t) in vti6_err()
571 mark = be32_to_cpu(t->parms.o_key); in vti6_err()
608 static void vti6_link_config(struct ip6_tnl *t) in vti6_link_config() argument
610 struct net_device *dev = t->dev; in vti6_link_config()
611 struct __ip6_tnl_parm *p = &t->parms; in vti6_link_config()
618 p->flags |= ip6_tnl_get_cap(t, &p->laddr, &p->raddr); in vti6_link_config()
635 vti6_tnl_change(struct ip6_tnl *t, const struct __ip6_tnl_parm *p) in vti6_tnl_change() argument
637 t->parms.laddr = p->laddr; in vti6_tnl_change()
638 t->parms.raddr = p->raddr; in vti6_tnl_change()
639 t->parms.link = p->link; in vti6_tnl_change()
640 t->parms.i_key = p->i_key; in vti6_tnl_change()
641 t->parms.o_key = p->o_key; in vti6_tnl_change()
642 t->parms.proto = p->proto; in vti6_tnl_change()
643 ip6_tnl_dst_reset(t); in vti6_tnl_change()
644 vti6_link_config(t); in vti6_tnl_change()
648 static int vti6_update(struct ip6_tnl *t, struct __ip6_tnl_parm *p) in vti6_update() argument
650 struct net *net = dev_net(t->dev); in vti6_update()
654 vti6_tnl_unlink(ip6n, t); in vti6_update()
656 err = vti6_tnl_change(t, p); in vti6_update()
657 vti6_tnl_link(ip6n, t); in vti6_update()
658 netdev_state_change(t->dev); in vti6_update()
721 struct ip6_tnl *t = NULL; in vti6_ioctl() local
733 t = vti6_locate(net, &p1, 0); in vti6_ioctl()
737 if (!t) in vti6_ioctl()
738 t = netdev_priv(dev); in vti6_ioctl()
739 vti6_parm_to_user(&p, &t->parms); in vti6_ioctl()
755 t = vti6_locate(net, &p1, cmd == SIOCADDTUNNEL); in vti6_ioctl()
757 if (t) { in vti6_ioctl()
758 if (t->dev != dev) { in vti6_ioctl()
763 t = netdev_priv(dev); in vti6_ioctl()
765 err = vti6_update(t, &p1); in vti6_ioctl()
767 if (t) { in vti6_ioctl()
769 vti6_parm_to_user(&p, &t->parms); in vti6_ioctl()
787 t = vti6_locate(net, &p1, 0); in vti6_ioctl()
788 if (!t) in vti6_ioctl()
791 if (t->dev == ip6n->fb_tnl_dev) in vti6_ioctl()
793 dev = t->dev; in vti6_ioctl()
858 struct ip6_tnl *t = netdev_priv(dev); in vti6_dev_init_gen() local
860 t->dev = dev; in vti6_dev_init_gen()
861 t->net = dev_net(dev); in vti6_dev_init_gen()
874 struct ip6_tnl *t = netdev_priv(dev); in vti6_dev_init() local
879 vti6_link_config(t); in vti6_dev_init()
891 struct ip6_tnl *t = netdev_priv(dev); in vti6_fb_tnl_dev_init() local
895 t->parms.proto = IPPROTO_IPV6; in vti6_fb_tnl_dev_init()
898 rcu_assign_pointer(ip6n->tnls_wc[0], t); in vti6_fb_tnl_dev_init()
960 struct ip6_tnl *t; in vti6_changelink() local
970 t = vti6_locate(net, &p, 0); in vti6_changelink()
972 if (t) { in vti6_changelink()
973 if (t->dev != dev) in vti6_changelink()
976 t = netdev_priv(dev); in vti6_changelink()
978 return vti6_update(t, &p); in vti6_changelink()
1040 struct ip6_tnl *t; in vti6_destroy_tunnels() local
1044 t = rtnl_dereference(ip6n->tnls_r_l[h]); in vti6_destroy_tunnels()
1045 while (t) { in vti6_destroy_tunnels()
1046 unregister_netdevice_queue(t->dev, &list); in vti6_destroy_tunnels()
1047 t = rtnl_dereference(t->next); in vti6_destroy_tunnels()
1051 t = rtnl_dereference(ip6n->tnls_wc[0]); in vti6_destroy_tunnels()
1052 unregister_netdevice_queue(t->dev, &list); in vti6_destroy_tunnels()
1059 struct ip6_tnl *t = NULL; in vti6_init_net() local
1082 t = netdev_priv(ip6n->fb_tnl_dev); in vti6_init_net()
1084 strcpy(t->parms.name, ip6n->fb_tnl_dev->name); in vti6_init_net()