X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=test%2Ftest_ip4.py;h=9ec7f4e812973f6f9ae6248d11740a9e7a6b56c2;hb=609e1210c;hp=ca461f1d2760281454f92d28302b00f5cac092a3;hpb=68b7cb8febb2ad7123f165f9db10d3ffc3b409fe;p=vpp.git diff --git a/test/test_ip4.py b/test/test_ip4.py index ca461f1d276..9ec7f4e8129 100644 --- a/test/test_ip4.py +++ b/test/test_ip4.py @@ -1,4 +1,5 @@ #!/usr/bin/env python +import binascii import random import socket import unittest @@ -7,7 +8,7 @@ from framework import VppTestCase, VppTestRunner from vpp_sub_interface import VppSubInterface, VppDot1QSubint, VppDot1ADSubint from vpp_ip_route import VppIpRoute, VppRoutePath, VppIpMRoute, \ VppMRoutePath, MRouteItfFlags, MRouteEntryFlags, VppMplsIpBind, \ - VppMplsTable, VppIpTable + VppMplsTable, VppIpTable, VppIpAddress from scapy.packet import Raw from scapy.layers.l2 import Ether, Dot1Q, ARP @@ -302,9 +303,8 @@ class TestIPv4FibCrud(VppTestCase): :return list: added ips with 32 prefix """ added_ips = [] - dest_addr = int(socket.inet_pton(socket.AF_INET, - start_dest_addr).encode('hex'), - 16) + dest_addr = int(binascii.hexlify(socket.inet_pton(socket.AF_INET, + start_dest_addr)), 16) dest_addr_len = 32 n_next_hop_addr = socket.inet_pton(socket.AF_INET, next_hop_addr) for _ in range(count): @@ -318,9 +318,8 @@ class TestIPv4FibCrud(VppTestCase): def unconfig_fib_many_to_one(self, start_dest_addr, next_hop_addr, count): removed_ips = [] - dest_addr = int(socket.inet_pton(socket.AF_INET, - start_dest_addr).encode('hex'), - 16) + dest_addr = int(binascii.hexlify(socket.inet_pton(socket.AF_INET, + start_dest_addr)), 16) dest_addr_len = 32 n_next_hop_addr = socket.inet_pton(socket.AF_INET, next_hop_addr) for _ in range(count): @@ -1095,7 +1094,7 @@ class TestIPPunt(VppTestCase): def setUp(self): super(TestIPPunt, self).setUp() - self.create_pg_interfaces(range(2)) + self.create_pg_interfaces(range(4)) for i in self.pg_interfaces: i.admin_up() @@ -1122,8 +1121,7 @@ class TestIPPunt(VppTestCase): # # Configure a punt redirect via pg1. # - nh_addr = socket.inet_pton(socket.AF_INET, - self.pg1.remote_ip4) + nh_addr = VppIpAddress(self.pg1.remote_ip4).encode() self.vapi.ip_punt_redirect(self.pg0.sw_if_index, self.pg1.sw_if_index, nh_addr) @@ -1147,8 +1145,8 @@ class TestIPPunt(VppTestCase): # but not equal to the number sent, since some were policed # rx = self.pg1._get_capture(1) - self.assertTrue(len(rx) > 0) - self.assertTrue(len(rx) < len(pkts)) + self.assertGreater(len(rx), 0) + self.assertLess(len(rx), len(pkts)) # # remove the poilcer. back to full rx @@ -1181,6 +1179,40 @@ class TestIPPunt(VppTestCase): nh_addr, is_add=0) + def test_ip_punt_dump(self): + """ IP4 punt redirect dump""" + + # + # Configure a punt redirects + # + nh_address = VppIpAddress(self.pg3.remote_ip4).encode() + self.vapi.ip_punt_redirect(self.pg0.sw_if_index, + self.pg3.sw_if_index, + nh_address) + self.vapi.ip_punt_redirect(self.pg1.sw_if_index, + self.pg3.sw_if_index, + nh_address) + self.vapi.ip_punt_redirect(self.pg2.sw_if_index, + self.pg3.sw_if_index, + VppIpAddress('0.0.0.0').encode()) + + # + # Dump pg0 punt redirects + # + punts = self.vapi.ip_punt_redirect_dump(self.pg0.sw_if_index) + for p in punts: + self.assertEqual(p.punt.rx_sw_if_index, self.pg0.sw_if_index) + + # + # Dump punt redirects for all interfaces + # + punts = self.vapi.ip_punt_redirect_dump(0xffffffff) + self.assertEqual(len(punts), 3) + for p in punts: + self.assertEqual(p.punt.tx_sw_if_index, self.pg3.sw_if_index) + self.assertNotEqual(punts[1].punt.nh.un.ip4, self.pg3.remote_ip4) + self.assertEqual(punts[2].punt.nh.un.ip4.address, '\x00'*4) + class TestIPDeag(VppTestCase): """ IPv4 Deaggregate Routes """