Skip to content

Commit 0a966d6

Browse files
donaldhkuba-moo
authored andcommitted
tools/net/ynl: Fix extack decoding for directional ops
NetlinkProtocol.decode() was looking up ops by response value which breaks when it is used for extack decoding of directional ops. Instead, pass the op to decode(). Signed-off-by: Donald Hunter <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Jakub Kicinski <[email protected]>
1 parent 1ee7316 commit 0a966d6

File tree

1 file changed

+6
-8
lines changed

1 file changed

+6
-8
lines changed

tools/net/ynl/lib/ynl.py

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -386,12 +386,9 @@ def message(self, flags, command, version, seq=None):
386386
def _decode(self, nl_msg):
387387
return nl_msg
388388

389-
def decode(self, ynl, nl_msg):
389+
def decode(self, ynl, nl_msg, op):
390390
msg = self._decode(nl_msg)
391-
fixed_header_size = 0
392-
if ynl:
393-
op = ynl.rsp_by_value[msg.cmd()]
394-
fixed_header_size = ynl._struct_size(op.fixed_header)
391+
fixed_header_size = ynl._struct_size(op.fixed_header)
395392
msg.raw_attrs = NlAttrs(msg.raw, fixed_header_size)
396393
return msg
397394

@@ -797,7 +794,7 @@ def _decode_extack(self, request, op, extack):
797794
if 'bad-attr-offs' not in extack:
798795
return
799796

800-
msg = self.nlproto.decode(self, NlMsg(request, 0, op.attr_set))
797+
msg = self.nlproto.decode(self, NlMsg(request, 0, op.attr_set), op)
801798
offset = self.nlproto.msghdr_size() + self._struct_size(op.fixed_header)
802799
path = self._decode_extack_path(msg.raw_attrs, op.attr_set, offset,
803800
extack['bad-attr-offs'])
@@ -922,7 +919,8 @@ def check_ntf(self):
922919
print("Netlink done while checking for ntf!?")
923920
continue
924921

925-
decoded = self.nlproto.decode(self, nl_msg)
922+
op = self.rsp_by_value[nl_msg.cmd()]
923+
decoded = self.nlproto.decode(self, nl_msg, op)
926924
if decoded.cmd() not in self.async_msg_ids:
927925
print("Unexpected msg id done while checking for ntf", decoded)
928926
continue
@@ -979,7 +977,7 @@ def _op(self, method, vals, flags=None, dump=False):
979977
done = True
980978
break
981979

982-
decoded = self.nlproto.decode(self, nl_msg)
980+
decoded = self.nlproto.decode(self, nl_msg, op)
983981

984982
# Check if this is a reply to our request
985983
if nl_msg.nl_seq != req_seq or decoded.cmd() != op.rsp_value:

0 commit comments

Comments
 (0)