in ptf/sainat.py [0:0]
def setUp(self):
super(NatTranslationTest, self).setUp()
# object lists
self.route_list = []
self.nbor_list = []
self.nhop_list = []
self.acl_entry_list = []
self.acl_cntr_list = []
self.acl_table_list = []
self.rif_list = []
self.vlan_mbr_list = []
self.vlan_list = []
self.bp_list = []
# regular L3 ports configuration
self.ingr_port_rif = self.port10_rif
self.egr_port_rif = self.port11_rif
self.ingr_port = self.port10
self.egr_port = self.port11
self.ingr_port_dev = self.dev_port10
self.egr_port_dev = self.dev_port11
self.port_nbor_ip = "10.10.10.1"
self.port_nbor_mac = "00:11:11:11:11:11"
self.nat_ip_to_port = "30.30.30.10"
self.nat_port_nhop = sai_thrift_create_next_hop(
self.client,
ip=sai_ipaddress(self.port_nbor_ip),
router_interface_id=self.egr_port_rif,
type=SAI_NEXT_HOP_TYPE_IP)
self.nhop_list.append(self.nat_port_nhop)
self.nat_port_nbor = sai_thrift_neighbor_entry_t(
rif_id=self.egr_port_rif,
ip_address=sai_ipaddress(self.port_nbor_ip))
sai_thrift_create_neighbor_entry(self.client,
self.nat_port_nbor,
dst_mac_address=self.port_nbor_mac,
no_host_route=True)
self.nbor_list.append(self.nat_port_nbor)
self.nat_port_route = sai_thrift_route_entry_t(
vr_id=self.default_vrf,
destination=sai_ipprefix(self.port_nbor_ip + '/32'))
sai_thrift_create_route_entry(
self.client, self.nat_port_route, next_hop_id=self.nat_port_nhop)
self.route_list.append(self.nat_port_route)
# L3 LAGs configuration
self.ingr_lag_rif = self.lag3_rif
self.egr_lag_rif = self.lag4_rif
self.ingr_lag = [self.port14, self.port15, self.port16]
self.egr_lag = [self.port17, self.port18, self.port19]
self.ingr_lag_dev = [self.dev_port14, self.dev_port15, self.dev_port16]
self.egr_lag_dev = [self.dev_port17, self.dev_port18, self.dev_port19]
self.lag_nbor_ip = "10.10.20.1"
self.lag_nbor_mac = "00:22:22:22:22:22"
self.nat_ip_to_lag = "30.30.30.20"
self.nat_lag_nhop = sai_thrift_create_next_hop(
self.client,
ip=sai_ipaddress(self.lag_nbor_ip),
router_interface_id=self.egr_lag_rif,
type=SAI_NEXT_HOP_TYPE_IP)
self.nhop_list.append(self.nat_lag_nhop)
self.nat_lag_nbor = sai_thrift_neighbor_entry_t(
rif_id=self.egr_lag_rif,
ip_address=sai_ipaddress(self.lag_nbor_ip))
sai_thrift_create_neighbor_entry(self.client,
self.nat_lag_nbor,
dst_mac_address=self.lag_nbor_mac,
no_host_route=True)
self.nbor_list.append(self.nat_lag_nbor)
self.nat_lag_route = sai_thrift_route_entry_t(
vr_id=self.default_vrf,
destination=sai_ipprefix(self.lag_nbor_ip + '/32'))
sai_thrift_create_route_entry(
self.client, self.nat_lag_route, next_hop_id=self.nat_lag_nhop)
self.route_list.append(self.nat_lag_route)
# SVI configuration
self.port24_bp = sai_thrift_create_bridge_port(
self.client,
bridge_id=self.default_1q_bridge,
port_id=self.port24,
type=SAI_BRIDGE_PORT_TYPE_PORT,
admin_state=True)
self.bp_list.append(self.port24_bp)
self.port25_bp = sai_thrift_create_bridge_port(
self.client,
bridge_id=self.default_1q_bridge,
port_id=self.port25,
type=SAI_BRIDGE_PORT_TYPE_PORT,
admin_state=True)
self.bp_list.append(self.port25_bp)
self.vlan100 = sai_thrift_create_vlan(self.client, vlan_id=100)
self.vlan_list.append(self.vlan100)
self.vlan100_member0 = sai_thrift_create_vlan_member(
self.client,
vlan_id=self.vlan100,
bridge_port_id=self.port24_bp,
vlan_tagging_mode=SAI_VLAN_TAGGING_MODE_UNTAGGED)
self.vlan_mbr_list.append(self.vlan100_member0)
self.vlan100_member1 = sai_thrift_create_vlan_member(
self.client,
vlan_id=self.vlan100,
bridge_port_id=self.port25_bp,
vlan_tagging_mode=SAI_VLAN_TAGGING_MODE_UNTAGGED)
self.vlan_mbr_list.append(self.vlan100_member1)
sai_thrift_set_port_attribute(
self.client, self.port24, port_vlan_id=100)
sai_thrift_set_port_attribute(
self.client, self.port25, port_vlan_id=100)
self.port26_bp = sai_thrift_create_bridge_port(
self.client,
bridge_id=self.default_1q_bridge,
port_id=self.port26,
type=SAI_BRIDGE_PORT_TYPE_PORT,
admin_state=True)
self.bp_list.append(self.port26_bp)
self.port27_bp = sai_thrift_create_bridge_port(
self.client,
bridge_id=self.default_1q_bridge,
port_id=self.port27,
type=SAI_BRIDGE_PORT_TYPE_PORT,
admin_state=True)
self.bp_list.append(self.port27_bp)
self.vlan200 = sai_thrift_create_vlan(self.client, vlan_id=200)
self.vlan_list.append(self.vlan200)
self.vlan200_member0 = sai_thrift_create_vlan_member(
self.client,
vlan_id=self.vlan200,
bridge_port_id=self.port26_bp,
vlan_tagging_mode=SAI_VLAN_TAGGING_MODE_UNTAGGED)
self.vlan_mbr_list.append(self.vlan200_member0)
self.vlan200_member1 = sai_thrift_create_vlan_member(
self.client,
vlan_id=self.vlan200,
bridge_port_id=self.port27_bp,
vlan_tagging_mode=SAI_VLAN_TAGGING_MODE_UNTAGGED)
self.vlan_mbr_list.append(self.vlan200_member1)
sai_thrift_set_port_attribute(
self.client, self.port26, port_vlan_id=200)
sai_thrift_set_port_attribute(
self.client, self.port27, port_vlan_id=200)
self.ingr_svi_rif = sai_thrift_create_router_interface(
self.client,
type=SAI_ROUTER_INTERFACE_TYPE_VLAN,
virtual_router_id=self.default_vrf,
vlan_id=self.vlan100)
self.rif_list.append(self.ingr_svi_rif)
self.egr_svi_rif = sai_thrift_create_router_interface(
self.client,
type=SAI_ROUTER_INTERFACE_TYPE_VLAN,
virtual_router_id=self.default_vrf,
vlan_id=self.vlan200)
self.rif_list.append(self.egr_svi_rif)
self.ingr_svi = [self.port24, self.port25]
self.egr_svi = [self.port26, self.port27]
self.ingr_svi_dev = [self.dev_port24, self.dev_port25]
self.egr_svi_dev = [self.dev_port26, self.dev_port27]
self.svi_nbor_ip = "10.10.30.1"
self.svi_nbor_mac = "00:33:33:33:33:33"
self.nat_ip_to_svi = "30.30.30.30"
self.nat_svi_nhop = sai_thrift_create_next_hop(
self.client,
ip=sai_ipaddress(self.svi_nbor_ip),
router_interface_id=self.egr_svi_rif,
type=SAI_NEXT_HOP_TYPE_IP)
self.nhop_list.append(self.nat_svi_nhop)
self.nat_svi_nbor = sai_thrift_neighbor_entry_t(
rif_id=self.egr_svi_rif,
ip_address=sai_ipaddress(self.svi_nbor_ip))
sai_thrift_create_neighbor_entry(self.client,
self.nat_svi_nbor,
dst_mac_address=self.svi_nbor_mac,
no_host_route=True)
self.nbor_list.append(self.nat_svi_nbor)
self.nat_svi_route = sai_thrift_route_entry_t(
vr_id=self.default_vrf,
destination=sai_ipprefix(self.svi_nbor_ip + '/32'))
sai_thrift_create_route_entry(
self.client, self.nat_svi_route, next_hop_id=self.nat_svi_nhop)
self.route_list.append(self.nat_svi_route)
# no-NAT ACL configuration
action_types = [SAI_ACL_ACTION_TYPE_NO_NAT]
action_types_list = sai_thrift_s32_list_t(count=len(action_types),
int32list=action_types)
acl_action = sai_thrift_acl_action_data_t(
enable=True,
parameter=sai_thrift_acl_action_parameter_t(booldata=True))
bind_points = [SAI_ACL_BIND_POINT_TYPE_ROUTER_INTERFACE]
bind_points_list = sai_thrift_s32_list_t(count=len(bind_points),
int32list=bind_points)
self.ingr_acl_table = sai_thrift_create_acl_table(
self.client,
acl_stage=SAI_ACL_STAGE_INGRESS,
acl_bind_point_type_list=bind_points_list,
acl_action_type_list=action_types_list,
field_dst_ip=True)
self.acl_table_list.append(self.ingr_acl_table)
self.ingr_acl_counter = sai_thrift_create_acl_counter(
self.client,
self.ingr_acl_table,
enable_packet_count=True)
self.acl_cntr_list.append(self.ingr_acl_counter)
ingr_acl_cnt_action = sai_thrift_acl_action_data_t(
enable=True,
parameter=sai_thrift_acl_action_parameter_t(
oid=self.ingr_acl_counter))
port_nbor_ip_addr = sai_thrift_acl_field_data_t(
data=sai_thrift_acl_field_data_data_t(ip4=self.port_nbor_ip),
mask=sai_thrift_acl_field_data_mask_t(ip4="255.255.255.255"))
self.ingr_acl_port_entry = sai_thrift_create_acl_entry(
self.client,
table_id=self.ingr_acl_table,
action_no_nat=acl_action,
action_counter=ingr_acl_cnt_action,
field_dst_ip=port_nbor_ip_addr)
self.acl_entry_list.append(self.ingr_acl_port_entry)
lag_nbor_ip_addr = sai_thrift_acl_field_data_t(
data=sai_thrift_acl_field_data_data_t(ip4=self.lag_nbor_ip),
mask=sai_thrift_acl_field_data_mask_t(ip4="255.255.255.255"))
self.ingr_acl_lag_entry = sai_thrift_create_acl_entry(
self.client,
table_id=self.ingr_acl_table,
action_no_nat=acl_action,
action_counter=ingr_acl_cnt_action,
field_dst_ip=lag_nbor_ip_addr)
self.acl_entry_list.append(self.ingr_acl_lag_entry)
svi_nbor_ip_addr = sai_thrift_acl_field_data_t(
data=sai_thrift_acl_field_data_data_t(ip4=self.svi_nbor_ip),
mask=sai_thrift_acl_field_data_mask_t(ip4="255.255.255.255"))
self.ingr_acl_svi_entry = sai_thrift_create_acl_entry(
self.client,
table_id=self.ingr_acl_table,
action_no_nat=acl_action,
action_counter=ingr_acl_cnt_action,
field_dst_ip=svi_nbor_ip_addr)
self.acl_entry_list.append(self.ingr_acl_svi_entry)
self.egr_acl_table = sai_thrift_create_acl_table(
self.client,
acl_stage=SAI_ACL_STAGE_INGRESS,
acl_bind_point_type_list=bind_points_list,
acl_action_type_list=action_types_list,
field_dst_ip=True)
self.acl_table_list.append(self.egr_acl_table)
self.egr_acl_counter = sai_thrift_create_acl_counter(
self.client,
self.egr_acl_table,
enable_packet_count=True)
self.acl_cntr_list.append(self.egr_acl_counter)
egr_acl_cnt_action = sai_thrift_acl_action_data_t(
enable=True,
parameter=sai_thrift_acl_action_parameter_t(
oid=self.egr_acl_counter))
to_port_ip_addr = sai_thrift_acl_field_data_t(
data=sai_thrift_acl_field_data_data_t(ip4=self.nat_ip_to_port),
mask=sai_thrift_acl_field_data_mask_t(ip4="255.255.255.255"))
self.egr_acl_port_entry = sai_thrift_create_acl_entry(
self.client,
table_id=self.egr_acl_table,
action_no_nat=acl_action,
action_counter=egr_acl_cnt_action,
field_dst_ip=to_port_ip_addr)
self.acl_entry_list.append(self.egr_acl_port_entry)
to_lag_ip_addr = sai_thrift_acl_field_data_t(
data=sai_thrift_acl_field_data_data_t(ip4=self.nat_ip_to_lag),
mask=sai_thrift_acl_field_data_mask_t(ip4="255.255.255.255"))
self.egr_acl_lag_entry = sai_thrift_create_acl_entry(
self.client,
table_id=self.egr_acl_table,
action_no_nat=acl_action,
action_counter=egr_acl_cnt_action,
field_dst_ip=to_lag_ip_addr)
self.acl_entry_list.append(self.egr_acl_lag_entry)
to_svi_ip_addr = sai_thrift_acl_field_data_t(
data=sai_thrift_acl_field_data_data_t(ip4=self.nat_ip_to_svi),
mask=sai_thrift_acl_field_data_mask_t(ip4="255.255.255.255"))
self.egr_acl_svi_entry = sai_thrift_create_acl_entry(
self.client,
table_id=self.egr_acl_table,
action_no_nat=acl_action,
action_counter=egr_acl_cnt_action,
field_dst_ip=to_svi_ip_addr)
self.acl_entry_list.append(self.egr_acl_svi_entry)
# no-NAT route configuration
no_nat_rif = self.port12_rif
self.no_nat_eport = self.dev_port12
no_nat_ip = "30.30.30.0"
self.no_nat_nbor_mac = "00:33:33:33:33:33"
self.no_nat_nhop = sai_thrift_create_next_hop(
self.client,
ip=sai_ipaddress(no_nat_ip),
router_interface_id=no_nat_rif,
type=SAI_NEXT_HOP_TYPE_IP)
self.nhop_list.append(self.no_nat_nhop)
self.no_nat_nbor = sai_thrift_neighbor_entry_t(
rif_id=no_nat_rif,
ip_address=sai_ipaddress(no_nat_ip))
sai_thrift_create_neighbor_entry(self.client,
self.no_nat_nbor,
dst_mac_address=self.no_nat_nbor_mac,
no_host_route=True)
self.nbor_list.append(self.no_nat_nbor)
self.no_nat_route = sai_thrift_route_entry_t(
vr_id=self.default_vrf,
destination=sai_ipprefix(no_nat_ip + '/24'))
sai_thrift_create_route_entry(
self.client, self.no_nat_route, next_hop_id=self.no_nat_nhop)
self.route_list.append(self.no_nat_route)