Lines Matching refs:ub
162 struct udp_bearer *ub, struct udp_media_addr *src,
189 udp_tunnel_xmit_skb(rt, ub->ubsock->sk, skb, src->ipv4.s_addr,
196 .flowi6_oif = ub->ifindex,
202 ub->ubsock->sk,
211 err = udp_tunnel6_xmit_skb(ndst, ub->ubsock->sk, skb, NULL,
232 struct udp_bearer *ub;
242 ub = rcu_dereference(b->media_ptr);
243 if (!ub) {
249 return tipc_udp_xmit(net, skb, ub, src, dst,
250 &ub->rcast.dst_cache);
253 list_for_each_entry_rcu(rcast, &ub->rcast.list, list) {
262 err = tipc_udp_xmit(net, _skb, ub, src, &rcast->addr,
277 struct udp_bearer *ub;
279 ub = rcu_dereference_rtnl(b->media_ptr);
280 if (!ub) {
285 list_for_each_entry_safe(rcast, tmp, &ub->rcast.list, list) {
297 struct udp_bearer *ub;
299 ub = rcu_dereference_rtnl(b->media_ptr);
300 if (!ub)
321 list_add_rcu(&rcast->list, &ub->rcast.list);
365 struct udp_bearer *ub;
370 ub = rcu_dereference_sk_user_data(sk);
371 if (!ub) {
378 b = rcu_dereference(ub->bearer);
399 static int enable_mcast(struct udp_bearer *ub, struct udp_media_addr *remote)
403 struct sock *sk = ub->ubsock->sk;
407 mreqn.imr_ifindex = ub->ifindex;
411 err = ipv6_stub->ipv6_sock_mc_join(sk, ub->ifindex,
454 struct udp_bearer *ub;
498 ub = rtnl_dereference(b->media_ptr);
499 if (!ub) {
505 list_for_each_entry_safe(rcast, tmp, &ub->rcast.list, list) {
537 struct udp_bearer *ub;
540 ub = rtnl_dereference(b->media_ptr);
541 if (!ub)
555 if (!list_empty(&ub->rcast.list)) {
657 struct udp_bearer *ub;
667 ub = kzalloc(sizeof(*ub), GFP_ATOMIC);
668 if (!ub)
671 INIT_LIST_HEAD(&ub->rcast.list);
686 &ub->ifindex);
715 rcu_assign_pointer(b->media_ptr, ub);
716 rcu_assign_pointer(ub->bearer, b);
732 ub->ifindex = dev->ifindex;
741 dev = ub->ifindex ? __dev_get_by_index(net, ub->ifindex) : NULL;
754 ub->ifindex = dev->ifindex;
763 err = udp_sock_create(net, &udp_conf, &ub->ubsock);
766 tuncfg.sk_user_data = ub;
770 setup_udp_tunnel_sock(net, ub->ubsock, &tuncfg);
772 err = dst_cache_init(&ub->rcast.dst_cache, GFP_ATOMIC);
782 err = enable_mcast(ub, &remote);
791 dst_cache_destroy(&ub->rcast.dst_cache);
792 udp_tunnel_sock_release(ub->ubsock);
794 kfree(ub);
801 struct udp_bearer *ub = container_of(work, struct udp_bearer, work);
804 list_for_each_entry_safe(rcast, tmp, &ub->rcast.list, list) {
810 atomic_dec(&tipc_net(sock_net(ub->ubsock->sk))->wq_count);
811 dst_cache_destroy(&ub->rcast.dst_cache);
812 udp_tunnel_sock_release(ub->ubsock);
814 kfree(ub);
820 struct udp_bearer *ub;
822 ub = rtnl_dereference(b->media_ptr);
823 if (!ub) {
827 sock_set_flag(ub->ubsock->sk, SOCK_DEAD);
828 RCU_INIT_POINTER(ub->bearer, NULL);
831 atomic_inc(&tipc_net(sock_net(ub->ubsock->sk))->wq_count);
832 INIT_WORK(&ub->work, cleanup_bearer);
833 schedule_work(&ub->work);