#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/types.h>
#include <linux/init.h>
#include <linux/sock_diag.h>
#include <linux/inet_diag.h>
#include <linux/smc_diag.h>
#include <net/netlink.h>
#include <net/smc.h>
#include "smc.h"
#include "smc_core.h"
#include "smc_ism.h"
struct smc_diag_dump_ctx { … };
static struct smc_diag_dump_ctx *smc_dump_context(struct netlink_callback *cb)
{ … }
static void smc_diag_msg_common_fill(struct smc_diag_msg *r, struct sock *sk)
{ … }
static int smc_diag_msg_attrs_fill(struct sock *sk, struct sk_buff *skb,
struct smc_diag_msg *r,
struct user_namespace *user_ns)
{ … }
static int __smc_diag_dump(struct sock *sk, struct sk_buff *skb,
struct netlink_callback *cb,
const struct smc_diag_req *req,
struct nlattr *bc)
{ … }
static int smc_diag_dump_proto(struct proto *prot, struct sk_buff *skb,
struct netlink_callback *cb, int p_type)
{ … }
static int smc_diag_dump(struct sk_buff *skb, struct netlink_callback *cb)
{ … }
static int smc_diag_handler_dump(struct sk_buff *skb, struct nlmsghdr *h)
{ … }
static const struct sock_diag_handler smc_diag_handler = …;
static int __init smc_diag_init(void)
{ … }
static void __exit smc_diag_exit(void)
{ … }
module_init(…) …;
module_exit(smc_diag_exit);
MODULE_LICENSE(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_ALIAS_NET_PF_PROTO_TYPE(…);
MODULE_ALIAS_GENL_FAMILY(…);