Ejemplo n.º 1
0
    def cmd_query(self, c_key, garp):
        """
        Query command for arp. 
        
            :parameters:
                c_key: EMUClientKey
                    see :class:`trex.emu.trex_emu_profile.EMUClientKey`
                garp: bool
                    True for gratuitous arp.

            :returns:
               bool : True on success.
        """
        ver_args = [{
            'name': 'c_key',
            'arg': c_key,
            't': EMUClientKey
        }, {
            'name': 'garp',
            'arg': garp,
            't': bool
        }]
        EMUValidator.verify(ver_args)
        return self.emu_c._send_plugin_cmd_to_client('arp_c_cmd_query',
                                                     c_key,
                                                     garp=garp)
Ejemplo n.º 2
0
 def show_cache(self, ns_key):
     """
     Return ipv6 cache for a given namespace. 
     
         :parameters:
             ns_key: EMUNamespaceKey
                 see :class:`trex.emu.trex_emu_profile.EMUNamespaceKey`
             
         :returns:
             | list: list of ipv6 cache records
             | [{
             |    'ipv6': list of 16 bytes,
             |    'refc': int,
             |    'state': string,
             |    'resolve': bool,
             |    'mac': list of 6 bytes}
             | ].
     """
     ver_args = [
         {
             'name': 'ns_key',
             'arg': ns_key,
             't': EMUNamespaceKey
         },
     ]
     EMUValidator.verify(ver_args)
     params = ns_key.conv_to_dict(add_tunnel_key=True)
     res = self.emu_c._get_n_items(cmd='ipv6_nd_ns_iter', **params)
     for r in res:
         if 'state' in r:
             r['state'] = IPV6Plugin.IPV6_STATES.get(
                 r['state'], 'Unknown state')
     return res
Ejemplo n.º 3
0
    def remove_mc(self, ns_key, ipv4_vec):
        """
        Remove multicast addresses in namespace. 
        
            :parameters:
                ns_key: EMUNamespaceKey
                    see :class:`trex.emu.trex_emu_profile.EMUNamespaceKey`
                ipv4_vec: list of lists of bytes
                    IPv4 multicast addresses.

            :returns:
                bool : True on success.
        """
        ver_args = [
            {
                'name': 'ns_key',
                'arg': ns_key,
                't': EMUNamespaceKey
            },
            {
                'name': 'ipv4_vec',
                'arg': ipv4_vec,
                't': 'ipv4_mc',
                'allow_list': True
            },
        ]
        EMUValidator.verify(ver_args)
        ipv4_vec = [Ipv4(ip, mc=True) for ip in ipv4_vec]
        ipv4_vec = [ipv4.V() for ipv4 in ipv4_vec]
        return self.emu_c._send_plugin_cmd_to_ns('igmp_ns_remove',
                                                 ns_key,
                                                 vec=ipv4_vec)
Ejemplo n.º 4
0
 def remove_all_mc(self, ns_key):
     """
     Remove all multicast addresses in namespace.
     
         :parameters:
             ns_key: EMUNamespaceKey
                 see :class:`trex.emu.trex_emu_profile.EMUNamespaceKey`
     
         :return:
            bool : True on success.
     """
     ver_args = [
         {
             'name': 'ns_key',
             'arg': ns_key,
             't': EMUNamespaceKey
         },
     ]
     EMUValidator.verify(ver_args)
     mcs = self.iter_mc(ns_key)
     if mcs:
         return self.emu_c._send_plugin_cmd_to_ns('igmp_ns_remove',
                                                  ns_key,
                                                  vec=get_vec_mc(mcs))
     else:
         return False
