mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-05 16:54:27 +00:00
NFSD: introduce netlink stubs
Generate stubs and uAPI for nfsd netlink protocol. For the moment, the new protocol has one operation: rpc_status. The generated header and source files are created by running: tools/net/ynl/ynl-regen.sh Tested-by: Jeff Layton <jlayton@kernel.org> Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org> Acked-by: Jeff Layton <jlayton@kernel.org> Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
This commit is contained in:
parent
6c41d9a9bd
commit
13727f85b4
6 changed files with 201 additions and 1 deletions
89
Documentation/netlink/specs/nfsd.yaml
Normal file
89
Documentation/netlink/specs/nfsd.yaml
Normal file
|
@ -0,0 +1,89 @@
|
||||||
|
# SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause)
|
||||||
|
|
||||||
|
name: nfsd
|
||||||
|
protocol: genetlink
|
||||||
|
uapi-header: linux/nfsd_netlink.h
|
||||||
|
|
||||||
|
doc: NFSD configuration over generic netlink.
|
||||||
|
|
||||||
|
attribute-sets:
|
||||||
|
-
|
||||||
|
name: rpc-status
|
||||||
|
attributes:
|
||||||
|
-
|
||||||
|
name: xid
|
||||||
|
type: u32
|
||||||
|
byte-order: big-endian
|
||||||
|
-
|
||||||
|
name: flags
|
||||||
|
type: u32
|
||||||
|
-
|
||||||
|
name: prog
|
||||||
|
type: u32
|
||||||
|
-
|
||||||
|
name: version
|
||||||
|
type: u8
|
||||||
|
-
|
||||||
|
name: proc
|
||||||
|
type: u32
|
||||||
|
-
|
||||||
|
name: service_time
|
||||||
|
type: s64
|
||||||
|
-
|
||||||
|
name: pad
|
||||||
|
type: pad
|
||||||
|
-
|
||||||
|
name: saddr4
|
||||||
|
type: u32
|
||||||
|
byte-order: big-endian
|
||||||
|
display-hint: ipv4
|
||||||
|
-
|
||||||
|
name: daddr4
|
||||||
|
type: u32
|
||||||
|
byte-order: big-endian
|
||||||
|
display-hint: ipv4
|
||||||
|
-
|
||||||
|
name: saddr6
|
||||||
|
type: binary
|
||||||
|
display-hint: ipv6
|
||||||
|
-
|
||||||
|
name: daddr6
|
||||||
|
type: binary
|
||||||
|
display-hint: ipv6
|
||||||
|
-
|
||||||
|
name: sport
|
||||||
|
type: u16
|
||||||
|
byte-order: big-endian
|
||||||
|
-
|
||||||
|
name: dport
|
||||||
|
type: u16
|
||||||
|
byte-order: big-endian
|
||||||
|
-
|
||||||
|
name: compound-ops
|
||||||
|
type: u32
|
||||||
|
multi-attr: true
|
||||||
|
|
||||||
|
operations:
|
||||||
|
list:
|
||||||
|
-
|
||||||
|
name: rpc-status-get
|
||||||
|
doc: dump pending nfsd rpc
|
||||||
|
attribute-set: rpc-status
|
||||||
|
dump:
|
||||||
|
pre: nfsd-nl-rpc-status-get-start
|
||||||
|
post: nfsd-nl-rpc-status-get-done
|
||||||
|
reply:
|
||||||
|
attributes:
|
||||||
|
- xid
|
||||||
|
- flags
|
||||||
|
- prog
|
||||||
|
- version
|
||||||
|
- proc
|
||||||
|
- service_time
|
||||||
|
- saddr4
|
||||||
|
- daddr4
|
||||||
|
- saddr6
|
||||||
|
- daddr6
|
||||||
|
- sport
|
||||||
|
- dport
|
||||||
|
- compound-ops
|
|
@ -12,7 +12,8 @@ nfsd-y += trace.o
|
||||||
|
|
||||||
nfsd-y += nfssvc.o nfsctl.o nfsfh.o vfs.o \
|
nfsd-y += nfssvc.o nfsctl.o nfsfh.o vfs.o \
|
||||||
export.o auth.o lockd.o nfscache.o \
|
export.o auth.o lockd.o nfscache.o \
|
||||||
stats.o filecache.o nfs3proc.o nfs3xdr.o
|
stats.o filecache.o nfs3proc.o nfs3xdr.o \
|
||||||
|
netlink.o
|
||||||
nfsd-$(CONFIG_NFSD_V2) += nfsproc.o nfsxdr.o
|
nfsd-$(CONFIG_NFSD_V2) += nfsproc.o nfsxdr.o
|
||||||
nfsd-$(CONFIG_NFSD_V2_ACL) += nfs2acl.o
|
nfsd-$(CONFIG_NFSD_V2_ACL) += nfs2acl.o
|
||||||
nfsd-$(CONFIG_NFSD_V3_ACL) += nfs3acl.o
|
nfsd-$(CONFIG_NFSD_V3_ACL) += nfs3acl.o
|
||||||
|
|
32
fs/nfsd/netlink.c
Normal file
32
fs/nfsd/netlink.c
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
// SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause)
|
||||||
|
/* Do not edit directly, auto-generated from: */
|
||||||
|
/* Documentation/netlink/specs/nfsd.yaml */
|
||||||
|
/* YNL-GEN kernel source */
|
||||||
|
|
||||||
|
#include <net/netlink.h>
|
||||||
|
#include <net/genetlink.h>
|
||||||
|
|
||||||
|
#include "netlink.h"
|
||||||
|
|
||||||
|
#include <uapi/linux/nfsd_netlink.h>
|
||||||
|
|
||||||
|
/* Ops table for nfsd */
|
||||||
|
static const struct genl_split_ops nfsd_nl_ops[] = {
|
||||||
|
{
|
||||||
|
.cmd = NFSD_CMD_RPC_STATUS_GET,
|
||||||
|
.start = nfsd_nl_rpc_status_get_start,
|
||||||
|
.dumpit = nfsd_nl_rpc_status_get_dumpit,
|
||||||
|
.done = nfsd_nl_rpc_status_get_done,
|
||||||
|
.flags = GENL_CMD_CAP_DUMP,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
struct genl_family nfsd_nl_family __ro_after_init = {
|
||||||
|
.name = NFSD_FAMILY_NAME,
|
||||||
|
.version = NFSD_FAMILY_VERSION,
|
||||||
|
.netnsok = true,
|
||||||
|
.parallel_ops = true,
|
||||||
|
.module = THIS_MODULE,
|
||||||
|
.split_ops = nfsd_nl_ops,
|
||||||
|
.n_split_ops = ARRAY_SIZE(nfsd_nl_ops),
|
||||||
|
};
|
22
fs/nfsd/netlink.h
Normal file
22
fs/nfsd/netlink.h
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) */
|
||||||
|
/* Do not edit directly, auto-generated from: */
|
||||||
|
/* Documentation/netlink/specs/nfsd.yaml */
|
||||||
|
/* YNL-GEN kernel header */
|
||||||
|
|
||||||
|
#ifndef _LINUX_NFSD_GEN_H
|
||||||
|
#define _LINUX_NFSD_GEN_H
|
||||||
|
|
||||||
|
#include <net/netlink.h>
|
||||||
|
#include <net/genetlink.h>
|
||||||
|
|
||||||
|
#include <uapi/linux/nfsd_netlink.h>
|
||||||
|
|
||||||
|
int nfsd_nl_rpc_status_get_start(struct netlink_callback *cb);
|
||||||
|
int nfsd_nl_rpc_status_get_done(struct netlink_callback *cb);
|
||||||
|
|
||||||
|
int nfsd_nl_rpc_status_get_dumpit(struct sk_buff *skb,
|
||||||
|
struct netlink_callback *cb);
|
||||||
|
|
||||||
|
extern struct genl_family nfsd_nl_family;
|
||||||
|
|
||||||
|
#endif /* _LINUX_NFSD_GEN_H */
|
|
@ -26,6 +26,7 @@
|
||||||
#include "pnfs.h"
|
#include "pnfs.h"
|
||||||
#include "filecache.h"
|
#include "filecache.h"
|
||||||
#include "trace.h"
|
#include "trace.h"
|
||||||
|
#include "netlink.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* We have a single directory with several nodes in it.
|
* We have a single directory with several nodes in it.
|
||||||
|
@ -1495,6 +1496,22 @@ static int create_proc_exports_entry(void)
|
||||||
|
|
||||||
unsigned int nfsd_net_id;
|
unsigned int nfsd_net_id;
|
||||||
|
|
||||||
|
int nfsd_nl_rpc_status_get_start(struct netlink_callback *cb)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int nfsd_nl_rpc_status_get_dumpit(struct sk_buff *skb,
|
||||||
|
struct netlink_callback *cb)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int nfsd_nl_rpc_status_get_done(struct netlink_callback *cb)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* nfsd_net_init - Prepare the nfsd_net portion of a new net namespace
|
* nfsd_net_init - Prepare the nfsd_net portion of a new net namespace
|
||||||
* @net: a freshly-created network namespace
|
* @net: a freshly-created network namespace
|
||||||
|
|
39
include/uapi/linux/nfsd_netlink.h
Normal file
39
include/uapi/linux/nfsd_netlink.h
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) */
|
||||||
|
/* Do not edit directly, auto-generated from: */
|
||||||
|
/* Documentation/netlink/specs/nfsd.yaml */
|
||||||
|
/* YNL-GEN uapi header */
|
||||||
|
|
||||||
|
#ifndef _UAPI_LINUX_NFSD_H
|
||||||
|
#define _UAPI_LINUX_NFSD_H
|
||||||
|
|
||||||
|
#define NFSD_FAMILY_NAME "nfsd"
|
||||||
|
#define NFSD_FAMILY_VERSION 1
|
||||||
|
|
||||||
|
enum {
|
||||||
|
NFSD_A_RPC_STATUS_XID = 1,
|
||||||
|
NFSD_A_RPC_STATUS_FLAGS,
|
||||||
|
NFSD_A_RPC_STATUS_PROG,
|
||||||
|
NFSD_A_RPC_STATUS_VERSION,
|
||||||
|
NFSD_A_RPC_STATUS_PROC,
|
||||||
|
NFSD_A_RPC_STATUS_SERVICE_TIME,
|
||||||
|
NFSD_A_RPC_STATUS_PAD,
|
||||||
|
NFSD_A_RPC_STATUS_SADDR4,
|
||||||
|
NFSD_A_RPC_STATUS_DADDR4,
|
||||||
|
NFSD_A_RPC_STATUS_SADDR6,
|
||||||
|
NFSD_A_RPC_STATUS_DADDR6,
|
||||||
|
NFSD_A_RPC_STATUS_SPORT,
|
||||||
|
NFSD_A_RPC_STATUS_DPORT,
|
||||||
|
NFSD_A_RPC_STATUS_COMPOUND_OPS,
|
||||||
|
|
||||||
|
__NFSD_A_RPC_STATUS_MAX,
|
||||||
|
NFSD_A_RPC_STATUS_MAX = (__NFSD_A_RPC_STATUS_MAX - 1)
|
||||||
|
};
|
||||||
|
|
||||||
|
enum {
|
||||||
|
NFSD_CMD_RPC_STATUS_GET = 1,
|
||||||
|
|
||||||
|
__NFSD_CMD_MAX,
|
||||||
|
NFSD_CMD_MAX = (__NFSD_CMD_MAX - 1)
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* _UAPI_LINUX_NFSD_H */
|
Loading…
Add table
Reference in a new issue