mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2026-04-03 12:05:13 +02:00
Add a Python-based tool for translating XDR specifications into XDR encoder and decoder functions written in the Linux kernel's C coding style. The generator attempts to match the usual C coding style of the Linux kernel's SunRPC consumers. This approach is similar to the netlink code generator in tools/net/ynl . The maintainability benefits of machine-generated XDR code include: - Stronger type checking - Reduces the number of bugs introduced by human error - Makes the XDR code easier to audit and analyze - Enables rapid prototyping of new RPC-based protocols - Hardens the layering between protocol logic and marshaling - Makes it easier to add observability on demand - Unit tests might be built for both the tool and (automatically) for the generated code In addition, converting the XDR layer to use memory-safe languages such as Rust will be easier if much of the code can be converted automatically. Tested-by: Jeff Layton <jlayton@kernel.org> Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
27 lines
500 B
C
27 lines
500 B
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/*
|
|
* Copyright (c) 2024 Oracle and/or its affiliates.
|
|
*
|
|
* This header defines XDR data type primitives specified in
|
|
* Section 4 of RFC 4506, used by RPC programs implemented
|
|
* in the Linux kernel.
|
|
*/
|
|
|
|
#ifndef _SUNRPC_XDRGEN__DEFS_H_
|
|
#define _SUNRPC_XDRGEN__DEFS_H_
|
|
|
|
#define TRUE (true)
|
|
#define FALSE (false)
|
|
|
|
typedef struct {
|
|
u32 len;
|
|
unsigned char *data;
|
|
} string;
|
|
|
|
typedef struct {
|
|
u32 len;
|
|
u8 *data;
|
|
} opaque;
|
|
|
|
#endif /* _SUNRPC_XDRGEN__DEFS_H_ */
|