xref: /linux/net/smc/smc_netlink.h (revision 03ab8e6297acd1bc0eedaa050e2a1635c576fd11)
1e8372d9dSGuvenc Gulce /* SPDX-License-Identifier: GPL-2.0 */
2e8372d9dSGuvenc Gulce /*
3e8372d9dSGuvenc Gulce  * Shared Memory Communications over RDMA (SMC-R) and RoCE
4e8372d9dSGuvenc Gulce  *
5e8372d9dSGuvenc Gulce  *  SMC Generic netlink operations
6e8372d9dSGuvenc Gulce  *
7e8372d9dSGuvenc Gulce  *  Copyright IBM Corp. 2020
8e8372d9dSGuvenc Gulce  *
9e8372d9dSGuvenc Gulce  *  Author(s):	Guvenc Gulce <guvenc@linux.ibm.com>
10e8372d9dSGuvenc Gulce  */
11e8372d9dSGuvenc Gulce 
12e8372d9dSGuvenc Gulce #ifndef _SMC_NETLINK_H
13e8372d9dSGuvenc Gulce #define _SMC_NETLINK_H
14e8372d9dSGuvenc Gulce 
15e8372d9dSGuvenc Gulce #include <net/netlink.h>
16e8372d9dSGuvenc Gulce #include <net/genetlink.h>
17e8372d9dSGuvenc Gulce 
18e8372d9dSGuvenc Gulce extern struct genl_family smc_gen_nl_family;
19e8372d9dSGuvenc Gulce 
20*fa086662SKarsten Graul extern const struct nla_policy smc_gen_ueid_policy[];
21*fa086662SKarsten Graul 
22099b990bSGuvenc Gulce struct smc_nl_dmp_ctx {
23f0dd7bf5SGuvenc Gulce 	int pos[3];
24099b990bSGuvenc Gulce };
25099b990bSGuvenc Gulce 
smc_nl_dmp_ctx(struct netlink_callback * c)26099b990bSGuvenc Gulce static inline struct smc_nl_dmp_ctx *smc_nl_dmp_ctx(struct netlink_callback *c)
27099b990bSGuvenc Gulce {
28099b990bSGuvenc Gulce 	return (struct smc_nl_dmp_ctx *)c->ctx;
29099b990bSGuvenc Gulce }
30099b990bSGuvenc Gulce 
31e8372d9dSGuvenc Gulce int smc_nl_init(void) __init;
32e8372d9dSGuvenc Gulce void smc_nl_exit(void);
33e8372d9dSGuvenc Gulce 
34e8372d9dSGuvenc Gulce #endif
35