Lines Matching refs:bareudp

21 #include <net/bareudp.h>
44 struct net_device *dev; /* netdev for bareudp tunnel */
50 struct list_head next; /* bareudp node on namespace list */
57 struct bareudp_dev *bareudp;
64 bareudp = rcu_dereference_sk_user_data(sk);
65 if (!bareudp)
73 if (bareudp->ethertype == htons(ETH_P_IP)) {
78 bareudp->dev->stats.rx_dropped++;
85 } else if (ipversion == 6 && bareudp->multi_proto_mode) {
88 bareudp->dev->stats.rx_dropped++;
91 } else if (bareudp->ethertype == htons(ETH_P_MPLS_UC)) {
97 proto = bareudp->ethertype;
98 } else if (bareudp->multi_proto_mode &&
102 bareudp->dev->stats.rx_dropped++;
113 proto = bareudp->ethertype;
114 } else if (bareudp->multi_proto_mode &&
118 bareudp->dev->stats.rx_dropped++;
123 proto = bareudp->ethertype;
128 !net_eq(bareudp->net,
129 dev_net(bareudp->dev)))) {
130 bareudp->dev->stats.rx_dropped++;
135 bareudp->dev->stats.rx_dropped++;
139 skb->dev = bareudp->dev;
160 ++bareudp->dev->stats.rx_frame_errors;
161 ++bareudp->dev->stats.rx_errors;
167 err = gro_cells_receive(&bareudp->gro_cells, skb);
169 dev_sw_netstats_rx_add(bareudp->dev, len);
186 struct bareudp_dev *bareudp = netdev_priv(dev);
193 err = gro_cells_init(&bareudp->gro_cells, dev);
203 struct bareudp_dev *bareudp = netdev_priv(dev);
205 gro_cells_destroy(&bareudp->gro_cells);
232 static int bareudp_socket_create(struct bareudp_dev *bareudp, __be16 port)
237 sock = bareudp_create_sock(bareudp->net, port);
243 tunnel_cfg.sk_user_data = bareudp;
248 setup_udp_tunnel_sock(bareudp->net, sock, &tunnel_cfg);
250 rcu_assign_pointer(bareudp->sock, sock);
256 struct bareudp_dev *bareudp = netdev_priv(dev);
259 ret = bareudp_socket_create(bareudp, bareudp->port);
263 static void bareudp_sock_release(struct bareudp_dev *bareudp)
267 sock = bareudp->sock;
268 rcu_assign_pointer(bareudp->sock, NULL);
275 struct bareudp_dev *bareudp = netdev_priv(dev);
277 bareudp_sock_release(bareudp);
282 struct bareudp_dev *bareudp,
285 bool xnet = !net_eq(bareudp->net, dev_net(bareudp->dev));
287 struct socket *sock = rcu_dereference(bareudp->sock);
300 rt = ip_route_output_tunnel(skb, dev, bareudp->net, &saddr, info,
309 sport = udp_flow_src_port(bareudp->net, skb,
310 bareudp->sport_min, USHRT_MAX,
332 skb_set_inner_protocol(skb, bareudp->ethertype);
334 tos, ttl, df, sport, bareudp->port,
335 !net_eq(bareudp->net, dev_net(bareudp->dev)),
345 struct bareudp_dev *bareudp,
348 bool xnet = !net_eq(bareudp->net, dev_net(bareudp->dev));
350 struct socket *sock = rcu_dereference(bareudp->sock);
363 dst = ip6_dst_lookup_tunnel(skb, dev, bareudp->net, sock, &saddr, info,
371 sport = udp_flow_src_port(bareudp->net, skb,
372 bareudp->sport_min, USHRT_MAX,
397 info->key.label, sport, bareudp->port,
406 static bool bareudp_proto_valid(struct bareudp_dev *bareudp, __be16 proto)
408 if (bareudp->ethertype == proto)
411 if (!bareudp->multi_proto_mode)
414 if (bareudp->ethertype == htons(ETH_P_MPLS_UC) &&
418 if (bareudp->ethertype == htons(ETH_P_IP) &&
427 struct bareudp_dev *bareudp = netdev_priv(dev);
431 if (!bareudp_proto_valid(bareudp, skb->protocol)) {
444 err = bareudp6_xmit_skb(skb, dev, bareudp, info);
446 err = bareudp_xmit_skb(skb, dev, bareudp, info);
468 struct bareudp_dev *bareudp = netdev_priv(dev);
477 rt = ip_route_output_tunnel(skb, dev, bareudp->net, &saddr,
487 struct socket *sock = rcu_dereference(bareudp->sock);
489 dst = ip6_dst_lookup_tunnel(skb, dev, bareudp->net, sock,
501 info->key.tp_src = udp_flow_src_port(bareudp->net, skb,
502 bareudp->sport_min,
504 info->key.tp_dst = bareudp->port;
527 .name = "bareudp",
596 struct bareudp_dev *bareudp, *t = NULL;
598 list_for_each_entry(bareudp, &bn->bareudp_list, next) {
599 if (conf->port == bareudp->port)
600 t = bareudp;
609 struct bareudp_dev *t, *bareudp = netdev_priv(dev);
612 bareudp->net = net;
613 bareudp->dev = dev;
623 bareudp->port = conf->port;
624 bareudp->ethertype = conf->ethertype;
625 bareudp->sport_min = conf->sport_min;
626 bareudp->multi_proto_mode = conf->multi_proto_mode;
632 list_add(&bareudp->next, &bn->bareudp_list);
651 struct bareudp_dev *bareudp = netdev_priv(dev);
653 list_del(&bareudp->next);
696 struct bareudp_dev *bareudp = netdev_priv(dev);
698 if (nla_put_be16(skb, IFLA_BAREUDP_PORT, bareudp->port))
700 if (nla_put_be16(skb, IFLA_BAREUDP_ETHERTYPE, bareudp->ethertype))
702 if (nla_put_u16(skb, IFLA_BAREUDP_SRCPORT_MIN, bareudp->sport_min))
704 if (bareudp->multi_proto_mode &&
715 .kind = "bareudp",
774 struct bareudp_dev *bareudp, *next;
776 list_for_each_entry_safe(bareudp, next, &bn->bareudp_list, next)
777 unregister_netdevice_queue(bareudp->dev, head);
828 MODULE_ALIAS_RTNL_LINK("bareudp");