@@ -15,7 +15,7 @@ def setup_db(self, dvs):
15
15
self .cdb = swsscommon .DBConnector (4 , dvs .redis_sock , 0 )
16
16
self .sdb = swsscommon .DBConnector (6 , dvs .redis_sock , 0 )
17
17
18
- def set_interface_status (self , interface , admin_status ):
18
+ def set_interface_status (self , dvs , interface , admin_status ):
19
19
if interface .startswith ("PortChannel" ):
20
20
tbl_name = "PORTCHANNEL"
21
21
elif interface .startswith ("Vlan" ):
@@ -27,6 +27,12 @@ def set_interface_status(self, interface, admin_status):
27
27
tbl .set (interface , fvs )
28
28
time .sleep (1 )
29
29
30
+ # when using FRR, route cannot be inserted if the neighbor is not
31
+ # connected. thus it is mandatory to force the interface up manually
32
+ if interface .startswith ("PortChannel" ):
33
+ dvs .runcmd ("bash -c 'echo " + ("1" if admin_status == "up" else "0" ) + \
34
+ " > /sys/class/net/" + interface + "/carrier'" )
35
+
30
36
def add_ip_address (self , interface , ip ):
31
37
if interface .startswith ("PortChannel" ):
32
38
tbl_name = "PORTCHANNEL_INTERFACE"
@@ -118,7 +124,7 @@ def test_MirrorAddRemove(self, dvs, testlog):
118
124
assert self .get_mirror_session_state (session )["status" ] == "inactive"
119
125
120
126
# bring up Ethernet16
121
- self .set_interface_status ("Ethernet16" , "up" )
127
+ self .set_interface_status (dvs , "Ethernet16" , "up" )
122
128
assert self .get_mirror_session_state (session )["status" ] == "inactive"
123
129
124
130
# add IP address to Ethernet16
@@ -183,7 +189,7 @@ def test_MirrorAddRemove(self, dvs, testlog):
183
189
assert self .get_mirror_session_state (session )["status" ] == "inactive"
184
190
185
191
# bring down Ethernet16
186
- self .set_interface_status ("Ethernet16" , "down" )
192
+ self .set_interface_status (dvs , "Ethernet16" , "down" )
187
193
assert self .get_mirror_session_state (session )["status" ] == "inactive"
188
194
189
195
# remove mirror session
@@ -253,8 +259,8 @@ def test_MirrorToVlanAddRemove(self, dvs, testlog):
253
259
self .create_vlan_member ("6" , "Ethernet4" )
254
260
255
261
# bring up vlan and member
256
- self .set_interface_status ("Vlan6" , "up" )
257
- self .set_interface_status ("Ethernet4" , "up" )
262
+ self .set_interface_status (dvs , "Vlan6" , "up" )
263
+ self .set_interface_status (dvs , "Ethernet4" , "up" )
258
264
259
265
# add ip address to vlan 6
260
266
self .add_ip_address ("Vlan6" , "6.6.6.0/24" )
@@ -325,8 +331,8 @@ def test_MirrorToVlanAddRemove(self, dvs, testlog):
325
331
assert self .get_mirror_session_state (session )["status" ] == "inactive"
326
332
327
333
# bring down vlan and member
328
- self .set_interface_status ("Ethernet4" , "down" )
329
- self .set_interface_status ("Vlan6" , "down" )
334
+ self .set_interface_status (dvs , "Ethernet4" , "down" )
335
+ self .set_interface_status (dvs , "Vlan6" , "down" )
330
336
331
337
# remove vlan member; remove vlan
332
338
self .remove_vlan_member ("6" , "Ethernet4" )
@@ -390,8 +396,8 @@ def test_MirrorToLagAddRemove(self, dvs, testlog):
390
396
self .create_port_channel_member ("008" , "Ethernet88" )
391
397
392
398
# bring up port channel and port channel member
393
- self .set_interface_status ("PortChannel008" , "up" )
394
- self .set_interface_status ("Ethernet88" , "up" )
399
+ self .set_interface_status (dvs , "PortChannel008" , "up" )
400
+ self .set_interface_status (dvs , "Ethernet88" , "up" )
395
401
396
402
# add ip address to port channel 008
397
403
self .add_ip_address ("PortChannel008" , "11.11.11.0/24" )
@@ -422,8 +428,8 @@ def test_MirrorToLagAddRemove(self, dvs, testlog):
422
428
assert self .get_mirror_session_state (session )["status" ] == "inactive"
423
429
424
430
# bring down port channel and port channel member
425
- self .set_interface_status ("PortChannel008" , "down" )
426
- self .set_interface_status ("Ethernet88" , "down" )
431
+ self .set_interface_status (dvs , "PortChannel008" , "down" )
432
+ self .set_interface_status (dvs , "Ethernet88" , "down" )
427
433
428
434
# remove port channel member; remove port channel
429
435
self .remove_port_channel_member ("008" , "Ethernet88" )
@@ -458,7 +464,7 @@ def test_MirrorDestMoveVlan(self, dvs, testlog):
458
464
assert self .get_mirror_session_state (session )["status" ] == "inactive"
459
465
460
466
# bring up port; add ip; add neighbor; add route
461
- self .set_interface_status ("Ethernet32" , "up" )
467
+ self .set_interface_status (dvs , "Ethernet32" , "up" )
462
468
self .add_ip_address ("Ethernet32" , "80.0.0.0/31" )
463
469
self .add_neighbor ("Ethernet32" , "80.0.0.1" , "02:04:06:08:10:12" )
464
470
self .add_route (dvs , "8.8.0.0/16" , "80.0.0.1" )
@@ -479,8 +485,8 @@ def test_MirrorDestMoveVlan(self, dvs, testlog):
479
485
# create vlan; create vlan member; bring up vlan and member
480
486
self .create_vlan (dvs , "9" )
481
487
self .create_vlan_member ("9" , "Ethernet48" )
482
- self .set_interface_status ("Vlan9" , "up" )
483
- self .set_interface_status ("Ethernet48" , "up" )
488
+ self .set_interface_status (dvs , "Vlan9" , "up" )
489
+ self .set_interface_status (dvs , "Ethernet48" , "up" )
484
490
assert self .get_mirror_session_state (session )["status" ] == "active"
485
491
486
492
# add ip address to vlan 9
@@ -539,16 +545,16 @@ def test_MirrorDestMoveVlan(self, dvs, testlog):
539
545
assert fv [1 ] == "false"
540
546
541
547
# bring down vlan and member; remove vlan member; remove vlan
542
- self .set_interface_status ("Ethernet48" , "down" )
543
- self .set_interface_status ("Vlan9" , "down" )
548
+ self .set_interface_status (dvs , "Ethernet48" , "down" )
549
+ self .set_interface_status (dvs , "Vlan9" , "down" )
544
550
self .remove_vlan_member ("9" , "Ethernet48" )
545
551
self .remove_vlan ("9" )
546
552
547
553
# remove route; remove neighbor; remove ip; bring down port
548
554
self .remove_route (dvs , "8.8.8.0/24" )
549
555
self .remove_neighbor ("Ethernet32" , "80.0.0.1" )
550
556
self .remove_ip_address ("Ethernet32" , "80.0.0.0/31" )
551
- self .set_interface_status ("Ethernet32" , "down" )
557
+ self .set_interface_status (dvs , "Ethernet32" , "down" )
552
558
553
559
# remove mirror session
554
560
self .remove_mirror_session (session )
@@ -576,7 +582,7 @@ def test_MirrorDestMoveLag(self, dvs, testlog):
576
582
assert self .get_mirror_session_state (session )["status" ] == "inactive"
577
583
578
584
# bring up port; add ip; add neighbor; add route
579
- self .set_interface_status ("Ethernet64" , "up" )
585
+ self .set_interface_status (dvs , "Ethernet64" , "up" )
580
586
self .add_ip_address ("Ethernet64" , "100.0.0.0/31" )
581
587
self .add_neighbor ("Ethernet64" , "100.0.0.1" , "02:04:06:08:10:12" )
582
588
self .add_route (dvs , "13.13.0.0/16" , "100.0.0.1" )
@@ -597,8 +603,8 @@ def test_MirrorDestMoveLag(self, dvs, testlog):
597
603
# create port channel; create port channel member; bring up
598
604
self .create_port_channel (dvs , "080" )
599
605
self .create_port_channel_member ("080" , "Ethernet32" )
600
- self .set_interface_status ("PortChannel080" , "up" )
601
- self .set_interface_status ("Ethernet32" , "up" )
606
+ self .set_interface_status (dvs , "PortChannel080" , "up" )
607
+ self .set_interface_status (dvs , "Ethernet32" , "up" )
602
608
603
609
# add ip address to port channel 080; create neighbor to port channel 080
604
610
self .add_ip_address ("PortChannel080" , "200.0.0.0/31" )
@@ -663,8 +669,8 @@ def test_MirrorDestMoveLag(self, dvs, testlog):
663
669
self .remove_ip_address ("PortChannel080" , "200.0.0.0/31" )
664
670
665
671
# bring down; remove port channel member; remove port channel
666
- self .set_interface_status ("Ethernet32" , "down" )
667
- self .set_interface_status ("PortChannel080" , "down" )
672
+ self .set_interface_status (dvs , "Ethernet32" , "down" )
673
+ self .set_interface_status (dvs , "PortChannel080" , "down" )
668
674
self .remove_port_channel_member ("080" , "Ethernet32" )
669
675
self .remove_port_channel (dvs , "080" )
670
676
assert self .get_mirror_session_state (session )["status" ] == "active"
@@ -673,7 +679,7 @@ def test_MirrorDestMoveLag(self, dvs, testlog):
673
679
self .remove_route (dvs , "13.13.0.0/16" )
674
680
self .remove_neighbor ("Ethernet64" , "100.0.0.1" )
675
681
self .remove_ip_address ("Ethernet64" , "100.0.0.0/31" )
676
- self .set_interface_status ("Ethernet64" , "down" )
682
+ self .set_interface_status (dvs , "Ethernet64" , "down" )
677
683
assert self .get_mirror_session_state (session )["status" ] == "inactive"
678
684
679
685
# remove mirror session
@@ -719,7 +725,7 @@ def test_AclBindMirror(self, dvs, testlog):
719
725
acl_rule = "MIRROR_RULE"
720
726
721
727
# bring up port; assign ip; create neighbor; create route
722
- self .set_interface_status ("Ethernet32" , "up" )
728
+ self .set_interface_status (dvs , "Ethernet32" , "up" )
723
729
self .add_ip_address ("Ethernet32" , "20.0.0.0/31" )
724
730
self .add_neighbor ("Ethernet32" , "20.0.0.1" , "02:04:06:08:10:12" )
725
731
self .add_route (dvs , "4.4.4.4" , "20.0.0.1" )
@@ -788,4 +794,4 @@ def test_AclBindMirror(self, dvs, testlog):
788
794
self .remove_route (dvs , "4.4.4.4" )
789
795
self .remove_neighbor ("Ethernet32" , "20.0.0.1" )
790
796
self .remove_ip_address ("Ethernet32" , "20.0.0.0/31" )
791
- self .set_interface_status ("Ethernet32" , "down" )
797
+ self .set_interface_status (dvs , "Ethernet32" , "down" )
0 commit comments