1 from vpp_object import VppObject
4 class VppDHCPProxy(VppObject):
14 self._rx_vrf_id = rx_vrf_id
15 self._server_vrf_id = server_vrf_id
16 self._dhcp_server = dhcp_server
17 self._dhcp_src_address = dhcp_src_address
19 def set_proxy(self, dhcp_server, dhcp_src_address, rx_vrf_id=0, server_vrf_id=0):
20 if self.query_vpp_config():
21 raise Exception("Vpp config present")
22 self._rx_vrf_id = rx_vrf_id
23 self._server_vrf_id = server_vrf_id
24 self._dhcp_server = dhcp_server
25 self._dhcp_src_address = dhcp_src_address
27 def add_vpp_config(self):
28 self._test.vapi.dhcp_proxy_config(
30 rx_vrf_id=self._rx_vrf_id,
31 server_vrf_id=self._server_vrf_id,
32 dhcp_server=self._dhcp_server,
33 dhcp_src_address=self._dhcp_src_address,
35 self._test.registry.register(self, self._test.logger)
37 def remove_vpp_config(self):
38 self._test.vapi.dhcp_proxy_config(
39 rx_vrf_id=self._rx_vrf_id,
40 server_vrf_id=self._server_vrf_id,
41 dhcp_server=self._dhcp_server,
42 dhcp_src_address=self._dhcp_src_address,
46 def get_vpp_dump(self):
47 dump = self._test.vapi.dhcp_proxy_dump()
49 if entry.rx_vrf_id == self._rx_vrf_id:
52 def query_vpp_config(self):
53 dump = self.get_vpp_dump()
54 return True if dump else False
57 return "dhcp-proxy-%d" % self._rx_vrf_id
60 class VppDHCPClient(VppObject):
67 want_dhcp_event=False,
68 set_broadcast_flag=True,
73 self._sw_if_index = sw_if_index
74 self._hostname = hostname
76 self._want_dhcp_event = want_dhcp_event
77 self._set_broadcast_flag = set_broadcast_flag
86 want_dhcp_event=False,
87 set_broadcast_flag=True,
91 if self.query_vpp_config():
92 raise Exception("Vpp config present")
93 self._sw_if_index = sw_if_index
94 self._hostname = hostname
96 self._want_dhcp_event = want_dhcp_event
97 self._set_broadcast_flag = set_broadcast_flag
101 def add_vpp_config(self):
102 id = self._id.encode("ascii") if self._id else None
104 "sw_if_index": self._sw_if_index,
105 "hostname": self._hostname,
107 "want_dhcp_event": self._want_dhcp_event,
108 "set_broadcast_flag": self._set_broadcast_flag,
112 self._test.vapi.dhcp_client_config(is_add=1, client=client)
113 self._test.registry.register(self, self._test.logger)
115 def remove_vpp_config(self):
116 client = client = {"sw_if_index": self._sw_if_index, "hostname": self._hostname}
117 self._test.vapi.dhcp_client_config(client=client, is_add=0)
119 def get_vpp_dump(self):
120 dump = self._test.vapi.dhcp_client_dump()
122 if entry.client.sw_if_index == self._sw_if_index:
125 def query_vpp_config(self):
126 dump = self.get_vpp_dump()
127 return True if dump else False
130 return "dhcp-client-%s/%d" % (self._hostname, self._sw_if_index)