mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-17 20:25:19 +00:00
xdp: add bpf_redirect helper function
This adds support for a bpf_redirect helper function to the XDP infrastructure. For now this only supports redirecting to the egress path of a port. In order to support drivers handling a xdp_buff natively this patches uses a new ndo operation ndo_xdp_xmit() that takes pushes a xdp_buff to the specified device. If the program specifies either (a) an unknown device or (b) a device that does not support the operation a BPF warning is thrown and the XDP_ABORTED error code is returned. Signed-off-by: John Fastabend <john.fastabend@gmail.com> Acked-by: Daniel Borkmann <daniel@iogearbox.net> Acked-by: Jesper Dangaard Brouer <brouer@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
d445516966
commit
814abfabef
4 changed files with 63 additions and 0 deletions
|
@ -66,6 +66,7 @@ struct mpls_dev;
|
|||
/* UDP Tunnel offloads */
|
||||
struct udp_tunnel_info;
|
||||
struct bpf_prog;
|
||||
struct xdp_buff;
|
||||
|
||||
void netdev_set_default_ethtool_ops(struct net_device *dev,
|
||||
const struct ethtool_ops *ops);
|
||||
|
@ -1138,6 +1139,9 @@ struct xfrmdev_ops {
|
|||
* int (*ndo_xdp)(struct net_device *dev, struct netdev_xdp *xdp);
|
||||
* This function is used to set or query state related to XDP on the
|
||||
* netdevice. See definition of enum xdp_netdev_command for details.
|
||||
* int (*ndo_xdp_xmit)(struct net_device *dev, struct xdp_buff *xdp);
|
||||
* This function is used to submit a XDP packet for transmit on a
|
||||
* netdevice.
|
||||
*
|
||||
*/
|
||||
struct net_device_ops {
|
||||
|
@ -1323,6 +1327,8 @@ struct net_device_ops {
|
|||
int needed_headroom);
|
||||
int (*ndo_xdp)(struct net_device *dev,
|
||||
struct netdev_xdp *xdp);
|
||||
int (*ndo_xdp_xmit)(struct net_device *dev,
|
||||
struct xdp_buff *xdp);
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue