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 bareudp->dev->stats.rx_dropped++; in bareudp_udp_encap_recv()
85 } else if (ipversion == 6 && bareudp->multi_proto_mode) { in bareudp_udp_encap_recv()
88 bareudp->dev->stats.rx_dropped++; in bareudp_udp_encap_recv()
91 } else if (bareudp->ethertype == htons(ETH_P_MPLS_UC)) { in bareudp_udp_encap_recv()
97 proto = bareudp->ethertype; in bareudp_udp_encap_recv()
98 } else if (bareudp->multi_proto_mode && in bareudp_udp_encap_recv()
102 bareudp->dev->stats.rx_dropped++; in bareudp_udp_encap_recv()
113 proto = bareudp->ethertype; in bareudp_udp_encap_recv()
114 } else if (bareudp->multi_proto_mode && in bareudp_udp_encap_recv()
118 bareudp->dev->stats.rx_dropped++; in bareudp_udp_encap_recv()
123 proto = bareudp->ethertype; in bareudp_udp_encap_recv()
128 !net_eq(bareudp->net, in bareudp_udp_encap_recv()
129 dev_net(bareudp->dev)))) { in bareudp_udp_encap_recv()
130 bareudp->dev->stats.rx_dropped++; in bareudp_udp_encap_recv()
135 bareudp->dev->stats.rx_dropped++; in bareudp_udp_encap_recv()
139 skb->dev = bareudp->dev; in bareudp_udp_encap_recv()
161 ++bareudp->dev->stats.rx_frame_errors; in bareudp_udp_encap_recv()
162 ++bareudp->dev->stats.rx_errors; in bareudp_udp_encap_recv()
168 err = gro_cells_receive(&bareudp->gro_cells, skb); in bareudp_udp_encap_recv()
170 dev_sw_netstats_rx_add(bareudp->dev, len); in bareudp_udp_encap_recv()
187 struct bareudp_dev *bareudp = netdev_priv(dev); in bareudp_init() local
194 err = gro_cells_init(&bareudp->gro_cells, dev); in bareudp_init()
204 struct bareudp_dev *bareudp = netdev_priv(dev); in bareudp_uninit() local
206 gro_cells_destroy(&bareudp->gro_cells); in bareudp_uninit()
233 static int bareudp_socket_create(struct bareudp_dev *bareudp, __be16 port) in bareudp_socket_create() argument
238 sock = bareudp_create_sock(bareudp->net, port); in bareudp_socket_create()
244 tunnel_cfg.sk_user_data = bareudp; in bareudp_socket_create()
249 setup_udp_tunnel_sock(bareudp->net, sock, &tunnel_cfg); in bareudp_socket_create()
251 rcu_assign_pointer(bareudp->sock, sock); in bareudp_socket_create()
257 struct bareudp_dev *bareudp = netdev_priv(dev); in bareudp_open() local
260 ret = bareudp_socket_create(bareudp, bareudp->port); in bareudp_open()
264 static void bareudp_sock_release(struct bareudp_dev *bareudp) in bareudp_sock_release() argument
268 sock = bareudp->sock; in bareudp_sock_release()
269 rcu_assign_pointer(bareudp->sock, NULL); in bareudp_sock_release()
276 struct bareudp_dev *bareudp = netdev_priv(dev); in bareudp_stop() local
278 bareudp_sock_release(bareudp); in bareudp_stop()
283 struct bareudp_dev *bareudp, in bareudp_xmit_skb() argument
286 bool xnet = !net_eq(bareudp->net, dev_net(bareudp->dev)); in bareudp_xmit_skb()
288 struct socket *sock = rcu_dereference(bareudp->sock); in bareudp_xmit_skb()
301 rt = ip_route_output_tunnel(skb, dev, bareudp->net, &saddr, info, in bareudp_xmit_skb()
310 sport = udp_flow_src_port(bareudp->net, skb, in bareudp_xmit_skb()
311 bareudp->sport_min, USHRT_MAX, in bareudp_xmit_skb()
333 skb_set_inner_protocol(skb, bareudp->ethertype); in bareudp_xmit_skb()
335 tos, ttl, df, sport, bareudp->port, in bareudp_xmit_skb()
336 !net_eq(bareudp->net, dev_net(bareudp->dev)), in bareudp_xmit_skb()
346 struct bareudp_dev *bareudp, in bareudp6_xmit_skb() argument
349 bool xnet = !net_eq(bareudp->net, dev_net(bareudp->dev)); in bareudp6_xmit_skb()
351 struct socket *sock = rcu_dereference(bareudp->sock); in bareudp6_xmit_skb()
364 dst = ip6_dst_lookup_tunnel(skb, dev, bareudp->net, sock, &saddr, info, in bareudp6_xmit_skb()
372 sport = udp_flow_src_port(bareudp->net, skb, in bareudp6_xmit_skb()
373 bareudp->sport_min, USHRT_MAX, in bareudp6_xmit_skb()
398 info->key.label, sport, bareudp->port, in bareudp6_xmit_skb()
407 static bool bareudp_proto_valid(struct bareudp_dev *bareudp, __be16 proto) in bareudp_proto_valid() argument
409 if (bareudp->ethertype == proto) in bareudp_proto_valid()
412 if (!bareudp->multi_proto_mode) in bareudp_proto_valid()
415 if (bareudp->ethertype == htons(ETH_P_MPLS_UC) && in bareudp_proto_valid()
419 if (bareudp->ethertype == htons(ETH_P_IP) && in bareudp_proto_valid()
428 struct bareudp_dev *bareudp = netdev_priv(dev); in bareudp_xmit() local
432 if (!bareudp_proto_valid(bareudp, skb->protocol)) { in bareudp_xmit()
445 err = bareudp6_xmit_skb(skb, dev, bareudp, info); in bareudp_xmit()
447 err = bareudp_xmit_skb(skb, dev, bareudp, info); in bareudp_xmit()
469 struct bareudp_dev *bareudp = netdev_priv(dev); in bareudp_fill_metadata_dst() local
478 rt = ip_route_output_tunnel(skb, dev, bareudp->net, &saddr, in bareudp_fill_metadata_dst()
488 struct socket *sock = rcu_dereference(bareudp->sock); in bareudp_fill_metadata_dst()
490 dst = ip6_dst_lookup_tunnel(skb, dev, bareudp->net, sock, in bareudp_fill_metadata_dst()
502 info->key.tp_src = udp_flow_src_port(bareudp->net, skb, in bareudp_fill_metadata_dst()
503 bareudp->sport_min, in bareudp_fill_metadata_dst()
505 info->key.tp_dst = bareudp->port; in bareudp_fill_metadata_dst()
595 struct bareudp_dev *bareudp, *t = NULL; in bareudp_find_dev() local
597 list_for_each_entry(bareudp, &bn->bareudp_list, next) { in bareudp_find_dev()
598 if (conf->port == bareudp->port) in bareudp_find_dev()
599 t = bareudp; in bareudp_find_dev()
608 struct bareudp_dev *t, *bareudp = netdev_priv(dev); in bareudp_configure() local
611 bareudp->net = net; in bareudp_configure()
612 bareudp->dev = dev; in bareudp_configure()
622 bareudp->port = conf->port; in bareudp_configure()
623 bareudp->ethertype = conf->ethertype; in bareudp_configure()
624 bareudp->sport_min = conf->sport_min; in bareudp_configure()
625 bareudp->multi_proto_mode = conf->multi_proto_mode; in bareudp_configure()
631 list_add(&bareudp->next, &bn->bareudp_list); in bareudp_configure()
650 struct bareudp_dev *bareudp = netdev_priv(dev); in bareudp_dellink() local
652 list_del(&bareudp->next); in bareudp_dellink()
693 struct bareudp_dev *bareudp = netdev_priv(dev); in bareudp_fill_info() local
695 if (nla_put_be16(skb, IFLA_BAREUDP_PORT, bareudp->port)) in bareudp_fill_info()
697 if (nla_put_be16(skb, IFLA_BAREUDP_ETHERTYPE, bareudp->ethertype)) in bareudp_fill_info()
699 if (nla_put_u16(skb, IFLA_BAREUDP_SRCPORT_MIN, bareudp->sport_min)) in bareudp_fill_info()
701 if (bareudp->multi_proto_mode && in bareudp_fill_info()
769 struct bareudp_dev *bareudp, *next; in bareudp_destroy_tunnels() local
771 list_for_each_entry_safe(bareudp, next, &bn->bareudp_list, next) in bareudp_destroy_tunnels()
772 unregister_netdevice_queue(bareudp->dev, head); in bareudp_destroy_tunnels()