mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-16 05:26:07 +00:00
xdrgen: XDR width for variable-length opaque
The byte size of a variable-length opaque is conveyed in an unsigned integer. If there is a specified maximum size, that is included in the type's widths list. Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
This commit is contained in:
parent
16c98ce04a
commit
b0b85ef754
@ -148,6 +148,21 @@ class _XdrVariableLengthOpaque(_XdrDeclaration):
|
||||
maxsize: str
|
||||
template: str = "variable_length_opaque"
|
||||
|
||||
def max_width(self) -> int:
|
||||
"""Return width of type in XDR_UNITS"""
|
||||
return 1 + xdr_quadlen(self.maxsize)
|
||||
|
||||
def symbolic_width(self) -> List:
|
||||
"""Return list containing XDR width of type's components"""
|
||||
widths = ["XDR_unsigned_int"]
|
||||
if self.maxsize != "0":
|
||||
widths.append("XDR_QUADLEN(" + self.maxsize + ")")
|
||||
return widths
|
||||
|
||||
def __post_init__(self):
|
||||
max_widths[self.name] = self.max_width()
|
||||
symbolic_widths[self.name] = self.symbolic_width()
|
||||
|
||||
|
||||
@dataclass
|
||||
class _XdrString(_XdrDeclaration):
|
||||
|
Loading…
x
Reference in New Issue
Block a user