From 116682082a75f0fe992cba440f3b97ec45a96d83 Mon Sep 17 00:00:00 2001 From: Jarrod Johnson Date: Fri, 29 May 2020 17:32:45 -0400 Subject: [PATCH] Fix reply on nonfunctional nic If a nic was up but without IPv4, do not reply even if the kernel is 'helping' us to be in the ballpark. --- confluent_server/confluent/discovery/protocols/pxe.py | 3 +++ confluent_server/confluent/netutil.py | 2 ++ 2 files changed, 5 insertions(+) diff --git a/confluent_server/confluent/discovery/protocols/pxe.py b/confluent_server/confluent/discovery/protocols/pxe.py index a9bca47a..ab454a87 100644 --- a/confluent_server/confluent/discovery/protocols/pxe.py +++ b/confluent_server/confluent/discovery/protocols/pxe.py @@ -469,6 +469,9 @@ def check_reply(node, info, packet, sock, cfg, reqview): gateway = None netmask = None niccfg = netutil.get_nic_config(cfg, node, ifidx=info['netinfo']['ifidx']) + if niccfg.get('ipv4_broken', False): + # Received a request over a nic with no ipv4 configured, ignore it + return clipn = None if niccfg['ipv4_address']: clipn = socket.inet_aton(niccfg['ipv4_address']) diff --git a/confluent_server/confluent/netutil.py b/confluent_server/confluent/netutil.py index 100da8b0..4ea3beb2 100644 --- a/confluent_server/confluent/netutil.py +++ b/confluent_server/confluent/netutil.py @@ -177,6 +177,8 @@ def get_nic_config(configmanager, node, ip=None, mac=None, ifidx=None, if ifidx is not None: dhcprequested = False nets = list(idxtonets(ifidx)) + if not nets: + cfgdata['ipv4_broken'] = True if serverip is not None: needsvrip = True dhcprequested = False