#define pr_fmt(fmt) …
#include <linux/export.h>
#include <net/netlink.h>
#include <net/net_namespace.h>
#include <net/netns/generic.h>
#include <net/sock.h>
#include <rdma/rdma_netlink.h>
#include <linux/module.h>
#include "core_priv.h"
static struct { … } rdma_nl_types[RDMA_NL_NUM_CLIENTS];
bool rdma_nl_chk_listeners(unsigned int group)
{ … }
EXPORT_SYMBOL(…);
static bool is_nl_msg_valid(unsigned int type, unsigned int op)
{ … }
static const struct rdma_nl_cbs *
get_cb_table(const struct sk_buff *skb, unsigned int type, unsigned int op)
{ … }
void rdma_nl_register(unsigned int index,
const struct rdma_nl_cbs cb_table[])
{ … }
EXPORT_SYMBOL(…);
void rdma_nl_unregister(unsigned int index)
{ … }
EXPORT_SYMBOL(…);
void *ibnl_put_msg(struct sk_buff *skb, struct nlmsghdr **nlh, int seq,
int len, int client, int op, int flags)
{ … }
EXPORT_SYMBOL(…);
int ibnl_put_attr(struct sk_buff *skb, struct nlmsghdr *nlh,
int len, void *data, int type)
{ … }
EXPORT_SYMBOL(…);
static int rdma_nl_rcv_msg(struct sk_buff *skb, struct nlmsghdr *nlh,
struct netlink_ext_ack *extack)
{ … }
static int rdma_nl_rcv_skb(struct sk_buff *skb, int (*cb)(struct sk_buff *,
struct nlmsghdr *,
struct netlink_ext_ack *))
{ … }
static void rdma_nl_rcv(struct sk_buff *skb)
{ … }
int rdma_nl_unicast(struct net *net, struct sk_buff *skb, u32 pid)
{ … }
EXPORT_SYMBOL(…);
int rdma_nl_unicast_wait(struct net *net, struct sk_buff *skb, __u32 pid)
{ … }
EXPORT_SYMBOL(…);
int rdma_nl_multicast(struct net *net, struct sk_buff *skb,
unsigned int group, gfp_t flags)
{ … }
EXPORT_SYMBOL(…);
void rdma_nl_init(void)
{ … }
void rdma_nl_exit(void)
{ … }
int rdma_nl_net_init(struct rdma_dev_net *rnet)
{ … }
void rdma_nl_net_exit(struct rdma_dev_net *rnet)
{ … }
MODULE_ALIAS_NET_PF_PROTO(…);