Ejemplo n.º 5
0
 def set_cfg(self, ns_key, mtu, dmac):
     """
     Set IPv6 configuration on namespcae. 
     
         :parameters:
             ns_key: EMUNamespaceKey
                 see :class:`trex.emu.trex_emu_profile.EMUNamespaceKey`
             mtu: int
                 MTU for ipv6 plugin.
             dmac: list of bytes
                 Designator mac for ipv6 plugin.
     """
     ver_args = [
         {
             'name': 'ns_key',
             'arg': ns_key,
             't': EMUNamespaceKey
         },
         {
             'name': 'mtu',
             'arg': mtu,
             't': 'mtu'
         },
         {
             'name': 'dmac',
             'arg': dmac,
             't': 'mac'
         },
     ]
     EMUValidator.verify(ver_args)
     dmac = Mac(dmac)
     return self.emu_c._send_plugin_cmd_to_ns('ipv6_mld_ns_set_cfg',
                                              ns_key,
                                              mtu=mtu,
                                              dmac=dmac.V())
Ejemplo n.º 6
0
    def stop_ping(self, c_key):
        """
            Stop an ongoing ping.

            :parameters:
                c_key: EMUClientKey
                    see :class:`trex.emu.trex_emu_profile.EMUClientKey`

            :returns:
                (RPC Response, TRexError), one of the entries is None.

        """
        ver_args = [{
            'name': 'c_key',
            'arg': c_key,
            't': EMUClientKey,
            'must': True
        }]
        EMUValidator.verify(ver_args)
        try:
            success = self.emu_c._send_plugin_cmd_to_client('ipv6_stop_ping',
                                                            c_key=c_key)
            return success, None
        except TRexError as err:
            return None, err
Ejemplo n.º 7
0
 def remove_gen_mc(self, ns_key, ipv4_start, ipv4_count=1):
     """
     Remove multicast addresses in namespace, generating sequence of addresses.        
         :parameters:
             ns_key: EMUNamespaceKey
                 see :class:`trex.emu.trex_emu_profile.EMUNamespaceKey`
             ipv4_start: list of bytes
                 IPv4 address of the first multicast address.
             ipv4_count: int
                 | Amount of ips to continue from `ipv4_start`, defaults to 0. 
                 | i.e: ipv4_start = [1, 0, 0, 0] , ipv4_count = 2 -> [[1, 0, 0, 0], [1, 0, 0, 1]]
     
         :returns:
             bool : True on success.
     """
     ver_args = [{
         'name': 'ns_key',
         'arg': ns_key,
         't': EMUNamespaceKey
     }, {
         'name': 'ipv4_start',
         'arg': ipv4_start,
         't': 'ipv4_mc'
     }, {
         'name': 'ipv4_count',
         'arg': ipv4_count,
         't': int
     }]
     EMUValidator.verify(ver_args)
     ipv4_vec = self._create_ip_vec(ipv4_start, ipv4_count, 'ipv4', True)
     ipv4_vec = [ip.V() for ip in ipv4_vec]
     return self.emu_c._send_plugin_cmd_to_ns('igmp_ns_remove',
                                              ns_key,
                                              vec=ipv4_vec)
Ejemplo n.º 8
0
 def set_cfg(self, ns_key, enable):
     """
     Set arp configurations. 
     
         :parameters:
             ns_key: EMUNamespaceKey
                 see :class:`trex.emu.trex_emu_profile.EMUNamespaceKey`
             enable: bool
                 True for enabling arp.
     
         :returns:
            bool : True on success.
     """
     ver_args = [{
         'name': 'ns_key',
         'arg': ns_key,
         't': EMUNamespaceKey
     }, {
         'name': 'enable',
         'arg': enable,
         't': bool
     }]
     EMUValidator.verify(ver_args)
     return self.emu_c._send_plugin_cmd_to_ns('arp_ns_set_cfg',
                                              ns_key,
                                              enable=enable)
