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";
229 typedef experimenter-id {
230 description "This type represents experimenter ID used in experimenter messages.
231 It also represents vendor ID - as it is the same for OF version 1.3+.
232 (VENDOR naming convention has been changed in OF v1.3 specification
240 description "Hello Protocol failed.";
244 description "Request was not understood.";
248 description "Error in action description.";
250 enum BAD_INSTRUCTION {
252 description "Error in instruction list.";
256 description "Error in match.";
258 enum FLOW_MOD_FAILED {
260 description "Problem modifying flow entry.";
262 enum GROUP_MOD_FAILED {
264 description "Problem modifying group entry.";
266 enum PORT_MOD_FAILED {
268 description "Port mod request failed.";
270 enum TABLE_MOD_FAILED {
272 description "Table mod request failed.";
274 enum QUEUE_OP_FAILED {
276 description "Queue operation failed.";
278 enum SWITCH_CONFIG_FAILED {
280 description "Switch config request failed.";
282 enum ROLE_REQUEST_FAILED {
284 description "Controller Role request failed.";
286 enum METER_MOD_FAILED {
288 description "Error in meter.";
290 enum TABLE_FEATURES_FAILED {
292 description "Setting table features failed.";
295 value 65535; //0xffff
296 description "Experimenter error messages.";
301 typedef hello-failed-code {
305 description "Hello Protocol failed.";
309 description "Request was not understood.";
314 typedef bad-request-code {
325 enum BAD_EXPERIMENTER {
340 enum BUFFER_UNKNOWN {
355 enum MULTIPART_BUFFER_OVERFLOW {
361 typedef bad-action-code {
369 enum BAD_EXPERIMENTER {
393 enum MATCH_INCONSISTENT {
396 enum UNSUPPORTED_ORDER {
408 enum BAD_SET_ARGUMENT {
414 typedef bad-instruction-code {
425 enum UNSUP_METADATA {
428 enum UNSUP_METADATA_MASK {
431 enum BAD_EXPERIMENTER {
446 typedef bad-match-code {
457 enum BAD_DL_ADDR_MASK {
460 enum BAD_NW_ADDR_MASK {
487 typedef flow-mod-failed-code {
516 typedef group-mod-failed-code {
524 enum WEIGHT_UNSUPPORTED {
530 enum OUT_OF_BUCKETS {
533 enum CHAINING_UNSUPPORTED {
536 enum WATCH_UNSUPPORTED {
566 typedef port-mod-failed-code {
586 typedef table-mod-failed-code {
600 typedef queue-op-failed-code {
614 typedef switch-config-failed-code {
628 typedef role-request-failed-code {
642 typedef meter-mod-failed-code {
671 enum BAD_BAND_VALUE {
683 typedef table-features-failed-code {
706 typedef hello-element-type {
710 description "Bitmap of version supported.";
715 typedef capabilities {
716 description "Capabilities supported by the datapath.";
718 bit OFPC_FLOW_STATS {
720 /* Flow statistics. */
722 bit OFPC_TABLE_STATS {
724 /* Table statistics. */
726 bit OFPC_PORT_STATS {
728 /* Port statistics. */
730 bit OFPC_GROUP_STATS {
732 /* Group statistics. */
736 /* Can reassemble IP fragments. */
738 bit OFPC_QUEUE_STATS {
740 /* Queue statistics. */
742 bit OFPC_PORT_BLOCKED {
744 /* Switch will block looping ports. */
749 typedef switch-config-flag {
750 description " Handling of IP fragments. ";
754 description "No special handling for fragments.";
756 enum OFPC_FRAG_DROP {
758 description "Drop fragments.";
760 enum OFPC_FRAG_REASM {
762 description "Reassemble (only if OFPC_IP_REASM set).";
764 enum OFPC_FRAG_MASK {
770 typedef flow-removed-reason {
771 description "Why was this flow removed?";
773 enum OFPRR_IDLE_TIMEOUT {
775 description "Flow idle time exceeded idle_timeout.";
777 enum OFPRR_HARD_TIMEOUT {
779 description "Time exceeded hard_timeout.";
783 description "Evicted by a DELETE flow mod.";
785 enum OFPRR_GROUP_DELETE {
787 description "Group was removed.";
792 typedef port-reason {
793 description "What changed about the physical port";
797 description "The port was added.";
801 description "he port was removed.";
805 description "Some attribute of the port has changed.";
810 typedef flow-mod-command {
811 /* ofp_flow_mod_command */
815 description "New flow.";
819 description "Modify all matching flows.";
821 enum OFPFC_MODIFY_STRICT {
823 description "Modify entry strictly matching wildcards and priority.";
827 description "Delete all matching flows.";
829 enum OFPFC_DELETE_STRICT {
831 description "Delete entry strictly matching wildcards and priority.";
836 typedef flow-mod-flags {
837 /* ofp_flow_mod_flags */
839 bit OFPFF_SEND_FLOW_REM {
841 description "Send flow removed message when flow expires or is deleted.";
843 bit OFPFF_CHECK_OVERLAP {
845 description "Check for overlapping entries first.";
847 bit OFPFF_RESET_COUNTS {
849 description "Reset flow packet and byte counts.";
851 bit OFPFF_NO_PKT_COUNTS {
853 description "Don't keep track of packet count.";
855 bit OFPFF_NO_BYT_COUNTS {
857 description "Don't keep track of byte count.";
862 typedef group-mod-command {
863 /* ofp_group_mod_command */
867 description "New group.";
871 description "Modify all matching groups.";
875 description "Delete all matching groups.";
885 description "All (multicast/broadcast) group.";
889 description "Select group.";
891 enum OFPGT_INDIRECT {
893 description "Indirect group.";
897 description "Fast failover group.";
902 typedef table-values {
907 description "Last usable table number.";
911 description "Wildcard table used for table config,
912 flow stats and flow deletes.";
918 /* ofp_group - Group numbering. Groups can use any number up to OFPG_MAX.*/
921 value -256; //0xffffff00
922 description "Last usable group number";
926 value -4; //0xfffffffc
927 description "Represents all groups for group delete commands";
930 value -1; //0xffffffff
931 description "Wildcard group used only for flow stats requests.
932 Selects all flows regardless of group (including flows with no group)";
937 typedef multipart-request-flags {
938 description "enum ofp_multipart_request_flags ";
940 bit OFPMPF_REQ_MORE {
941 description "More requests to follow.";
947 typedef multipart-type {
951 description "Description of this OpenFlow switch.
952 The request body is empty.
953 The reply body is struct ofp_desc.";
957 description "Individual flow statistics.
958 The request body is struct ofp_flow_stats_request.
959 The reply body is an array of struct ofp_flow_stats.";
961 enum OFPMP_AGGREGATE {
963 description "Aggregate flow statistics.
964 The request body is struct ofp_aggregate_stats_request.
965 The reply body is struct ofp_aggregate_stats_reply.";
969 description "Flow table statistics.
970 The request body is empty.
971 The reply body is an array of struct ofp_table_stats.";
973 enum OFPMP_PORT_STATS {
975 description "Port statistics.
976 The request body is struct ofp_port_stats_request.
977 The reply body is an array of struct ofp_port_stats.";
981 description "Queue statistics for a port
982 The request body is struct ofp_queue_stats_request.
983 The reply body is an array of struct ofp_queue_stats";
987 description "Group counter statistics.
988 The request body is struct ofp_group_stats_request.
989 The reply is an array of struct ofp_group_stats.";
991 enum OFPMP_GROUP_DESC {
993 description "Group description.
994 The request body is empty.
995 The reply body is an array of struct ofp_group_desc.";
997 enum OFPMP_GROUP_FEATURES {
999 description "Group features.
1000 The request body is empty.
1001 The reply body is struct ofp_group_features.";
1005 description "Meter statistics.
1006 The request body is struct ofp_meter_multipart_requests.
1007 The reply body is an array of struct ofp_meter_stats.";
1009 enum OFPMP_METER_CONFIG {
1011 description "Meter configuration.
1012 The request body is struct ofp_meter_multipart_requests.
1013 The reply body is an array of struct ofp_meter_config.";
1015 enum OFPMP_METER_FEATURES {
1017 description "Meter features.
1018 The request body is empty.
1019 The reply body is struct ofp_meter_features.";
1021 enum OFPMP_TABLE_FEATURES {
1023 description "Table features.
1024 The request body is either empty or contains an array of
1025 struct ofp_table_features containing the controller’s
1026 desired view of the switch. If the switch is unable to
1027 set the specified view an error is returned.
1028 The reply body is an array of struct ofp_table_features.";
1030 enum OFPMP_PORT_DESC {
1032 description "Port description.
1033 The request body is empty.
1034 The reply body is an array of struct ofp_port.";
1036 enum OFPMP_EXPERIMENTER {
1037 value 65535; //0xffff
1038 description "Experimenter extension.
1039 The request and reply bodies begin with
1040 struct ofp_experimenter_multipart_header.
1041 The request and reply bodies are otherwise experimenter-defined.";
1046 typedef queue-properties {
1047 /* ofp_queue_properties */
1051 description "No property defined for queue (default).";
1053 enum OFPQT_MIN_RATE {
1055 description "Minimum datarate guaranteed.";
1057 enum OFPQT_MAX_RATE {
1059 description "Maximum datarate.";
1061 enum OFPQT_EXPERIMENTER {
1062 value 65535; // 0xffff
1063 description "Experimenter defined property.";
1068 typedef controller-role {
1069 /* ofp_controller_role */
1071 enum OFPCR_ROLE_NOCHANGE {
1073 description "Don’t change current role.";
1075 enum OFPCR_ROLE_EQUAL {
1077 description "Default role, full access.";
1079 enum OFPCR_ROLE_MASTER {
1081 description "Full access, at most one master.";
1083 enum OFPCR_ROLE_SLAVE {
1085 description "Read-only access.";
1090 typedef packet-in-reason {
1091 /* ofp_packet_in_reason */
1093 enum OFPR_NO_MATCH {
1095 description "No matching flow (table-miss flow entry). ";
1099 description "Action explicitly output to controller. ";
1101 enum OFPR_INVALID_TTL {
1103 description "Packet has invalid TTL ";
1108 typedef action-type {
1109 /* ofp_action_type */
1113 /* Output to switch port. */
1115 bit OFPAT_COPY_TTL_OUT {
1117 /* Copy TTL "outwards" -- from next-to-outermost to outermost */
1119 bit OFPAT_COPY_TTL_IN {
1121 /* Copy TTL "inwards" -- from outermost to next-to-outermost */
1123 bit OFPAT_SET_MPLS_TTL {
1127 bit OFPAT_DEC_MPLS_TTL {
1129 /* Decrement MPLS TTL */
1131 bit OFPAT_PUSH_VLAN {
1133 /* Push a new VLAN tag */
1135 bit OFPAT_POP_VLAN {
1137 /* Pop the outer VLAN tag */
1139 bit OFPAT_PUSH_MPLS {
1141 /* Push a new MPLS tag */
1143 bit OFPAT_POP_MPLS {
1145 /* Pop the outer MPLS tag */
1147 bit OFPAT_SET_QUEUE {
1149 /* Set queue id when outputting to a port */
1155 bit OFPAT_SET_NW_TTL {
1159 bit OFPAT_DEC_NW_TTL {
1161 /* Decrement IP TTL. */
1163 bit OFPAT_SET_FIELD {
1165 /* Set a header field using OXM TLV format. */
1167 bit OFPAT_PUSH_PBB {
1169 /* Push a new PBB service tag (I-TAG) */
1173 /* Pop the outer PBB service tag (I-TAG) */
1175 bit OFPAT_EXPERIMENTER {
1181 typedef meter-mod-command {
1182 /* ofp_meter_mod_command */
1185 description "New meter. ";
1188 description "Modify specified meter. ";
1191 description "Delete specified meter. ";
1196 typedef meter-flags {
1197 /* ofp_meter_flags */
1201 /* Rate value in kb/s (kilo-bit per second). */
1205 /* Rate value in packet/sec. */
1209 /* Do burst size. */
1213 /* Collect statistics. */
1218 typedef meter-band-type {
1219 /* ofp_meter_band_type */
1223 description "Drop packet. ";
1225 enum OFPMBT_DSCP_REMARK {
1227 description "Remark DSCP in the IP header. ";
1229 enum OFPMBT_EXPERIMENTER {
1230 value 65535; //0xFFFF
1231 description "Experimenter meter band. ";
1236 typedef meter-band-type-bitmap {
1237 /* ofp_meter_band_type */
1241 description "Drop packet. ";
1243 bit OFPMBT_DSCP_REMARK {
1245 description "Remark DSCP in the IP header. ";
1251 description "Meter numbering. Flow meters can use any number up to OFPM_MAX";
1254 value -65536; //0xffff0000
1255 description "Last usable meter number";
1257 /* Virtual meters. */
1258 enum OFPM_SLOWPATH {
1259 value -3; //0xfffffffd
1260 description "Meter for slow datapath";
1262 enum OFPM_CONTROLLER {
1263 value -2; //0xfffffffe
1264 description "Meter for controller connection";
1267 value -1; //0xffffffff
1268 description "Represents all meters for stat requests commands";
1273 typedef table-config {
1274 /* ofp_table_config */
1276 bit OFPTC_DEPRECATED_MASK {
1277 /* Deprecated bits */
1283 typedef table-features-prop-type {
1285 enum OFPTFPT_INSTRUCTIONS {
1287 description "Instructions property.";
1289 enum OFPTFPT_INSTRUCTIONS_MISS {
1291 description "Instructions for table-miss.";
1293 enum OFPTFPT_NEXT_TABLES {
1295 description "Next Table property.";
1297 enum OFPTFPT_NEXT_TABLES_MISS {
1299 description "Next Table for table-miss.";
1301 enum OFPTFPT_WRITE_ACTIONS {
1303 description "Write Actions property.";
1305 enum OFPTFPT_WRITE_ACTIONS_MISS {
1307 description "Write Actions for table-miss.";
1309 enum OFPTFPT_APPLY_ACTIONS {
1311 description "Apply Actions property.";
1313 enum OFPTFPT_APPLY_ACTIONS_MISS {
1315 description "Apply Actions for table-miss.";
1317 enum OFPTFPT_MATCH {
1319 description "Match property.";
1321 enum OFPTFPT_WILDCARDS {
1323 description "Wildcards property.";
1325 enum OFPTFPT_WRITE_SETFIELD {
1327 description "Write Set-Field property.";
1329 enum OFPTFPT_WRITE_SETFIELD_MISS {
1331 description "Write Set-Field for table-miss.";
1333 enum OFPTFPT_APPLY_SETFIELD {
1335 description "Apply Set-Field property.";
1337 enum OFPTFPT_APPLY_SETFIELD_MISS {
1339 description "Apply Set-Field for table-miss.";
1341 enum OFPTFPT_EXPERIMENTER {
1343 description "Experimenter property.";
1345 enum OFPTFPT_EXPERIMENTER_MISS {
1346 value 65535; //0xffff
1347 description "Experimenter for table-miss.";
1352 typedef group-types {
1353 /* ofp_group_type */
1356 description "All (multicast/broadcast) group.";
1360 description "Select group.";
1363 bit OFPGT_INDIRECT {
1364 description "Indirect group.";
1368 description "Fast failover group.";
1374 typedef group-capabilities {
1375 /* ofp_group_capabilities */
1377 bit OFPGFC_SELECT_WEIGHT {
1378 description "Support weight for select groups";
1381 bit OFPGFC_SELECT_LIVENESS {
1382 description "Support liveness for select groups";
1385 bit OFPGFC_CHAINING {
1386 description "Support chaining group";
1389 bit OFPGFC_CHAINING_CHECKS {
1390 description "Check chaining for loops and delete";
1396 typedef ipv6-exthdr-flags {
1397 description "Bit definitions for IPv6 Extension Header pseudo-field.";
1400 description "<No next header> encountered.";
1404 description "Encrypted Sec Payload header present.";
1408 description "Authentication header present.";
1412 description "1 or 2 dest headers present.";
1416 description "Fragment header present.";
1420 description "Router header present.";
1424 description "Hop-by-hop header present.";
1428 description "Unexpected repeats encountered.";
1432 description "Unexpected sequencing encountered.";
1438 // OPENFLOW v1.0 STRUCTURES
1439 // Structures under this line are needed to support OpenFlow version 1.0
1440 // wire protocol 0x01;
1442 typedef error-type-v10 {
1446 description "Hello Protocol failed.";
1450 description "Request was not understood.";
1454 description "Error in action description.";
1456 enum FLOW_MOD_FAILED {
1458 description "Problem modifying flow entry.";
1460 enum PORT_MOD_FAILED {
1462 description "Port mod request failed.";
1464 enum QUEUE_OP_FAILED {
1466 description "Queue operation failed.";
1471 typedef hello-failed-code-v10 {
1475 description "Hello Protocol failed.";
1479 description "Request was not understood.";
1484 typedef bad-request-code-v10 {
1510 enum BUFFER_UNKNOWN {
1516 typedef bad-action-code-v10 {
1527 enum BAD_VENDOR_TYPE {
1548 typedef flow-mod-failed-code-v10 {
1550 enum ALL_TABLES_FULL {
1559 enum BAD_EMERG_TIMEOUT {
1571 typedef port-mod-failed-code-v10 {
1582 typedef queue-op-failed-code-v10 {
1596 typedef port-number-values-v10 {
1597 description "Port numbering. Physical ports are numbered starting from 1.";
1600 value 65280; // 0xff00
1603 description "Send the packet out the input port. This
1604 virtual port must be explicitly used
1605 in order to send back out of the input
1607 value 65528; // 0xfff8
1610 description "Perform actions in flow table.
1611 NB: This can only be the destination
1612 port for packet-out messages.";
1613 value 65529; // 0xfff9
1616 description "Process with normal L2/L3 switching.";
1617 value 65530; // 0xfffa
1620 description "All physical ports except input port and
1621 those disabled by STP.";
1622 value 65531; // 0xfffb
1625 description "All physical ports except input port.";
1626 value 65532; // 0xfffc
1629 description "Send to controller.";
1630 value 65533; // 0xfffd
1633 description "Local openflow \"port\".";
1634 value 65534; // 0xfffe
1637 description "Not associated with a physical port.";
1638 value 65535; // 0xffff
1643 typedef port-config-v10 {
1645 "Flags to indicate behavior of the physical port. These flags are
1646 describe the current configuration and used port_mod message
1647 to configure the port's behavior.";
1650 description " Port is administratively down.";
1654 description "Disable 802.1D spanning tree on port.";
1658 description " Drop all packets received by port.";
1662 description " Drop received 802.1D STP packets.";
1666 description " Do not include this port when flooding.";
1670 description " Drop packets forwarded to port.";
1674 description "Do not send packet-in msgs for port.";
1680 typedef port-state-v10 {
1681 description "Current state of the physical port. These are not configurable from
1685 description "No physical link present.";
1689 description "Port is blocked";
1693 description "Live for Fast Failover Group.";
1697 description "Not learning or relaying frames.";
1700 description "Learning but not relaying frames.";
1703 description "Learning and relaying frames.";
1706 description "Not part of spanning tree.";
1709 description "Bit mask for OFPPS_STP_* values.";
1714 typedef port-features-v10 {
1715 description "Features of ports available in datapath.";
1716 reference "ofp_port_features";
1720 description "10 Mb half-duplex rate support.";
1724 description "10 Mb full-duplex rate support.";
1728 description "100 Mb half-duplex rate support.";
1732 description "100 Mb full-duplex rate support.";
1736 description "1 Gb half-duplex rate support.";
1740 description "1 Gb full-duplex rate support.";
1744 description "10 Gb full-duplex rate support.";
1748 description "Copper medium.";
1752 description "Fiber medium.";
1756 description "Auto-negotiation.";
1760 description "Pause.";
1764 description "Asymmetric pause.";
1769 typedef capabilities-v10 {
1771 bit OFPC_FLOW_STATS {
1773 description "Flow statistics.";
1775 bit OFPC_TABLE_STATS {
1777 description "Table statistics.";
1779 bit OFPC_PORT_STATS {
1781 description "Port statistics.";
1785 description "802.1d spanning tree.";
1789 description "Reserved, must be zero.";
1793 description "Can reassemble IP fragments.";
1795 bit OFPC_QUEUE_STATS {
1797 description "Queue statistics.";
1799 bit OFPC_ARP_MATCH_IP {
1801 description "Match IP addresses in ARP pkts.";
1806 typedef flow-mod-flags-v10 {
1807 /* ofp_flow_mod_flags */
1809 bit OFPFF_SEND_FLOW_REM {
1811 description "Send flow removed message when flow expires or is deleted.";
1813 bit OFPFF_CHECK_OVERLAP {
1815 description "Check for overlapping entries first.";
1819 description "Reset flow packet and byte counts.";
1824 typedef action-type-v10 {
1825 /* ofp_action_type */
1829 description "Output to switch port.";
1831 bit OFPAT_SET_VLAN_VID {
1833 description "Set the 802.1q VLAN id.";
1835 bit OFPAT_SET_VLAN_PCP {
1837 description "Set the 802.1q priority.";
1839 bit OFPAT_STRIP_VLAN {
1841 description "Strip the 802.1q header.";
1843 bit OFPAT_SET_DL_SRC {
1845 description "Ethernet source address.";
1847 bit OFPAT_SET_DL_DST {
1849 description "Ethernet destination address.";
1851 bit OFPAT_SET_NW_SRC {
1853 description "IP source address.";
1855 bit OFPAT_SET_NW_DST {
1857 description "IP destination address.";
1859 bit OFPAT_SET_NW_TOS {
1861 description "IP ToS (DSCP field, 6 bits).";
1863 bit OFPAT_SET_TP_SRC {
1865 description "TCP/UDP source port.";
1867 bit OFPAT_SET_TP_DST {
1869 description "TCP/UDP destination port.";
1873 description "Output to queue.";
1877 description "Experimenter in later versions.";
1882 typedef flow-wildcards-v10 {
1883 /* ofp_flow_wildcards */
1884 description "Flow wildcards - NW_SRC_MASK & NW_DST_MASK are handled separately";
1887 description "Switch input port.";
1891 description "VLAN id.";
1895 description "Ethernet source address.";
1899 description "Ethernet destination address.";
1903 description "Ethernet frame type.";
1907 description "IP protocol.";
1911 description "TCP/UDP source port.";
1915 description "TCP/UDP destination port.";
1919 description "VLAN priority.";
1923 description "IP ToS (DSCP field, 6 bits).";