import unittest import socket from scapy.layers.ipsec import ESP from framework import VppTestRunner from template_ipsec import TemplateIpsec, IpsecTun4Tests, IpsecTun6Tests, \ IpsecTcpTests from vpp_ipsec_tun_interface import VppIpsecTunInterface from vpp_ip_route import VppIpRoute, VppRoutePath, DpoProto class TemplateIpsec4TunIfEsp(TemplateIpsec): """ IPsec tunnel interface tests """ encryption_type = ESP def setUp(self): super(TemplateIpsec4TunIfEsp, self).setUp() self.tun_if = self.pg0 p = self.ipv4_params tun_if = VppIpsecTunInterface(self, self.pg0, p.vpp_tun_spi, p.scapy_tun_spi, p.crypt_algo_vpp_id, p.crypt_key, p.crypt_key, p.auth_algo_vpp_id, p.auth_key, p.auth_key) tun_if.add_vpp_config() tun_if.admin_up() tun_if.config_ip4() VppIpRoute(self, p.remote_tun_if_host, 32, [VppRoutePath(tun_if.remote_ip4, 0xffffffff)]).add_vpp_config() def tearDown(self): if not self.vpp_dead: self.vapi.cli("show hardware") super(TemplateIpsec4TunIfEsp, self).tearDown() class TestIpsec4TunIfEsp1(TemplateIpsec4TunIfEsp, IpsecTun4Tests): """ Ipsec ESP - TUN tests """ tun4_encrypt_node_name = "esp4-encrypt" tun4_decrypt_node_name = "esp4-decrypt" class TestIpsec4TunIfEsp2(TemplateIpsec4TunIfEsp, IpsecTcpTests): """ Ipsec ESP - TCP tests """ pass class TemplateIpsec6TunIfEsp(TemplateIpsec): """ IPsec tunnel interface tests """ encryption_type = ESP def setUp(self): super(TemplateIpsec6TunIfEsp, self).setUp() self.tun_if = self.pg0 p = self.ipv6_params tun_if = VppIpsecTunInterface(self, self.pg0, p.vpp_tun_spi, p.scapy_tun_spi, p.crypt_algo_vpp_id, p.crypt_key, p.crypt_key, p.auth_algo_vpp_id, p.auth_key, p.auth_key, is_ip6=True) tun_if.add_vpp_config() tun_if.admin_up() tun_if.config_ip6() VppIpRoute(self, p.remote_tun_if_host, 32, [VppRoutePath(tun_if.remote_ip6, 0xffffffff, proto=DpoProto.DPO_PROTO_IP6)], is_ip6=1).add_vpp_config() def tearDown(self): if not self.vpp_dead: self.vapi.cli("show hardware") super(TemplateIpsec6TunIfEsp, self).tearDown() class TestIpsec6TunIfEsp1(TemplateIpsec6TunIfEsp, IpsecTun6Tests): """ Ipsec ESP - TUN tests """ tun6_encrypt_node_name = "esp6-encrypt" tun6_decrypt_node_name = "esp6-decrypt" if __name__ == '__main__': unittest.main(testRunner=VppTestRunner)