Lines Matching refs:ub

168 			 struct udp_bearer *ub, struct udp_media_addr *src,
195 udp_tunnel_xmit_skb(rt, ub->ubsock->sk, skb, src->ipv4.s_addr,
202 .flowi6_oif = ub->ifindex,
208 ub->ubsock->sk,
217 err = udp_tunnel6_xmit_skb(ndst, ub->ubsock->sk, skb, NULL,
238 struct udp_bearer *ub;
248 ub = rcu_dereference(b->media_ptr);
249 if (!ub) {
255 return tipc_udp_xmit(net, skb, ub, src, dst,
256 &ub->rcast.dst_cache);
259 list_for_each_entry_rcu(rcast, &ub->rcast.list, list) {
268 err = tipc_udp_xmit(net, _skb, ub, src, &rcast->addr,
283 struct udp_bearer *ub;
285 ub = rcu_dereference_rtnl(b->media_ptr);
286 if (!ub) {
291 list_for_each_entry_safe(rcast, tmp, &ub->rcast.list, list) {
303 struct udp_bearer *ub;
305 ub = rcu_dereference_rtnl(b->media_ptr);
306 if (!ub)
327 list_add_rcu(&rcast->list, &ub->rcast.list);
371 struct udp_bearer *ub;
376 ub = rcu_dereference_sk_user_data(sk);
377 if (!ub) {
384 b = rcu_dereference(ub->bearer);
405 static int enable_mcast(struct udp_bearer *ub, struct udp_media_addr *remote)
409 struct sock *sk = ub->ubsock->sk;
413 mreqn.imr_ifindex = ub->ifindex;
418 err = ipv6_stub->ipv6_sock_mc_join(sk, ub->ifindex,
462 struct udp_bearer *ub;
506 ub = rtnl_dereference(b->media_ptr);
507 if (!ub) {
513 list_for_each_entry_safe(rcast, tmp, &ub->rcast.list, list) {
545 struct udp_bearer *ub;
548 ub = rtnl_dereference(b->media_ptr);
549 if (!ub)
563 if (!list_empty(&ub->rcast.list)) {
665 struct udp_bearer *ub;
675 ub = kzalloc(sizeof(*ub), GFP_ATOMIC);
676 if (!ub)
679 INIT_LIST_HEAD(&ub->rcast.list);
694 &ub->ifindex);
723 rcu_assign_pointer(b->media_ptr, ub);
724 rcu_assign_pointer(ub->bearer, b);
740 ub->ifindex = dev->ifindex;
745 dev = ub->ifindex ? __dev_get_by_index(net, ub->ifindex) : NULL;
758 ub->ifindex = dev->ifindex;
767 err = udp_sock_create(net, &udp_conf, &ub->ubsock);
770 tuncfg.sk_user_data = ub;
774 setup_udp_tunnel_sock(net, ub->ubsock, &tuncfg);
776 err = dst_cache_init(&ub->rcast.dst_cache, GFP_ATOMIC);
786 err = enable_mcast(ub, &remote);
795 dst_cache_destroy(&ub->rcast.dst_cache);
796 udp_tunnel_sock_release(ub->ubsock);
798 kfree(ub);
805 struct udp_bearer *ub = container_of(work, struct udp_bearer, work);
808 list_for_each_entry_safe(rcast, tmp, &ub->rcast.list, list) {
814 atomic_dec(&tipc_net(sock_net(ub->ubsock->sk))->wq_count);
815 dst_cache_destroy(&ub->rcast.dst_cache);
816 udp_tunnel_sock_release(ub->ubsock);
818 kfree(ub);
824 struct udp_bearer *ub;
826 ub = rtnl_dereference(b->media_ptr);
827 if (!ub) {
831 sock_set_flag(ub->ubsock->sk, SOCK_DEAD);
832 RCU_INIT_POINTER(ub->bearer, NULL);
835 atomic_inc(&tipc_net(sock_net(ub->ubsock->sk))->wq_count);
836 INIT_WORK(&ub->work, cleanup_bearer);
837 schedule_work(&ub->work);