Lines Matching refs:bareudp

21 #include <net/bareudp.h>
51 struct net_device *dev; /* netdev for bareudp tunnel */
57 struct list_head next; /* bareudp node on namespace list */
64 struct bareudp_dev *bareudp;
71 bareudp = rcu_dereference_sk_user_data(sk);
72 if (!bareudp)
80 if (bareudp->ethertype == htons(ETH_P_IP)) {
85 bareudp->dev->stats.rx_dropped++;
92 } else if (ipversion == 6 && bareudp->multi_proto_mode) {
95 bareudp->dev->stats.rx_dropped++;
98 } else if (bareudp->ethertype == htons(ETH_P_MPLS_UC)) {
104 proto = bareudp->ethertype;
105 } else if (bareudp->multi_proto_mode &&
109 bareudp->dev->stats.rx_dropped++;
120 proto = bareudp->ethertype;
121 } else if (bareudp->multi_proto_mode &&
125 bareudp->dev->stats.rx_dropped++;
130 proto = bareudp->ethertype;
135 !net_eq(bareudp->net,
136 dev_net(bareudp->dev)))) {
137 bareudp->dev->stats.rx_dropped++;
142 bareudp->dev->stats.rx_dropped++;
146 skb->dev = bareudp->dev;
168 ++bareudp->dev->stats.rx_frame_errors;
169 ++bareudp->dev->stats.rx_errors;
175 err = gro_cells_receive(&bareudp->gro_cells, skb);
177 dev_sw_netstats_rx_add(bareudp->dev, len);
194 struct bareudp_dev *bareudp = netdev_priv(dev);
201 err = gro_cells_init(&bareudp->gro_cells, dev);
211 struct bareudp_dev *bareudp = netdev_priv(dev);
213 gro_cells_destroy(&bareudp->gro_cells);
241 static int bareudp_socket_create(struct bareudp_dev *bareudp, __be16 port)
246 sock = bareudp_create_sock(bareudp->net, port);
252 tunnel_cfg.sk_user_data = bareudp;
257 setup_udp_tunnel_sock(bareudp->net, sock, &tunnel_cfg);
259 rcu_assign_pointer(bareudp->sock, sock);
265 struct bareudp_dev *bareudp = netdev_priv(dev);
268 ret = bareudp_socket_create(bareudp, bareudp->port);
272 static void bareudp_sock_release(struct bareudp_dev *bareudp)
276 sock = bareudp->sock;
277 rcu_assign_pointer(bareudp->sock, NULL);
284 struct bareudp_dev *bareudp = netdev_priv(dev);
286 bareudp_sock_release(bareudp);
291 struct bareudp_dev *bareudp,
294 bool xnet = !net_eq(bareudp->net, dev_net(bareudp->dev));
296 struct socket *sock = rcu_dereference(bareudp->sock);
309 rt = ip_route_output_tunnel(skb, dev, bareudp->net, &saddr, info,
318 sport = udp_flow_src_port(bareudp->net, skb,
319 bareudp->sport_min, USHRT_MAX,
341 skb_set_inner_protocol(skb, bareudp->ethertype);
343 tos, ttl, df, sport, bareudp->port,
344 !net_eq(bareudp->net, dev_net(bareudp->dev)),
354 struct bareudp_dev *bareudp,
357 bool xnet = !net_eq(bareudp->net, dev_net(bareudp->dev));
359 struct socket *sock = rcu_dereference(bareudp->sock);
372 dst = ip6_dst_lookup_tunnel(skb, dev, bareudp->net, sock, &saddr, info,
380 sport = udp_flow_src_port(bareudp->net, skb,
381 bareudp->sport_min, USHRT_MAX,
406 info->key.label, sport, bareudp->port,
415 static bool bareudp_proto_valid(struct bareudp_dev *bareudp, __be16 proto)
417 if (bareudp->ethertype == proto)
420 if (!bareudp->multi_proto_mode)
423 if (bareudp->ethertype == htons(ETH_P_MPLS_UC) &&
427 if (bareudp->ethertype == htons(ETH_P_IP) &&
436 struct bareudp_dev *bareudp = netdev_priv(dev);
440 if (!bareudp_proto_valid(bareudp, skb->protocol)) {
453 err = bareudp6_xmit_skb(skb, dev, bareudp, info);
455 err = bareudp_xmit_skb(skb, dev, bareudp, info);
477 struct bareudp_dev *bareudp = netdev_priv(dev);
486 rt = ip_route_output_tunnel(skb, dev, bareudp->net, &saddr,
496 struct socket *sock = rcu_dereference(bareudp->sock);
498 dst = ip6_dst_lookup_tunnel(skb, dev, bareudp->net, sock,
510 info->key.tp_src = udp_flow_src_port(bareudp->net, skb,
511 bareudp->sport_min,
513 info->key.tp_dst = bareudp->port;
536 .name = "bareudp",
603 struct bareudp_dev *bareudp, *t = NULL;
605 list_for_each_entry(bareudp, &bn->bareudp_list, next) {
606 if (conf->port == bareudp->port)
607 t = bareudp;
617 struct bareudp_dev *t, *bareudp = netdev_priv(dev);
620 bareudp->net = net;
621 bareudp->dev = dev;
624 NL_SET_ERR_MSG(extack, "Another bareudp device using the same port already exists");
635 bareudp->port = conf->port;
636 bareudp->ethertype = conf->ethertype;
637 bareudp->sport_min = conf->sport_min;
638 bareudp->multi_proto_mode = conf->multi_proto_mode;
644 list_add(&bareudp->next, &bn->bareudp_list);
663 struct bareudp_dev *bareudp = netdev_priv(dev);
665 list_del(&bareudp->next);
706 struct bareudp_dev *bareudp = netdev_priv(dev);
708 if (nla_put_be16(skb, IFLA_BAREUDP_PORT, bareudp->port))
710 if (nla_put_be16(skb, IFLA_BAREUDP_ETHERTYPE, bareudp->ethertype))
712 if (nla_put_u16(skb, IFLA_BAREUDP_SRCPORT_MIN, bareudp->sport_min))
714 if (bareudp->multi_proto_mode &&
725 .kind = "bareudp",
748 struct bareudp_dev *bareudp, *next;
750 list_for_each_entry_safe(bareudp, next, &bn->bareudp_list, next)
751 unregister_netdevice_queue(bareudp->dev, head);
802 MODULE_ALIAS_RTNL_LINK("bareudp");