The auth.unix.ip and auth.unix.gid caches live in the sunrpc module, so they cannot use the nfsd generic netlink family. Create a new "sunrpc" generic netlink family with its own "exportd" multicast group to support cache upcall notifications for sunrpc-resident caches. Define a YAML spec (sunrpc_cache.yaml) with a cache-type enum (ip_map, unix_gid), a cache-notify multicast event, and the corresponding uapi header. Implement sunrpc_cache_notify() in cache.c, which checks for listeners on the exportd multicast group, builds and sends a SUNRPC_CMD_CACHE_NOTIFY message with the cache-type attribute. Register/unregister the sunrpc_nl_family in init_sunrpc() and cleanup_sunrpc().
Showing the changes to include/uapi (1 of 8 files). Show all
Unified · Split
| @@ -0,0 +1,35 @@ | ||
| 1 | +/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) */ | |
| 2 | +/* Do not edit directly, auto-generated from: */ | |
| 3 | +/* Documentation/netlink/specs/sunrpc_cache.yaml */ | |
| 4 | +/* YNL-GEN uapi header */ | |
| 5 | +/* To regenerate run: tools/net/ynl/ynl-regen.sh */ | |
| 6 | + | |
| 7 | +#ifndef _UAPI_LINUX_SUNRPC_NETLINK_H | |
| 8 | +#define _UAPI_LINUX_SUNRPC_NETLINK_H | |
| 9 | + | |
| 10 | +#define SUNRPC_FAMILY_NAME "sunrpc" | |
| 11 | +#define SUNRPC_FAMILY_VERSION 1 | |
| 12 | + | |
| 13 | +enum sunrpc_cache_type { | |
| 14 | + SUNRPC_CACHE_TYPE_IP_MAP = 1, | |
| 15 | + SUNRPC_CACHE_TYPE_UNIX_GID = 2, | |
| 16 | +}; | |
| 17 | + | |
| 18 | +enum { | |
| 19 | + SUNRPC_A_CACHE_NOTIFY_CACHE_TYPE = 1, | |
| 20 | + | |
| 21 | + __SUNRPC_A_CACHE_NOTIFY_MAX, | |
| 22 | + SUNRPC_A_CACHE_NOTIFY_MAX = (__SUNRPC_A_CACHE_NOTIFY_MAX - 1) | |
| 23 | +}; | |
| 24 | + | |
| 25 | +enum { | |
| 26 | + SUNRPC_CMD_CACHE_NOTIFY = 1, | |
| 27 | + | |
| 28 | + __SUNRPC_CMD_MAX, | |
| 29 | + SUNRPC_CMD_MAX = (__SUNRPC_CMD_MAX - 1) | |
| 30 | +}; | |
| 31 | + | |
| 32 | +#define SUNRPC_MCGRP_NONE "none" | |
| 33 | +#define SUNRPC_MCGRP_EXPORTD "exportd" | |
| 34 | + | |
| 35 | +#endif /* _UAPI_LINUX_SUNRPC_NETLINK_H */ | |