Print eui64 too while printing clients
[snf-nfdhcpd] / nfdhcpd
diff --git a/nfdhcpd b/nfdhcpd
index 41980ce..c66c435 100755 (executable)
--- a/nfdhcpd
+++ b/nfdhcpd
@@ -550,11 +550,13 @@ class VMNetProxy(object):  # pylint: disable=R0902
             if b.is_valid():
                 if self.mac_indexed_clients:
                     self.clients[b.mac] = b
+                    k = b.mac
                 else:
                     self.clients[ifindex] = b
-                logging.debug(" - Added client:")
-                logging.debug(" + %5s: %10s %20s %7s %15s",
-                               ifindex, b.hostname, b.mac, b.tap, b.ip)
+                    k = ifindex
+                logging.info(" - Added client:")
+                logging.info(" + %10s | %20s %20s %10s %20s %40s",
+                             k, b.hostname, b.mac, b.tap, b.ip, b.eui64)
 
     def remove_tap(self, tap):
         """ Cleanup clients on a removed interface
@@ -565,8 +567,8 @@ class VMNetProxy(object):  # pylint: disable=R0902
                 if cl.tap == tap:
                     logging.info("Removing client %s and closing socket on %s",
                                  cl.hostname, cl.tap)
-                    logging.debug(" - %10s | %10s %20s %10s %20s",
-                                  k, cl.hostname, cl.mac, cl.tap, cl.ip)
+                    logging.info(" - %10s | %20s %20s %10s %20s %40s",
+                                 k, cl.hostname, cl.mac, cl.tap, cl.ip, cl.eui64)
                     cl.socket.close()
                     del self.clients[k]
         except:
@@ -740,6 +742,10 @@ class VMNetProxy(object):  # pylint: disable=R0902
 
         subnet = binding.net6
 
+        if subnet.net is None:
+            logging.debug(" - No IPv6 network assigned for tap %s", binding.tap)
+            return
+
         indevmac = self.get_iface_hw_addr(binding.indev)
         ifll = subnet.make_ll64(indevmac)
         if ifll is None:
@@ -952,7 +958,7 @@ class VMNetProxy(object):  # pylint: disable=R0902
             if ifll is None:
                 continue
             resp = Ether(src=indevmac)/\
-                   IPv6(src=str(ifll))/ICMPv6ND_RA(routerlifetime=14400)/\
+                   IPv6(src=str(ifll))/ICMPv6ND_RA(O=1, routerlifetime=14400)/\
                    ICMPv6NDOptPrefixInfo(prefix=str(subnet.prefix),
                                          prefixlen=subnet.prefixlen)
             if self.ipv6_nameservers:
@@ -1040,11 +1046,11 @@ class VMNetProxy(object):  # pylint: disable=R0902
                     timeout = self.ra_period - (time.time() - start)
 
     def print_clients(self):
-        logging.info("%10s   %20s %20s %10s %20s",
-                     'Key', 'Client', 'MAC', 'TAP', 'IP')
+        logging.info("%10s   %20s %20s %10s %20s %40s",
+                     'Key', 'Client', 'MAC', 'TAP', 'IP', 'IPv6')
         for k, cl in self.clients.items():
-            logging.info("%10s | %20s %20s %10s %20s",
-                         k, cl.hostname, cl.mac, cl.tap, cl.ip)
+            logging.info("%10s | %20s %20s %10s %20s %40s",
+                         k, cl.hostname, cl.mac, cl.tap, cl.ip, cl.eui64)