Ejemplo n.º 9
0
 def remove_gen_mld(self, ns_key, ipv6_start, ipv6_count=1):
     """
     Remove mld from ipv6 plugin. 
     
         :parameters:
             ns_key: EMUNamespaceKey
                 see :class:`trex.emu.trex_emu_profile.EMUNamespaceKey`
             ipv6_start: lists of bytes
                 ipv6 address to start from.
             ipv6_count: int
                 | ipv6 addresses to add
                 | i.e -> `ipv6_start` = [0, .., 0] and `ipv6_count` = 2 ->[[0, .., 0], [0, .., 1]].
     """
     ver_args = [{
         'name': 'ns_key',
         'arg': ns_key,
         't': EMUNamespaceKey
     }, {
         'name': 'ipv6_start',
         'arg': ipv6_start,
         't': 'ipv6_mc'
     }, {
         'name': 'ipv6_count',
         'arg': ipv6_count,
         't': int
     }]
     EMUValidator.verify(ver_args)
     ipv6_vec = self._create_ip_vec(ipv6_start, ipv6_count, 'ipv6', True)
     ipv6_vec = [ip.V() for ip in ipv6_vec]
     return self.emu_c._send_plugin_cmd_to_ns('ipv6_mld_ns_remove',
                                              ns_key,
                                              vec=ipv6_vec)
Ejemplo n.º 10
0
 def iter_mld(self, ns_key, ipv6_amount=None):
     """
     Iterates over current mld's in ipv6 plugin. 
     
         :parameters:
             ns_key: EMUNamespaceKey
                 see :class:`trex.emu.trex_emu_profile.EMUNamespaceKey`
             ipv6_amount: int
                 Amount of ipv6 addresses to fetch, defaults to None means all.
     
         :returns:
             | list: List of ipv6 addresses dict:
             | {'refc': 100, 'management': False, 'ipv6': [255, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]}
     """
     ver_args = [
         {
             'name': 'ns_key',
             'arg': ns_key,
             't': EMUNamespaceKey
         },
         {
             'name': 'ipv6_amount',
             'arg': ipv6_amount,
             't': int,
             'must': False
         },
     ]
     EMUValidator.verify(ver_args)
     params = ns_key.conv_to_dict(add_tunnel_key=True)
     return self.emu_c._get_n_items(cmd='ipv6_mld_ns_iter',
                                    amount=ipv6_amount,
                                    **params)
Ejemplo n.º 11
0
    def get_clients_info(self, c_keys):
        """
        Get dot1x clients information.

            :parameters:
                c_keys: list of EMUClientKey
                    see :class:`trex.emu.trex_emu_profile.EMUClientKey`

            :return:
                | list: List of clients information
                | [{'state': string, 'method': string, 'eap_version': int}, {..}]
        """
        ver_args = [
            {
                'name': 'c_keys',
                'arg': c_keys,
                't': EMUClientKey,
                'allow_list': True
            },
        ]
        EMUValidator.verify(ver_args)
        c_keys = listify(c_keys)
        res = self.emu_c._send_plugin_cmd_to_clients('dot1x_client_info',
                                                     c_keys)
        res = listify(res)

        for r in res:
            if 'state' in r:
                r['state'] = DOT1XPlugin.DOT1X_STATES.get(
                    r['state'], r['state'])
            if 'method' in r:
                r['method'] = DOT1XPlugin.DOT1X_METHODS.get(
                    r['method'], r['method'])
        return res
Ejemplo n.º 12
0
 def remove_mld(self, ns_key, ipv6_vec):
     """
     Remove mld from ipv6 plugin. 
     
         :parameters:
             ns_key: EMUNamespaceKey
                 see :class:`trex.emu.trex_emu_profile.EMUNamespaceKey`
             ipv6_vec: list of lists of bytes
                 List of ipv6 addresses. Must be a valid ipv6 mld address.
     """
     ver_args = [
         {
             'name': 'ns_key',
             'arg': ns_key,
             't': EMUNamespaceKey
         },
         {
             'name': 'ipv6_vec',
             'arg': ipv6_vec,
             't': 'ipv6_mc',
             'allow_list': True
         },
     ]
     EMUValidator.verify(ver_args)
     ipv6_vec = [Ipv6(ip, mc=True) for ip in ipv6_vec]
     ipv6_vec = [ipv6.V() for ipv6 in ipv6_vec]
     return self.emu_c._send_plugin_cmd_to_ns('ipv6_mld_ns_remove',
                                              ns_key,
                                              vec=ipv6_vec)
