#include <linux/types.h>
#include <linux/spinlock.h>
#include <linux/sock_diag.h>
#include <linux/unix_diag.h>
#include <linux/skbuff.h>
#include <linux/module.h>
#include <linux/uidgid.h>
#include <net/netlink.h>
#include <net/af_unix.h>
#include <net/tcp_states.h>
#include <net/sock.h>
static int sk_diag_dump_name(struct sock *sk, struct sk_buff *nlskb)
{ … }
static int sk_diag_dump_vfs(struct sock *sk, struct sk_buff *nlskb)
{ … }
static int sk_diag_dump_peer(struct sock *sk, struct sk_buff *nlskb)
{ … }
static int sk_diag_dump_icons(struct sock *sk, struct sk_buff *nlskb)
{ … }
static int sk_diag_show_rqlen(struct sock *sk, struct sk_buff *nlskb)
{ … }
static int sk_diag_dump_uid(struct sock *sk, struct sk_buff *nlskb,
struct user_namespace *user_ns)
{ … }
static int sk_diag_fill(struct sock *sk, struct sk_buff *skb, struct unix_diag_req *req,
struct user_namespace *user_ns,
u32 portid, u32 seq, u32 flags, int sk_ino)
{ … }
static int unix_diag_dump(struct sk_buff *skb, struct netlink_callback *cb)
{ … }
static struct sock *unix_lookup_by_ino(struct net *net, unsigned int ino)
{ … }
static int unix_diag_get_exact(struct sk_buff *in_skb,
const struct nlmsghdr *nlh,
struct unix_diag_req *req)
{ … }
static int unix_diag_handler_dump(struct sk_buff *skb, struct nlmsghdr *h)
{ … }
static const struct sock_diag_handler unix_diag_handler = …;
static int __init unix_diag_init(void)
{ … }
static void __exit unix_diag_exit(void)
{ … }
module_init(…) …;
module_exit(unix_diag_exit);
MODULE_LICENSE(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_ALIAS_NET_PF_PROTO_TYPE(…);