summaryrefslogtreecommitdiffstats
path: root/extras
AgeCommit message (Expand)AuthorFilesLines
2018-03-13libmemif: ubuntu 18.04 build fixJakub Grajciar4-15/+23
2018-03-12License text cleanupDave Barach17-0/+222
2018-03-02Add RPM buildtime dependency on mbedtls-develMatthew Smith1-0/+1
2018-03-01Change tcp config to reflect some recent changes.John DeNisco7-3/+3
2018-02-28Adjust vpp-selinux-policy postinstallMatthew Smith1-1/+1
2018-02-28Fix SELinux capabilities. Creating a tap interface with 'tap connect' was ret...Victor Nguyen -T (victong2 - OTHERWISE PORTAGE at Cisco)1-2/+2
2018-02-16Add iperf VM/vhost creationJohn DeNisco12-19/+452
2018-02-07libmemif: cleanup queue info while memif connectingChun Li2-1/+5
2018-01-31RPMS: Also install C.py, JSON.py for vppapipgen.Jon Loeliger1-0/+3
2018-01-30VPP-899: Run VPP under SELinuxBilly McFall7-4/+536
2018-01-26Add support for 18.01.John DeNisco5-62/+89
2018-01-24docs: Clean up TOCDave Wallace2-3/+9
2018-01-23VPPAPIGEN: vppapigen replacement in Python PLY.Ole Troan1-0/+1
2018-01-18dpdk plugin depends on numactl-libsGabriel Ganne1-1/+1
2017-12-15apps: refactor uri and update build infraFlorin Coras6-0/+470
2017-12-04Optimize RPM build processRenato Botelho do Couto2-21/+18
2017-11-30Cleanup and simplifyMarco Varlese2-32/+14
2017-11-29Using $(CURDIR) to fix the absolute path issueMarco Varlese1-1/+1
2017-11-21libmemif: unit test update, continue configure if check module missingJakub Grajciar3-8/+10
2017-11-17Add a non interactive modeJohn DeNisco5-131/+221
2017-11-17subunit is required on centos as well as fedoraGabriel Ganne1-2/+0
2017-11-16libmemif: unmask head/tail pointers fix, additional ring info in memif_queue_...Jakub Grajciar3-75/+109
2017-11-11VCL: clean up disconnect_session debug output.Dave Wallace1-31/+36
2017-11-08memif: do not mask head and tail pointersDamjan Marion3-59/+61
2017-11-08VOM rpm build fixesNeale Ranns1-0/+1
2017-11-07libmmeif: Makefile fixJakub Grajciar1-1/+1
2017-11-07libmemif: add dep to MakefileJakub Grajciar1-2/+2
2017-11-05libmemif: example app can generate ICMP, dev perf tests (using icmpr-epoll)Jakub Grajciar6-46/+774
2017-11-05dpdk: build nasm from sourceSergio Gonzalez Monroy2-7/+0
2017-11-01A bit of cleanup, updated the README, started vhost test.John DeNisco7-42/+245
2017-10-30libmemif: perf optimizationJakub Grajciar1-65/+34
2017-10-25VCL: Fix vcl test scripts to check vcl.am instead of uri.amDave Wallace1-1/+1
2017-10-24VCL-LDPRELOAD: statically link vppcom into libvcl-ldpreload.soDave Wallace17-9269/+25
2017-10-20VCL-LDPRELOAD: Refactor vcom_socket* and fix crash in vppcom_selectDave Wallace2-89/+92
2017-10-19LD_PRELOAD poll implementationshrinivasan ganapathy7-4/+748
2017-10-19vcl-ldpreload: test script enhancementsDave Wallace4-0/+59
2017-10-19VCL-LDPRELOAD: fix iperf3 socket_test.shDave Wallace1-15/+0
2017-10-17Initial commit for phase 2, Add some simple validation.John DeNisco4-8/+235
2017-10-17VCL_LDPRELOAD: Add unit test scripts.Dave Wallace5-0/+160
2017-10-17VCL: refactor VCL_LDPRELOAD env vars.Dave Wallace1-5/+3
2017-10-16LDPRELOAD: Remove hack code in getpeernameSteven1-14/+0
2017-10-15VCL/LDPRELOAD: getpeername and getsocknameSteven1-30/+10
2017-10-14Fix bug with temporary directory when building rpms.Thomas F Herbert1-1/+1
2017-10-14Deps added to Makefile must also be in spec file.Thomas F Herbert1-0/+4
2017-10-13LDPRELOAD: Add TCP_KEEPIDLE, TCP_KEEPINTVL, and SO_KEEPALIVESteven1-9/+32
2017-10-13LDPRELOAD: Add ioctl, fcntl, and setsockopt supportSteven6-32/+255
2017-10-12libmemif: Add memif_cancel_poll_event() + bug fixing.Milan Lenco3-30/+78
2017-10-12Add support for packaging SUSE RPMs.Marco Varlese2-0/+384
2017-10-12Initial push of vcl-ldpreload to extrasKeith Burns (alagalah)14-0/+8327
2017-10-11Redhat and small system supportJohn DeNisco23-0/+6148
">, vni) def test_encap(self): """ Encapsulation test Send frames from pg1 Verify receipt of encapsulated frames on pg0 """ self.pg1.add_stream([self.frame_reply]) self.pg0.enable_capture() self.pg_start() # Pick first received frame and check if it's corectly encapsulated. out = self.pg0.get_capture(1) pkt = out[0] self.check_encapsulation(pkt, self.single_tunnel_bd) # payload = self.decapsulate(pkt) # self.assert_eq_pkts(payload, self.frame_reply) def test_ucast_flood(self): """ Unicast flood test Send frames from pg3 Verify receipt of encapsulated frames on pg0 """ self.pg3.add_stream([self.frame_reply]) self.pg0.enable_capture() self.pg_start() # Get packet from each tunnel and assert it's corectly encapsulated. out = self.pg0.get_capture(self.n_ucast_tunnels) for pkt in out: self.check_encapsulation(pkt, self.ucast_flood_bd, True) # payload = self.decapsulate(pkt) # self.assert_eq_pkts(payload, self.frame_reply) def test_mcast_flood(self): """ Multicast flood test Send frames from pg2 Verify receipt of encapsulated frames on pg0 """ self.pg2.add_stream([self.frame_reply]) self.pg0.enable_capture() self.pg_start() # Pick first received frame and check if it's corectly encapsulated. out = self.pg0.get_capture(1) pkt = out[0] self.check_encapsulation(pkt, self.mcast_flood_bd, local_only=False, mcast_pkt=True) # payload = self.decapsulate(pkt) # self.assert_eq_pkts(payload, self.frame_reply) @classmethod def create_gtpu_flood_test_bd(cls, teid, n_ucast_tunnels): # Create 10 ucast gtpu tunnels under bd ip_range_start = 10 ip_range_end = ip_range_start + n_ucast_tunnels next_hop_address = cls.pg0.remote_ip4n for dest_ip4n in ip4n_range(next_hop_address, ip_range_start, ip_range_end): # add host route so dest_ip4n will not be resolved cls.vapi.ip_add_del_route(dest_ip4n, 32, next_hop_address) r = cls.vapi.gtpu_add_del_tunnel( src_addr=cls.pg0.local_ip4n, dst_addr=dest_ip4n, teid=teid) cls.vapi.sw_interface_set_l2_bridge(r.sw_if_index, bd_id=teid) @classmethod def add_del_shared_mcast_dst_load(cls, is_add): """ add or del tunnels sharing the same mcast dst to test gtpu ref_count mechanism """ n_shared_dst_tunnels = 20 teid_start = 1000 teid_end = teid_start + n_shared_dst_tunnels for teid in range(teid_start, teid_end): r = cls.vapi.gtpu_add_del_tunnel( src_addr=cls.pg0.local_ip4n, dst_addr=cls.mcast_ip4n, mcast_sw_if_index=1, teid=teid, is_add=is_add) if r.sw_if_index == 0xffffffff: raise "bad sw_if_index" @classmethod def add_shared_mcast_dst_load(cls): cls.add_del_shared_mcast_dst_load(is_add=1) @classmethod def del_shared_mcast_dst_load(cls): cls.add_del_shared_mcast_dst_load(is_add=0) @classmethod def add_del_mcast_tunnels_load(cls, is_add): """ add or del tunnels to test gtpu stability """ n_distinct_dst_tunnels = 20 ip_range_start = 10 ip_range_end = ip_range_start + n_distinct_dst_tunnels for dest_ip4n in ip4n_range(cls.mcast_ip4n, ip_range_start, ip_range_end): teid = bytearray(dest_ip4n)[3] cls.vapi.gtpu_add_del_tunnel( src_addr=cls.pg0.local_ip4n, dst_addr=dest_ip4n, mcast_sw_if_index=1, teid=teid, is_add=is_add) @classmethod def add_mcast_tunnels_load(cls): cls.add_del_mcast_tunnels_load(is_add=1) @classmethod def del_mcast_tunnels_load(cls): cls.add_del_mcast_tunnels_load(is_add=0) # Class method to start the GTPU test case. # Overrides setUpClass method in VppTestCase class. # Python try..except statement is used to ensure that the tear down of # the class will be executed even if exception is raised. # @param cls The class pointer. @classmethod def setUpClass(cls): super(TestGtpu, cls).setUpClass() try: cls.dport = 2152 cls.gtp_type = 0xff # Create 2 pg interfaces. cls.create_pg_interfaces(range(4)) for pg in cls.pg_interfaces: pg.admin_up() # Configure IPv4 addresses on VPP pg0. cls.pg0.config_ip4() # Resolve MAC address for VPP's IP address on pg0. cls.pg0.resolve_arp() # Our Multicast address cls.mcast_ip4 = '239.1.1.1' cls.mcast_ip4n = socket.inet_pton(socket.AF_INET, cls.mcast_ip4) iplong = atol(cls.mcast_ip4) cls.mcast_mac = "01:00:5e:%02x:%02x:%02x" % ( (iplong >> 16) & 0x7F, (iplong >> 8) & 0xFF, iplong & 0xFF) # Create GTPU VTEP on VPP pg0, and put gtpu_tunnel0 and pg1 # into BD. cls.single_tunnel_bd = 11 r = cls.vapi.gtpu_add_del_tunnel( src_addr=cls.pg0.local_ip4n, dst_addr=cls.pg0.remote_ip4n, teid=cls.single_tunnel_bd) cls.vapi.sw_interface_set_l2_bridge(r.sw_if_index, bd_id=cls.single_tunnel_bd) cls.vapi.sw_interface_set_l2_bridge(cls.pg1.sw_if_index, bd_id=cls.single_tunnel_bd) # Setup teid 2 to test multicast flooding cls.n_ucast_tunnels = 10 cls.mcast_flood_bd = 12 cls.create_gtpu_flood_test_bd(cls.mcast_flood_bd, cls.n_ucast_tunnels) r = cls.vapi.gtpu_add_del_tunnel( src_addr=cls.pg0.local_ip4n, dst_addr=cls.mcast_ip4n, mcast_sw_if_index=1, teid=cls.mcast_flood_bd) cls.vapi.sw_interface_set_l2_bridge(r.sw_if_index, bd_id=cls.mcast_flood_bd) cls.vapi.sw_interface_set_l2_bridge(cls.pg2.sw_if_index, bd_id=cls.mcast_flood_bd) # Add and delete mcast tunnels to check stability cls.add_shared_mcast_dst_load() cls.add_mcast_tunnels_load() cls.del_shared_mcast_dst_load() cls.del_mcast_tunnels_load() # Setup teid 3 to test unicast flooding cls.ucast_flood_bd = 13 cls.create_gtpu_flood_test_bd(cls.ucast_flood_bd, cls.n_ucast_tunnels) cls.vapi.sw_interface_set_l2_bridge(cls.pg3.sw_if_index, bd_id=cls.ucast_flood_bd) except Exception: super(TestGtpu, cls).tearDownClass() raise # Method to define VPP actions before tear down of the test case. # Overrides tearDown method in VppTestCase class. # @param self The object pointer. def tearDown(self): super(TestGtpu, self).tearDown() if not self.vpp_dead: self.logger.info(self.vapi.cli("show bridge-domain 11 detail")) self.logger.info(self.vapi.cli("show bridge-domain 12 detail")) self.logger.info(self.vapi.cli("show bridge-domain 13 detail")) self.logger.info(self.vapi.cli("show int")) self.logger.info(self.vapi.cli("show gtpu tunnel")) self.logger.info(self.vapi.cli("show trace")) if __name__ == '__main__': unittest.main(testRunner=VppTestRunner)