Ejemplo n.º 13
0
    def _mc_sg_gen(self, ns_key, g_vec, s_vec, cmd):
        ver_args = [
            {
                'name': 'ns_key',
                'arg': ns_key,
                't': EMUNamespaceKey
            },
            {
                'name': 'g_vec',
                'arg': g_vec,
                't': 'ipv4_mc',
                'allow_list': True
            },
            {
                'name': 's_vec',
                'arg': s_vec,
                't': 'ipv4',
                'allow_list': True
            },
        ]
        EMUValidator.verify(ver_args)
        # convert
        g_vec1 = [Ipv4(ip, mc=True) for ip in g_vec]
        g_vec1 = [ipv4.V() for ipv4 in g_vec1]

        # convert
        s_vec1 = [Ipv4(ip) for ip in s_vec]
        s_vec1 = [ipv4.V() for ipv4 in s_vec1]
        if len(s_vec1) != len(g_vec1):
            raise TRexError(
                'Validation error, len of g and s vector should be the same ')

        return self.emu_c._send_plugin_cmd_to_ns(cmd,
                                                 ns_key,
                                                 vec=conv(g_vec1, s_vec1))
Ejemplo n.º 14
0
    def add_mld(self, ns_key, ipv6_vec):
        """
        Add mld to ipv6 plugin. For MLDv2 this is g,* meaning accept all the sources 
        
            :parameters:
                ns_key: EMUNamespaceKey
                    see :class:`trex.emu.trex_emu_profile.EMUNamespaceKey`
                ipv6_vec: list of lists of bytes
                    List of ipv6 addresses. Must be a valid ipv6 mld address. .e.g.[[0xff,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,1] ]

        """
        ver_args = [
            {
                'name': 'ns_key',
                'arg': ns_key,
                't': EMUNamespaceKey
            },
            {
                'name': 'ipv6_vec',
                'arg': ipv6_vec,
                't': 'ipv6_mc',
                'allow_list': True
            },
        ]
        EMUValidator.verify(ver_args)
        ipv6_vec = [Ipv6(ip, mc=True) for ip in ipv6_vec]
        ipv6_vec = [ipv6.V() for ipv6 in ipv6_vec]
        return self.emu_c._send_plugin_cmd_to_ns('ipv6_mld_ns_add',
                                                 ns_key,
                                                 vec=ipv6_vec)
Ejemplo n.º 15
0
 def iter_mc(self, ns_key, ipv4_amount=None):
     """
     Iterate multicast addresses in namespace. 
     
         :parameters:
             ns_key: EMUNamespaceKey
                 see :class:`trex.emu.trex_emu_profile.EMUNamespaceKey`
             ipv4_count: int
                 Amount of ips to get from emu server, defaults to None means all. 
     
         :returns:
             list : List of ips as list of bytes. i.e: [[224, 0, 0, 1], [224, 0, 0, 1]]
     """
     ver_args = [
         {
             'name': 'ns_key',
             'arg': ns_key,
             't': EMUNamespaceKey
         },
         {
             'name': 'ipv4_amount',
             'arg': ipv4_amount,
             't': int,
             'must': False
         },
     ]
     EMUValidator.verify(ver_args)
     params = ns_key.conv_to_dict(True)
     return self.emu_c._get_n_items(cmd='igmp_ns_iter',
                                    amount=ipv4_amount,
                                    **params)
