~ubuntu-branches/ubuntu/wily/openvswitch/wily

« back to all changes in this revision

Viewing changes to tests/ovs-ofctl.at

  • Committer: Package Import Robot
  • Author(s): James Page
  • Date: 2015-08-10 11:35:15 UTC
  • mfrom: (1.1.30)
  • Revision ID: package-import@ubuntu.com-20150810113515-575vj06oq29emxsn
Tags: 2.4.0~git20150810.97bab95-0ubuntu1
* New upstream snapshot from 2.4 branch:
  - d/*: Align any relevant packaging changes with upstream.
* d/*: wrap-and-sort.
* d/openvswitch-{common,vswitch}.install: Correct install location for
  bash completion files.
* d/tests/openflow.py: Explicitly use ovs-testcontroller as provided
  by 2.4.0 release.

Show diffs side-by-side

added added

removed removed

Lines of Context:
13
13
    'tun_flags=1/1                               none' \
14
14
    'tun_tos=0                                   none' \
15
15
    'tun_ttl=0                                   none' \
 
16
    'tun_gbp_id=0                                NXM,OXM' \
 
17
    'tun_gbp_id=0/0x1                            NXM,OXM' \
 
18
    'tun_gbp_flags=0                             NXM,OXM' \
 
19
    'tun_gbp_flags=0/0x1                         NXM,OXM' \
16
20
    'metadata=0                                  NXM,OXM,OpenFlow11' \
17
21
    'metadata=1/1                                NXM,OXM,OpenFlow11' \
18
22
    'in_port=1                                   any' \
35
39
    'reg6=6/1                                    NXM,OXM' \
36
40
    'reg7=7                                      NXM,OXM' \
37
41
    'reg7=7/1                                    NXM,OXM' \
 
42
    'xreg0=0                                     NXM,OXM' \
 
43
    'xreg0=0/1                                   NXM,OXM' \
 
44
    'xreg1=1                                     NXM,OXM' \
 
45
    'xreg1=1/1                                   NXM,OXM' \
 
46
    'xreg2=2                                     NXM,OXM' \
 
47
    'xreg2=2/3                                   NXM,OXM' \
 
48
    'xreg3=3                                     NXM,OXM' \
 
49
    'xreg3=3/5                                   NXM,OXM' \
38
50
    'dl_src=00:11:22:33:44:55                    any' \
39
51
    'dl_src=00:11:22:33:44:55/00:ff:ff:ff:ff:ff  NXM,OXM,OpenFlow11' \
40
52
    'dl_dst=00:11:22:33:44:55                    any' \
61
73
    'ip,ip_dst=192.168.0.0/24                    any' \
62
74
    'ip,ip_dst=192.0.168.0/255.0.255.0           NXM,OXM,OpenFlow11' \
63
75
    'ipv6,ipv6_src=::1                           NXM,OXM' \
64
 
    'ipv6,ipv6_src=::1/::1                       NXM,OXM' \
 
76
    'ipv6,ipv6_src=0:0:0:0:0:0:0:1/::1           NXM,OXM' \
65
77
    'ipv6,ipv6_dst=::1                           NXM,OXM' \
66
 
    'ipv6,ipv6_dst=::1/::1                       NXM,OXM' \
 
78
    'ipv6,ipv6_dst=0:0:0:0:0:0:0:1/::1           NXM,OXM' \
67
79
    'ipv6,ipv6_label=5                           NXM,OXM' \
68
80
    'ipv6,ipv6_label=5/1                         NXM,OXM' \
69
81
    'ip,nw_proto=1                               any' \
128
140
AT_SETUP([ovs-ofctl parse-flows (OpenFlow 1.0)])
129
141
AT_DATA([flows.txt], [[
130
142
# comment
131
 
tcp,tp_src=123,out_port=5,actions=flood
 
143
tcp,tp_src=123,actions=flood
132
144
in_port=LOCAL dl_vlan=9 dl_src=00:0A:E4:25:6B:B0 actions=drop
133
145
udp dl_vlan_pcp=7 idle_timeout=5 actions=strip_vlan output:0
134
146
tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
147
159
AT_CHECK([[sed 's/ (xid=0x[0-9a-fA-F]*)//' stdout]], [0],
148
160
[[usable protocols: any
149
161
chosen protocol: OpenFlow10-table_id
150
 
OFPT_FLOW_MOD: ADD tcp,tp_src=123 out_port:5 actions=FLOOD
 
162
OFPT_FLOW_MOD: ADD tcp,tp_src=123 actions=FLOOD
151
163
OFPT_FLOW_MOD: ADD in_port=LOCAL,dl_vlan=9,dl_src=00:0a:e4:25:6b:b0 actions=drop
152
164
OFPT_FLOW_MOD: ADD udp,dl_vlan_pcp=7 idle:5 actions=strip_vlan,output:0
153
165
OFPT_FLOW_MOD: ADD tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
165
177
AT_SETUP([ovs-ofctl parse-flows (OpenFlow 1.1)])
166
178
AT_DATA([flows.txt], [[
167
179
# comment
168
 
tcp,tp_src=123,out_port=5,actions=flood
 
180
tcp,tp_src=123,actions=flood
169
181
in_port=LOCAL dl_vlan=9 dl_src=00:0A:E4:25:6B:B0 actions=drop
170
182
udp dl_vlan_pcp=7 idle_timeout=5 actions=strip_vlan output:0
171
183
tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
184
196
AT_CHECK([[sed 's/ (xid=0x[0-9a-fA-F]*)//' stdout]], [0],
185
197
[[usable protocols: any
186
198
chosen protocol: OpenFlow11
187
 
OFPT_FLOW_MOD (OF1.1): ADD tcp,tp_src=123 out_port:5 actions=FLOOD
 
199
OFPT_FLOW_MOD (OF1.1): ADD tcp,tp_src=123 actions=FLOOD
188
200
OFPT_FLOW_MOD (OF1.1): ADD in_port=LOCAL,dl_vlan=9,dl_src=00:0a:e4:25:6b:b0 actions=drop
189
201
OFPT_FLOW_MOD (OF1.1): ADD udp,dl_vlan_pcp=7 idle:5 actions=pop_vlan,output:0
190
202
OFPT_FLOW_MOD (OF1.1): ADD tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
582
594
NXM_OF_ETH_TYPE(0800) NXM_OF_IP_SRC_W(C0a80000/FFFF0000)
583
595
NXM_OF_ETH_TYPE(0800) NXM_OF_IP_SRC_W(C0a80000/5a5a5a5a)
584
596
NXM_OF_ETH_TYPE(0800) NXM_OF_IP_SRC_W(C0a80000/ffffffff)
585
 
NXM_OF_ETH_TYPE(0800) NXM_OF_IP_SRC_W(C0a80000/00000000)
586
597
NXM_OF_ETH_TYPE(0806) NXM_OF_IP_SRC(ac100014)
587
598
NXM_OF_IP_SRC_W(C0D80000/FFFF0000)
588
599
 
591
602
NXM_OF_ETH_TYPE(0800) NXM_OF_IP_DST_W(C0a88012/FFFF0000)
592
603
NXM_OF_ETH_TYPE(0800) NXM_OF_IP_DST_W(C0a80000/5a5a5a5a)
593
604
NXM_OF_ETH_TYPE(0800) NXM_OF_IP_DST_W(C0a80000/ffffffff)
594
 
NXM_OF_ETH_TYPE(0800) NXM_OF_IP_DST_W(C0a80000/00000000)
595
605
NXM_OF_IP_DST(ac100014)
596
606
NXM_OF_ETH_TYPE(0806) NXM_OF_IP_DST_W(C0D80000/FFFF0000)
597
607
 
599
609
NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_SRC(4231)
600
610
NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_SRC_W(5050/F0F0)
601
611
NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_SRC_W(5050/ffff)
602
 
NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_SRC_W(5050/0000)
603
612
NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(07) NXM_OF_TCP_SRC(4231)
604
613
 
605
614
# TCP destination port
606
615
NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_DST(4231)
607
616
NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_DST_W(FDE0/FFF0)
608
617
NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_DST_W(FDE0/ffff)
609
 
NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_TCP_DST_W(FDE0/0000)
610
618
NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(07) NXM_OF_TCP_DST(4231)
611
619
 
612
620
# TCP flags
613
621
NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_NX_TCP_FLAGS(0131)
614
622
NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_NX_TCP_FLAGS_W(00F0/0FF0)
615
623
NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_NX_TCP_FLAGS_W(01E2/ffff)
616
 
NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_NX_TCP_FLAGS_W(00E1/0000)
617
 
NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(07) NXM_NX_TCP_FLAGS(4321)
 
624
NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(07) NXM_NX_TCP_FLAGS(0fff)
618
625
 
619
626
# UDP source port
620
627
NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_SRC(8732)
621
628
NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_SRC_W(0132/01FF)
622
629
NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_SRC_W(0132/ffff)
623
 
NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_SRC_W(0132/0000)
624
630
NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(06) NXM_OF_UDP_SRC(7823)
625
631
 
626
632
# UDP destination port
627
633
NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_DST(1782)
628
634
NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_DST_W(5005/F00F)
629
635
NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_DST_W(5005/FFFF)
630
 
NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(11) NXM_OF_UDP_DST_W(5005/0000)
631
636
NXM_OF_ETH_TYPE(0800) NXM_OF_IP_PROTO(02) NXM_OF_UDP_DST(1293)
632
637
 
633
638
# ICMP type
652
657
NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_SPA_W(C0a81234/FFFFFF00)
653
658
NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_SPA_W(C0a81234/aaaaaa00)
654
659
NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_SPA_W(C0a81234/ffffffff)
655
 
NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_SPA_W(C0a81234/00000000)
656
660
NXM_OF_ETH_TYPE(0800) NXM_OF_ARP_SPA(ac100014)
657
 
NXM_OF_ARP_SPA_W(C0D8fedc/FFFF0000)
 
661
NXM_OF_ARP_SPA_W(C0D80000/FFFF0000)
658
662
 
659
663
# ARP destination protocol address
660
664
NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_TPA(ac100014)
661
665
NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_TPA_W(C0a812fe/FFFFFF00)
662
666
NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_TPA_W(C0a81234/77777777)
663
667
NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_TPA_W(C0a81234/ffffffff)
664
 
NXM_OF_ETH_TYPE(0806) NXM_OF_ARP_TPA_W(C0a81234/00000000)
665
668
NXM_OF_ETH_TYPE(0800) NXM_OF_ARP_TPA(ac100014)
666
669
NXM_OF_ARP_TPA_W(C0D80000/FFFF0000)
667
670
 
684
687
 
685
688
# RARP source protocol address
686
689
NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_SPA(ac100014)
687
 
NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_SPA_W(C0a81234/FFFFFF00)
 
690
NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_SPA_W(C0a81200/FFFFFF00)
688
691
NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_SPA_W(C0a81234/aaaaaa00)
689
692
NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_SPA_W(C0a81234/ffffffff)
690
 
NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_SPA_W(C0a81234/00000000)
691
693
NXM_OF_ETH_TYPE(0800) NXM_OF_ARP_SPA(ac100014)
692
 
NXM_OF_ARP_SPA_W(C0D8fedc/FFFF0000)
 
694
NXM_OF_ARP_SPA_W(C0D80000/FFFF0000)
693
695
 
694
696
# RARP destination protocol address
695
697
NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_TPA(ac100014)
696
 
NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_TPA_W(C0a812fe/FFFFFF00)
 
698
NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_TPA_W(C0a81200/FFFFFF00)
697
699
NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_TPA_W(C0a81234/77777777)
698
700
NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_TPA_W(C0a81234/ffffffff)
699
 
NXM_OF_ETH_TYPE(8035) NXM_OF_ARP_TPA_W(C0a81234/00000000)
700
701
NXM_OF_ETH_TYPE(0800) NXM_OF_ARP_TPA(ac100014)
701
702
NXM_OF_ARP_TPA_W(C0D80000/FFFF0000)
702
703
 
717
718
NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/5a5a5a5a5a5a5a5a0000000000000000)
718
719
NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffffffffffffffffffff)
719
720
NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/00000000000000000000000000000000)
720
 
NXM_OF_ETH_TYPE(0800) NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
 
721
NXM_OF_ETH_TYPE(0800) NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffffffff000000000000)
721
722
 
722
723
# IPv6 destination
723
724
NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_DST(20010db83c4d00010002000300040005)
724
725
NXM_OF_ETH_TYPE(0800) NXM_NX_IPV6_DST(20010db83c4d00010002000300040005)
725
726
NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_DST_W(20010db83c4d00010000000000000000/77777777777777777777777777777777)
726
727
NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffffffffffffffffffff)
727
 
NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_DST_W(20010db83c4d00010000000000000000/00000000000000000000000000000000)
 
728
NXM_OF_ETH_TYPE(86dd) NXM_NX_IPV6_DST_W(00000000000000000000000000000000/00000000000000000000000000000000)
728
729
NXM_OF_ETH_TYPE(0800) NXM_NX_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
729
730
 
730
731
# IPv6 Flow Label
737
738
NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(88) NXM_NX_ND_TARGET(20010db83c4d00010002000300040005)
738
739
NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET_W(20010db83c4d00010002000300040005/0123456789abcdeffedcba9876543210)
739
740
NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET_W(20010db83c4d00010002000300040005/ffffffffffffffffffffffffffffffff)
740
 
NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET_W(20010db83c4d00010002000300040005/00000000000000000000000000000000)
 
741
NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(87) NXM_NX_ND_TARGET_W(00000000000000000000000000000000/00000000000000000000000000000000)
741
742
NXM_OF_ETH_TYPE(86dd) NXM_OF_IP_PROTO(3a) NXM_NX_ICMPV6_TYPE(88) NXM_NX_ND_TARGET_W(20010db83c4d00010002000300040005/fedcba98765432100123456789abcdef)
742
743
 
743
744
# ND source hardware address
786
787
NXM_NX_COOKIE(00000000abcdef01)
787
788
NXM_NX_COOKIE_W(84200000abcdef01/84200000FFFFFFFF)
788
789
NXM_NX_COOKIE_W(84200000abcdef01/ffffffffffffffff)
789
 
NXM_NX_COOKIE_W(84200000abcdef01/0000000000000000)
 
790
NXM_NX_COOKIE_W(0000000000000000/0000000000000000)
790
791
 
791
792
# Tunnel ID.
792
793
NXM_NX_TUN_ID(00000000abcdef01)
793
794
NXM_NX_TUN_ID_W(84200000abcdef01/84200000FFFFFFFF)
794
795
NXM_NX_TUN_ID_W(84200000abcdef01/FFFFFFFFFFFFFFFF)
795
 
NXM_NX_TUN_ID_W(84200000abcdef01/0000000000000000)
 
796
NXM_NX_TUN_ID_W(0000000000000000/0000000000000000)
796
797
 
797
798
# Register 0.
798
799
NXM_NX_REG0(acebdf56)
799
800
NXM_NX_REG0_W(a0e0d050/f0f0f0f0)
800
801
NXM_NX_REG0_W(a0e0d050/ffffffff)
801
 
NXM_NX_REG0_W(a0e0d050/00000000)
 
802
NXM_NX_REG0_W(00000000/00000000)
 
803
 
 
804
# dp_hash (testing experimenter OXM).
 
805
NXM_NX_DP_HASH(01234567)
 
806
NXOXM_ET_DP_HASH(01234567)
802
807
 
803
808
# Invalid field number.
804
 
01020304(1111/2222)
 
809
01020304(1111/3333)
 
810
 
 
811
# Invalid field numbers (experimenter OXM).
 
812
ffff020800002320(11112222)
 
813
ffff030800002320(1111/3333)
805
814
 
806
815
# Unimplemented registers.
807
816
#
823
832
NXM_OF_ETH_DST(0002e30f80a4)
824
833
NXM_OF_ETH_DST_W(010000000000/010000000000)
825
834
NXM_OF_ETH_DST_W(000000000000/010000000000)
826
 
NXM_OF_ETH_DST_W(010000000000/010000000000)
 
835
nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
827
836
NXM_OF_ETH_DST(0002e30f80a4)
828
 
<any>
 
837
nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
829
838
NXM_OF_ETH_DST_W(0002e30f80a4/feffffffffff)
830
 
NXM_OF_ETH_DST_W(40125218000a/5a5a5a5a5a5a)
 
839
nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
831
840
 
832
841
# eth src
833
842
NXM_OF_ETH_SRC(020898456ddb)
834
 
NXM_OF_ETH_SRC_W(012345014545/ffffff555555)
 
843
nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
835
844
NXM_OF_ETH_SRC(020898456ddb)
836
 
<any>
 
845
nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
837
846
 
838
847
# eth type
839
848
NXM_OF_ETH_TYPE(0800)
847
856
NXM_OF_VLAN_TCI(0123)
848
857
NXM_OF_VLAN_TCI_W(1123/1fff)
849
858
NXM_OF_VLAN_TCI(1123)
850
 
<any>
 
859
nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
851
860
NXM_OF_VLAN_TCI_W(f000/f000)
852
861
NXM_OF_VLAN_TCI_W(0000/e000)
853
862
 
874
883
# IP source
875
884
NXM_OF_ETH_TYPE(0800), NXM_OF_IP_SRC(ac100014)
876
885
NXM_OF_ETH_TYPE(0800), NXM_OF_IP_SRC_W(c0a80000/ffff0000)
877
 
NXM_OF_ETH_TYPE(0800), NXM_OF_IP_SRC_W(40080000/5a5a5a5a)
 
886
nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
878
887
NXM_OF_ETH_TYPE(0800), NXM_OF_IP_SRC(c0a80000)
879
 
NXM_OF_ETH_TYPE(0800)
880
888
nx_pull_match() returned error OFPBMC_BAD_PREREQ
881
889
nx_pull_match() returned error OFPBMC_BAD_PREREQ
882
890
 
883
891
# IP destination
884
892
NXM_OF_ETH_TYPE(0800), NXM_OF_IP_DST(ac100014)
885
 
NXM_OF_ETH_TYPE(0800), NXM_OF_IP_DST_W(c0a80000/ffff0000)
886
 
NXM_OF_ETH_TYPE(0800), NXM_OF_IP_DST_W(40080000/5a5a5a5a)
 
893
nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
 
894
nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
887
895
NXM_OF_ETH_TYPE(0800), NXM_OF_IP_DST(c0a80000)
888
 
NXM_OF_ETH_TYPE(0800)
889
896
nx_pull_match() returned error OFPBMC_BAD_PREREQ
890
897
nx_pull_match() returned error OFPBMC_BAD_PREREQ
891
898
 
893
900
NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_SRC(4231)
894
901
NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_SRC_W(5050/f0f0)
895
902
NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_SRC(5050)
896
 
NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06)
897
903
nx_pull_match() returned error OFPBMC_BAD_PREREQ
898
904
 
899
905
# TCP destination port
900
906
NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_DST(4231)
901
907
NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_DST_W(fde0/fff0)
902
908
NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_OF_TCP_DST(fde0)
903
 
NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06)
904
909
nx_pull_match() returned error OFPBMC_BAD_PREREQ
905
910
 
906
911
# TCP flags
907
912
NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_NX_TCP_FLAGS(0131)
908
913
NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_NX_TCP_FLAGS_W(00f0/0ff0)
909
914
NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_NX_TCP_FLAGS(01e2)
910
 
NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06)
911
915
nx_pull_match() returned error OFPBMC_BAD_PREREQ
912
916
 
913
917
# UDP source port
914
918
NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_SRC(8732)
915
919
NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_SRC_W(0132/01ff)
916
920
NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_SRC(0132)
917
 
NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11)
918
921
nx_pull_match() returned error OFPBMC_BAD_PREREQ
919
922
 
920
923
# UDP destination port
921
924
NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_DST(1782)
922
925
NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_DST_W(5005/f00f)
923
926
NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11), NXM_OF_UDP_DST(5005)
924
 
NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(11)
925
927
nx_pull_match() returned error OFPBMC_BAD_PREREQ
926
928
 
927
929
# ICMP type
943
945
 
944
946
# ARP source protocol address
945
947
NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_SPA(ac100014)
946
 
NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_SPA_W(c0a81200/ffffff00)
947
 
NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_SPA_W(80a80200/aaaaaa00)
 
948
nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
 
949
nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
948
950
NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_SPA(c0a81234)
949
 
NXM_OF_ETH_TYPE(0806)
950
951
nx_pull_match() returned error OFPBMC_BAD_PREREQ
951
952
nx_pull_match() returned error OFPBMC_BAD_PREREQ
952
953
 
953
954
# ARP destination protocol address
954
955
NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_TPA(ac100014)
955
 
NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_TPA_W(c0a81200/ffffff00)
956
 
NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_TPA_W(40201234/77777777)
 
956
nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
 
957
nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
957
958
NXM_OF_ETH_TYPE(0806), NXM_OF_ARP_TPA(c0a81234)
958
 
NXM_OF_ETH_TYPE(0806)
959
959
nx_pull_match() returned error OFPBMC_BAD_PREREQ
960
960
nx_pull_match() returned error OFPBMC_BAD_PREREQ
961
961
 
979
979
# RARP source protocol address
980
980
NXM_OF_ETH_TYPE(8035), NXM_OF_ARP_SPA(ac100014)
981
981
NXM_OF_ETH_TYPE(8035), NXM_OF_ARP_SPA_W(c0a81200/ffffff00)
982
 
NXM_OF_ETH_TYPE(8035), NXM_OF_ARP_SPA_W(80a80200/aaaaaa00)
 
982
nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
983
983
NXM_OF_ETH_TYPE(8035), NXM_OF_ARP_SPA(c0a81234)
984
 
NXM_OF_ETH_TYPE(8035)
985
984
nx_pull_match() returned error OFPBMC_BAD_PREREQ
986
985
nx_pull_match() returned error OFPBMC_BAD_PREREQ
987
986
 
988
987
# RARP destination protocol address
989
988
NXM_OF_ETH_TYPE(8035), NXM_OF_ARP_TPA(ac100014)
990
989
NXM_OF_ETH_TYPE(8035), NXM_OF_ARP_TPA_W(c0a81200/ffffff00)
991
 
NXM_OF_ETH_TYPE(8035), NXM_OF_ARP_TPA_W(40201234/77777777)
 
990
nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
992
991
NXM_OF_ETH_TYPE(8035), NXM_OF_ARP_TPA(c0a81234)
993
 
NXM_OF_ETH_TYPE(8035)
994
992
nx_pull_match() returned error OFPBMC_BAD_PREREQ
995
993
nx_pull_match() returned error OFPBMC_BAD_PREREQ
996
994
 
1008
1006
NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC(20010db83c4d00010002000300040005)
1009
1007
nx_pull_match() returned error OFPBMC_BAD_PREREQ
1010
1008
NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1011
 
NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC_W(00000818184800000000000000000000/5a5a5a5a5a5a5a5a0000000000000000)
 
1009
nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
1012
1010
NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_SRC(20010db83c4d00010000000000000000)
1013
 
NXM_OF_ETH_TYPE(86dd)
 
1011
nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
1014
1012
nx_pull_match() returned error OFPBMC_BAD_PREREQ
1015
1013
 
1016
1014
# IPv6 destination
1017
1015
NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_DST(20010db83c4d00010002000300040005)
1018
1016
nx_pull_match() returned error OFPBMC_BAD_PREREQ
1019
 
NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_DST_W(20010530344500010000000000000000/77777777777777777777777777777777)
 
1017
nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
1020
1018
NXM_OF_ETH_TYPE(86dd), NXM_NX_IPV6_DST(20010db83c4d00010000000000000000)
1021
1019
NXM_OF_ETH_TYPE(86dd)
1022
1020
nx_pull_match() returned error OFPBMC_BAD_PREREQ
1029
1027
# ND target address
1030
1028
NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(87), NXM_NX_ND_TARGET(20010db83c4d00010002000300040005)
1031
1029
NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(88), NXM_NX_ND_TARGET(20010db83c4d00010002000300040005)
1032
 
NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(87), NXM_NX_ND_TARGET_W(00010520080900010000000000040000/0123456789abcdeffedcba9876543210)
 
1030
nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
1033
1031
NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(87), NXM_NX_ND_TARGET(20010db83c4d00010002000300040005)
1034
1032
NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(87)
1035
 
NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(88), NXM_NX_ND_TARGET_W(20000898344400000002000300000005/fedcba98765432100123456789abcdef)
 
1033
nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
1036
1034
 
1037
1035
# ND source hardware address
1038
1036
NXM_OF_ETH_TYPE(86dd), NXM_OF_IP_PROTO(3a), NXM_NX_ICMPV6_TYPE(87), NXM_NX_ND_TARGET(20010db83c4d00010002000300040005), NXM_NX_ND_SLL(0002e30f80a4)
1058
1056
NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG_W(02/02)
1059
1057
NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(03)
1060
1058
NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(03)
1061
 
NXM_OF_ETH_TYPE(0800), NXM_NX_IP_FRAG(00)
 
1059
nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
1062
1060
nx_pull_match() returned error OFPBMC_BAD_VALUE
1063
1061
 
1064
1062
# IPv6 fragments.
1072
1070
NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG_W(01/01)
1073
1071
NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG_W(02/02)
1074
1072
NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(03)
1075
 
NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(00)
 
1073
nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
1076
1074
NXM_OF_ETH_TYPE(86dd), NXM_NX_IP_FRAG(03)
1077
1075
nx_pull_match() returned error OFPBMC_BAD_VALUE
1078
1076
 
1094
1092
NXM_NX_REG0(a0e0d050)
1095
1093
<any>
1096
1094
 
 
1095
# dp_hash (testing experimenter OXM).
 
1096
NXM_NX_DP_HASH(01234567)
 
1097
NXM_NX_DP_HASH(01234567)
 
1098
 
1097
1099
# Invalid field number.
1098
1100
nx_pull_match() returned error OFPBMC_BAD_FIELD
1099
1101
 
 
1102
# Invalid field numbers (experimenter OXM).
 
1103
nx_pull_match() returned error OFPBMC_BAD_FIELD
 
1104
nx_pull_match() returned error OFPBMC_BAD_FIELD
 
1105
 
1100
1106
# Unimplemented registers.
1101
1107
#
1102
1108
# This test assumes that at least two registers, but fewer than 16,
1109
1115
 
1110
1116
# Check that at least the first warning made it.  (It's rate-limited
1111
1117
# so a variable number could show up, especially under valgrind etc.)
1112
 
AT_CHECK([grep 'has 1-bits in value' stderr | sed 1q], [0], [dnl
1113
 
nx_match|WARN|NXM/OXM entry NXM_OF_ETH_DST_W(ffffffffffff/010000000000) has 1-bits in value for bits wildcarded by the mask.  (Future versions of OVS may report this as an OpenFlow error.)
 
1118
AT_CHECK([grep '1-bits in value' stderr | sed 1q], [0], [dnl
 
1119
nx_match|WARN|Rejecting NXM/OXM entry 0:0:1:1:12 with 1-bits in value for bits wildcarded by the mask.
1114
1120
])
1115
1121
 
1116
1122
# Check that there wasn't any other stderr output.
1117
 
AT_CHECK([grep -v 'has 1-bits in value' stderr], [1])
 
1123
AT_CHECK([grep -v '1-bits in value' stderr], [1])
1118
1124
AT_CLEANUP
1119
1125
 
1120
1126
AT_SETUP([ovs-ofctl parse-ofp10-match])
1661
1667
AT_SETUP([ovs-ofctl parse-nx-match loose])
1662
1668
AT_KEYWORDS([nx-match])
1663
1669
AT_DATA([nx-match.txt], [dnl
1664
 
NXM_OF_IN_PORT(0001), 01020304(1111/2222), NXM_OF_ETH_TYPE(0800)
 
1670
NXM_OF_IN_PORT(0001), 01020304(1111/3333), NXM_OF_ETH_TYPE(0800)
 
1671
NXM_OF_IN_PORT(0001), ffff020800002320(11112222), NXM_OF_ETH_TYPE(0800)
 
1672
NXM_OF_IN_PORT(0001), ffff030800002320(1111/3333), NXM_OF_ETH_TYPE(0800)
1665
1673
])
1666
1674
 
1667
1675
AT_CHECK([ovs-ofctl --strict parse-nx-match < nx-match.txt], [0], [dnl
1668
1676
nx_pull_match() returned error OFPBMC_BAD_FIELD
 
1677
nx_pull_match() returned error OFPBMC_BAD_FIELD
 
1678
nx_pull_match() returned error OFPBMC_BAD_FIELD
1669
1679
])
1670
1680
 
1671
1681
AT_CHECK([ovs-ofctl parse-nx-match < nx-match.txt], [0], [dnl
1672
1682
NXM_OF_IN_PORT(0001), NXM_OF_ETH_TYPE(0800)
 
1683
NXM_OF_IN_PORT(0001), NXM_OF_ETH_TYPE(0800)
 
1684
NXM_OF_IN_PORT(0001), NXM_OF_ETH_TYPE(0800)
1673
1685
])
1674
1686
AT_CLEANUP
1675
1687
 
1676
 
AT_SETUP([ovs-ofctl parse-oxm])
 
1688
AT_SETUP([ovs-ofctl parse-oxm (OpenFlow 1.2)])
1677
1689
AT_KEYWORDS([oxm])
1678
1690
AT_DATA([oxm.txt], [dnl
1679
1691
<any>
1719
1731
OXM_OF_VLAN_VID(0123) OXM_OF_VLAN_PCP(01)  #Bad Pre-Requisite
1720
1732
OXM_OF_VLAN_VID_W(1123/1fff)    # Packets with VID=123, any PCP.
1721
1733
OXM_OF_VLAN_VID_W(1123/ffff)    # Packets with VID=123, any PCP.
1722
 
OXM_OF_VLAN_VID_W(1123/0000)    # Packets with or without 802.1Q header
1723
 
OXM_OF_VLAN_VID_W(1123/1f0f),   # Packets with # VID=123 (masked)
1724
 
OXM_OF_VLAN_VID_W(1123/1f0f), OXM_OF_VLAN_PCP(01)  # Packets with VID=123 (masked), any PCP.
 
1734
OXM_OF_VLAN_VID_W(0000/0000)    # Packets with or without 802.1Q header
 
1735
OXM_OF_VLAN_VID_W(1103/1f0f),   # Packets with # VID=123 (masked)
 
1736
OXM_OF_VLAN_VID_W(1103/1f0f), OXM_OF_VLAN_PCP(01)  # Packets with VID=123 (masked), any PCP.
1725
1737
OXM_OF_VLAN_VID_W(1000/1000)    # Packets with any VID, any PCP
1726
1738
OXM_OF_VLAN_VID_W(1000/1000), OXM_OF_VLAN_PCP(01)  # Packets with any VID, PCP=1.
1727
1739
 
1729
1741
OXM_OF_ETH_TYPE(0800) OXM_OF_IP_DSCP(f0)
1730
1742
OXM_OF_ETH_TYPE(0800) OXM_OF_IP_DSCP(41)
1731
1743
OXM_OF_ETH_TYPE(0800) OXM_OF_IP_DSCP(3f)
1732
 
OXM_OF_IP_DSCP(f0)
 
1744
OXM_OF_IP_DSCP(3f)
1733
1745
 
1734
1746
# IP ECN
1735
1747
OXM_OF_ETH_TYPE(0800) OXM_OF_IP_ECN(03)
1745
1757
OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_SRC(ac100014)
1746
1758
OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_SRC_W(C0a80000/FFFF0000)
1747
1759
OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_SRC_W(C0a80000/FFFFFFFF)
1748
 
OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_SRC_W(C0a80000/00000000)
 
1760
OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_SRC_W(00000000/00000000)
1749
1761
OXM_OF_ETH_TYPE(0806) OXM_OF_IPV4_SRC(ac100014)
1750
1762
OXM_OF_IPV4_SRC_W(C0D80000/FFFF0000)
1751
1763
 
1752
1764
# IP destination
1753
1765
OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_DST(ac100014)
1754
 
OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_DST_W(C0a88012/FFFF0000)
 
1766
OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_DST_W(C0a80000/FFFF0000)
1755
1767
OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_DST_W(C0a88012/FFFFFFFF)
1756
 
OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_DST_W(C0a88012/00000000)
 
1768
OXM_OF_ETH_TYPE(0800) OXM_OF_IPV4_DST_W(00000000/00000000)
1757
1769
OXM_OF_IPV4_DST(ac100014)
1758
1770
OXM_OF_ETH_TYPE(0806) OXM_OF_IPV4_DST_W(C0D80000/FFFF0000)
1759
1771
 
1761
1773
OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_SRC(4231)
1762
1774
OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_SRC_W(5050/F0F0)
1763
1775
OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_SRC_W(5050/FFFF)
1764
 
OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_SRC_W(5050/0000)
 
1776
OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_SRC_W(0000/0000)
1765
1777
OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(07) OXM_OF_TCP_SRC(4231)
1766
1778
 
1767
1779
# TCP destination port
1768
1780
OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_DST(4231)
1769
1781
OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_DST_W(FDE0/FFF0)
1770
1782
OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_DST_W(FDE0/FFFF)
1771
 
OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_DST_W(FDE0/0000)
 
1783
OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_TCP_DST_W(0000/0000)
1772
1784
OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(07) OXM_OF_TCP_DST(4231)
1773
1785
 
1774
1786
# UDP source port
1775
1787
OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_SRC(8732)
1776
1788
OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_SRC_W(0132/01FF)
1777
1789
OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_SRC_W(0132/FFFF)
1778
 
OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_SRC_W(0132/0000)
 
1790
OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_SRC_W(0000/0000)
1779
1791
OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_UDP_SRC(7823)
1780
1792
 
1781
1793
# UDP destination port
1782
1794
OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_DST(1782)
1783
1795
OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_DST_W(5005/F00F)
1784
1796
OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_DST_W(5005/FFFF)
1785
 
OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_DST_W(5005/0000)
 
1797
OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(11) OXM_OF_UDP_DST_W(0000/0000)
1786
1798
OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(02) OXM_OF_UDP_DST(1293)
1787
1799
 
1788
1800
# SCTP source port
1789
1801
OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(84) OXM_OF_SCTP_SRC(8732)
1790
1802
OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(84) OXM_OF_SCTP_SRC_W(0132/01FF)
1791
1803
OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(84) OXM_OF_SCTP_SRC_W(0132/FFFF)
1792
 
OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(84) OXM_OF_SCTP_SRC_W(0132/0000)
 
1804
OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(84) OXM_OF_SCTP_SRC_W(0000/0000)
1793
1805
OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(06) OXM_OF_SCTP_SRC(7823)
1794
1806
 
1795
1807
# SCTP destination port
1796
1808
OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(84) OXM_OF_SCTP_DST(1782)
1797
1809
OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(84) OXM_OF_SCTP_DST_W(5005/F00F)
1798
1810
OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(84) OXM_OF_SCTP_DST_W(5005/FFFF)
1799
 
OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(84) OXM_OF_SCTP_DST_W(5005/0000)
 
1811
OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(84) OXM_OF_SCTP_DST_W(0000/0000)
1800
1812
OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(02) OXM_OF_SCTP_DST(1293)
1801
1813
 
1802
1814
# ICMP type
1818
1830
 
1819
1831
# ARP source protocol address
1820
1832
OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SPA(ac100014)
1821
 
OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SPA_W(C0a81234/FFFFFF00)
 
1833
OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SPA_W(C0a81200/FFFFFF00)
1822
1834
OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SPA_W(C0a81234/FFFFFFFF)
1823
 
OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SPA_W(C0a81234/00000000)
 
1835
OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SPA_W(00000000/00000000)
1824
1836
OXM_OF_ETH_TYPE(0800) OXM_OF_ARP_SPA(ac100014)
1825
 
OXM_OF_ARP_SPA_W(C0D8fedc/FFFF0000)
 
1837
OXM_OF_ARP_SPA_W(C0D80000/FFFF0000)
1826
1838
 
1827
1839
# ARP destination protocol address
1828
1840
OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_TPA(ac100014)
1829
 
OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_TPA_W(C0a812fe/FFFFFF00)
 
1841
OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_TPA_W(C0a81200/FFFFFF00)
1830
1842
OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_TPA_W(C0a812fe/FFFFFFFF)
1831
 
OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_TPA_W(C0a812fe/00000000)
 
1843
OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_TPA_W(00000000/00000000)
1832
1844
OXM_OF_ETH_TYPE(0800) OXM_OF_ARP_TPA(ac100014)
1833
1845
OXM_OF_ARP_TPA_W(C0D80000/FFFF0000)
1834
1846
 
1837
1849
OXM_OF_ETH_TYPE(0800) OXM_OF_ARP_SHA(0002e30f80a4)
1838
1850
OXM_OF_ARP_SHA(0002e30f80a4)
1839
1851
OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SHA_W(0002e30f80a4/ffffffffffff)
1840
 
OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SHA_W(0002e30f80a4/000000000000)
1841
 
OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SHA_W(0002e30f80a4/00000000000f)
 
1852
OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SHA_W(000000000000/000000000000)
 
1853
OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_SHA_W(000000000004/00000000000f)
1842
1854
 
1843
1855
# ARP destination hardware address
1844
1856
OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_THA(0002e30f80a4)
1845
1857
OXM_OF_ETH_TYPE(0800) OXM_OF_ARP_THA(0002e30f80a4)
1846
1858
OXM_OF_ARP_THA(0002e30f80a4)
1847
1859
OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_THA_W(0002e30f80a4/ffffffffffff)
1848
 
OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_THA_W(0002e30f80a4/000000000000)
1849
 
OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_THA_W(0002e30f80a4/00000000000f)
 
1860
OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_THA_W(000000000000/000000000000)
 
1861
OXM_OF_ETH_TYPE(0806) OXM_OF_ARP_THA_W(000000000004/00000000000f)
1850
1862
 
1851
1863
# IPv6 source
1852
1864
OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_SRC(20010db83c4d00010002000300040005)
1853
1865
OXM_OF_ETH_TYPE(0800) OXM_OF_IPV6_SRC(20010db83c4d00010002000300040005)
1854
1866
OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1855
1867
OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffffffffffffffffffff)
1856
 
OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_SRC_W(20010db83c4d00010000000000000000/00000000000000000000000000000000)
 
1868
OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_SRC_W(00000000000000000000000000000000/00000000000000000000000000000000)
1857
1869
OXM_OF_ETH_TYPE(0800) OXM_OF_IPV6_SRC_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1858
1870
 
1859
1871
# IPv6 destination
1861
1873
OXM_OF_ETH_TYPE(0800) OXM_OF_IPV6_DST(20010db83c4d00010002000300040005)
1862
1874
OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1863
1875
OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffffffffffffffffffff)
1864
 
OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_DST_W(20010db83c4d00010000000000000000/00000000000000000000000000000000)
 
1876
OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_DST_W(00000000000000000000000000000000/00000000000000000000000000000000)
1865
1877
OXM_OF_ETH_TYPE(0800) OXM_OF_IPV6_DST_W(20010db83c4d00010000000000000000/ffffffffffffffff0000000000000000)
1866
1878
 
1867
1879
# IPv6 Flow Label
1870
1882
OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL(0000000f)
1871
1883
OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(0000000f/0000000f)
1872
1884
OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(0000000f/000fffff)
1873
 
OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(0000000f/000ffff0)
 
1885
OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(00000000/000ffff0)
1874
1886
OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(0000000f/100fffff)
1875
1887
OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(0000000f/ffffffff)
1876
 
OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(0000000f/00000000)
 
1888
OXM_OF_ETH_TYPE(86dd) OXM_OF_IPV6_FLABEL_W(00000000/00000000)
1877
1889
 
1878
1890
# ND source hardware address
1879
1891
OXM_OF_ETH_TYPE(86dd) OXM_OF_IP_PROTO(3a) OXM_OF_ICMPV6_TYPE(87) OXM_OF_IPV6_ND_TARGET(20010db83c4d00010002000300040005) OXM_OF_IPV6_ND_SLL(0002e30f80a4)
1887
1899
OXM_OF_ETH_TYPE(86dd) OXM_OF_IP_PROTO(3b) OXM_OF_ICMPV6_TYPE(87) OXM_OF_IPV6_ND_TARGET(20010db83c4d00010002000300040005) OXM_OF_IPV6_ND_TLL(0002e30f80a4)
1888
1900
OXM_OF_ETH_TYPE(0800) OXM_OF_IP_PROTO(3a) OXM_OF_ICMPV6_TYPE(88) OXM_OF_IPV6_ND_TARGET(20010db83c4d00010002000300040005) OXM_OF_IPV6_ND_TLL(0002e30f80a4)
1889
1901
 
 
1902
# Registers 0, 1, and 2.
 
1903
NXM_NX_REG0(acebdf56)
 
1904
NXM_NX_REG0_W(a0e0d050/f0f0f0f0)
 
1905
NXM_NX_REG0(a0e0d050)
 
1906
NXM_NX_REG1(acebdf56)
 
1907
NXM_NX_REG0_W(a0e0d050/f0f0f0f0), NXM_NX_REG1_W(a0e0d050/f0f0f0f0)
 
1908
NXM_NX_REG0_W(a0e0d050/f0f0f0f0), NXM_NX_REG1(a0e0d050)
 
1909
NXM_NX_REG1_W(a0e0d050/f0f0f0f0), NXM_NX_REG2_W(a0e0d050/f0f0f0f0)
 
1910
NXM_NX_REG1_W(a0e0d050/f0f0f0f0), NXM_NX_REG2(a0e0d050)
 
1911
 
 
1912
# Extended registers 0, 1, and 2.
 
1913
# (For OpenFlow 1.2, OVS transforms these into its extension registers.)
 
1914
OXM_OF_PKT_REG0_W(acebdf5600000000/ffffffff00000000)
 
1915
OXM_OF_PKT_REG0_W(a0e0d05000000000/f0f0f0f000000000)
 
1916
OXM_OF_PKT_REG0_W(a0e0d05000000000/ffffffff00000000)
 
1917
OXM_OF_PKT_REG0_W(00000000acebdf56/00000000ffffffff)
 
1918
OXM_OF_PKT_REG0_W(a0e0d050a0e0d050/f0f0f0f0f0f0f0f0)
 
1919
OXM_OF_PKT_REG0_W(a0e0d050a0e0d050/f0f0f0f0ffffffff)
 
1920
OXM_OF_PKT_REG0_W(00000000a0e0d050/00000000f0f0f0f0), OXM_OF_PKT_REG1_W(a0e0d05000000000/f0f0f0f000000000)
 
1921
OXM_OF_PKT_REG0_W(00000000a0e0d050/00000000f0f0f0f0), OXM_OF_PKT_REG1_W(a0e0d05000000000/ffffffff00000000)
 
1922
 
1890
1923
# Invalid field number.
1891
 
01020304(1111/2222)
 
1924
01020304(1111/3333)
 
1925
 
 
1926
# Invalid field numbers (experimenter OXM).
 
1927
ffff020800002320(11112222)
 
1928
ffff030800002320(1111/3333)
1892
1929
])
1893
1930
AT_CHECK([ovs-ofctl '-vPATTERN:console:%c|%p|%m' --strict parse-oxm OpenFlow12 < oxm.txt],
1894
1931
  [0], [dnl
1901
1938
# metadata
1902
1939
OXM_OF_METADATA(5a5a5a5a5a5a5a5a)
1903
1940
OXM_OF_METADATA_W(0000000000000000/00000000ffffffff)
1904
 
OXM_OF_METADATA_W(1234000090ab0000/ffff0000ffff0000)
 
1941
nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
1905
1942
OXM_OF_METADATA(1234567890abcdef)
1906
 
<any>
 
1943
nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
1907
1944
 
1908
1945
# eth dst
1909
1946
OXM_OF_ETH_DST(0002e30f80a4)
1910
1947
OXM_OF_ETH_DST_W(010000000000/010000000000)
1911
1948
OXM_OF_ETH_DST_W(000000000000/010000000000)
1912
 
OXM_OF_ETH_DST_W(010000000000/010000000000)
 
1949
nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
1913
1950
OXM_OF_ETH_DST(0002e30f80a4)
1914
 
<any>
 
1951
nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
1915
1952
OXM_OF_ETH_DST_W(0002e30f80a4/feffffffffff)
1916
1953
 
1917
1954
# eth src
1930
1967
OXM_OF_VLAN_VID(1123), OXM_OF_VLAN_PCP(01)
1931
1968
OXM_OF_VLAN_VID(0123)
1932
1969
OXM_OF_VLAN_VID_W(0123/0123)
1933
 
OXM_OF_VLAN_VID_W(0123/0123)
 
1970
nx_pull_match() returned error OFPBMC_BAD_WILDCARDS
1934
1971
OXM_OF_VLAN_VID_W(0123/1123)
1935
1972
nx_pull_match() returned error OFPBMC_BAD_PREREQ
1936
1973
OXM_OF_VLAN_VID(1123)
2103
2140
nx_pull_match() returned error OFPBMC_BAD_PREREQ
2104
2141
nx_pull_match() returned error OFPBMC_BAD_PREREQ
2105
2142
 
 
2143
# Registers 0, 1, and 2.
 
2144
NXM_NX_REG0(acebdf56)
 
2145
NXM_NX_REG0_W(a0e0d050/f0f0f0f0)
 
2146
NXM_NX_REG0(a0e0d050)
 
2147
NXM_NX_REG1(acebdf56)
 
2148
NXM_NX_REG0_W(a0e0d050/f0f0f0f0), NXM_NX_REG1_W(a0e0d050/f0f0f0f0)
 
2149
NXM_NX_REG0_W(a0e0d050/f0f0f0f0), NXM_NX_REG1(a0e0d050)
 
2150
NXM_NX_REG1_W(a0e0d050/f0f0f0f0), NXM_NX_REG2_W(a0e0d050/f0f0f0f0)
 
2151
NXM_NX_REG1_W(a0e0d050/f0f0f0f0), NXM_NX_REG2(a0e0d050)
 
2152
 
 
2153
# Extended registers 0, 1, and 2.
 
2154
# (For OpenFlow 1.2, OVS transforms these into its extension registers.)
 
2155
NXM_NX_REG0(acebdf56)
 
2156
NXM_NX_REG0_W(a0e0d050/f0f0f0f0)
 
2157
NXM_NX_REG0(a0e0d050)
 
2158
NXM_NX_REG1(acebdf56)
 
2159
NXM_NX_REG0_W(a0e0d050/f0f0f0f0), NXM_NX_REG1_W(a0e0d050/f0f0f0f0)
 
2160
NXM_NX_REG0_W(a0e0d050/f0f0f0f0), NXM_NX_REG1(a0e0d050)
 
2161
NXM_NX_REG1_W(a0e0d050/f0f0f0f0), NXM_NX_REG2_W(a0e0d050/f0f0f0f0)
 
2162
NXM_NX_REG1_W(a0e0d050/f0f0f0f0), NXM_NX_REG2(a0e0d050)
 
2163
 
2106
2164
# Invalid field number.
2107
2165
nx_pull_match() returned error OFPBMC_BAD_FIELD
 
2166
 
 
2167
# Invalid field numbers (experimenter OXM).
 
2168
nx_pull_match() returned error OFPBMC_BAD_FIELD
 
2169
nx_pull_match() returned error OFPBMC_BAD_FIELD
2108
2170
], [stderr])
2109
2171
 
2110
2172
# Check that at least the first warning made it.  (It's rate-limited
2111
2173
# so a variable number could show up, especially under valgrind etc.)
2112
 
AT_CHECK([grep 'has 1-bits in value' stderr | sed 1q], [0], [dnl
2113
 
nx_match|WARN|NXM/OXM entry OXM_OF_METADATA_W(1234567890abcdef/ffff0000ffff0000) has 1-bits in value for bits wildcarded by the mask.  (Future versions of OVS may report this as an OpenFlow error.)
 
2174
AT_CHECK([grep '1-bits in value' stderr | sed 1q], [0], [dnl
 
2175
nx_match|WARN|Rejecting NXM/OXM entry 0:32768:2:1:16 with 1-bits in value for bits wildcarded by the mask.
2114
2176
])
2115
2177
 
2116
2178
# Check that there wasn't any other stderr output.
2117
 
AT_CHECK([grep -v 'has 1-bits in value' stderr], [1])
 
2179
AT_CHECK([grep -v '1-bits in value' stderr], [1])
 
2180
AT_CLEANUP
 
2181
 
 
2182
AT_SETUP([ovs-ofctl parse-oxm (OpenFlow 1.3)])
 
2183
AT_KEYWORDS([oxm])
 
2184
AT_DATA([oxm.txt], [dnl
 
2185
# actset_output
 
2186
ONFOXM_ET_ACTSET_OUTPUT(00000000)
 
2187
ONFOXM_ET_ACTSET_OUTPUT(fffffffe)
 
2188
ONFOXM_ET_ACTSET_OUTPUT(fffffff7)
 
2189
OXM_OF_ACTSET_OUTPUT(00000000)
 
2190
OXM_OF_ACTSET_OUTPUT(fffffffe)
 
2191
OXM_OF_ACTSET_OUTPUT(fffffff7)
 
2192
])
 
2193
AT_CHECK([ovs-ofctl '-vPATTERN:console:%c|%p|%m' --strict parse-oxm OpenFlow13 < oxm.txt],
 
2194
  [0], [dnl
 
2195
# actset_output
 
2196
ONFOXM_ET_ACTSET_OUTPUT(00000000)
 
2197
ONFOXM_ET_ACTSET_OUTPUT(fffffffe)
 
2198
ONFOXM_ET_ACTSET_OUTPUT(fffffff7)
 
2199
ONFOXM_ET_ACTSET_OUTPUT(00000000)
 
2200
ONFOXM_ET_ACTSET_OUTPUT(fffffffe)
 
2201
ONFOXM_ET_ACTSET_OUTPUT(fffffff7)
 
2202
], [])
 
2203
AT_CLEANUP
 
2204
 
 
2205
AT_SETUP([ovs-ofctl parse-oxm (OpenFlow 1.5)])
 
2206
AT_KEYWORDS([oxm])
 
2207
AT_DATA([oxm.txt], [dnl
 
2208
# Extended registers 0 and 1.
 
2209
OXM_OF_PKT_REG0_W(acebdf5600000000/ffffffff00000000)
 
2210
OXM_OF_PKT_REG0_W(a0e0d05000000000/f0f0f0f000000000)
 
2211
OXM_OF_PKT_REG0_W(a0e0d05000000000/ffffffff00000000)
 
2212
OXM_OF_PKT_REG0_W(00000000acebdf56/00000000ffffffff)
 
2213
OXM_OF_PKT_REG0_W(a0e0d050a0e0d050/f0f0f0f0f0f0f0f0)
 
2214
OXM_OF_PKT_REG0_W(a0e0d050a0e0d050/f0f0f0f0ffffffff)
 
2215
OXM_OF_PKT_REG0_W(00000000a0e0d050/00000000f0f0f0f0), OXM_OF_PKT_REG1_W(a0e0d05000000000/f0f0f0f000000000)
 
2216
OXM_OF_PKT_REG0_W(00000000a0e0d050/00000000f0f0f0f0), OXM_OF_PKT_REG1_W(a0e0d05000000000/ffffffff00000000)
 
2217
 
 
2218
# Registers 0, 1, and 2.
 
2219
# (OpenFlow 1.5 transforms these into the standard "xregs".)
 
2220
NXM_NX_REG0(acebdf56)
 
2221
NXM_NX_REG0_W(a0e0d050/f0f0f0f0)
 
2222
NXM_NX_REG0(a0e0d050)
 
2223
NXM_NX_REG1(acebdf56)
 
2224
NXM_NX_REG0_W(a0e0d050/f0f0f0f0), NXM_NX_REG1_W(a0e0d050/f0f0f0f0)
 
2225
NXM_NX_REG0_W(a0e0d050/f0f0f0f0), NXM_NX_REG1(a0e0d050)
 
2226
NXM_NX_REG1_W(a0e0d050/f0f0f0f0), NXM_NX_REG2_W(a0e0d050/f0f0f0f0)
 
2227
NXM_NX_REG1_W(a0e0d050/f0f0f0f0), NXM_NX_REG2(a0e0d050)
 
2228
 
 
2229
# actset_output
 
2230
ONFOXM_ET_ACTSET_OUTPUT(00000000)
 
2231
ONFOXM_ET_ACTSET_OUTPUT(fffffffe)
 
2232
ONFOXM_ET_ACTSET_OUTPUT(fffffff7)
 
2233
OXM_OF_ACTSET_OUTPUT(00000000)
 
2234
OXM_OF_ACTSET_OUTPUT(fffffffe)
 
2235
OXM_OF_ACTSET_OUTPUT(fffffff7)
 
2236
])
 
2237
AT_CHECK([ovs-ofctl '-vPATTERN:console:%c|%p|%m' --strict parse-oxm OpenFlow15 < oxm.txt],
 
2238
  [0], [dnl
 
2239
# Extended registers 0 and 1.
 
2240
OXM_OF_PKT_REG0_W(acebdf5600000000/ffffffff00000000)
 
2241
OXM_OF_PKT_REG0_W(a0e0d05000000000/f0f0f0f000000000)
 
2242
OXM_OF_PKT_REG0_W(a0e0d05000000000/ffffffff00000000)
 
2243
OXM_OF_PKT_REG0_W(00000000acebdf56/00000000ffffffff)
 
2244
OXM_OF_PKT_REG0_W(a0e0d050a0e0d050/f0f0f0f0f0f0f0f0)
 
2245
OXM_OF_PKT_REG0_W(a0e0d050a0e0d050/f0f0f0f0ffffffff)
 
2246
OXM_OF_PKT_REG0_W(00000000a0e0d050/00000000f0f0f0f0), OXM_OF_PKT_REG1_W(a0e0d05000000000/f0f0f0f000000000)
 
2247
OXM_OF_PKT_REG0_W(00000000a0e0d050/00000000f0f0f0f0), OXM_OF_PKT_REG1_W(a0e0d05000000000/ffffffff00000000)
 
2248
 
 
2249
# Registers 0, 1, and 2.
 
2250
# (OpenFlow 1.5 transforms these into the standard "xregs".)
 
2251
OXM_OF_PKT_REG0_W(acebdf5600000000/ffffffff00000000)
 
2252
OXM_OF_PKT_REG0_W(a0e0d05000000000/f0f0f0f000000000)
 
2253
OXM_OF_PKT_REG0_W(a0e0d05000000000/ffffffff00000000)
 
2254
OXM_OF_PKT_REG0_W(00000000acebdf56/00000000ffffffff)
 
2255
OXM_OF_PKT_REG0_W(a0e0d050a0e0d050/f0f0f0f0f0f0f0f0)
 
2256
OXM_OF_PKT_REG0_W(a0e0d050a0e0d050/f0f0f0f0ffffffff)
 
2257
OXM_OF_PKT_REG0_W(00000000a0e0d050/00000000f0f0f0f0), OXM_OF_PKT_REG1_W(a0e0d05000000000/f0f0f0f000000000)
 
2258
OXM_OF_PKT_REG0_W(00000000a0e0d050/00000000f0f0f0f0), OXM_OF_PKT_REG1_W(a0e0d05000000000/ffffffff00000000)
 
2259
 
 
2260
# actset_output
 
2261
OXM_OF_ACTSET_OUTPUT(00000000)
 
2262
OXM_OF_ACTSET_OUTPUT(fffffffe)
 
2263
OXM_OF_ACTSET_OUTPUT(fffffff7)
 
2264
OXM_OF_ACTSET_OUTPUT(00000000)
 
2265
OXM_OF_ACTSET_OUTPUT(fffffffe)
 
2266
OXM_OF_ACTSET_OUTPUT(fffffff7)
 
2267
], [])
2118
2268
AT_CLEANUP
2119
2269
 
2120
2270
AT_SETUP([ovs-ofctl parse-oxm loose])
2121
2271
AT_KEYWORDS([oxm])
2122
2272
AT_DATA([oxm.txt], [dnl
2123
 
OXM_OF_IN_PORT(00000001), 01020304(1111/2222), OXM_OF_ETH_TYPE(0800)
 
2273
OXM_OF_IN_PORT(00000001), 01020304(1111/3333), OXM_OF_ETH_TYPE(0800)
 
2274
OXM_OF_IN_PORT(00000001), ffff020800002320(11112222), OXM_OF_ETH_TYPE(0800)
 
2275
OXM_OF_IN_PORT(00000001), ffff030800002320(1111/3333), OXM_OF_ETH_TYPE(0800)
2124
2276
])
2125
2277
 
2126
2278
AT_CHECK([ovs-ofctl --strict parse-oxm OpenFlow12 < oxm.txt], [0], [dnl
2127
2279
nx_pull_match() returned error OFPBMC_BAD_FIELD
 
2280
nx_pull_match() returned error OFPBMC_BAD_FIELD
 
2281
nx_pull_match() returned error OFPBMC_BAD_FIELD
2128
2282
])
2129
2283
 
2130
2284
AT_CHECK([ovs-ofctl parse-oxm OpenFlow12 < oxm.txt], [0], [dnl
2131
2285
OXM_OF_IN_PORT(00000001), OXM_OF_ETH_TYPE(0800)
 
2286
OXM_OF_IN_PORT(00000001), OXM_OF_ETH_TYPE(0800)
 
2287
OXM_OF_IN_PORT(00000001), OXM_OF_ETH_TYPE(0800)
 
2288
])
 
2289
AT_CLEANUP
 
2290
 
 
2291
AT_SETUP([experimenter OXM encoding])
 
2292
AT_DATA([oxm.txt], [dnl
 
2293
NXM_NX_DP_HASH(01234567)
 
2294
NXOXM_ET_DP_HASH(01234567)
 
2295
 
 
2296
NXM_NX_DP_HASH_W(01234567/0fffffff)
 
2297
NXOXM_ET_DP_HASH_W(01234567/0fffffff)
 
2298
])
 
2299
 
 
2300
# To allow for testing experimenter OXM, which doesn't really have many
 
2301
# examples in the wild, we've defined a variant of NXM_NX_DP_HASH that uses
 
2302
# the experimenter OXM mechanism, called NXOXM_ET_DP_HASH.  We've defined
 
2303
# it as if it were introduced with OpenFlow 1.5, which gives us the
 
2304
# opportunity to see that both forms are accepted in all OpenFlow versions
 
2305
# but the experimenter form is used for encoding in OF1.5+.
 
2306
#
 
2307
# First verify that both forms are accepted and NXOXM_ET_DP_HASH is encoded
 
2308
# in OF1.5.
 
2309
AT_CHECK([ovs-ofctl -m --strict parse-oxm OpenFlow15 < oxm.txt], [0], [dnl
 
2310
NXOXM_ET_DP_HASH(01234567)
 
2311
00000000  00 01 00 10 ff ff 00 08-00 00 23 20 01 23 45 67 @&t@
 
2312
NXOXM_ET_DP_HASH(01234567)
 
2313
00000000  00 01 00 10 ff ff 00 08-00 00 23 20 01 23 45 67 @&t@
 
2314
 
 
2315
NXOXM_ET_DP_HASH_W(01234567/0fffffff)
 
2316
00000000  00 01 00 14 ff ff 01 0c-00 00 23 20 01 23 45 67 @&t@
 
2317
00000010  0f ff ff ff 00 00 00 00-
 
2318
NXOXM_ET_DP_HASH_W(01234567/0fffffff)
 
2319
00000000  00 01 00 14 ff ff 01 0c-00 00 23 20 01 23 45 67 @&t@
 
2320
00000010  0f ff ff ff 00 00 00 00-
 
2321
])
 
2322
 
 
2323
# Then verify that both forms are accepted and NXM_NX_DP_HASH is encoded
 
2324
# in OF1.2.
 
2325
AT_CHECK([ovs-ofctl -m --strict parse-oxm OpenFlow12 < oxm.txt], [0], [dnl
 
2326
NXM_NX_DP_HASH(01234567)
 
2327
00000000  00 01 00 0c 00 01 46 04-01 23 45 67 00 00 00 00 @&t@
 
2328
NXM_NX_DP_HASH(01234567)
 
2329
00000000  00 01 00 0c 00 01 46 04-01 23 45 67 00 00 00 00 @&t@
 
2330
 
 
2331
NXM_NX_DP_HASH_W(01234567/0fffffff)
 
2332
00000000  00 01 00 10 00 01 47 08-01 23 45 67 0f ff ff ff @&t@
 
2333
NXM_NX_DP_HASH_W(01234567/0fffffff)
 
2334
00000000  00 01 00 10 00 01 47 08-01 23 45 67 0f ff ff ff @&t@
2132
2335
])
2133
2336
AT_CLEANUP
2134
2337
 
2141
2344
  [NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_NX_TCP_FLAGS(0fff)
2142
2345
])
2143
2346
 
2144
 
# Check that marshaling in OXM for OF1.2 through OF1.4 gives OXM
2145
 
# headers except for TCP flags, which didn't have an OXM definition until
2146
 
# OF1.5.
2147
 
for version in OpenFlow12 OpenFlow13 OpenFlow14; do
2148
 
    AT_CHECK([echo "$tcp_flags" | ovs-ofctl parse-oxm $version], [0],
2149
 
      [OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), NXM_NX_TCP_FLAGS(0fff)
2150
 
])
2151
 
done
 
2347
# Check that marshaling in OXM for OF1.2 gives OXM headers except for
 
2348
# TCP flags, which didn't have an OXM definition.
 
2349
AT_CHECK([echo "$tcp_flags" | ovs-ofctl parse-oxm OpenFlow12], [0],
 
2350
    [OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), NXM_NX_TCP_FLAGS(0fff)
 
2351
])
 
2352
 
 
2353
# Check that marshaling in OXM for OF1.3 and OF1.4 gives OXM headers,
 
2354
# including the ONF extension for TCP flags introduced in OF1.3.
 
2355
AT_CHECK([echo "$tcp_flags" | ovs-ofctl parse-oxm OpenFlow13], [0],
 
2356
    [OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), ONFOXM_ET_TCP_FLAGS(0fff)
 
2357
])
 
2358
AT_CHECK([echo "$tcp_flags" | ovs-ofctl parse-oxm OpenFlow14], [0],
 
2359
    [OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), ONFOXM_ET_TCP_FLAGS(0fff)
 
2360
])
2152
2361
 
2153
2362
# OpenFlow 1.5 added an OXM header for TCP flags:
2154
2363
AT_CHECK([echo "$tcp_flags" | ovs-ofctl parse-oxm OpenFlow15], [0],
2552
2761
 
2553
2762
OVS_VSWITCHD_STOP
2554
2763
AT_CLEANUP
 
2764
 
 
2765
dnl Check importance parameter added in OF1.4.
 
2766
dnl It validates whether importance set via add-flow via OpenFlow1.4+ gets
 
2767
dnl set or not by validating it againt the dump-flows output via OpenFlow1.4+
 
2768
dnl If add-flow or dump-flows is used with later version of OpenFlow prior to 1.4+
 
2769
dnl then the importance will be considered zero whether provided as an argument.
 
2770
 
 
2771
AT_SETUP([ovs-ofctl rule with importance])
 
2772
OVS_VSWITCHD_START
 
2773
dnl Flow with importance parameter added via OF1.4+ and later version
 
2774
AT_CHECK([ovs-ofctl -O OpenFlow14 add-flow br0 priority=21,importance=21,actions=normal])
 
2775
AT_CHECK([ovs-ofctl add-flow br0 priority=22,importance=22,actions=normal])
 
2776
 
 
2777
dnl Importance parameter will only be visible of flows that are added via OF1.4+ if dumped via OF1.4+
 
2778
AT_CHECK([ovs-ofctl -O OpenFlow14 dump-flows br0 | ofctl_strip | sed '/ST_FLOW reply/d' | sort], [0], [dnl
 
2779
 importance=21, priority=21 actions=NORMAL
 
2780
 priority=22 actions=NORMAL
 
2781
])
 
2782
 
 
2783
dnl Importance parameter will not be visible if flow is dumped with previous version prior to OF1.4+ whether added via OF1.4+
 
2784
AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip | sed '/ST_FLOW reply/d' | sort], [0], [dnl
 
2785
 priority=21 actions=NORMAL
 
2786
 priority=22 actions=NORMAL
 
2787
])
 
2788
 
 
2789
OVS_VSWITCHD_STOP
 
2790
AT_CLEANUP
 
2791
 
 
2792
 
 
2793
dnl Importance parameter added in OF1.4.
 
2794
dnl This validates whether flows with importance
 
2795
dnl parameter are getting replaced with "replace-flows" or
 
2796
dnl not by validating dump-flows output after replace with the expected output.
 
2797
 
 
2798
AT_SETUP([ovs-ofctl replace-flows with importance])
 
2799
OVS_VSWITCHD_START
 
2800
 
 
2801
dnl Add flows to br0 with importance via OF1.4+. For more details refer "ovs-ofctl rule with importance" test case.
 
2802
for i in 1 2 3 4 5 6 7 8; do echo "dl_vlan=$i,importance=$i,actions=drop"; done > add-flows.txt
 
2803
AT_CHECK([ovs-ofctl -O OpenFlow14 add-flows br0 add-flows.txt])
 
2804
 
 
2805
dnl Replace some flows in the bridge.
 
2806
for i in 1 3 5 7; do echo "dl_vlan=$i,importance=`expr $i + 10`,actions=drop"; done > replace-flows.txt
 
2807
AT_CHECK([ovs-ofctl -O OpenFlow14 replace-flows br0 replace-flows.txt])
 
2808
 
 
2809
dnl Dump them and compare the dump flows output against the expected output.
 
2810
for i in 1 2 3 4 5 6 7 8; do if [[ `expr $i % 2` -eq 1 ]]; then importance=`expr $i + 10`; else importance=$i; fi; echo " importance=$importance, dl_vlan=$i actions=drop"; done | sort > expout
 
2811
AT_CHECK([ovs-ofctl -O OpenFlow14 dump-flows br0 | ofctl_strip | sed '/OFPST_FLOW/d' | sort],
 
2812
  [0], [expout])
 
2813
 
 
2814
OVS_VSWITCHD_STOP
 
2815
AT_CLEANUP
 
2816
 
 
2817
AT_SETUP([ovs-ofctl replace-flows with --bundle])
 
2818
OVS_VSWITCHD_START
 
2819
 
 
2820
AT_CHECK([ovs-appctl vlog/set vconn:dbg])
 
2821
 
 
2822
dnl Add flows to br0 with importance via OF1.4+, using an OF1.4+ bundle. For more details refer "ovs-ofctl rule with importance" test case.
 
2823
for i in 1 2 3 4 5 6 7 8; do echo "dl_vlan=$i,importance=$i,actions=drop"; done > add-flows.txt
 
2824
AT_CHECK([ovs-ofctl --bundle add-flows br0 add-flows.txt])
 
2825
 
 
2826
dnl Replace some flows in the bridge.
 
2827
for i in 1 3 5 7; do echo "dl_vlan=$i,importance=`expr $i + 10`,actions=drop"; done > replace-flows.txt
 
2828
AT_CHECK([ovs-ofctl --bundle replace-flows br0 replace-flows.txt])
 
2829
 
 
2830
dnl Dump them and compare the dump flows output against the expected output.
 
2831
for i in 1 2 3 4 5 6 7 8; do if [[ `expr $i % 2` -eq 1 ]]; then importance=`expr $i + 10`; else importance=$i; fi; echo " importance=$importance, dl_vlan=$i actions=drop"; done | sort > expout
 
2832
AT_CHECK([ovs-ofctl -O OpenFlow14 dump-flows br0 | ofctl_strip | sed '/OFPST_FLOW/d' | sort],
 
2833
  [0], [expout])
 
2834
 
 
2835
dnl Check logs for OpenFlow trace
 
2836
# Prevent race.
 
2837
OVS_WAIT_UNTIL([cat ovs-vswitchd.log | vconn_windows_sub | test `grep -- "|vconn|DBG|unix: sent (Success): OFPST_FLOW reply" | wc -l` -ge 2])
 
2838
# AT_CHECK([sed -n "s/^.*\(|vconn|DBG|.*xid=.*:\).*$/\1/p" ovs-vswitchd.log], [0], [dnl
 
2839
AT_CHECK([print_vconn_debug | vconn_windows_sub | ofctl_strip], [0], [dnl
 
2840
vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.5):
 
2841
 version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06
 
2842
vconn|DBG|unix: received: OFPT_HELLO (OF1.4):
 
2843
 version bitmap: 0x01, 0x05
 
2844
vconn|DBG|unix: negotiated OpenFlow version 0x05 (we support version 0x06 and earlier, peer supports versions 0x01, 0x05)
 
2845
vconn|DBG|unix: received: OFPT_BUNDLE_CONTROL (OF1.4):
 
2846
 bundle_id=0 type=OPEN_REQUEST flags=atomic ordered
 
2847
vconn|DBG|unix: sent (Success): OFPT_BUNDLE_CONTROL (OF1.4):
 
2848
 bundle_id=0 type=OPEN_REPLY flags=0
 
2849
vconn|DBG|unix: received: OFPT_BUNDLE_ADD_MESSAGE (OF1.4):
 
2850
 bundle_id=0 flags=atomic ordered
 
2851
OFPT_FLOW_MOD (OF1.4): ADD dl_vlan=1 importance:1 actions=drop
 
2852
vconn|DBG|unix: received: OFPT_BUNDLE_ADD_MESSAGE (OF1.4):
 
2853
 bundle_id=0 flags=atomic ordered
 
2854
OFPT_FLOW_MOD (OF1.4): ADD dl_vlan=2 importance:2 actions=drop
 
2855
vconn|DBG|unix: received: OFPT_BUNDLE_ADD_MESSAGE (OF1.4):
 
2856
 bundle_id=0 flags=atomic ordered
 
2857
OFPT_FLOW_MOD (OF1.4): ADD dl_vlan=3 importance:3 actions=drop
 
2858
vconn|DBG|unix: received: OFPT_BUNDLE_ADD_MESSAGE (OF1.4):
 
2859
 bundle_id=0 flags=atomic ordered
 
2860
OFPT_FLOW_MOD (OF1.4): ADD dl_vlan=4 importance:4 actions=drop
 
2861
vconn|DBG|unix: received: OFPT_BUNDLE_ADD_MESSAGE (OF1.4):
 
2862
 bundle_id=0 flags=atomic ordered
 
2863
OFPT_FLOW_MOD (OF1.4): ADD dl_vlan=5 importance:5 actions=drop
 
2864
vconn|DBG|unix: received: OFPT_BUNDLE_ADD_MESSAGE (OF1.4):
 
2865
 bundle_id=0 flags=atomic ordered
 
2866
OFPT_FLOW_MOD (OF1.4): ADD dl_vlan=6 importance:6 actions=drop
 
2867
vconn|DBG|unix: received: OFPT_BUNDLE_ADD_MESSAGE (OF1.4):
 
2868
 bundle_id=0 flags=atomic ordered
 
2869
OFPT_FLOW_MOD (OF1.4): ADD dl_vlan=7 importance:7 actions=drop
 
2870
vconn|DBG|unix: received: OFPT_BUNDLE_ADD_MESSAGE (OF1.4):
 
2871
 bundle_id=0 flags=atomic ordered
 
2872
OFPT_FLOW_MOD (OF1.4): ADD dl_vlan=8 importance:8 actions=drop
 
2873
vconn|DBG|unix: received: OFPT_BUNDLE_CONTROL (OF1.4):
 
2874
 bundle_id=0 type=COMMIT_REQUEST flags=atomic ordered
 
2875
vconn|DBG|unix: sent (Success): OFPT_BUNDLE_CONTROL (OF1.4):
 
2876
 bundle_id=0 type=COMMIT_REPLY flags=0
 
2877
vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.5):
 
2878
 version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06
 
2879
vconn|DBG|unix: received: OFPT_HELLO (OF1.4):
 
2880
 version bitmap: 0x01, 0x05
 
2881
vconn|DBG|unix: negotiated OpenFlow version 0x05 (we support version 0x06 and earlier, peer supports versions 0x01, 0x05)
 
2882
vconn|DBG|unix: received: OFPST_FLOW request (OF1.4):
 
2883
vconn|DBG|unix: sent (Success): OFPST_FLOW reply (OF1.4):
 
2884
vconn|DBG|unix: received: OFPT_BUNDLE_CONTROL (OF1.4):
 
2885
 bundle_id=0 type=OPEN_REQUEST flags=atomic ordered
 
2886
vconn|DBG|unix: sent (Success): OFPT_BUNDLE_CONTROL (OF1.4):
 
2887
 bundle_id=0 type=OPEN_REPLY flags=0
 
2888
vconn|DBG|unix: received: OFPT_BUNDLE_ADD_MESSAGE (OF1.4):
 
2889
 bundle_id=0 flags=atomic ordered
 
2890
OFPT_FLOW_MOD (OF1.4): ADD dl_vlan=1 importance:11 actions=drop
 
2891
vconn|DBG|unix: received: OFPT_BUNDLE_ADD_MESSAGE (OF1.4):
 
2892
 bundle_id=0 flags=atomic ordered
 
2893
OFPT_FLOW_MOD (OF1.4): ADD dl_vlan=3 importance:13 actions=drop
 
2894
vconn|DBG|unix: received: OFPT_BUNDLE_ADD_MESSAGE (OF1.4):
 
2895
 bundle_id=0 flags=atomic ordered
 
2896
OFPT_FLOW_MOD (OF1.4): ADD dl_vlan=5 importance:15 actions=drop
 
2897
vconn|DBG|unix: received: OFPT_BUNDLE_ADD_MESSAGE (OF1.4):
 
2898
 bundle_id=0 flags=atomic ordered
 
2899
OFPT_FLOW_MOD (OF1.4): ADD dl_vlan=7 importance:17 actions=drop
 
2900
vconn|DBG|unix: received: OFPT_BUNDLE_CONTROL (OF1.4):
 
2901
 bundle_id=0 type=COMMIT_REQUEST flags=atomic ordered
 
2902
vconn|DBG|unix: sent (Success): OFPT_BUNDLE_CONTROL (OF1.4):
 
2903
 bundle_id=0 type=COMMIT_REPLY flags=0
 
2904
vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.5):
 
2905
 version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06
 
2906
vconn|DBG|unix: received: OFPT_HELLO (OF1.4):
 
2907
 version bitmap: 0x05
 
2908
vconn|DBG|unix: negotiated OpenFlow version 0x05 (we support version 0x06 and earlier, peer supports version 0x05)
 
2909
vconn|DBG|unix: received: OFPST_FLOW request (OF1.4):
 
2910
vconn|DBG|unix: sent (Success): OFPST_FLOW reply (OF1.4):
 
2911
 importance=2, dl_vlan=2 actions=drop
 
2912
 importance=4, dl_vlan=4 actions=drop
 
2913
 importance=6, dl_vlan=6 actions=drop
 
2914
 importance=8, dl_vlan=8 actions=drop
 
2915
 importance=11, dl_vlan=1 actions=drop
 
2916
 importance=13, dl_vlan=3 actions=drop
 
2917
 importance=15, dl_vlan=5 actions=drop
 
2918
 importance=17, dl_vlan=7 actions=drop
 
2919
])
 
2920
 
 
2921
OVS_VSWITCHD_STOP
 
2922
AT_CLEANUP