summaryrefslogtreecommitdiff
path: root/tools/net
diff options
context:
space:
mode:
authorChuck Lever <chuck.lever@oracle.com>2024-10-03 14:54:34 -0400
committerChuck Lever <chuck.lever@oracle.com>2024-11-11 13:42:02 -0500
commit3f890755c8f5958ef537a6d8f14de5ec4bfdc3fe (patch)
tree4b9268d9480518fd18b047632a1b8ee17cd9536f /tools/net
parent631c2925bae41c11dcf3915a2ab5f3be9af54277 (diff)
downloadlwn-3f890755c8f5958ef537a6d8f14de5ec4bfdc3fe.tar.gz
lwn-3f890755c8f5958ef537a6d8f14de5ec4bfdc3fe.zip
xdrgen: XDR widths for enum types
RFC 4506 says that an XDR enum is represented as a signed integer on the wire; thus its width is 1 XDR_UNIT. Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Diffstat (limited to 'tools/net')
-rw-r--r--tools/net/sunrpc/xdrgen/xdr_ast.py12
1 files changed, 12 insertions, 0 deletions
diff --git a/tools/net/sunrpc/xdrgen/xdr_ast.py b/tools/net/sunrpc/xdrgen/xdr_ast.py
index f1d93a1d0ed8..fbee954c7f70 100644
--- a/tools/net/sunrpc/xdrgen/xdr_ast.py
+++ b/tools/net/sunrpc/xdrgen/xdr_ast.py
@@ -227,6 +227,18 @@ class _XdrEnum(_XdrAst):
maximum: int
enumerators: List[_XdrEnumerator]
+ def max_width(self) -> int:
+ """Return width of type in XDR_UNITS"""
+ return 1
+
+ def symbolic_width(self) -> List:
+ """Return list containing XDR width of type's components"""
+ return ["XDR_int"]
+
+ def __post_init__(self):
+ max_widths[self.name] = self.max_width()
+ symbolic_widths[self.name] = self.symbolic_width()
+
@dataclass
class _XdrStruct(_XdrAst):