]>
Commit | Line | Data |
---|---|---|
3fd12197 | 1 | AT_BANNER([mpls-xlate]) |
5af43325 PS |
2 | |
3 | AT_SETUP([MPLS xlate action]) | |
4 | ||
5 | OVS_VSWITCHD_START([add-port br0 p0 -- set Interface p0 type=dummy ofport_request=1]) | |
6 | ||
7 | AT_CHECK([ovs-appctl dpif/show], [0], [dnl | |
8 | dummy@ovs-dummy: hit:0 missed:0 | |
9 | br0: | |
10 | br0 65534/100: (dummy) | |
11 | p0 1/1: (dummy) | |
12 | ]) | |
13 | ||
14 | dnl Setup single MPLS tags. | |
15 | AT_CHECK([ovs-ofctl -O OpenFlow13 add-flow br0 in_port=local,dl_type=0x0800,action=push_mpls:0x8847,set_field:10-\>mpls_label,output:1]) | |
16 | AT_CHECK([ovs-ofctl -O OpenFlow13 add-flow br0 dl_type=0x8847,in_port=1,mpls_label=20,action=pop_mpls:0x0800,output:LOCAL]) | |
17 | ||
18 | dnl Test MPLS push | |
efa6665e | 19 | AT_CHECK([ovs-appctl ofproto/trace ovs-dummy 'in_port(100),eth(src=f8:bc:12:44:34:b6,dst=f8:bc:12:46:58:e0),eth_type(0x0800),ipv4(src=1.1.2.92,dst=1.1.2.88,proto=17,tos=0,ttl=64,frag=no),udp(src=7777,dst=80)'], [0], [stdout]) |
5af43325 PS |
20 | AT_CHECK([tail -1 stdout], [0], |
21 | [Datapath actions: push_mpls(label=10,tc=0,ttl=64,bos=1,eth_type=0x8847),1 | |
22 | ]) | |
23 | ||
24 | dnl Test MPLS pop | |
25 | AT_CHECK([ovs-appctl ofproto/trace ovs-dummy 'in_port(1),eth(src=f8:bc:12:44:34:b6,dst=f8:bc:12:46:58:e0),eth_type(0x8847),mpls(label=20,tc=0,ttl=64,bos=1)'], [0], [stdout]) | |
26 | AT_CHECK([tail -1 stdout], [0], | |
8bf009bf JR |
27 | [Datapath actions: pop_mpls(eth_type=0x800),recirc(0x1) |
28 | ]) | |
29 | ||
30 | AT_CHECK([ovs-appctl ofproto/trace ovs-dummy 'recirc_id(1),in_port(1),eth(src=f8:bc:12:44:34:b6,dst=f8:bc:12:46:58:e0),eth_type(0x0800),ipv4(src=1.1.2.92,dst=1.1.2.88,proto=47,tos=0,ttl=64,frag=no)'], [0], [stdout]) | |
31 | AT_CHECK([tail -1 stdout], [0], | |
32 | [Datapath actions: 100 | |
5af43325 PS |
33 | ]) |
34 | ||
35 | dnl Setup multiple MPLS tags. | |
36 | AT_CHECK([ovs-ofctl del-flows br0]) | |
37 | ||
38 | AT_CHECK([ovs-ofctl -O OpenFlow13 add-flow br0 in_port=local,dl_type=0x0800,action=push_mpls:0x8847,set_field:10-\>mpls_label,push_mpls:0x8847,set_field:20-\>mpls_label,output:1]) | |
e672ff9b JR |
39 | # The resubmits will be executed after recirculation, which preserves the |
40 | # register values. | |
41 | AT_CHECK([ovs-ofctl -O OpenFlow13 add-flow br0 cookie=0xa,table=0,dl_type=0x8847,in_port=1,mpls_label=60,action=set_field:10-\>reg0,pop_mpls:0x8847,goto_table:1]) | |
42 | # The pop_mpls below recirculates from within a resubmit | |
43 | # After recirculation the (restored) register value is moved to IP ttl. | |
44 | AT_CHECK([ovs-ofctl -O OpenFlow13 add-flow br0 cookie=0xb,table=1,dl_type=0x8847,in_port=1,mpls_label=50,action=push:NXM_NX_REG0[[0..7]],pop_mpls:0x0800,set_field:0-\>nw_ttl,pop:NXM_NX_REG1[[0..7]],move:NXM_NX_REG1[[0..7]]-\>NXM_NX_IP_TTL[[]],output:LOCAL]) | |
5af43325 PS |
45 | |
46 | dnl Double MPLS push | |
47 | AT_CHECK([ovs-appctl ofproto/trace ovs-dummy 'in_port(100),eth(src=f8:bc:12:44:34:b6,dst=f8:bc:12:46:58:e0),eth_type(0x0800),ipv4(src=1.1.2.92,dst=1.1.2.88,proto=47,tos=0,ttl=64,frag=no)'], [0], [stdout]) | |
48 | AT_CHECK([tail -1 stdout], [0], | |
49 | [Datapath actions: push_mpls(label=10,tc=0,ttl=64,bos=1,eth_type=0x8847),push_mpls(label=20,tc=0,ttl=64,bos=0,eth_type=0x8847),1 | |
50 | ]) | |
51 | ||
52 | dnl Double MPLS pop | |
8f79bb4d | 53 | AT_CHECK([ovs-appctl ofproto/trace ovs-dummy 'in_port(1),eth(src=f8:bc:12:44:34:b6,dst=f8:bc:12:46:58:e0),eth_type(0x8847),mpls(label=60,tc=0,ttl=64,bos=0,label=50,tc=0,ttl=64,bos=1)'], [0], [stdout]) |
5af43325 | 54 | AT_CHECK([tail -1 stdout], [0], |
8bf009bf | 55 | [Datapath actions: pop_mpls(eth_type=0x8847),pop_mpls(eth_type=0x800),recirc(0x2) |
e672ff9b JR |
56 | ]) |
57 | ||
3fd12197 | 58 | AT_CHECK([ovs-appctl ofproto/trace ovs-dummy 'recirc_id(2),in_port(1),eth(src=f8:bc:12:44:34:b6,dst=f8:bc:12:46:58:e0),eth_type(0x0800),ipv4(src=1.1.2.92,dst=1.1.2.88,proto=47,tos=0,ttl=64,frag=no)'], [0], [stdout]) |
e672ff9b JR |
59 | AT_CHECK([tail -1 stdout], [0], |
60 | [Datapath actions: set(ipv4(ttl=10)),100 | |
5af43325 PS |
61 | ]) |
62 | ||
63 | OVS_VSWITCHD_STOP | |
64 | AT_CLEANUP |