Lines Matching refs:bareudp
57 struct bareudp_dev *bareudp; in bareudp_udp_encap_recv() local
64 bareudp = rcu_dereference_sk_user_data(sk); in bareudp_udp_encap_recv()
65 if (!bareudp) in bareudp_udp_encap_recv()
73 if (bareudp->ethertype == htons(ETH_P_IP)) { in bareudp_udp_encap_recv()
78 proto = bareudp->ethertype; in bareudp_udp_encap_recv()
79 } else if (bareudp->multi_proto_mode && (iphdr->version == 6)) { in bareudp_udp_encap_recv()
82 bareudp->dev->stats.rx_dropped++; in bareudp_udp_encap_recv()
85 } else if (bareudp->ethertype == htons(ETH_P_MPLS_UC)) { in bareudp_udp_encap_recv()
91 proto = bareudp->ethertype; in bareudp_udp_encap_recv()
92 } else if (bareudp->multi_proto_mode && in bareudp_udp_encap_recv()
96 bareudp->dev->stats.rx_dropped++; in bareudp_udp_encap_recv()
107 proto = bareudp->ethertype; in bareudp_udp_encap_recv()
108 } else if (bareudp->multi_proto_mode && in bareudp_udp_encap_recv()
112 bareudp->dev->stats.rx_dropped++; in bareudp_udp_encap_recv()
117 proto = bareudp->ethertype; in bareudp_udp_encap_recv()
122 !net_eq(bareudp->net, in bareudp_udp_encap_recv()
123 dev_net(bareudp->dev)))) { in bareudp_udp_encap_recv()
124 bareudp->dev->stats.rx_dropped++; in bareudp_udp_encap_recv()
129 bareudp->dev->stats.rx_dropped++; in bareudp_udp_encap_recv()
133 skb->dev = bareudp->dev; in bareudp_udp_encap_recv()
154 ++bareudp->dev->stats.rx_frame_errors; in bareudp_udp_encap_recv()
155 ++bareudp->dev->stats.rx_errors; in bareudp_udp_encap_recv()
161 err = gro_cells_receive(&bareudp->gro_cells, skb); in bareudp_udp_encap_recv()
163 dev_sw_netstats_rx_add(bareudp->dev, len); in bareudp_udp_encap_recv()
180 struct bareudp_dev *bareudp = netdev_priv(dev); in bareudp_init() local
187 err = gro_cells_init(&bareudp->gro_cells, dev); in bareudp_init()
197 struct bareudp_dev *bareudp = netdev_priv(dev); in bareudp_uninit() local
199 gro_cells_destroy(&bareudp->gro_cells); in bareudp_uninit()
225 static int bareudp_socket_create(struct bareudp_dev *bareudp, __be16 port) in bareudp_socket_create() argument
230 sock = bareudp_create_sock(bareudp->net, port); in bareudp_socket_create()
236 tunnel_cfg.sk_user_data = bareudp; in bareudp_socket_create()
241 setup_udp_tunnel_sock(bareudp->net, sock, &tunnel_cfg); in bareudp_socket_create()
249 rcu_assign_pointer(bareudp->sock, sock); in bareudp_socket_create()
255 struct bareudp_dev *bareudp = netdev_priv(dev); in bareudp_open() local
258 ret = bareudp_socket_create(bareudp, bareudp->port); in bareudp_open()
262 static void bareudp_sock_release(struct bareudp_dev *bareudp) in bareudp_sock_release() argument
266 sock = bareudp->sock; in bareudp_sock_release()
267 rcu_assign_pointer(bareudp->sock, NULL); in bareudp_sock_release()
274 struct bareudp_dev *bareudp = netdev_priv(dev); in bareudp_stop() local
276 bareudp_sock_release(bareudp); in bareudp_stop()
281 struct bareudp_dev *bareudp, in bareudp_xmit_skb() argument
284 bool xnet = !net_eq(bareudp->net, dev_net(bareudp->dev)); in bareudp_xmit_skb()
286 struct socket *sock = rcu_dereference(bareudp->sock); in bareudp_xmit_skb()
299 rt = ip_route_output_tunnel(skb, dev, bareudp->net, &saddr, info, in bareudp_xmit_skb()
308 sport = udp_flow_src_port(bareudp->net, skb, in bareudp_xmit_skb()
309 bareudp->sport_min, USHRT_MAX, in bareudp_xmit_skb()
331 skb_set_inner_protocol(skb, bareudp->ethertype); in bareudp_xmit_skb()
333 tos, ttl, df, sport, bareudp->port, in bareudp_xmit_skb()
334 !net_eq(bareudp->net, dev_net(bareudp->dev)), in bareudp_xmit_skb()
344 struct bareudp_dev *bareudp, in bareudp6_xmit_skb() argument
347 bool xnet = !net_eq(bareudp->net, dev_net(bareudp->dev)); in bareudp6_xmit_skb()
349 struct socket *sock = rcu_dereference(bareudp->sock); in bareudp6_xmit_skb()
362 dst = ip6_dst_lookup_tunnel(skb, dev, bareudp->net, sock, &saddr, info, in bareudp6_xmit_skb()
370 sport = udp_flow_src_port(bareudp->net, skb, in bareudp6_xmit_skb()
371 bareudp->sport_min, USHRT_MAX, in bareudp6_xmit_skb()
396 info->key.label, sport, bareudp->port, in bareudp6_xmit_skb()
405 static bool bareudp_proto_valid(struct bareudp_dev *bareudp, __be16 proto) in bareudp_proto_valid() argument
407 if (bareudp->ethertype == proto) in bareudp_proto_valid()
410 if (!bareudp->multi_proto_mode) in bareudp_proto_valid()
413 if (bareudp->ethertype == htons(ETH_P_MPLS_UC) && in bareudp_proto_valid()
417 if (bareudp->ethertype == htons(ETH_P_IP) && in bareudp_proto_valid()
426 struct bareudp_dev *bareudp = netdev_priv(dev); in bareudp_xmit() local
430 if (!bareudp_proto_valid(bareudp, skb->protocol)) { in bareudp_xmit()
443 err = bareudp6_xmit_skb(skb, dev, bareudp, info); in bareudp_xmit()
445 err = bareudp_xmit_skb(skb, dev, bareudp, info); in bareudp_xmit()
467 struct bareudp_dev *bareudp = netdev_priv(dev); in bareudp_fill_metadata_dst() local
476 rt = ip_route_output_tunnel(skb, dev, bareudp->net, &saddr, in bareudp_fill_metadata_dst()
486 struct socket *sock = rcu_dereference(bareudp->sock); in bareudp_fill_metadata_dst()
488 dst = ip6_dst_lookup_tunnel(skb, dev, bareudp->net, sock, in bareudp_fill_metadata_dst()
500 info->key.tp_src = udp_flow_src_port(bareudp->net, skb, in bareudp_fill_metadata_dst()
501 bareudp->sport_min, in bareudp_fill_metadata_dst()
503 info->key.tp_dst = bareudp->port; in bareudp_fill_metadata_dst()
594 struct bareudp_dev *bareudp, *t = NULL; in bareudp_find_dev() local
596 list_for_each_entry(bareudp, &bn->bareudp_list, next) { in bareudp_find_dev()
597 if (conf->port == bareudp->port) in bareudp_find_dev()
598 t = bareudp; in bareudp_find_dev()
607 struct bareudp_dev *t, *bareudp = netdev_priv(dev); in bareudp_configure() local
610 bareudp->net = net; in bareudp_configure()
611 bareudp->dev = dev; in bareudp_configure()
621 bareudp->port = conf->port; in bareudp_configure()
622 bareudp->ethertype = conf->ethertype; in bareudp_configure()
623 bareudp->sport_min = conf->sport_min; in bareudp_configure()
624 bareudp->multi_proto_mode = conf->multi_proto_mode; in bareudp_configure()
630 list_add(&bareudp->next, &bn->bareudp_list); in bareudp_configure()
671 struct bareudp_dev *bareudp = netdev_priv(dev); in bareudp_dellink() local
673 list_del(&bareudp->next); in bareudp_dellink()
688 struct bareudp_dev *bareudp = netdev_priv(dev); in bareudp_fill_info() local
690 if (nla_put_be16(skb, IFLA_BAREUDP_PORT, bareudp->port)) in bareudp_fill_info()
692 if (nla_put_be16(skb, IFLA_BAREUDP_ETHERTYPE, bareudp->ethertype)) in bareudp_fill_info()
694 if (nla_put_u16(skb, IFLA_BAREUDP_SRCPORT_MIN, bareudp->sport_min)) in bareudp_fill_info()
696 if (bareudp->multi_proto_mode && in bareudp_fill_info()
766 struct bareudp_dev *bareudp, *next; in bareudp_destroy_tunnels() local
768 list_for_each_entry_safe(bareudp, next, &bn->bareudp_list, next) in bareudp_destroy_tunnels()
769 unregister_netdevice_queue(bareudp->dev, head); in bareudp_destroy_tunnels()