Ejemplo n.º 16
0
    def get_ping_stats(self, c_key, zero=True):
        """
            Get the stats of an active ping.

            :parameters:
                c_key: EMUClientKey
                    see :class:`trex.emu.trex_emu_profile.EMUClientKey`

                zero: boolean
                    Get values that equal zero aswell.

            :returns:
                (RPC Response, TRexError), one of the entries is None.

        """
        ver_args = [{
            'name': 'c_key',
            'arg': c_key,
            't': EMUClientKey,
            'must': True
        }, {
            'name': 'zero',
            'arg': zero,
            't': bool,
            'must': False
        }]
        EMUValidator.verify(ver_args)
        try:
            data = self.emu_c._send_plugin_cmd_to_client(
                cmd='ipv6_get_ping_stats', c_key=c_key, zero=zero)
            return data, None
        except TRexError as err:
            return None, err
Ejemplo n.º 17
0
    def remove_domain_entries(self, c_key, domain, entries):
        """ Remove domain entries from a DNS Name Server.

        :parameters:
            c_key: EMUClientKey
                see :class:`trex.emu.trex_emu_profile.EMUClientKey`.
                Note that it must be a Name Server.

            domain: str
                Domain whose entries we are looking to remove.

            entries: list
                List of Dns Entries.

                 .. highlight:: python
                 .. code-block:: python

                    [
                        {
                            "type": "A",
                            "class": "IN",
                            "answer": "72.163.4.161"
                        },
                        {
                            "type": "AAAA",
                            "class": "IN",
                            "answer": "2001:420:1101:1::185"
                        }
                    ]

        :return:
            None
        """
        ver_args = [{
            'name': 'c_key',
            'arg': c_key,
            't': EMUClientKey,
            'must': True
        }, {
            'name': 'domain',
            'arg': domain,
            't': str,
            'must': True
        }, {
            'name': 'entries',
            'arg': entries,
            't': list,
            'must': True
        }]
        EMUValidator.verify(ver_args)
        return self.emu_c._send_plugin_cmd_to_client(
            cmd='dns_c_add_remove_domain_entries',
            c_key=c_key,
            op=True,
            domain=domain,
            entries=entries)
Ejemplo n.º 18
0
    def _get_client_counters(self, c_key, cnt_filter=None, zero=True, verbose=True):
        """
            Get the $PLUGIN_NAME counters of a client.

            :parameters:
                c_key: :class:`trex.emu.trex_emu_profile.EMUClientKey`
                    EMUClientKey

                cnt_filter: list
                    List of counters types as strings. i.e: ['INFO', 'ERROR', 'WARNING']. Default is None, means no filter.
                    If verbosity is off, this filter can't be used.

                zero: bool
                    Get zero values, default is True.

                verbose: bool
                    Show verbose version of each counter, default is True.

            :return: Dictionary of all wanted counters. When verbose is True, each plugin contains a list of counter dictionaries.

                .. highlight:: python
                .. code-block:: python

                    {'pluginName': [{'help': 'Explanation 1',
                                    'info': 'INFO',
                                    'name': 'counterOne',
                                    'unit': 'pkts',
                                    'value': 8,
                                    'zero': False},
                                    {'help': 'Explanation 2',
                                    'info': 'ERROR',
                                    'name': 'counterTwo',
                                    'unit': 'pkts',
                                    'value': 6,
                                    'zero': False}]}

                When verbose is False, each plugins returns a dictionary of counterName, value pairs.

                .. highlight:: python
                .. code-block:: python

                    {'pluginName': {'counterOne': 8, 'counterTwo': 6}}

            :raises: TRexError
        """
        if not self.client_data_cnt:
            raise TRexError("Client counter command was not provided.")
        ver_args = [{'name': 'c_key', 'arg': c_key, 't': EMUClientKey},
                    {'name': 'cnt_filter', 'arg': cnt_filter, 't': list, 'must': False},
                    {'name': 'zero', 'arg': zero, 't': bool},
                    {'name': 'verbose', 'arg': verbose, 't': bool}]
        EMUValidator.verify(ver_args)
        self.client_data_cnt.set_add_data(c_key=c_key)
        return self.client_data_cnt.get_counters(cnt_filter=cnt_filter, zero=zero, verbose=verbose)
