DHCP Client Dump
[vpp.git] / test / test_dhcp.py
index df33d07..39133a3 100644 (file)
@@ -1217,7 +1217,9 @@ class TestDHCP(VppTestCase):
         p_offer = (Ether(dst=self.pg3.local_mac, src=self.pg3.remote_mac) /
                    IP(src=self.pg3.remote_ip4, dst="255.255.255.255") /
                    UDP(sport=DHCP4_SERVER_PORT, dport=DHCP4_CLIENT_PORT) /
-                   BOOTP(op=1, yiaddr=self.pg3.local_ip4) /
+                   BOOTP(op=1,
+                         yiaddr=self.pg3.local_ip4,
+                         chaddr=mactobinary(self.pg3.local_mac)) /
                    DHCP(options=[('message-type', 'offer'),
                                  ('server_id', self.pg3.remote_ip4),
                                  ('end')]))
@@ -1236,7 +1238,8 @@ class TestDHCP(VppTestCase):
         p_ack = (Ether(dst=self.pg3.local_mac, src=self.pg3.remote_mac) /
                  IP(src=self.pg3.remote_ip4, dst="255.255.255.255") /
                  UDP(sport=DHCP4_SERVER_PORT, dport=DHCP4_CLIENT_PORT) /
-                 BOOTP(op=1, yiaddr=self.pg3.local_ip4) /
+                 BOOTP(op=1, yiaddr=self.pg3.local_ip4,
+                       chaddr=mactobinary(self.pg3.local_mac)) /
                  DHCP(options=[('message-type', 'ack'),
                                ('subnet_mask', "255.255.255.0"),
                                ('router', self.pg3.remote_ip4),
@@ -1307,7 +1310,8 @@ class TestDHCP(VppTestCase):
         p_ack = (Ether(dst=self.pg3.local_mac, src=self.pg3.remote_mac) /
                  IP(src=self.pg3.remote_ip4, dst=self.pg3.local_ip4) /
                  UDP(sport=DHCP4_SERVER_PORT, dport=DHCP4_CLIENT_PORT) /
-                 BOOTP(op=1, yiaddr=self.pg3.local_ip4) /
+                 BOOTP(op=1, yiaddr=self.pg3.local_ip4,
+                       chaddr=mactobinary(self.pg3.local_mac)) /
                  DHCP(options=[('message-type', 'ack'),
                                ('subnet_mask', "255.255.255.0"),
                                ('router', self.pg3.remote_ip4),
@@ -1364,7 +1368,8 @@ class TestDHCP(VppTestCase):
         p_offer = (Ether(dst=self.pg3.local_mac, src=self.pg3.remote_mac) /
                    IP(src=self.pg3.remote_ip4, dst=self.pg3.local_ip4) /
                    UDP(sport=DHCP4_SERVER_PORT, dport=DHCP4_CLIENT_PORT) /
-                   BOOTP(op=1, yiaddr=self.pg3.local_ip4) /
+                   BOOTP(op=1, yiaddr=self.pg3.local_ip4,
+                         chaddr=mactobinary(self.pg3.local_mac)) /
                    DHCP(options=[('message-type', 'offer'),
                                  ('server_id', self.pg3.remote_ip4),
                                  ('end')]))
@@ -1384,7 +1389,8 @@ class TestDHCP(VppTestCase):
         p_ack = (Ether(dst=self.pg3.local_mac, src=self.pg3.remote_mac) /
                  IP(src=self.pg3.remote_ip4, dst=self.pg3.local_ip4) /
                  UDP(sport=DHCP4_SERVER_PORT, dport=DHCP4_CLIENT_PORT) /
-                 BOOTP(op=1, yiaddr=self.pg3.local_ip4) /
+                 BOOTP(op=1, yiaddr=self.pg3.local_ip4,
+                       chaddr=mactobinary(self.pg3.local_mac)) /
                  DHCP(options=[('message-type', 'ack'),
                                ('subnet_mask', "255.255.255.0"),
                                ('router', self.pg3.remote_ip4),
@@ -1416,6 +1422,29 @@ class TestDHCP(VppTestCase):
                                       mactobinary(self.pg3.remote_mac),
                                       self.pg3.remote_ip4,
                                       is_add=0)
+
+        #
+        # read the DHCP client details from a dump
+        #
+        clients = self.vapi.dhcp_client_dump()
+
+        self.assertEqual(clients[0].client.sw_if_index,
+                         self.pg3.sw_if_index)
+        self.assertEqual(clients[0].lease.sw_if_index,
+                         self.pg3.sw_if_index)
+        self.assertEqual(clients[0].client.hostname.rstrip('\0'),
+                         hostname)
+        self.assertEqual(clients[0].lease.hostname.rstrip('\0'),
+                         hostname)
+        self.assertEqual(clients[0].lease.is_ipv6, 0)
+        # 0 = DISCOVER, 1 = REQUEST, 2 = BOUND
+        self.assertEqual(clients[0].lease.state, 2)
+        self.assertEqual(clients[0].lease.mask_width, 24)
+        self.assertEqual(clients[0].lease.router_address.rstrip('\0'),
+                         self.pg3.remote_ip4n)
+        self.assertEqual(clients[0].lease.host_address.rstrip('\0'),
+                         self.pg3.local_ip4n)
+
         #
         # remove the DHCP config
         #