From 41b3881a73a53c60f03ccba3c6c3bbe8d20f8a8e Mon Sep 17 00:00:00 2001 From: Ad Schellevis Date: Wed, 24 Jan 2024 14:03:01 +0100 Subject: [PATCH] Services: Kea DHCP [new]: Leases DHCPv4 - deduplicate records. apparantly kea leases from memory can be duplicated (see also https://gitlab.isc.org/isc-projects/kea/-/issues/2293), use the first two fields (ip+mac) to deduplicate them. closes https://github.com/opnsense/core/issues/7136 --- src/opnsense/scripts/dhcp/get_kea_leases.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/opnsense/scripts/dhcp/get_kea_leases.py b/src/opnsense/scripts/dhcp/get_kea_leases.py index fd1067e58..21455c16b 100755 --- a/src/opnsense/scripts/dhcp/get_kea_leases.py +++ b/src/opnsense/scripts/dhcp/get_kea_leases.py @@ -51,11 +51,14 @@ if __name__ == '__main__': result = {'records': []} header = None + dedup_keys = set() with open(filename, 'r') as csvfile: for idx, record in enumerate(csv.reader(csvfile, delimiter=',', quotechar='"')): + rec_key = ','.join(record[:2]) if idx == 0: header = record - elif header: + elif header and rec_key not in dedup_keys: + dedup_keys.add(rec_key) named_record = {'if': None} for findx, field in enumerate(record): if findx < len(header):