From 3884e5dd78689f85dbb573f9bfe19c0b6348565b Mon Sep 17 00:00:00 2001 From: Remi Gacogne Date: Thu, 4 Jul 2024 10:26:48 +0200 Subject: [PATCH] dnsdist: Add information, with better formatting, to our XDP script --- contrib/xdp.py | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/contrib/xdp.py b/contrib/xdp.py index 089e68d9b1..46725e8fd6 100644 --- a/contrib/xdp.py +++ b/contrib/xdp.py @@ -120,16 +120,26 @@ try: except KeyboardInterrupt: pass -for item in v4filter.items(): - print(f"{str(netaddr.IPAddress(item[0].value))} ({ACTIONS[item[1].action]}): {item[1].counter}") -for item in v6filter.items(): - print(f"{str(socket.inet_ntop(socket.AF_INET6, item[0]))} ({ACTIONS[item[1].action]}): {item[1].counter}") -for item in cidr4filter.items(): - addr = netaddr.IPAddress(socket.ntohl(item[0].addr)) - print(f"{str(addr)}/{str(item[0].cidr)} ({ACTIONS[item[1].action]}): {item[1].counter}") -for item in cidr6filter.items(): - print(f"{str(socket.inet_ntop(socket.AF_INET6, item[0].addr))}/{str(item[0].cidr)} ({ACTIONS[item[1].action]}): {item[1].counter}") -for item in qnamefilter.items(): - print(f"{''.join(map(chr, item[0].qname)).strip()}/{INV_QTYPES[item[0].qtype]} ({ACTIONS[item[1].action]}): {item[1].counter}") +if v4filter or v6filter or cidr4filter or cidr6filter: + print("Blocked networks:") + for item in v4filter.items(): + print(f"- {str(netaddr.IPAddress(item[0].value))} ({ACTIONS[item[1].action]}): {item[1].counter}") + for item in v6filter.items(): + print(f"- {str(socket.inet_ntop(socket.AF_INET6, item[0]))} ({ACTIONS[item[1].action]}): {item[1].counter}") + for item in cidr4filter.items(): + addr = netaddr.IPAddress(socket.ntohl(item[0].addr)) + print(f"- {str(addr)}/{str(item[0].cidr)} ({ACTIONS[item[1].action]}): {item[1].counter}") + for item in cidr6filter.items(): + print(f"- {str(socket.inet_ntop(socket.AF_INET6, item[0].addr))}/{str(item[0].cidr)} ({ACTIONS[item[1].action]}): {item[1].counter}") + +if qnamefilter: + print("Blocked query names:") + for item in qnamefilter.items(): + print(f"- {''.join(map(chr, item[0].qname)).strip()}/{INV_QTYPES[item[0].qtype]} ({ACTIONS[item[1].action]}): {item[1].counter}") + +if parameters.xsk and xskDestinations: + print("Content of the AF_XDP (XSK) routing map:") + for item in xskDestinations.items(): + print(f"- {str(netaddr.IPAddress(socket.ntohl(item[0].addr)))}:{str(socket.ntohs(item[0].port))}") xdp.remove_xdp(parameters.interface, 0) -- 2.47.2