Lines Matching refs:itn

151 struct ip_tunnel *ip_tunnel_lookup(struct ip_tunnel_net *itn,  in ip_tunnel_lookup()  argument
161 head = &itn->tunnels[hash]; in ip_tunnel_lookup()
194 head = &itn->tunnels[hash]; in ip_tunnel_lookup()
233 t = rcu_dereference(itn->collect_md_tun); in ip_tunnel_lookup()
237 if (itn->fb_tunnel_dev && itn->fb_tunnel_dev->flags & IFF_UP) in ip_tunnel_lookup()
238 return netdev_priv(itn->fb_tunnel_dev); in ip_tunnel_lookup()
244 static struct hlist_head *ip_bucket(struct ip_tunnel_net *itn, in ip_bucket() argument
260 return &itn->tunnels[h]; in ip_bucket()
263 static void ip_tunnel_add(struct ip_tunnel_net *itn, struct ip_tunnel *t) in ip_tunnel_add() argument
265 struct hlist_head *head = ip_bucket(itn, &t->parms); in ip_tunnel_add()
268 rcu_assign_pointer(itn->collect_md_tun, t); in ip_tunnel_add()
272 static void ip_tunnel_del(struct ip_tunnel_net *itn, struct ip_tunnel *t) in ip_tunnel_del() argument
275 rcu_assign_pointer(itn->collect_md_tun, NULL); in ip_tunnel_del()
279 static struct ip_tunnel *ip_tunnel_find(struct ip_tunnel_net *itn, in ip_tunnel_find() argument
289 struct hlist_head *head = ip_bucket(itn, parms); in ip_tunnel_find()
410 struct ip_tunnel_net *itn, in ip_tunnel_create() argument
416 BUG_ON(!itn->fb_tunnel_dev); in ip_tunnel_create()
417 dev = __ip_tunnel_create(net, itn->fb_tunnel_dev->rtnl_link_ops, parms); in ip_tunnel_create()
424 ip_tunnel_add(itn, nt); in ip_tunnel_create()
815 static void ip_tunnel_update(struct ip_tunnel_net *itn, in ip_tunnel_update() argument
821 ip_tunnel_del(itn, t); in ip_tunnel_update()
830 ip_tunnel_add(itn, t); in ip_tunnel_update()
853 struct ip_tunnel_net *itn = net_generic(net, t->ip_tnl_net_id); in ip_tunnel_ioctl() local
855 BUG_ON(!itn->fb_tunnel_dev); in ip_tunnel_ioctl()
858 if (dev == itn->fb_tunnel_dev) { in ip_tunnel_ioctl()
859 t = ip_tunnel_find(itn, p, itn->fb_tunnel_dev->type); in ip_tunnel_ioctl()
880 t = ip_tunnel_find(itn, p, itn->fb_tunnel_dev->type); in ip_tunnel_ioctl()
884 t = ip_tunnel_create(net, itn, p); in ip_tunnel_ioctl()
892 if (dev != itn->fb_tunnel_dev && cmd == SIOCCHGTUNNEL) { in ip_tunnel_ioctl()
917 ip_tunnel_update(itn, t, dev, p, true); in ip_tunnel_ioctl()
928 if (dev == itn->fb_tunnel_dev) { in ip_tunnel_ioctl()
930 t = ip_tunnel_find(itn, p, itn->fb_tunnel_dev->type); in ip_tunnel_ioctl()
934 if (t == netdev_priv(itn->fb_tunnel_dev)) in ip_tunnel_ioctl()
991 struct ip_tunnel_net *itn; in ip_tunnel_dellink() local
993 itn = net_generic(tunnel->net, tunnel->ip_tnl_net_id); in ip_tunnel_dellink()
995 if (itn->fb_tunnel_dev != dev) { in ip_tunnel_dellink()
996 ip_tunnel_del(itn, netdev_priv(dev)); in ip_tunnel_dellink()
1021 struct ip_tunnel_net *itn = net_generic(net, ip_tnl_net_id); in ip_tunnel_init_net() local
1026 INIT_HLIST_HEAD(&itn->tunnels[i]); in ip_tunnel_init_net()
1029 itn->fb_tunnel_dev = NULL; in ip_tunnel_init_net()
1038 itn->fb_tunnel_dev = __ip_tunnel_create(net, ops, &parms); in ip_tunnel_init_net()
1042 if (!IS_ERR(itn->fb_tunnel_dev)) { in ip_tunnel_init_net()
1043 itn->fb_tunnel_dev->features |= NETIF_F_NETNS_LOCAL; in ip_tunnel_init_net()
1044 itn->fb_tunnel_dev->mtu = ip_tunnel_bind_dev(itn->fb_tunnel_dev); in ip_tunnel_init_net()
1045 ip_tunnel_add(itn, netdev_priv(itn->fb_tunnel_dev)); in ip_tunnel_init_net()
1049 return PTR_ERR_OR_ZERO(itn->fb_tunnel_dev); in ip_tunnel_init_net()
1053 static void ip_tunnel_destroy(struct ip_tunnel_net *itn, struct list_head *head, in ip_tunnel_destroy() argument
1056 struct net *net = dev_net(itn->fb_tunnel_dev); in ip_tunnel_destroy()
1067 struct hlist_head *thead = &itn->tunnels[h]; in ip_tunnel_destroy()
1078 void ip_tunnel_delete_net(struct ip_tunnel_net *itn, struct rtnl_link_ops *ops) in ip_tunnel_delete_net() argument
1083 ip_tunnel_destroy(itn, &list, ops); in ip_tunnel_delete_net()
1094 struct ip_tunnel_net *itn; in ip_tunnel_newlink() local
1099 itn = net_generic(net, nt->ip_tnl_net_id); in ip_tunnel_newlink()
1102 if (rtnl_dereference(itn->collect_md_tun)) in ip_tunnel_newlink()
1105 if (ip_tunnel_find(itn, p, dev->type)) in ip_tunnel_newlink()
1122 ip_tunnel_add(itn, nt); in ip_tunnel_newlink()
1134 struct ip_tunnel_net *itn = net_generic(net, tunnel->ip_tnl_net_id); in ip_tunnel_changelink() local
1136 if (dev == itn->fb_tunnel_dev) in ip_tunnel_changelink()
1139 t = ip_tunnel_find(itn, p, dev->type); in ip_tunnel_changelink()
1161 ip_tunnel_update(itn, t, dev, p, !tb[IFLA_MTU]); in ip_tunnel_changelink()
1208 struct ip_tunnel_net *itn; in ip_tunnel_uninit() local
1210 itn = net_generic(net, tunnel->ip_tnl_net_id); in ip_tunnel_uninit()
1212 if (itn->fb_tunnel_dev != dev) in ip_tunnel_uninit()
1213 ip_tunnel_del(itn, netdev_priv(dev)); in ip_tunnel_uninit()