from vpp_interface import VppInterface


class VppVhostInterface(VppInterface):
    """VPP vhost interface."""

    def __init__(
        self,
        test,
        sock_filename,
        is_server=0,
        renumber=0,
        disable_mrg_rxbuf=0,
        disable_indirect_desc=0,
        enable_gso=0,
        enable_packed_ring=0,
        enable_event_idx=0,
        custom_dev_instance=0xFFFFFFFF,
        use_custom_mac=0,
        mac_address="",
        tag="",
    ):

        """Create VPP Vhost interface"""
        super(VppVhostInterface, self).__init__(test)
        self.is_server = is_server
        self.sock_filename = sock_filename
        self.renumber = renumber
        self.disable_mrg_rxbuf = disable_mrg_rxbuf
        self.disable_indirect_desc = disable_indirect_desc
        self.enable_gso = enable_gso
        self.enable_packed_ring = enable_packed_ring
        self.enable_event_idx = enable_event_idx
        self.custom_dev_instance = custom_dev_instance
        self.use_custom_mac = use_custom_mac
        self.mac_address = mac_address
        self.tag = tag

    def add_vpp_config(self):
        r = self.test.vapi.create_vhost_user_if_v2(
            self.is_server,
            self.sock_filename,
            self.renumber,
            self.disable_mrg_rxbuf,
            self.disable_indirect_desc,
            self.enable_gso,
            self.enable_packed_ring,
            self.enable_event_idx,
            self.custom_dev_instance,
            self.use_custom_mac,
            self.mac_address,
            self.tag,
        )
        self.set_sw_if_index(r.sw_if_index)

    def remove_vpp_config(self):
        self.test.vapi.delete_vhost_user_if(self.sw_if_index)

    def is_interface_config_in_dump(self, dump):
        for i in dump:
            if i.sw_if_index == self.sw_if_index:
                return True
        else:
            return False