Avoid using reserved MPLS label in test case
Change-Id: I9c24937c72c5c4e4410ca30852aa3a886ec9e3a3
diff --git a/ofdpa/flows.py b/ofdpa/flows.py
index 0a3461b..a0ecb0f 100755
--- a/ofdpa/flows.py
+++ b/ofdpa/flows.py
@@ -1089,16 +1089,19 @@
# Assigns unique hardcoded test_id to make sure tests don't overlap when writing rules
ports = config[ "port_map" ].keys( )
for port in ports:
+ # Shift MPLS label and VLAN ID by 16 to avoid reserved values
+ vlan_id = port + 16
+ mpls_label = port + 16
+
# add l2 interface group
id = port
- vlan_id = id
l2_gid, l2_msg = add_one_l2_interface_group( self.controller, port, vlan_id, True, False )
- dst_mac[ 5 ] = vlan_id
+ dst_mac[ 5 ] = port
mpls_gid, mpls_msg = add_mpls_intf_group( self.controller, l2_gid, dst_mac, intf_src_mac,
vlan_id, id )
mpls_label_gid, mpls_label_msg = add_mpls_label_group( self.controller,
subtype=OFDPA_MPLS_GROUP_SUBTYPE_SWAP_LABEL, index=id, ref_gid=mpls_gid,
- push_mpls_header=False, set_mpls_label=port, set_bos=1 )
+ push_mpls_header=False, set_mpls_label=mpls_label, set_bos=1 )
ecmp_gid, ecmp_msg = add_mpls_forwarding_group( self.controller,
subtype=OFDPA_MPLS_GROUP_SUBTYPE_ECMP, index=id, ref_gids=[mpls_label_gid] )
# add vlan flow table
@@ -1106,7 +1109,7 @@
# add termination flow
add_termination_flow( self.controller, port, 0x8847, intf_src_mac, vlan_id, goto_table=24 )
#add_mpls_flow( self.controller, ecmp_gid, port, goto_table=29 )
- add_mpls_flow( self.controller, mpls_label_gid, port, goto_table=29 )
+ add_mpls_flow( self.controller, mpls_label_gid, mpls_label, goto_table=29 )
dst_ip = dip + (vlan_id << 8)
Groups._put( l2_gid )
Groups._put( mpls_gid )
@@ -1120,18 +1123,23 @@
for out_port in ports:
if in_port == out_port:
continue
- ip_dst = '192.168.%02d.1' % (out_port)
- label = (out_port, 0, 1, 32)
- parsed_pkt = mpls_packet( pktlen=104, dl_vlan_enable=True, vlan_vid=(in_port),
+ # Shift MPLS label and VLAN ID by 16 to avoid reserved values
+ out_mpls_label = out_port + 16
+ in_vlan_vid = in_port + 16
+ out_vlan_vid = out_port + 16
+
+ ip_dst = '192.168.%02d.1' % (out_port)
+ label = (out_mpls_label, 0, 1, 32)
+ parsed_pkt = mpls_packet( pktlen=104, dl_vlan_enable=True, vlan_vid=(in_vlan_vid),
ip_src=ip_src, ip_dst=ip_dst, eth_dst=switch_mac, label=[ label ] )
pkt = str( parsed_pkt )
self.dataplane.send( in_port, pkt )
# build expect packet
mac_dst = '00:00:00:22:22:%02X' % (out_port)
- label = (out_port, 0, 1, 31)
- exp_pkt = mpls_packet( pktlen=104, dl_vlan_enable=True, vlan_vid=(out_port),
+ label = (out_mpls_label, 0, 1, 31)
+ exp_pkt = mpls_packet( pktlen=104, dl_vlan_enable=True, vlan_vid=(out_vlan_vid),
ip_src=ip_src, ip_dst=ip_dst, eth_src=switch_mac, eth_dst=mac_dst,
label=[ label ] )
pkt = str( exp_pkt )
@@ -1158,8 +1166,12 @@
# Assigns unique hardcoded test_id to make sure tests don't overlap when writing rules
ports = config[ "port_map" ].keys( )
for port in ports:
+ # Shift MPLS label and VLAN ID by 16 to avoid reserved values
+ vlan_id = port + 16
+ mpls_label = port + 16
+
# add l2 interface group
- vlan_id, id, dst_mac[ 5 ] = port, port, port
+ id, dst_mac[ 5 ] = port, port
l2_gid, l2_msg = add_one_l2_interface_group( self.controller, port, vlan_id, True, False )
# add L3 Unicast group
l3_msg = add_l3_unicast_group( self.controller, port, vlanid=vlan_id, id=id,
@@ -1170,7 +1182,7 @@
add_one_vlan_table_flow( self.controller, port, vlan_id, flag=VLAN_TABLE_FLAG_ONLY_TAG )
# add termination flow
add_termination_flow( self.controller, port, 0x8847, intf_src_mac, vlan_id, goto_table=24 )
- add_mpls_flow( self.controller, ecmp_msg.group_id, port )
+ add_mpls_flow( self.controller, ecmp_msg.group_id, mpls_label )
# add_mpls_flow(self.controller, label=port)
dst_ip = dip + (vlan_id << 8)
# add_unicast_routing_flow(self.controller, 0x0800, dst_ip, 0xffffff00,
@@ -1186,15 +1198,21 @@
for out_port in ports:
if in_port == out_port:
continue
+
+ # Shift MPLS label and VLAN ID by 16 to avoid reserved values
+ out_mpls_label = out_port + 16
+ in_vlan_vid = in_port + 16
+ out_vlan_vid = out_port + 16
+
ip_dst = '192.168.%02d.1' % (out_port)
- label = (out_port, 0, 1, 32)
- parsed_pkt = mpls_packet( pktlen=104, dl_vlan_enable=True, vlan_vid=(in_port),
+ label = (out_mpls_label, 0, 1, 32)
+ parsed_pkt = mpls_packet( pktlen=104, dl_vlan_enable=True, vlan_vid=(in_vlan_vid),
ip_src=ip_src, ip_dst=ip_dst, eth_dst=switch_mac, label=[ label ] )
pkt = str( parsed_pkt )
self.dataplane.send( in_port, pkt )
# build expect packet
mac_dst = '00:00:00:22:22:%02X' % (out_port)
- exp_pkt = simple_tcp_packet( pktlen=100, dl_vlan_enable=True, vlan_vid=(out_port),
+ exp_pkt = simple_tcp_packet( pktlen=100, dl_vlan_enable=True, vlan_vid=(out_vlan_vid),
eth_dst=mac_dst, eth_src=switch_mac, ip_ttl=31, ip_src=ip_src, ip_dst=ip_dst )
pkt = str( exp_pkt )
verify_packet( self, pkt, out_port )