-# Copyright (c) 2016 Cisco and/or its affiliates.
+# Copyright (c) 2017 Cisco and/or its affiliates.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at:
raise RuntimeError('Unable to set DHCP client on node {} and'
' interface {}.'
.format(vpp_node, interface))
+
+
+class DhcpProxy(object):
+ """DHCP Proxy utilities."""
+
+ @staticmethod
+ def dhcp_proxy_config(vpp_node, server_address, source_address):
+ """Set DHCP proxy.
+
+ :param vpp_node: VPP node to set DHCP proxy.
+ :param server_address: DHCP server IP address.
+ :param source_address: DHCP proxy address.
+ :type vpp_node: dict
+ :type server_address: str
+ :type source_address: str
+ :raises RuntimeError: If unable to set DHCP proxy.
+ """
+
+ output = VatExecutor.cmd_from_template(vpp_node,
+ "dhcp_proxy_config.vat",
+ server_address=server_address,
+ source_address=source_address)
+ output = output[0]
+
+ if output["retval"] != 0:
+ raise RuntimeError('Unable to set DHCP proxy on node {}'
+ .format(vpp_node))
+
+ @staticmethod
+ def vpp_get_dhcp_proxy(node, ip_version):
+ """Retrieve DHCP relay configuration.
+
+ :param node: VPP node.
+ :param ip_version: IP protocol version: ipv4 or ipv6.
+ :type node: dict
+ :type ip_version: str
+ :returns: DHCP relay data.
+ :rtype: list
+ """
+
+ return VatExecutor.cmd_from_template(
+ node, "dhcp_proxy_dump.vat",
+ ipv6="ipv6" if ip_version == "ipv6" else "")