#include <linux/module.h>
#include <net/xdp_sock.h>
#include <linux/xdp_diag.h>
#include <linux/sock_diag.h>
#include "xsk_queue.h"
#include "xsk.h"
static int xsk_diag_put_info(const struct xdp_sock *xs, struct sk_buff *nlskb)
{ … }
static int xsk_diag_put_ring(const struct xsk_queue *queue, int nl_type,
struct sk_buff *nlskb)
{ … }
static int xsk_diag_put_rings_cfg(const struct xdp_sock *xs,
struct sk_buff *nlskb)
{ … }
static int xsk_diag_put_umem(const struct xdp_sock *xs, struct sk_buff *nlskb)
{ … }
static int xsk_diag_put_stats(const struct xdp_sock *xs, struct sk_buff *nlskb)
{ … }
static int xsk_diag_fill(struct sock *sk, struct sk_buff *nlskb,
struct xdp_diag_req *req,
struct user_namespace *user_ns,
u32 portid, u32 seq, u32 flags, int sk_ino)
{ … }
static int xsk_diag_dump(struct sk_buff *nlskb, struct netlink_callback *cb)
{ … }
static int xsk_diag_handler_dump(struct sk_buff *nlskb, struct nlmsghdr *hdr)
{ … }
static const struct sock_diag_handler xsk_diag_handler = …;
static int __init xsk_diag_init(void)
{ … }
static void __exit xsk_diag_exit(void)
{ … }
module_init(…) …;
module_exit(xsk_diag_exit);
MODULE_LICENSE(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_ALIAS_NET_PF_PROTO_TYPE(…);