Lines Matching refs:ub
162 struct udp_bearer *ub, struct udp_media_addr *src, in tipc_udp_xmit() argument
189 udp_tunnel_xmit_skb(rt, ub->ubsock->sk, skb, src->ipv4.s_addr, in tipc_udp_xmit()
196 .flowi6_oif = ub->ifindex, in tipc_udp_xmit()
202 ub->ubsock->sk, in tipc_udp_xmit()
211 err = udp_tunnel6_xmit_skb(ndst, ub->ubsock->sk, skb, NULL, in tipc_udp_xmit()
232 struct udp_bearer *ub; in tipc_udp_send_msg() local
242 ub = rcu_dereference(b->media_ptr); in tipc_udp_send_msg()
243 if (!ub) { in tipc_udp_send_msg()
249 return tipc_udp_xmit(net, skb, ub, src, dst, in tipc_udp_send_msg()
250 &ub->rcast.dst_cache); in tipc_udp_send_msg()
253 list_for_each_entry_rcu(rcast, &ub->rcast.list, list) { in tipc_udp_send_msg()
262 err = tipc_udp_xmit(net, _skb, ub, src, &rcast->addr, in tipc_udp_send_msg()
277 struct udp_bearer *ub; in tipc_udp_is_known_peer() local
279 ub = rcu_dereference_rtnl(b->media_ptr); in tipc_udp_is_known_peer()
280 if (!ub) { in tipc_udp_is_known_peer()
285 list_for_each_entry_safe(rcast, tmp, &ub->rcast.list, list) { in tipc_udp_is_known_peer()
297 struct udp_bearer *ub; in tipc_udp_rcast_add() local
299 ub = rcu_dereference_rtnl(b->media_ptr); in tipc_udp_rcast_add()
300 if (!ub) in tipc_udp_rcast_add()
321 list_add_rcu(&rcast->list, &ub->rcast.list); in tipc_udp_rcast_add()
365 struct udp_bearer *ub; in tipc_udp_recv() local
370 ub = rcu_dereference_sk_user_data(sk); in tipc_udp_recv()
371 if (!ub) { in tipc_udp_recv()
378 b = rcu_dereference(ub->bearer); in tipc_udp_recv()
399 static int enable_mcast(struct udp_bearer *ub, struct udp_media_addr *remote) in enable_mcast() argument
403 struct sock *sk = ub->ubsock->sk; in enable_mcast()
407 mreqn.imr_ifindex = ub->ifindex; in enable_mcast()
411 err = ipv6_stub->ipv6_sock_mc_join(sk, ub->ifindex, in enable_mcast()
454 struct udp_bearer *ub; in tipc_udp_nl_dump_remoteip() local
498 ub = rtnl_dereference(b->media_ptr); in tipc_udp_nl_dump_remoteip()
499 if (!ub) { in tipc_udp_nl_dump_remoteip()
505 list_for_each_entry_safe(rcast, tmp, &ub->rcast.list, list) { in tipc_udp_nl_dump_remoteip()
537 struct udp_bearer *ub; in tipc_udp_nl_add_bearer_data() local
540 ub = rtnl_dereference(b->media_ptr); in tipc_udp_nl_add_bearer_data()
541 if (!ub) in tipc_udp_nl_add_bearer_data()
555 if (!list_empty(&ub->rcast.list)) { in tipc_udp_nl_add_bearer_data()
657 struct udp_bearer *ub; in tipc_udp_enable() local
667 ub = kzalloc(sizeof(*ub), GFP_ATOMIC); in tipc_udp_enable()
668 if (!ub) in tipc_udp_enable()
671 INIT_LIST_HEAD(&ub->rcast.list); in tipc_udp_enable()
686 &ub->ifindex); in tipc_udp_enable()
715 rcu_assign_pointer(b->media_ptr, ub); in tipc_udp_enable()
716 rcu_assign_pointer(ub->bearer, b); in tipc_udp_enable()
732 ub->ifindex = dev->ifindex; in tipc_udp_enable()
741 dev = ub->ifindex ? __dev_get_by_index(net, ub->ifindex) : NULL; in tipc_udp_enable()
754 ub->ifindex = dev->ifindex; in tipc_udp_enable()
762 err = udp_sock_create(net, &udp_conf, &ub->ubsock); in tipc_udp_enable()
765 tuncfg.sk_user_data = ub; in tipc_udp_enable()
769 setup_udp_tunnel_sock(net, ub->ubsock, &tuncfg); in tipc_udp_enable()
771 err = dst_cache_init(&ub->rcast.dst_cache, GFP_ATOMIC); in tipc_udp_enable()
781 err = enable_mcast(ub, &remote); in tipc_udp_enable()
790 dst_cache_destroy(&ub->rcast.dst_cache); in tipc_udp_enable()
791 udp_tunnel_sock_release(ub->ubsock); in tipc_udp_enable()
793 kfree(ub); in tipc_udp_enable()
800 struct udp_bearer *ub = container_of(work, struct udp_bearer, work); in cleanup_bearer() local
803 list_for_each_entry_safe(rcast, tmp, &ub->rcast.list, list) { in cleanup_bearer()
809 atomic_dec(&tipc_net(sock_net(ub->ubsock->sk))->wq_count); in cleanup_bearer()
810 dst_cache_destroy(&ub->rcast.dst_cache); in cleanup_bearer()
811 udp_tunnel_sock_release(ub->ubsock); in cleanup_bearer()
813 kfree(ub); in cleanup_bearer()
819 struct udp_bearer *ub; in tipc_udp_disable() local
821 ub = rtnl_dereference(b->media_ptr); in tipc_udp_disable()
822 if (!ub) { in tipc_udp_disable()
826 sock_set_flag(ub->ubsock->sk, SOCK_DEAD); in tipc_udp_disable()
827 RCU_INIT_POINTER(ub->bearer, NULL); in tipc_udp_disable()
830 atomic_inc(&tipc_net(sock_net(ub->ubsock->sk))->wq_count); in tipc_udp_disable()
831 INIT_WORK(&ub->work, cleanup_bearer); in tipc_udp_disable()
832 schedule_work(&ub->work); in tipc_udp_disable()