1919#
2020
2121
22+ from sai_test .constant import *
2223from sai_thrift .sai_adapter import *
2324from sai_utils import * # pylint: disable=wildcard-import; lgtm[py/polluting-import]
2425
25- def t0_route_config_helper (test_obj , is_create_route_for_lag = True ):
26+ def t0_route_config_helper (test_obj , is_create_route = True , is_create_route_for_lag = True ):
2627 route_configer = RouteConfiger (test_obj )
27- vr_id = route_configer .create_vr_id ()
28- # default_virtual_router_id = route_configer.get_default_virtual_router_id()
28+
29+ if is_create_route :
30+ route_configer .create_default_route ()
2931
3032 if is_create_route_for_lag :
3133 ip_addr1 = '10.10.10.0'
3234 mac_addr1 = '02:04:02:01:01:01'
33- route_configer .create_route_and_neighbor_entry_for_port (ip_addr = ip_addr1 , mac_addr = mac_addr1 , port_id = test_obj .lag1 .lag_id , virtual_router_id = vr_id )
35+ route_configer .create_route_and_neighbor_entry_for_port (ip_addr = ip_addr1 ,
36+ mac_addr = mac_addr1 ,
37+ port_id = test_obj .lag1 .lag_id ,
38+ virtual_router_id = test_obj .default_vrf )
3439
3540 ip_addr2 = '10.1.2.100'
3641 mac_addr2 = '02:04:02:01:02:01'
37- route_configer .create_route_and_neighbor_entry_for_port (ip_addr = ip_addr1 , mac_addr = mac_addr2 , port_id = test_obj .lag2 .lag_id , virtual_router_id = vr_id )
42+ route_configer .create_route_and_neighbor_entry_for_port (ip_addr = ip_addr1 ,
43+ mac_addr = mac_addr2 ,
44+ port_id = test_obj .lag2 .lag_id ,
45+ virtual_router_id = test_obj .default_vrf )
3846
39- test_obj .default_virtual_router_id = vr_id
4047
4148class RouteConfiger (object ):
4249 """
@@ -52,20 +59,75 @@ def __init__(self, test_obj) -> None:
5259 """
5360 self .test_obj = test_obj
5461 self .client = test_obj .client
62+
63+ def create_default_route (self ):
64+ self .create_default_route_intf ()
65+ self .create_default_v4_v6_route_entry ()
66+ self .create_local_v6_route ()
5567
56- def create_vr_id (self ):
57- return sai_thrift_create_virtual_router (self .client )
68+ def create_default_route_intf (self ):
69+ """
70+ Create default route interface on loop back interface.
71+ """
72+ print ("Create loop back interface..." )
73+ attr = sai_thrift_get_switch_attribute (self .client , default_virtual_router_id = True )
74+ self .test_obj .assertNotEqual (attr ['default_virtual_router_id' ], 0 )
75+ self .test_obj .default_vrf = attr ['default_virtual_router_id' ]
5876
59- def get_default_virtual_router_id (self ):
60- print ("Get default router id" )
61- def_attr = sai_thrift_get_switch_attribute (self .client , default_virtual_router_id = True )
62-
63- self .test_obj .assertNotEqual (def_attr ["SAI_SWITCH_ATTR_DEFAULT_VIRTUAL_ROUTER_ID" ], 0 )
64- return def_attr ["SAI_SWITCH_ATTR_DEFAULT_VIRTUAL_ROUTER_ID" ]
77+ self .test_obj .loopback_intf = sai_thrift_create_router_interface (self .client ,
78+ type = SAI_ROUTER_INTERFACE_TYPE_LOOPBACK , virtual_router_id = self .test_obj .default_vrf )
79+ self .test_obj .assertEqual (self .test_obj .status (), SAI_STATUS_SUCCESS )
80+
81+ def create_default_v4_v6_route_entry (self ):
82+ """
83+ Create default v4 and v6 route entry.
84+ """
85+
86+ print ("Create default v4&v6 route entry..." )
87+ v6_default = sai_thrift_ip_prefix_t (addr_family = 1 ,
88+ addr = sai_thrift_ip_addr_t (ip6 = DEFAULT_IP_V6_PREFIX ),
89+ mask = sai_thrift_ip_addr_t (ip6 = DEFAULT_IP_V6_PREFIX ))
90+ entry = sai_thrift_route_entry_t (vr_id = self .test_obj .default_vrf ,
91+ destination = v6_default )
92+ self .test_obj .default_ipv6_route_entry = sai_thrift_create_route_entry (
93+ self .client ,
94+ route_entry = entry ,
95+ packet_action = SAI_PACKET_ACTION_DROP )
96+ self .test_obj .assertEqual (self .test_obj .status (), SAI_STATUS_SUCCESS )
97+
98+ entry = sai_thrift_route_entry_t (vr_id = self .test_obj .default_vrf ,
99+ destination = sai_ipprefix (DEFAULT_IP_V4_PREFIX ))
100+ self .test_obj .default_ipv4_route_entry = sai_thrift_create_route_entry (
101+ self .client ,
102+ route_entry = entry ,
103+ packet_action = SAI_PACKET_ACTION_DROP )
104+ self .test_obj .assertEqual (self .test_obj .status (), SAI_STATUS_SUCCESS )
105+
106+ def create_local_v6_route (self ):
107+ """
108+ Create local v6 route base on the configuration of the actual switch.
109+ """
110+
111+ print ("Create local v6 route..." )
112+ entry = sai_thrift_route_entry_t (vr_id = self .test_obj .default_vrf ,
113+ destination = sai_ipprefix (LOCAL_IP_10V6_PREFIX ))
114+ self .test_obj .local_10v6_route_entry = sai_thrift_create_route_entry (
115+ self .client ,
116+ route_entry = entry ,
117+ packet_action = SAI_PACKET_ACTION_FORWARD )
118+ self .test_obj .assertEqual (self .test_obj .status (), SAI_STATUS_SUCCESS )
119+
120+ entry = sai_thrift_route_entry_t (vr_id = self .test_obj .default_vrf ,
121+ destination = sai_ipprefix (LOCAL_IP_128V6_PREFIX ))
122+ self .test_obj .local_128v6_route_entry = sai_thrift_create_route_entry (
123+ self .client ,
124+ route_entry = entry ,
125+ packet_action = SAI_PACKET_ACTION_FORWARD )
126+ self .test_obj .assertEqual (self .test_obj .status (), SAI_STATUS_SUCCESS )
65127
66128 def create_route_and_neighbor_entry_for_port (self , ip_addr , mac_addr , port_id , virtual_router_id = None ):
67129 if virtual_router_id is None :
68- virtual_router_id = self .get_default_virtual_router_id ()
130+ virtual_router_id = self .test_obj . default_vrf
69131
70132 rif_id1 = sai_thrift_create_router_interface (self .client , virtual_router_id = virtual_router_id , type = SAI_ROUTER_INTERFACE_TYPE_PORT , port_id = port_id )
71133
0 commit comments