Ejemplo n.º 19
0
 def remove_all_mld(self, ns_key):
     '''
     Remove all user created mld(s) from ipv6 plugin.
         :parameters:
             ns_key: EMUNamespaceKey
                 see :class:`trex.emu.trex_emu_profile.EMUNamespaceKey`
     '''
     ver_args = [{'name': 'ns_key', 'arg': ns_key, 't': EMUNamespaceKey}]
     EMUValidator.verify(ver_args)
     mlds = self.iter_mld(ns_key)
     mlds = [m['ipv6'] for m in mlds if m['management']]
     if mlds:
         self.emu_c._send_plugin_cmd_to_ns('ipv6_mld_ns_remove', ns_key, vec = mlds)
Ejemplo n.º 20
0
 def get_cfg(self, ns_key):
     """
     Get IPv6 configuration from namespace.
         :parameters:
             ns_key: EMUNamespaceKey
                 see :class:`trex.emu.trex_emu_profile.EMUNamespaceKey`
         :return:
             | dict: IPv6 configuration like:
             | {'dmac': [0, 0, 0, 112, 0, 1], 'version': 2, 'mtu': 1500}
     """
     ver_args = [{'name': 'ns_key', 'arg': ns_key, 't': EMUNamespaceKey}]
     EMUValidator.verify(ver_args)
     return self.emu_c._send_plugin_cmd_to_ns('ipv6_mld_ns_get_cfg', ns_key)
Ejemplo n.º 21
0
    def _add_remove_gen_mc_sg(self,
                              ns_key,
                              g_start,
                              g_count=1,
                              s_start=None,
                              s_count=1,
                              cmd=None):
        """ """
        ver_args = [
            {
                'name': 'ns_key',
                'arg': ns_key,
                't': EMUNamespaceKey
            },
            {
                'name': 'g_start',
                'arg': g_start,
                't': 'ipv4_mc'
            },
            {
                'name': 'g_count',
                'arg': g_count,
                't': int
            },
            {
                'name': 's_start',
                'arg': s_start,
                't': 'ipv4'
            },
            {
                'name': 's_count',
                'arg': s_count,
                't': int
            },
        ]
        EMUValidator.verify(ver_args)

        g_vec = self._create_ip_vec(g_start, g_count, 'ipv4', True)
        g_vec = [ip.V() for ip in g_vec]
        s_vec = self._create_ip_vec(s_start, s_count, 'ipv4', False)
        s_vec = [ip.V() for ip in s_vec]
        g_in = []
        s_in = []
        for i in range(len(g_vec)):
            for j in range(len(s_vec)):
                g_in.append(g_vec[i])
                s_in.append(s_vec[j])
        if cmd == "add":
            return self.add_mc_sg(ns_key, g_in, s_in)
        else:
            return self.remove_mc_sg(ns_key, g_in, s_in)
Ejemplo n.º 22
0
 def get_cfg(self, ns_key):
     """
     Get arp configurations. 
     
         :parameters:
             ns_key: EMUNamespaceKey
                 see :class:`trex.emu.trex_emu_profile.EMUNamespaceKey`
         :returns:
            | dict :
            | {
            |    "enable": true
            | }
     """
     ver_args = [{'name': 'ns_key', 'arg': ns_key, 't': EMUNamespaceKey}]
     EMUValidator.verify(ver_args)
     return self.emu_c._send_plugin_cmd_to_ns('arp_ns_get_cfg', ns_key)
