]> git.proxmox.com Git - mirror_ovs.git/blame - tests/mpls-xlate.at
ovsdb: avoid unnecessary call to ovsdb_monitor_get_update()
[mirror_ovs.git] / tests / mpls-xlate.at
CommitLineData
5af43325
PS
1AT_BANNER([mpls_xlate])
2
3AT_SETUP([MPLS xlate action])
4
5OVS_VSWITCHD_START([add-port br0 p0 -- set Interface p0 type=dummy ofport_request=1])
6
7AT_CHECK([ovs-appctl dpif/show], [0], [dnl
8dummy@ovs-dummy: hit:0 missed:0
9 br0:
10 br0 65534/100: (dummy)
11 p0 1/1: (dummy)
12])
13
14dnl Setup single MPLS tags.
15AT_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])
16AT_CHECK([ovs-ofctl -O OpenFlow13 add-flow br0 dl_type=0x8847,in_port=1,mpls_label=20,action=pop_mpls:0x0800,output:LOCAL])
17
18dnl Test MPLS push
efa6665e 19AT_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
20AT_CHECK([tail -1 stdout], [0],
21 [Datapath actions: push_mpls(label=10,tc=0,ttl=64,bos=1,eth_type=0x8847),1
22])
23
24dnl Test MPLS pop
25AT_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])
26AT_CHECK([tail -1 stdout], [0],
27 [Datapath actions: pop_mpls(eth_type=0x800),100
28])
29
30dnl Setup multiple MPLS tags.
31AT_CHECK([ovs-ofctl del-flows br0])
32
33AT_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
34# The resubmits will be executed after recirculation, which preserves the
35# register values.
36AT_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])
37# The pop_mpls below recirculates from within a resubmit
38# After recirculation the (restored) register value is moved to IP ttl.
39AT_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
40
41dnl Double MPLS push
42AT_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])
43AT_CHECK([tail -1 stdout], [0],
44 [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
45])
46
47dnl Double MPLS pop
e672ff9b 48AT_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/0,ttl=64,bos=0)' -generate], [0], [stdout])
5af43325 49AT_CHECK([tail -1 stdout], [0],
8f19f0a7 50 [Datapath actions: pop_mpls(eth_type=0x8847),recirc(0x1)
e672ff9b
JR
51])
52
53AT_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(0x8847),mpls(label=50,tc=0/0,ttl=64,bos=0)' -generate], [0], [stdout])
54AT_CHECK([tail -1 stdout], [0],
8f19f0a7 55 [Datapath actions: pop_mpls(eth_type=0x800),recirc(0x2)
e672ff9b
JR
56])
57
58AT_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)' -generate], [0], [stdout])
59AT_CHECK([tail -1 stdout], [0],
60 [Datapath actions: set(ipv4(ttl=10)),100
5af43325
PS
61])
62
63OVS_VSWITCHD_STOP
64AT_CLEANUP