Ejemplo n.º 1
0
def add_tc_filter_policy(device,
                         parent,
                         rate_kbps,
                         burst_kb,
                         mtu,
                         action,
                         priority=0,
                         protocol=None,
                         namespace=None):
    """Add a TC filter in a device to set a policy.

    :param device: (string) device name
    :param parent: (string) qdisc parent class ('root', 'ingress', '2:10')
    :param rate_kbps: (int) rate in kbits/second
    :param burst_kb: (int) burst in kbits
    :param mtu: (int) MTU size (bytes)
    :param action: (string) filter policy action
    :param priority: (int) (optional) filter priority (lower priority, higher
                     preference)
    :param protocol: (int) (optional) traffic filter protocol; if None, all
                     will be matched.
    :param namespace: (string) (optional) namespace name

    """
    rate = int(rate_kbps * 1024 / 8)
    burst = int(burst_kb * 1024 / 8)
    priv_tc_lib.add_tc_filter_policy(device,
                                     parent,
                                     priority,
                                     rate,
                                     burst,
                                     mtu,
                                     action,
                                     protocol=protocol,
                                     namespace=namespace)
Ejemplo n.º 2
0
    def test_add_tc_filter_policy(self):
        priv_tc_lib.add_tc_qdisc(self.device,
                                 parent=rtnl.TC_H_ROOT,
                                 kind='ingress',
                                 namespace=self.namespace)

        # NOTE(ralonsoh):
        # - rate: 320000 bytes/sec (pyroute2 units) = 2500 kbits/sec (OS units)
        # - burst: 192000 bytes/sec = 1500 kbits/sec
        priv_tc_lib.add_tc_filter_policy(self.device,
                                         'ffff:',
                                         49,
                                         320000,
                                         192000,
                                         1200,
                                         'drop',
                                         namespace=self.namespace)

        filters = tc_lib.list_tc_filters(self.device,
                                         'ffff:',
                                         namespace=self.namespace)
        self.assertEqual(1, len(filters))
        self.assertEqual(2500, filters[0]['rate_kbps'])
        self.assertEqual(1500, filters[0]['burst_kb'])
        self.assertEqual(1200, filters[0]['mtu'])
Ejemplo n.º 3
0
def add_tc_filter_policy(device, parent, rate_kbps, burst_kb, mtu, action,
                         priority=0, protocol=None, namespace=None):
    """Add a TC filter in a device to set a policy.

    :param device: (string) device name
    :param parent: (string) qdisc parent class ('root', 'ingress', '2:10')
    :param rate_kbps: (int) rate in kbits/second
    :param burst_kb: (int) burst in kbits
    :param mtu: (int) MTU size (bytes)
    :param action: (string) filter policy action
    :param priority: (int) (optional) filter priority (lower priority, higher
                     preference)
    :param protocol: (int) (optional) traffic filter protocol; if None, all
                     will be matched.
    :param namespace: (string) (optional) namespace name

    """
    rate = int(rate_kbps * 1024 / 8)
    burst = int(burst_kb * 1024 / 8)
    priv_tc_lib.add_tc_filter_policy(device, parent, priority, rate, burst,
                                     mtu, action, protocol=protocol,
                                     namespace=namespace)