Ejemplo n.º 23
0
    def get_gen_info(self, c_key):
        """
            Gets information about all the generators of a client.

            :parameters:

                c_key: :class:`trex.emu.trex_emu_profile.EMUClientKey`
                    EMUClientKey

            :returns: list of dictionaries

                    For each generator we get a key value mapping of name with the following parameters:

                    { 'enabled': bool
                        Flag indicating if generator is enabled.

                    'options_template': bool
                        Flag indicating if we are sending options templates for this generator or data templates.

                    'scope_count': uint16
                        Scope count in case of options template, otherwise will be 0.

                    'template_rate_pps': float32
                        The rate of template packets in pps.

                    'data_rate_pps': float32
                        The rate of data packets in pps.

                    'data_records_num': float32
                        The number of data records in a packet as user specified.

                    'data_records_num_send': float32
                        The actual number of data records in a packet as TRex calculated. For example, if user provided 0,
                        then TRex calculates the maximum number based on the MTU.

                    'fields_num': int
                        Number of fields in this generator.

                    'engines_num': int
                        Number of engines in this generator.}
        """
        ver_args = [{'name': 'c_key', 'arg': c_key, 't': EMUClientKey}]
        EMUValidator.verify(ver_args)
        res = self.emu_c._send_plugin_cmd_to_client('ipfix_c_get_gens_info',
                                                    c_key)
        return res.get('generators_info', {})
Ejemplo n.º 24
0
    def flush_cache(self, ns_key):
        """ Flush mDNS namespace cache of resolved hostnames.

        :parameters:
            ns_key: EMUNamespaceKey
                see :class:`trex.emu.trex_emu_profile.EMUNamespaceKey`
        """

        ver_args = [{
            'name': 'ns_key',
            'arg': ns_key,
            't': EMUNamespaceKey,
            'must': True
        }]
        EMUValidator.verify(ver_args)
        self.emu_c._send_plugin_cmd_to_ns(cmd="mdns_ns_cache_flush",
                                          ns_key=ns_key)
Ejemplo n.º 25
0
    def set_gen_rate(self, c_key, gen_name, template_rate, rate):
        """
            Set a new rate of data packets for an IPFix generator.

            :parameters:

                c_key: :class:`trex.emu.trex_emu_profile.EMUClientKey`
                    EMUClientKey

                gen_name: string
                    The name of the generator we are trying to alter.

                template_rate: float32
                    New rate for template packets, in pps.

                rate: float32
                    New rate for data packets, in pps.

            :returns:
               bool : Flag indicating the result of the operation.
        """
        ver_args = [{
            'name': 'c_key',
            'arg': c_key,
            't': EMUClientKey
        }, {
            'name': 'gen_name',
            'arg': gen_name,
            't': str
        }, {
            'name': 'template_rate',
            'arg': template_rate,
            't': float
        }, {
            'name': 'rate',
            'arg': rate,
            't': float
        }]
        EMUValidator.verify(ver_args)
        return self.emu_c._send_plugin_cmd_to_client(
            'ipfix_c_set_gen_state',
            c_key=c_key,
            gen_name=gen_name,
            template_rate=template_rate,
            rate=rate)
Ejemplo n.º 26
0
    def flush_cache(self, c_key):
        """ Flush Dns Resolver cache of resolved domains.

        :parameters:
            c_key: EMUClientKey
                see :class:`trex.emu.trex_emu_profile.EMUClientKey`.
                Note that it must be a Dns Resolver (not Name Server).
        """

        ver_args = [{
            'name': 'c_key',
            'arg': c_key,
            't': EMUClientKey,
            'must': True
        }]
        EMUValidator.verify(ver_args)
        self.emu_c._send_plugin_cmd_to_client(cmd="dns_c_cache_flush",
                                              c_key=c_key)
