2 * Copyright (c) 2013 Pantheon Technologies s.r.o. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
9 module openflow-types {
10 namespace "urn:opendaylight:openflow:common:types";
13 revision "2013-07-31" {
14 description "OpenFlow 1.3 - common types model";
18 description "Port numbering. Ports are numbered starting from 1 -
19 supports special / reserved values (in OF v1.3)";
23 typedef port-number-values {
24 description "Reserved OpenFlow Port (fake output \"ports\") (OF v1.3).";
27 description "Maximum number of physical and logical switch ports.";
28 value -256; // 0xffffff00
31 description "Send the packet out the input port. This
32 reserved port must be explicitly used
33 in order to send back out of the input
35 value -8; // 0xfffffff8
38 description "Submit the packet to the first flow table
39 NB: This destination port can only be
40 used in packet-out messages.";
41 value -7; // 0xfffffff9
44 description "Process with normal L2/L3 switching.";
45 value -6; // 0xfffffffa
48 description "All physical ports in VLAN, except input
49 port and those blocked or link down.";
50 value -5; // 0xfffffffb
53 description "All physical ports except input port.";
54 value -4; // 0xfffffffc
57 description "Send to controller.";
58 value -3; // 0xfffffffd
61 description "Local openflow \"port\".";
62 value -2; // 0xfffffffe
65 description "Wildcard port used only for flow mod
66 (delete) and flow stats requests. Selects
67 all flows regardless of output port
68 (including flows with no output port).";
69 value -1; // 0xffffffff
74 typedef port-features {
75 description "Features of ports available in datapath.";
79 description "10 Mb half-duplex rate support.";
83 description "10 Mb full-duplex rate support.";
87 description "100 Mb half-duplex rate support.";
91 description "100 Mb full-duplex rate support.";
95 description "1 Gb half-duplex rate support.";
99 description "1 Gb full-duplex rate support.";
103 description "10 Gb full-duplex rate support.";
107 description "40 Gb full-duplex rate support.";
111 description "100 Gb full-duplex rate support.";
115 description "1 Tb full-duplex rate support.";
119 description "Other rate, not in the list.";
123 description "Copper medium.";
127 description "Fiber medium.";
131 description "Auto-negotiation.";
135 description "Pause.";
139 description "Asymmetric pause.";
144 typedef port-config {
146 "Flags to indicate behavior of the physical port. These flags are
147 describe the current configuration and used port_mod message
148 to configure the port's behavior.";
151 //description " Port is administratively down.";
155 //description " Drop all packets received by port.";
159 //description " Drop packets forwarded to port.";
163 //description "Do not send packet-in msgs for port.";
171 "Current state of the physical port. These are not configurable from
175 //description "No physical link present.";
179 //description "Port is blocked";
183 //description "Live for Fast Failover Group.";
189 identity match-type-base {
191 "The match type indicates the match structure (set of fields that compose the
192 match) in use. The match type is placed in the type field at the beginning
193 of all match structures.Extensions that define match types may be
194 published on the ONF wiki. Support for extensions is optional.";
197 identity standard-match-type {
198 base oft:match-type-base;
201 identity instruction-base {
202 description "Base identity for instruction types";
205 identity action-base {
206 description "Base identity for action types";
234 description "Hello Protocol failed.";
238 description "Request was not understood.";
242 description "Error in action description.";
244 enum BAD_INSTRUCTION {
246 description "Error in instruction list.";
250 description "Error in match.";
252 enum FLOW_MOD_FAILED {
254 description "Problem modifying flow entry.";
256 enum GROUP_MOD_FAILED {
258 description "Problem modifying group entry.";
260 enum PORT_MOD_FAILED {
262 description "Port mod request failed.";
264 enum TABLE_MOD_FAILED {
266 description "Table mod request failed.";
268 enum QUEUE_OP_FAILED {
270 description "Queue operation failed.";
272 enum SWITCH_CONFIG_FAILED {
274 description "Switch config request failed.";
276 enum ROLE_REQUEST_FAILED {
278 description "Controller Role request failed.";
280 enum METER_MOD_FAILED {
282 description "Error in meter.";
284 enum TABLE_FEATURES_FAILED {
286 description "Setting table features failed.";
289 value 65535; //0xffff
290 description "Experimenter error messages.";
295 typedef hello-failed-code {
299 description "Hello Protocol failed.";
303 description "Request was not understood.";
308 typedef bad-request-code {
319 enum BAD_EXPERIMENTER {
334 enum BUFFER_UNKNOWN {
349 enum MULTIPART_BUFFER_OVERFLOW {
355 typedef bad-action-code {
363 enum BAD_EXPERIMENTER {
387 enum MATCH_INCONSISTENT {
390 enum UNSUPPORTED_ORDER {
402 enum BAD_SET_ARGUMENT {
408 typedef bad-instruction-code {
419 enum UNSUP_METADATA {
422 enum UNSUP_METADATA_MASK {
425 enum BAD_EXPERIMENTER {
440 typedef bad-match-code {
451 enum BAD_DL_ADDR_MASK {
454 enum BAD_NW_ADDR_MASK {
481 typedef flow-mod-failed-code {
510 typedef group-mod-failed-code {
518 enum WEIGHT_UNSUPPORTED {
524 enum OUT_OF_BUCKETS {
527 enum CHAINING_UNSUPPORTED {
530 enum WATCH_UNSUPPORTED {
560 typedef port-mod-failed-code {
580 typedef table-mod-failed-code {
594 typedef queue-op-failed-code {
608 typedef switch-config-failed-code {
622 typedef role-request-failed-code {
636 typedef meter-mod-failed-code {
665 enum BAD_BAND_VALUE {
677 typedef table-features-failed-code {
700 typedef hello-element-type {
704 description "Bitmap of version supported.";
709 typedef capabilities {
710 description "Capabilities supported by the datapath.";
712 bit OFPC_FLOW_STATS {
714 /* Flow statistics. */
716 bit OFPC_TABLE_STATS {
718 /* Table statistics. */
720 bit OFPC_PORT_STATS {
722 /* Port statistics. */
724 bit OFPC_GROUP_STATS {
726 /* Group statistics. */
730 /* Can reassemble IP fragments. */
732 bit OFPC_QUEUE_STATS {
734 /* Queue statistics. */
736 bit OFPC_PORT_BLOCKED {
738 /* Switch will block looping ports. */
743 typedef switch-config-flag {
744 description " Handling of IP fragments. ";
748 description "No special handling for fragments.";
750 enum OFPC_FRAG_DROP {
752 description "Drop fragments.";
754 enum OFPC_FRAG_REASM {
756 description "Reassemble (only if OFPC_IP_REASM set).";
758 enum OFPC_FRAG_MASK {
764 typedef flow-removed-reason {
765 description "Why was this flow removed?";
767 enum OFPRR_IDLE_TIMEOUT {
769 description "Flow idle time exceeded idle_timeout.";
771 enum OFPRR_HARD_TIMEOUT {
773 description "Time exceeded hard_timeout.";
777 description "Evicted by a DELETE flow mod.";
779 enum OFPRR_GROUP_DELETE {
781 description "Group was removed.";
786 typedef port-reason {
787 description "What changed about the physical port";
791 description "The port was added.";
795 description "he port was removed.";
799 description "Some attribute of the port has changed.";
804 typedef flow-mod-command {
805 /* ofp_flow_mod_command */
809 description "New flow.";
813 description "Modify all matching flows.";
815 enum OFPFC_MODIFY_STRICT {
817 description "Modify entry strictly matching wildcards and priority.";
821 description "Delete all matching flows.";
823 enum OFPFC_DELETE_STRICT {
825 description "Delete entry strictly matching wildcards and priority.";
830 typedef flow-mod-flags {
831 /* ofp_flow_mod_flags */
833 bit OFPFF_SEND_FLOW_REM {
835 description "Send flow removed message when flow expires or is deleted.";
837 bit OFPFF_CHECK_OVERLAP {
839 description "Check for overlapping entries first.";
841 bit OFPFF_RESET_COUNTS {
843 description "Reset flow packet and byte counts.";
845 bit OFPFF_NO_PKT_COUNTS {
847 description "Don't keep track of packet count.";
849 bit OFPFF_NO_BYT_COUNTS {
851 description "Don't keep track of byte count.";
856 typedef group-mod-command {
857 /* ofp_group_mod_command */
861 description "New group.";
865 description "Modify all matching groups.";
869 description "Delete all matching groups.";
879 description "All (multicast/broadcast) group.";
883 description "Select group.";
885 enum OFPGT_INDIRECT {
887 description "Indirect group.";
891 description "Fast failover group.";
896 typedef table-values {
901 description "Last usable table number.";
905 description "Wildcard table used for table config,
906 flow stats and flow deletes.";
912 /* ofp_group - Group numbering. Groups can use any number up to OFPG_MAX.*/
915 value -256; //0xffffff00
916 description "Last usable group number";
920 value -4; //0xfffffffc
921 description "Represents all groups for group delete commands";
924 value -1; //0xffffffff
925 description "Wildcard group used only for flow stats requests.
926 Selects all flows regardless of group (including flows with no group)";
931 typedef multipart-request-flags {
932 description "enum ofp_multipart_request_flags ";
934 bit OFPMPF_REQ_MORE {
935 description "More requests to follow.";
941 typedef multipart-type {
945 description "Description of this OpenFlow switch.
946 The request body is empty.
947 The reply body is struct ofp_desc.";
951 description "Individual flow statistics.
952 The request body is struct ofp_flow_stats_request.
953 The reply body is an array of struct ofp_flow_stats.";
955 enum OFPMP_AGGREGATE {
957 description "Aggregate flow statistics.
958 The request body is struct ofp_aggregate_stats_request.
959 The reply body is struct ofp_aggregate_stats_reply.";
963 description "Flow table statistics.
964 The request body is empty.
965 The reply body is an array of struct ofp_table_stats.";
967 enum OFPMP_PORT_STATS {
969 description "Port statistics.
970 The request body is struct ofp_port_stats_request.
971 The reply body is an array of struct ofp_port_stats.";
975 description "Queue statistics for a port
976 The request body is struct ofp_queue_stats_request.
977 The reply body is an array of struct ofp_queue_stats";
981 description "Group counter statistics.
982 The request body is struct ofp_group_stats_request.
983 The reply is an array of struct ofp_group_stats.";
985 enum OFPMP_GROUP_DESC {
987 description "Group description.
988 The request body is empty.
989 The reply body is an array of struct ofp_group_desc.";
991 enum OFPMP_GROUP_FEATURES {
993 description "Group features.
994 The request body is empty.
995 The reply body is struct ofp_group_features.";
999 description "Meter statistics.
1000 The request body is struct ofp_meter_multipart_requests.
1001 The reply body is an array of struct ofp_meter_stats.";
1003 enum OFPMP_METER_CONFIG {
1005 description "Meter configuration.
1006 The request body is struct ofp_meter_multipart_requests.
1007 The reply body is an array of struct ofp_meter_config.";
1009 enum OFPMP_METER_FEATURES {
1011 description "Meter features.
1012 The request body is empty.
1013 The reply body is struct ofp_meter_features.";
1015 enum OFPMP_TABLE_FEATURES {
1017 description "Table features.
1018 The request body is either empty or contains an array of
1019 struct ofp_table_features containing the controller’s
1020 desired view of the switch. If the switch is unable to
1021 set the specified view an error is returned.
1022 The reply body is an array of struct ofp_table_features.";
1024 enum OFPMP_PORT_DESC {
1026 description "Port description.
1027 The request body is empty.
1028 The reply body is an array of struct ofp_port.";
1030 enum OFPMP_EXPERIMENTER {
1031 value 65535; //0xffff
1032 description "Experimenter extension.
1033 The request and reply bodies begin with
1034 struct ofp_experimenter_multipart_header.
1035 The request and reply bodies are otherwise experimenter-defined.";
1040 typedef queue-properties {
1041 /* ofp_queue_properties */
1045 description "No property defined for queue (default).";
1047 enum OFPQT_MIN_RATE {
1049 description "Minimum datarate guaranteed.";
1051 enum OFPQT_MAX_RATE {
1053 description "Maximum datarate.";
1055 enum OFPQT_EXPERIMENTER {
1056 value 65535; // 0xffff
1057 description "Experimenter defined property.";
1062 typedef controller-role {
1063 /* ofp_controller_role */
1065 enum OFPCR_ROLE_NOCHANGE {
1067 description "Don’t change current role.";
1069 enum OFPCR_ROLE_EQUAL {
1071 description "Default role, full access.";
1073 enum OFPCR_ROLE_MASTER {
1075 description "Full access, at most one master.";
1077 enum OFPCR_ROLE_SLAVE {
1079 description "Read-only access.";
1084 typedef packet-in-reason {
1085 /* ofp_packet_in_reason */
1087 enum OFPR_NO_MATCH {
1089 description "No matching flow (table-miss flow entry). ";
1093 description "Action explicitly output to controller. ";
1095 enum OFPR_INVALID_TTL {
1097 description "Packet has invalid TTL ";
1102 typedef action-type {
1103 /* ofp_action_type */
1107 /* Output to switch port. */
1109 bit OFPAT_COPY_TTL_OUT {
1111 /* Copy TTL "outwards" -- from next-to-outermost to outermost */
1113 bit OFPAT_COPY_TTL_IN {
1115 /* Copy TTL "inwards" -- from outermost to next-to-outermost */
1117 bit OFPAT_SET_MPLS_TTL {
1121 bit OFPAT_DEC_MPLS_TTL {
1123 /* Decrement MPLS TTL */
1125 bit OFPAT_PUSH_VLAN {
1127 /* Push a new VLAN tag */
1129 bit OFPAT_POP_VLAN {
1131 /* Pop the outer VLAN tag */
1133 bit OFPAT_PUSH_MPLS {
1135 /* Push a new MPLS tag */
1137 bit OFPAT_POP_MPLS {
1139 /* Pop the outer MPLS tag */
1141 bit OFPAT_SET_QUEUE {
1143 /* Set queue id when outputting to a port */
1149 bit OFPAT_SET_NW_TTL {
1153 bit OFPAT_DEC_NW_TTL {
1155 /* Decrement IP TTL. */
1157 bit OFPAT_SET_FIELD {
1159 /* Set a header field using OXM TLV format. */
1161 bit OFPAT_PUSH_PBB {
1163 /* Push a new PBB service tag (I-TAG) */
1167 /* Pop the outer PBB service tag (I-TAG) */
1169 bit OFPAT_EXPERIMENTER {
1175 typedef meter-mod-command {
1176 /* ofp_meter_mod_command */
1179 description "New meter. ";
1182 description "Modify specified meter. ";
1185 description "Delete specified meter. ";
1190 typedef meter-flags {
1191 /* ofp_meter_flags */
1195 /* Rate value in kb/s (kilo-bit per second). */
1199 /* Rate value in packet/sec. */
1203 /* Do burst size. */
1207 /* Collect statistics. */
1212 typedef meter-band-type {
1213 /* ofp_meter_band_type */
1217 description "Drop packet. ";
1219 enum OFPMBT_DSCP_REMARK {
1221 description "Remark DSCP in the IP header. ";
1223 enum OFPMBT_EXPERIMENTER {
1224 value 65535; //0xFFFF
1225 description "Experimenter meter band. ";
1230 typedef meter-band-type-bitmap {
1231 /* ofp_meter_band_type */
1235 description "Drop packet. ";
1237 bit OFPMBT_DSCP_REMARK {
1239 description "Remark DSCP in the IP header. ";
1245 description "Meter numbering. Flow meters can use any number up to OFPM_MAX";
1248 value -65536; //0xffff0000
1249 description "Last usable meter number";
1251 /* Virtual meters. */
1252 enum OFPM_SLOWPATH {
1253 value -3; //0xfffffffd
1254 description "Meter for slow datapath";
1256 enum OFPM_CONTROLLER {
1257 value -2; //0xfffffffe
1258 description "Meter for controller connection";
1261 value -1; //0xffffffff
1262 description "Represents all meters for stat requests commands";
1267 typedef table-config {
1268 /* ofp_table_config */
1270 bit OFPTC_DEPRECATED_MASK {
1271 /* Deprecated bits */
1277 typedef table-features-prop-type {
1279 enum OFPTFPT_INSTRUCTIONS {
1281 description "Instructions property.";
1283 enum OFPTFPT_INSTRUCTIONS_MISS {
1285 description "Instructions for table-miss.";
1287 enum OFPTFPT_NEXT_TABLES {
1289 description "Next Table property.";
1291 enum OFPTFPT_NEXT_TABLES_MISS {
1293 description "Next Table for table-miss.";
1295 enum OFPTFPT_WRITE_ACTIONS {
1297 description "Write Actions property.";
1299 enum OFPTFPT_WRITE_ACTIONS_MISS {
1301 description "Write Actions for table-miss.";
1303 enum OFPTFPT_APPLY_ACTIONS {
1305 description "Apply Actions property.";
1307 enum OFPTFPT_APPLY_ACTIONS_MISS {
1309 description "Apply Actions for table-miss.";
1311 enum OFPTFPT_MATCH {
1313 description "Match property.";
1315 enum OFPTFPT_WILDCARDS {
1317 description "Wildcards property.";
1319 enum OFPTFPT_WRITE_SETFIELD {
1321 description "Write Set-Field property.";
1323 enum OFPTFPT_WRITE_SETFIELD_MISS {
1325 description "Write Set-Field for table-miss.";
1327 enum OFPTFPT_APPLY_SETFIELD {
1329 description "Apply Set-Field property.";
1331 enum OFPTFPT_APPLY_SETFIELD_MISS {
1333 description "Apply Set-Field for table-miss.";
1335 enum OFPTFPT_EXPERIMENTER {
1337 description "Experimenter property.";
1339 enum OFPTFPT_EXPERIMENTER_MISS {
1340 value 65535; //0xffff
1341 description "Experimenter for table-miss.";
1346 typedef group-types {
1347 /* ofp_group_type */
1350 description "All (multicast/broadcast) group.";
1354 description "Select group.";
1357 bit OFPGT_INDIRECT {
1358 description "Indirect group.";
1362 description "Fast failover group.";
1368 typedef group-capabilities {
1369 /* ofp_group_capabilities */
1371 bit OFPGFC_SELECT_WEIGHT {
1372 description "Support weight for select groups";
1375 bit OFPGFC_SELECT_LIVENESS {
1376 description "Support liveness for select groups";
1379 bit OFPGFC_CHAINING {
1380 description "Support chaining group";
1383 bit OFPGFC_CHAINING_CHECKS {
1384 description "Check chaining for loops and delete";
1390 typedef ipv6-exthdr-flags {
1391 description "Bit definitions for IPv6 Extension Header pseudo-field.";
1394 description "<No next header> encountered.";
1398 description "Encrypted Sec Payload header present.";
1402 description "Authentication header present.";
1406 description "1 or 2 dest headers present.";
1410 description "Fragment header present.";
1414 description "Router header present.";
1418 description "Hop-by-hop header present.";
1422 description "Unexpected repeats encountered.";
1426 description "Unexpected sequencing encountered.";
1432 // OPENFLOW v1.0 STRUCTURES
1433 // Structures under this line are needed to support OpenFlow version 1.0
1434 // wire protocol 0x01;
1436 typedef error-type-v10 {
1440 description "Hello Protocol failed.";
1444 description "Request was not understood.";
1448 description "Error in action description.";
1450 enum FLOW_MOD_FAILED {
1452 description "Problem modifying flow entry.";
1454 enum PORT_MOD_FAILED {
1456 description "Port mod request failed.";
1458 enum QUEUE_OP_FAILED {
1460 description "Queue operation failed.";
1465 typedef hello-failed-code-v10 {
1469 description "Hello Protocol failed.";
1473 description "Request was not understood.";
1478 typedef bad-request-code-v10 {
1504 enum BUFFER_UNKNOWN {
1510 typedef bad-action-code-v10 {
1521 enum BAD_VENDOR_TYPE {
1542 typedef flow-mod-failed-code-v10 {
1544 enum ALL_TABLES_FULL {
1553 enum BAD_EMERG_TIMEOUT {
1565 typedef port-mod-failed-code-v10 {
1576 typedef queue-op-failed-code-v10 {
1590 typedef port-number-values-v10 {
1591 description "Port numbering. Physical ports are numbered starting from 1.";
1594 value 65280; // 0xff00
1597 description "Send the packet out the input port. This
1598 virtual port must be explicitly used
1599 in order to send back out of the input
1601 value 65528; // 0xfff8
1604 description "Perform actions in flow table.
1605 NB: This can only be the destination
1606 port for packet-out messages.";
1607 value 65529; // 0xfff9
1610 description "Process with normal L2/L3 switching.";
1611 value 65530; // 0xfffa
1614 description "All physical ports except input port and
1615 those disabled by STP.";
1616 value 65531; // 0xfffb
1619 description "All physical ports except input port.";
1620 value 65532; // 0xfffc
1623 description "Send to controller.";
1624 value 65533; // 0xfffd
1627 description "Local openflow \"port\".";
1628 value 65534; // 0xfffe
1631 description "Not associated with a physical port.";
1632 value 65535; // 0xffff
1637 typedef port-config-v10 {
1639 "Flags to indicate behavior of the physical port. These flags are
1640 describe the current configuration and used port_mod message
1641 to configure the port's behavior.";
1644 description " Port is administratively down.";
1648 description "Disable 802.1D spanning tree on port.";
1652 description " Drop all packets received by port.";
1656 description " Drop received 802.1D STP packets.";
1660 description " Do not include this port when flooding.";
1664 description " Drop packets forwarded to port.";
1668 description "Do not send packet-in msgs for port.";
1674 typedef port-state-v10 {
1675 description "Current state of the physical port. These are not configurable from
1679 description "No physical link present.";
1683 description "Port is blocked";
1687 description "Live for Fast Failover Group.";
1691 description "Not learning or relaying frames.";
1694 description "Learning but not relaying frames.";
1697 description "Learning and relaying frames.";
1700 description "Not part of spanning tree.";
1703 description "Bit mask for OFPPS_STP_* values.";
1708 typedef port-features-v10 {
1709 description "Features of ports available in datapath.";
1710 reference "ofp_port_features";
1714 description "10 Mb half-duplex rate support.";
1718 description "10 Mb full-duplex rate support.";
1722 description "100 Mb half-duplex rate support.";
1726 description "100 Mb full-duplex rate support.";
1730 description "1 Gb half-duplex rate support.";
1734 description "1 Gb full-duplex rate support.";
1738 description "10 Gb full-duplex rate support.";
1742 description "Copper medium.";
1746 description "Fiber medium.";
1750 description "Auto-negotiation.";
1754 description "Pause.";
1758 description "Asymmetric pause.";
1763 typedef capabilities-v10 {
1765 bit OFPC_FLOW_STATS {
1767 description "Flow statistics.";
1769 bit OFPC_TABLE_STATS {
1771 description "Table statistics.";
1773 bit OFPC_PORT_STATS {
1775 description "Port statistics.";
1779 description "802.1d spanning tree.";
1783 description "Reserved, must be zero.";
1787 description "Can reassemble IP fragments.";
1789 bit OFPC_QUEUE_STATS {
1791 description "Queue statistics.";
1793 bit OFPC_ARP_MATCH_IP {
1795 description "Match IP addresses in ARP pkts.";
1800 typedef flow-mod-flags-v10 {
1801 /* ofp_flow_mod_flags */
1803 bit OFPFF_SEND_FLOW_REM {
1805 description "Send flow removed message when flow expires or is deleted.";
1807 bit OFPFF_CHECK_OVERLAP {
1809 description "Check for overlapping entries first.";
1813 description "Reset flow packet and byte counts.";
1818 typedef action-type-v10 {
1819 /* ofp_action_type */
1823 description "Output to switch port.";
1825 bit OFPAT_SET_VLAN_VID {
1827 description "Set the 802.1q VLAN id.";
1829 bit OFPAT_SET_VLAN_PCP {
1831 description "Set the 802.1q priority.";
1833 bit OFPAT_STRIP_VLAN {
1835 description "Strip the 802.1q header.";
1837 bit OFPAT_SET_DL_SRC {
1839 description "Ethernet source address.";
1841 bit OFPAT_SET_DL_DST {
1843 description "Ethernet destination address.";
1845 bit OFPAT_SET_NW_SRC {
1847 description "IP source address.";
1849 bit OFPAT_SET_NW_DST {
1851 description "IP destination address.";
1853 bit OFPAT_SET_NW_TOS {
1855 description "IP ToS (DSCP field, 6 bits).";
1857 bit OFPAT_SET_TP_SRC {
1859 description "TCP/UDP source port.";
1861 bit OFPAT_SET_TP_DST {
1863 description "TCP/UDP destination port.";
1867 description "Output to queue.";
1871 description "Experimenter in later versions.";
1876 typedef flow-wildcards-v10 {
1877 /* ofp_flow_wildcards */
1878 description "Flow wildcards - NW_SRC_MASK & NW_DST_MASK are handled separately";
1881 description "Switch input port.";
1885 description "VLAN id.";
1889 description "Ethernet source address.";
1893 description "Ethernet destination address.";
1897 description "Ethernet frame type.";
1901 description "IP protocol.";
1905 description "TCP/UDP source port.";
1909 description "TCP/UDP destination port.";
1913 description "VLAN priority.";
1917 description "IP ToS (DSCP field, 6 bits).";