Skip to content

Commit a6a4152

Browse files
kuba-moodavem330
authored andcommitted
tools: ynl: support debug printing messages
For manual debug, allow printing the netlink level messages to stderr. Reviewed-by: Donald Hunter <donald.hunter@gmail.com> Signed-off-by: Jakub Kicinski <kuba@kernel.org> Signed-off-by: David S. Miller <davem@davemloft.net>
1 parent 7c93a88 commit a6a4152

File tree

1 file changed

+15
-0
lines changed

1 file changed

+15
-0
lines changed

tools/net/ynl/lib/ynl.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import socket
88
import struct
99
from struct import Struct
10+
import sys
1011
import yaml
1112
import ipaddress
1213
import uuid
@@ -420,6 +421,7 @@ def __init__(self, def_path, schema=None, process_unknown=False,
420421
except KeyError:
421422
raise Exception(f"Family '{self.yaml['name']}' not supported by the kernel")
422423

424+
self._recv_dbg = False
423425
# Note that netlink will use conservative (min) message size for
424426
# the first dump recv() on the socket, our setting will only matter
425427
# from the second recv() on.
@@ -453,6 +455,17 @@ def ntf_subscribe(self, mcast_name):
453455
self.sock.setsockopt(Netlink.SOL_NETLINK, Netlink.NETLINK_ADD_MEMBERSHIP,
454456
mcast_id)
455457

458+
def set_recv_dbg(self, enabled):
459+
self._recv_dbg = enabled
460+
461+
def _recv_dbg_print(self, reply, nl_msgs):
462+
if not self._recv_dbg:
463+
return
464+
print("Recv: read", len(reply), "bytes,",
465+
len(nl_msgs.msgs), "messages", file=sys.stderr)
466+
for nl_msg in nl_msgs:
467+
print(" ", nl_msg, file=sys.stderr)
468+
456469
def _encode_enum(self, attr_spec, value):
457470
enum = self.consts[attr_spec['enum']]
458471
if enum.type == 'flags' or attr_spec.get('enum-as-flags', False):
@@ -819,6 +832,7 @@ def check_ntf(self):
819832
return
820833

821834
nms = NlMsgs(reply)
835+
self._recv_dbg_print(reply, nms)
822836
for nl_msg in nms:
823837
if nl_msg.error:
824838
print("Netlink error in ntf!?", os.strerror(-nl_msg.error))
@@ -871,6 +885,7 @@ def _op(self, method, vals, flags=None, dump=False):
871885
while not done:
872886
reply = self.sock.recv(self._recv_size)
873887
nms = NlMsgs(reply, attr_space=op.attr_set)
888+
self._recv_dbg_print(reply, nms)
874889
for nl_msg in nms:
875890
if nl_msg.extack:
876891
self._decode_extack(msg, op, nl_msg.extack)

0 commit comments

Comments
 (0)