Ejemplo n.º 27
0
 def get_cfg(self, ns_key):
     """
     Get igmp configurations. 
     
         :parameters:
             ns_key: EMUNamespaceKey
                 see :class:`trex.emu.trex_emu_profile.EMUNamespaceKey`
         :returns:
            | dict :
            | {
            |    "dmac": [0, 0, 0, 0, 0, 0],
            |    "version": 3,
            |    "mtu": 1500
            | }
     """
     ver_args = [{'name': 'ns_key', 'arg': ns_key, 't': EMUNamespaceKey}]
     EMUValidator.verify(ver_args)
     return self.emu_c._send_plugin_cmd_to_ns('igmp_ns_get_cfg', ns_key)
Ejemplo n.º 28
0
    def get_exporter_info(self, c_key):
        """
            Gets information about the exporter used by the client.

            :parameters:

                c_key: :class:`trex.emu.trex_emu_profile.EMUClientKey`
                    EMUClientKey

            :returns: A json dictionary with the following fields:

                'exporter_type': string
                    Exporter type - emu-udp, udp, http, file

                'files': list
                    Only for HTTP exporter - contains a list of objects reporting the status of the most recent (up to 30)
                    file export sessions.

                { 'name': string
                     Name of the exported file

                'time': bool
                    The time when the file was exported

                'status': string
                    Final status of the export session

                'transport_status': string
                    Transport status of the export session

                'http_status_code': string
                    HTTP status code received from the server (collector)

                'http_response_msg': string
                    HTTP response message received from the server (collector)

                'bytes_uploaded': int
                    Number of bytes successfully uploaded by the file}
        """
        ver_args = [{'name': 'c_key', 'arg': c_key, 't': EMUClientKey}]
        EMUValidator.verify(ver_args)
        res = self.emu_c._send_plugin_cmd_to_client('ipfix_c_get_exp_info',
                                                    c_key)
        return res
Ejemplo n.º 29
0
    def get_domain_entries(self, c_key, domain):
        """ Get Dns entries for a domain from a DNS Name Server.

        :parameters:
            c_key: EMUClientKey
                see :class:`trex.emu.trex_emu_profile.EMUClientKey`.
                Note that it must be a Name Server.

            domain: str
                Domain whose entries we are looking to get.

        :return:
            List of dictionaries, where each dictionary is a Dns Entry.

                 .. highlight:: python
                 .. code-block:: python

                    [
                        {
                            "type": "A",
                            "class": "IN",
                            "answer": "72.163.4.161"
                        },
                        {
                            "type": "AAAA",
                            "class": "IN",
                            "answer": "2001:420:1101:1::185"
                        }
                    ]
        """
        ver_args = [{
            'name': 'c_key',
            'arg': c_key,
            't': EMUClientKey,
            'must': True
        }, {
            'name': 'domain',
            'arg': domain,
            't': str,
            'must': True
        }]
        EMUValidator.verify(ver_args)
        return self.emu_c._send_plugin_cmd_to_client(
            cmd='dns_c_get_domain_entries', c_key=c_key, domain=domain)
Ejemplo n.º 30
0
    def query(self, c_key, queries):
        """Send a mDNS query.

        :parameters:
            c_key: EMUClientKey
                see :class:`trex.emu.trex_emu_profile.EMUClientKey`

            queries: list
                List of query, where each query is represented by:

            :query:

                name: string
                    Name of the host we are querying.

                dns_type: string
                    Type of the mDNS query, supported types are A, AAAA, PTR, TXT. Default is "A".

                dns_class: string
                    Class of the mDNS query. Default is "IN".

                ipv6: bool
                    Indicate if the query should be sent using IPv6.

        :raises:
            TRexError
        """
        ver_args = [{
            'name': 'c_key',
            'arg': c_key,
            't': EMUClientKey,
            'must': True
        }, {
            'name': 'queries',
            'arg': queries,
            't': list,
            'must': True
        }]
        EMUValidator.verify(ver_args)
        self.emu_c._send_plugin_cmd_to_client(cmd='mdns_c_query',
                                              c_key=c_key,
                                              queries=queries)