Model updated with descriptions 09/5109/2
authorMichal Polkorab <michal.polkorab@pantheon.sk>
Mon, 3 Feb 2014 20:30:11 +0000 (12:30 -0800)
committerMichal Polkorab <michal.polkorab@pantheon.sk>
Mon, 3 Feb 2014 22:41:20 +0000 (14:41 -0800)
Signed-off-by: Michal Polkorab <michal.polkorab@pantheon.sk>
Change-Id: I32124b20c03f1b103ae7fec48437bd29ccaddeb1

openflow-protocol-api/src/main/yang/openflow-action.yang
openflow-protocol-api/src/main/yang/openflow-augments.yang
openflow-protocol-api/src/main/yang/openflow-extensible-match.yang
openflow-protocol-api/src/main/yang/openflow-instruction.yang
openflow-protocol-api/src/main/yang/openflow-protocol.yang
openflow-protocol-api/src/main/yang/openflow-types.yang
openflow-protocol-api/src/main/yang/system-notifications.yang

index 5205fc5d19dc84ae5d269adce6ce10eed066a808..3f1168bd75799efbf48c55de3080efb5d14eb372 100644 (file)
@@ -17,7 +17,7 @@
     }
 
     identity output {
-        description " Output to switch port. ";
+        description " Output to switch port. (both OF v1.0 and v1.3)";
         base oft:action;
     }
     identity copy_ttl_out {
     
     // OF1.0 structures
     identity set_vlan_vid {
-        description "";
+        description "Set the 802.1q VLAN id (OF v1.0).";
         base oft:action;
     }
     identity set_vlan_pcp {
-        description "";
+        description "Set the 802.1q priority (OF v1.0).";
         base oft:action;
     }
     identity strip_vlan {
-        description "";
+        description "Strip the 802.1q header (OF v1.0).";
         base oft:action;
     }
     identity set_dl_src {
-        description "";
+        description "Ethernet source address (OF v1.0).";
         base oft:action;
     }
     identity set_dl_dst {
-        description "";
+        description "Ethernet destination address (OF v1.0).";
         base oft:action;
     }
     identity set_nw_src {
-        description "";
+        description "IP source address (OF v1.0).";
         base oft:action;
     }
     identity set_nw_dst {
-        description "";
+        description "IP destination address (OF v1.0).";
         base oft:action;
     }
     identity set_nw_tos {
-        description "";
+        description "IP ToS (DSCP field, 6 bits) (OF v1.0).";
         base oft:action;
     }
     identity set_tp_src {
-        description "";
+        description "TCP/UDP source port (OF v1.0).";
         base oft:action;
     }
     identity set_tp_dst {
-        description "";
+        description "TCP/UDP destination port (OF v1.0).";
         base oft:action;
     }
     identity enqueue {
-        description "";
+        description "Output to queue (OF v1.0).";
         base oft:action;
     }
 
index 1ba234bfcbea742463e22a759fbad9a0b0dfd8d4..a0ac66a5f6db360c84254f488a69b0c63d873b61 100644 (file)
     import openflow-extensible-match {prefix oxm;}\r
 \r
     revision "2013-10-02" {\r
-        description "OpenFlow 1.3 - augments model";\r
+        description "OpenFlow 1.3 - augments model. \r
+                    Please visit \r
+                    https://wiki.opendaylight.org/view/File:OpenFlow_Protocol_Library_-_Project_documentation.pdf\r
+                     - Augmentation Tables chapter";\r
     }\r
 \r
 // OFP_MATCH AUGMENTS\r
index cd91b1322f950a8f4306b481b349bd5a583ffad0..7caf73f0e792c069ee314beb80b2641540dbd24a 100644 (file)
         }
 
         identity nxm-0-class {
-            description "Backward compatibility with NXM";
+            description "Match class for backward compatibility with NXM";
             base clazz;
         }
         identity nxm-1-class {
-            description "Backward compatibility with NXM";
+            description "Match class for backward compatibility with NXM";
             base clazz;
         }
         identity openflow-basic-class {
 
         identity in_port {
             base match-field;
-            description "Match for Switch input port.";
+            description "OXM field for Switch input port.";
         }
         identity in_phy_port {
             base match-field;
-            description "Match for Switch physical input port.";
+            description "OXM field for Switch physical input port.";
         }
         identity metadata {
             base match-field;
-            description "Match for Metadata passed between tables.";
+            description "OXM field for Metadata passed between tables.";
         }
         identity eth_dst {
             base match-field;
-            description "Match for Ethernet destination address.";
+            description "OXM field for Ethernet destination address.";
         }
         identity eth_src {
             base match-field;
-            description "Match for Ethernet source address.";
+            description "OXM field for Ethernet source address.";
         }
         identity eth_type {
             base match-field;
-            description "Match for Ethernet frame type.";
+            description "OXM field for Ethernet frame type.";
         }
         identity vlan_vid {
             base match-field;
-            description "Match for VLAN id.";
+            description "OXM field for VLAN id.";
         }
         identity vlan_pcp {
             base match-field;
-            description "Match for VLAN priority.";
+            description "OXM field for VLAN priority.";
         }
         identity ip_dscp {
             base match-field;
-            description "Match for IP DSCP (6 bits in ToS field).";
+            description "OXM field for IP DSCP (6 bits in ToS field).";
         }
         identity ip_ecn {
             base match-field;
-            description "Match for IP ECN (2 bits in ToS field).";
+            description "OXM field for IP ECN (2 bits in ToS field).";
         }
         identity ip_proto {
             base match-field;
-            description "Match for IP protocol.";
+            description "OXM field for IP protocol.";
         }
         identity ipv4_src {
             base match-field;
-            description "Match for IPv4 source address.";
+            description "OXM field for IPv4 source address.";
         }
         identity ipv4_dst {
             base match-field;
-            description "Match for IPv4 destination address.";
+            description "OXM field for IPv4 destination address.";
         }
         identity tcp_src {
             base match-field;
-            description "Match for TCP source port.";
+            description "OXM field for TCP source port.";
         }
         identity tcp_dst {
             base match-field;
-            description "Match for TCP destination port.";
+            description "OXM field for TCP destination port.";
         }
         identity udp_src {
             base match-field;
-            description "Match for UDP source port.";
+            description "OXM field for UDP source port.";
         }
         identity udp_dst {
             base match-field;
-            description "Match for UDP destination port.";
+            description "OXM field for UDP destination port.";
         }
         identity sctp_src {
             base match-field;
-            description "Match for SCTP source port.";
+            description "OXM field for SCTP source port.";
         }
         identity sctp_dst {
             base match-field;
-            description "Match for SCTP destination port.";
+            description "OXM field for SCTP destination port.";
         }
         identity icmpv4_type {
             base match-field;
-            description "Match for ICMP type.";
+            description "OXM field for ICMP type.";
         }
         identity icmpv4_code {
             base match-field;
-            description "Match for ICMP code.";
+            description "OXM field for ICMP code.";
         }
         identity arp_op {
             base match-field;
-            description "Match for ARP opcode.";
+            description "OXM field for ARP opcode.";
         }
         identity arp_spa {
             base match-field;
-            description "Match for ARP source IPv4 address.";
+            description "OXM field for ARP source IPv4 address.";
         }
         identity arp_tpa {
             base match-field;
-            description "Match for ARP target IPv4 address.";
+            description "OXM field for ARP target IPv4 address.";
         }
         identity arp_sha {
             base match-field;
-            description "Match for ARP source hardware address.";
+            description "OXM field for ARP source hardware address.";
         }
         identity arp_tha {
             base match-field;
-            description "Match for ARP target hardware address.";
+            description "OXM field for ARP target hardware address.";
         }
         identity ipv6_src {
             base match-field;
-            description "Match for IPv6 source address.";
+            description "OXM field for IPv6 source address.";
         }
         identity ipv6_dst {
             base match-field;
-            description "Match for IPv6 destination address.";
+            description "OXM field for IPv6 destination address.";
         }
         identity ipv6_flabel {
             base match-field;
-            description "Match for IPv6 Flow Label";
+            description "OXM field for IPv6 Flow Label";
         }
         identity icmpv6_type {
             base match-field;
-            description "Match for ICMPv6 type.";
+            description "OXM field for ICMPv6 type.";
         }
         identity icmpv6_code {
             base match-field;
-            description "Match for ICMPv6 code.";
+            description "OXM field for ICMPv6 code.";
         }
         identity ipv6_nd_target {
             base match-field;
-            description "Match for Target address for ND.";
+            description "OXM field for Target address for ND.";
         }
         identity ipv6_nd_sll {
             base match-field;
-            description "Match for Source link-layer for ND.";
+            description "OXM field for Source link-layer for ND.";
         }
         identity ipv6_nd_tll {
             base match-field;
-            description "Match for Target link-layer for ND.";
+            description "OXM field for Target link-layer for ND.";
         }
         identity mpls_label {
             base match-field;
-            description "Match for MPLS label.";
+            description "OXM field for MPLS label.";
         }
         identity mpls_tc {
             base match-field;
-            description "Match for MPLS TC.";
+            description "OXM field for MPLS TC.";
         }
         identity mpls_bos {
             base match-field;
-            description "Match for MPLS BoS bit.";
+            description "OXM field for MPLS BoS bit.";
         }
         identity pbb_isid {
             base match-field;
-            description "Match for PBB I-SID.";
+            description "OXM field for PBB I-SID.";
         }
         identity tunnel_id {
             base match-field;
-            description "Match for Logical Port Metadata";
+            description "OXM field for Logical Port Metadata";
         }
         identity ipv6_exthdr {
             base match-field;
-            description "Match for IPv6 Extension Header pseudo-field";
+            description "OXM field for IPv6 Extension Header pseudo-field";
         }
 
         container oxm-container {
         
         grouping oxm-fields {
             list match-entries {
+                description "OXM TLV-structures (Type Length Value)";
                 key "oxm-class oxm-match-field has-mask";
                 leaf oxm-class {
                     type identityref {
         // OF1.0 structures
         grouping match-v10-grouping {
             container match-v10 {
+                description "OF v1.0 match structure";
                 leaf wildcards {
+                    description "Wildcard fields (only flags).";
                     type oft:flow-wildcards-v10;
                 }
                 leaf nw-src-mask {
+                    description "IP source address mask (definition differs from OF v1.0.0 spec to ease
+                     understanding, library does the transformation into OF v1.0 spec correct data)";
                     type uint8;
                 }
                 leaf nw-dst-mask {
+                    description "IP destination address mask (definition differs from OF v1.0.0 spec to ease
+                     understanding, library does the transformation into OF v1.0 spec correct data)";
                     type uint8;
                 }
                 leaf in-port {
+                description "Input switch port.";
                     type uint16;
                 }
                 leaf dl-src {
+                    description "Ethernet source address.";
                     type yang:mac-address;
                 }
                 leaf dl-dst {
+                    description "Ethernet destination address.";
                     type yang:mac-address;
                 }
                 leaf dl-vlan {
+                    description "Input VLAN id.";
                     type uint16;
                 }
                 leaf dl-vlan-pcp {
+                    description "Input VLAN priority.";
                     type uint8;
                 }
                 leaf dl-type {
+                    description "Ethernet frame type.";
                     type uint16;
                 }
                 leaf nw-tos {
+                    description "IP ToS (actually DSCP field, 6 bits).";
                     type uint8;
                 }
                 leaf nw-proto {
+                    description "IP protocol or lower 8 bits of ARP opcode.";
                     type uint8;
                 }
                 leaf nw-src {
+                    description "IP source address.";
                     type inet:ipv4-address;
                 }
                 leaf nw-dst {
+                    description "IP destination address.";
                     type inet:ipv4-address;
                 }
                 leaf tp-src {
+                    description "TCP/UDP source port.";
                     type uint16;
                 }
                 leaf tp-dst {
+                    description "TCP/UDP destination port.";
                     type uint16;
                 }
             }
index 8f3a0434bbe80d7fb62430db90b5d1c30d26a6b4..6e7c8a299c6bc06296fdce7dcbc2c664c9d7f968 100644 (file)
     import openflow-types { prefix oft; }
 
     revision "2013-07-31" {
-       // description "OpenFlow 1.3 - instruction model";
+        description "OpenFlow 1.3 - instruction model";
     }
 
     identity goto_table {
-        //description " Setup the next table in the lookup pipeline";
+        description " Setup the next table in the lookup pipeline";
         base oft:instruction;
     }
     identity write_metadata {
-        //description " Setup the metadata field for use later in     pipeline";
+        description " Setup the metadata field for use later in     pipeline";
         base oft:instruction;
     }
     identity write_actions {
index 9791a4b461064505034b269ceb4ab915f52fd5b7..d95b1e07b89c740ffb47ad2bd784ab544e13a376 100644 (file)
 \r
     // Generic Structures\r
         grouping port {\r
-            // reference "ofp_port";\r
-            leaf port-no { \r
-                // reference "ofp_port.port_no"; \r
+            reference "ofp_port";\r
+            leaf port-no {\r
                 type uint32;\r
             }\r
-            leaf hw-addr { \r
-                // reference "ofp_port.hw_addr"; \r
+            leaf hw-addr {\r
                 type yang:mac-address;\r
             }\r
-            leaf name { \r
-                // reference "ofp_port.name"; \r
+            leaf name {\r
                 type string;\r
             }\r
-            leaf config { \r
-                // reference "ofp_port.config"; \r
+            leaf config {\r
+                description "Bitmap of OFPPC_* flags.";\r
                 type oft:port-config;\r
             }\r
-            leaf state { \r
-                // reference "ofp_port.state"; \r
+            leaf state {\r
+                description "Bitmap of OFPPS_* flags.";\r
                 type oft:port-state;\r
             }\r
-            leaf current-features { \r
+            leaf current-features {\r
                 description "Current features.";\r
-                // reference "ofp_port.curr"; \r
-                type oft:port-features; \r
+                type oft:port-features;\r
             }\r
-            leaf advertised-features { \r
+            leaf advertised-features {\r
                 description "Features being advertised by the port.";\r
-                // reference "ofp_port.advertised"; \r
-                type oft:port-features; \r
+                type oft:port-features;\r
             }\r
-            leaf supported-features { \r
+            leaf supported-features {\r
                 description "Features supported by the port.";\r
-                // reference "ofp_port.supported"; \r
-                type oft:port-features; \r
+                type oft:port-features;\r
             }\r
-            leaf peer-features { \r
+            leaf peer-features {\r
                 description "Features advertised by peer.";\r
-                // reference "ofp_port.peer"; \r
                 type oft:port-features; \r
             }\r
-            leaf curr-speed { \r
+            leaf curr-speed {\r
                 description "Current port bitrate in kbps.";\r
-                // reference "ofp_port.curr_speed"; \r
-                type uint32; \r
+                type uint32;\r
                 units "kbps";\r
             }\r
-            leaf max-speed { \r
+            leaf max-speed {\r
                 description "Max port bitrate in kbps";\r
-                // reference "ofp_port.max_speed"; \r
                 type uint32;\r
-                units "kbps"; \r
+                units "kbps";\r
             }\r
-            \r
+\r
             // OF1.0 structures\r
-            leaf config-v10 { \r
-                // reference "ofp_port.config"; \r
+            leaf config-v10 {\r
                 type oft:port-config-v10;\r
             }\r
             leaf state-v10 { \r
-                // reference "ofp_port.state"; \r
                 type oft:port-state-v10;\r
             }\r
-            leaf current-features-v10 { \r
+            leaf current-features-v10 {\r
                 description "Current features.";\r
-                // reference "ofp_port.curr"; \r
-                type oft:port-features-v10; \r
+                type oft:port-features-v10;\r
             }\r
-            leaf advertised-features-v10 { \r
+            leaf advertised-features-v10 {\r
                 description "Features being advertised by the port.";\r
-                // reference "ofp_port.advertised"; \r
-                type oft:port-features-v10; \r
+                type oft:port-features-v10;\r
             }\r
-            leaf supported-features-v10 { \r
+            leaf supported-features-v10 {\r
                 description "Features supported by the port.";\r
-                // reference "ofp_port.supported"; \r
-                type oft:port-features-v10; \r
+                type oft:port-features-v10;\r
             }\r
             leaf peer-features-v10 { \r
                 description "Features advertised by peer.";\r
-                // reference "ofp_port.peer"; \r
                 type oft:port-features-v10; \r
             }\r
         }\r
-        \r
+\r
         grouping match-grouping {\r
             container match {\r
+                description "Match structure (OF v1.3)";\r
                 leaf type {\r
                     type identityref {\r
                         base oft:match-type-base;\r
                     uses bucket;\r
                 }\r
             }\r
-            \r
+\r
             grouping bucket {\r
+                description "Bucket for use in groups.";\r
                 leaf weight {\r
+                    description "Relative weight of bucket. Only\r
+                                defined for select groups.";\r
                     type uint16;\r
                 }\r
                 leaf watch-port {\r
+                    description "Port whose state affects whether this\r
+                                bucket is live. Only required for fast\r
+                                failover groups.";\r
                     type oft:port-number;\r
                 }\r
                 leaf watch-group {\r
+                    description "Group whose state affects whether this\r
+                                bucket is live. Only required for fast\r
+                                failover groups.";\r
                     type uint32;\r
                 }\r
-                \r
+\r
                 uses ofaction:actions;\r
             }\r
             \r
     // # MESSAGE Structures\r
         /* Immutable messages. */\r
             grouping ofHeader {\r
-                //reference "ofpt_header struct in Openflow Switch 1.3 Spec"\r
+                reference "ofp_header struct in Openflow Switch 1.3 Spec";\r
                 leaf version {\r
                     type uint8;\r
-                    //reference "OpenFlow Header - OFP_VERSION";\r
+                    description "OpenFlow version";\r
                 }\r
                 leaf xid {\r
                     type uint32;\r
-                    //reference "OpenFlow Header - transaction id";\r
+                    description "Transaction ID";\r
                 }\r
             }\r
             grouping ofHelloElementHeader {\r
-                //reference "ofpt_hello_elem_header struct in Openflow Switch 1.3 Spec"\r
+                reference "ofpt_hello_elem_header struct in Openflow Switch 1.3 Spec";\r
                 leaf type {\r
                     type oft:hello-element-type;\r
                     //reference "OpenFlow Header element type - OFPHET_*";\r
                 }\r
             }\r
             grouping hello {\r
-                // reference "OFPT_HELLO message in Openflow Switch 1.3 Spec"\r
+                reference "OFPT_HELLO message in Openflow Switch 1.3 Spec";\r
                 /* Symmetric message */\r
                 uses ofHeader;\r
                 \r
                 }\r
             }\r
             grouping error {\r
-                // reference "OFPT_ERROR message in Openflow Switch 1.3 Spec"\r
+                reference "OFPT_ERROR message in Openflow Switch 1.3 Spec";\r
                 /* Symmetric message */\r
                 uses ofHeader;\r
                 \r
                 }\r
             }\r
             grouping echo-request {\r
-                // reference "OFPT_ECHO_REQUEST message in Openflow Switch 1.3 Spec"\r
+                reference "OFPT_ECHO_REQUEST message in Openflow Switch 1.3 Spec";\r
                 /* Symmetric message */\r
                 uses ofHeader;\r
                 \r
                 }\r
             }\r
             grouping echo-reply {\r
-                // reference "OFPT_ECHO_REPLY message in Openflow Switch 1.3 Spec"\r
+                reference "OFPT_ECHO_REPLY message in Openflow Switch 1.3 Spec";\r
                 /* Symmetric message */\r
                 uses ofHeader;\r
                 \r
                 }\r
             }\r
             grouping experimenter {\r
-                // reference "OFPT_EXPERIMENTER message in Openflow Switch 1.3 Spec"\r
+                reference "OFPT_EXPERIMENTER message in Openflow Switch 1.3 Spec";\r
                 /* Symmetric message */\r
                 uses ofHeader;\r
                 \r
             }\r
         /* Switch configuration messages. */\r
             grouping features-request {\r
-                // reference "OFPT_FEATURES_REQUEST message in Openflow Switch 1.3 Spec"\r
+                reference "OFPT_FEATURES_REQUEST message in Openflow Switch 1.3 Spec";\r
                 /* Controller/switch message */\r
                 uses ofHeader;\r
             }\r
             grouping features-reply {\r
-                // reference "OFPT_FEATURES_REPLY message in Openflow Switch 1.3 Spec"\r
+                reference "OFPT_FEATURES_REPLY message in Openflow Switch 1.3 Spec";\r
                 /* Controller/switch message */\r
                 uses ofHeader;\r
                 \r
                 }\r
             }\r
             grouping get-config-request {\r
-                // reference "OFPT_GET_CONFIG_REQUEST message in Openflow Switch 1.3 Spec"\r
+                reference "OFPT_GET_CONFIG_REQUEST message in Openflow Switch 1.3 Spec";\r
                 /* Controller/switch message */\r
                 uses ofHeader;\r
             }\r
             grouping get-config-reply {\r
-                // reference "OFPT_GET_CONFIG_REPLY message in Openflow Switch 1.3 Spec"\r
+                reference "OFPT_GET_CONFIG_REPLY message in Openflow Switch 1.3 Spec";\r
                 /* Controller/switch message */\r
                 uses ofHeader;\r
                 \r
                 }\r
             }\r
             grouping set-config {\r
-                // reference "OFPT_SET_CONFIG message in Openflow Switch 1.3 Spec"\r
+                reference "OFPT_SET_CONFIG message in Openflow Switch 1.3 Spec";\r
                 /* Controller/switch message */\r
                 \r
                 uses ofHeader;\r
             }\r
         /* Asynchronous messages. */\r
             grouping packet-in {\r
-                // reference "OFPT_PACKET_IN message in Openflow Switch 1.3 Spec"\r
+                reference "OFPT_PACKET_IN message in Openflow Switch 1.3 Spec";\r
                 /* Async message */\r
                 \r
                 uses ofHeader;\r
                     type uint64;\r
                 }\r
                 uses match-grouping;\r
-                \r
-// struct ofp_match match; /* Packet metadata. Variable size. */\r
-// /* The variable size and padded match is always followed by:\r
-//  *   - Exactly 2 all-zero padding bytes, then\r
-//  *   - An Ethernet frame whose length is inferred from header.length.\r
-//  * The padding bytes preceding the Ethernet frame ensure that the IP\r
-//  * header (if any) following the Ethernet header is 32-bit aligned.\r
-//  */\r
+\r
                 leaf data {\r
                     type binary;\r
                 }\r
                 }\r
             }\r
             grouping flow-removed {\r
-                // reference "OFPT_FLOW_REMOVED message in Openflow Switch 1.3 Spec"\r
+                reference "OFPT_FLOW_REMOVED message in Openflow Switch 1.3 Spec";\r
                 /* Async message */\r
                 uses ofHeader;\r
                 \r
                 uses oxm:match-v10-grouping;\r
             } \r
             grouping port-status {\r
-                // reference "OFPT_PORT_STATUS message in Openflow Switch 1.3 Spec"\r
+                reference "OFPT_PORT_STATUS message in Openflow Switch 1.3 Spec";\r
                 \r
                 uses ofHeader;\r
                 \r
                 leaf reason {\r
                     type oft:port-reason;\r
                 }\r
-            } /* Async message */\r
+            }\r
         /* Controller command messages. */\r
             grouping packet-out {\r
-                // reference "OFPT_PACKET_OUT message in Openflow Switch 1.3 Spec"\r
+                reference "OFPT_PACKET_OUT message in Openflow Switch 1.3 Spec";\r
                 /* Controller/switch message */\r
                 \r
                 uses ofHeader;\r
                 }\r
             } \r
             grouping flow-mod {\r
-                // reference "OFPT_FLOW_MOD message in Openflow Switch 1.3 Spec"\r
+                reference "OFPT_FLOW_MOD message in Openflow Switch 1.3 Spec";\r
                 /* Controller/switch message */\r
                 \r
                 uses ofHeader;\r
                 uses ofaction:actions;\r
             } \r
             grouping group-mod {\r
-                // reference "OFPT_GROUP_MOD message in Openflow Switch 1.3 Spec"\r
+                reference "OFPT_GROUP_MOD message in Openflow Switch 1.3 Spec";\r
                 /* Controller/switch message */\r
                 \r
                 uses ofHeader;\r
             }\r
             \r
             grouping port-mod {\r
-                // reference "OFPT_PORT_MOD message in Openflow Switch 1.3 Spec"\r
+                reference "OFPT_PORT_MOD message in Openflow Switch 1.3 Spec";\r
                 /* Controller/switch message */\r
 \r
                 uses ofHeader;\r
                 }\r
             } \r
             grouping table-mod {\r
-                // reference "OFPT_TABLE_MOD message in Openflow Switch 1.3 Spec"\r
+                reference "OFPT_TABLE_MOD message in Openflow Switch 1.3 Spec";\r
                 /* Controller/switch message */\r
 \r
                 uses ofHeader;\r
             \r
         /* Multipart messages. */\r
             grouping multipart-request {\r
-                // reference "OFPT_MULTIPART_REQUEST message in Openflow Switch 1.3 Spec"\r
+                reference "OFPT_MULTIPART_REQUEST message in Openflow Switch 1.3 Spec";\r
                 /* Controller/switch message */\r
 \r
                 uses ofHeader;\r
                 \r
                 leaf type {\r
                     type oft:multipart-type;\r
-                }          \r
+                }\r
                 leaf flags {\r
                     type oft:multipart-request-flags;\r
-                }      \r
+                }\r
                 choice multipart-request-body {\r
                     case multipart-request-desc-case {\r
                         container multipart-request-desc {\r
                 }\r
             } \r
             grouping multipart-reply {\r
-                // reference "OFPT_MULTIPART_REPLY message in Openflow Switch 1.3 Spec"\r
+                reference "OFPT_MULTIPART_REPLY message in Openflow Switch 1.3 Spec";\r
                 /* Controller/switch message */\r
 \r
                 uses ofHeader;\r
             } \r
             /* Barrier messages. */\r
             grouping barrier-request {\r
-                // reference "OFPT_BARRIER_REQUEST message in Openflow Switch 1.3 Spec"\r
+                reference "OFPT_BARRIER_REQUEST message in Openflow Switch 1.3 Spec";\r
                 /* Controller/switch message */\r
                 uses ofHeader;\r
             } \r
             grouping barrier-reply {\r
-                // reference "OFPT_BARRIER_REPLY message in Openflow Switch 1.3 Spec"\r
+                reference "OFPT_BARRIER_REPLY message in Openflow Switch 1.3 Spec";\r
                 /* Controller/switch message */\r
                 uses ofHeader;\r
             } \r
         /* Queue Configuration messages. */\r
             grouping queue-get-config-request {\r
-                // reference "OFPT_QUEUE_GET_CONFIG_REQUEST message in Openflow Switch 1.3 Spec"\r
+                reference "OFPT_QUEUE_GET_CONFIG_REQUEST message in Openflow Switch 1.3 Spec";\r
                 /* Controller/switch message */\r
                 \r
                 uses ofHeader;\r
                 }\r
             } \r
             grouping queue-get-config-reply {\r
-                // reference "OFPT_QUEUE_GET_CONFIG_REPLY message in Openflow Switch 1.3 Spec"\r
+                reference "OFPT_QUEUE_GET_CONFIG_REPLY message in Openflow Switch 1.3 Spec";\r
                 /* Controller/switch message */\r
 \r
                 uses ofHeader;\r
             }\r
             /* Controller role change request messages. */\r
             grouping role-request {\r
-                // reference "OFPT_ROLE_REQUEST message in Openflow Switch 1.3 Spec"\r
+                reference "OFPT_ROLE_REQUEST message in Openflow Switch 1.3 Spec";\r
                 /* Controller/switch message */\r
                 \r
                 uses ofHeader;\r
                 }\r
             } \r
             grouping role-reply {\r
-                // reference "OFPT_ROLE_REPLY message in Openflow Switch 1.3 Spec"\r
+                reference "OFPT_ROLE_REPLY message in Openflow Switch 1.3 Spec";\r
                 /* Controller/switch message */\r
 \r
                 uses ofHeader;\r
             } \r
             /* Asynchronous message configuration. */\r
             grouping get-async-request {\r
-                // reference "OFPT_GET_ASYNC_REQUEST message in Openflow Switch 1.3 Spec"\r
+                reference "OFPT_GET_ASYNC_REQUEST message in Openflow Switch 1.3 Spec";\r
                 /* Controller/switch message */\r
 \r
                 uses ofHeader;                \r
             } \r
             grouping get-async-reply {\r
-                // reference "OFPT_GET_ASYNC_REPLY message in Openflow Switch 1.3 Spec"\r
+                reference "OFPT_GET_ASYNC_REPLY message in Openflow Switch 1.3 Spec";\r
                 /* Controller/switch message */\r
 \r
                 uses ofHeader;\r
                 uses async-body-grouping;\r
             } \r
             grouping set-async {\r
-                // reference "OFPT_SET_ASYNC message in Openflow Switch 1.3 Spec"\r
+                reference "OFPT_SET_ASYNC message in Openflow Switch 1.3 Spec";\r
                 /* Controller/switch message */\r
                 \r
                 uses ofHeader;\r
             }\r
             /* Meters and rate limiters configuration messages. */\r
             grouping meter-mod {\r
-                // reference "OFPT_METER_MOD message in Openflow Switch 1.3 Spec"\r
+                reference "OFPT_METER_MOD message in Openflow Switch 1.3 Spec";\r
                 /* Controller/switch message */\r
 \r
                 uses ofHeader;\r
             /* Immutable messages. */\r
             notification hello-message {\r
                 uses hello;\r
-                // reference "OFPT_HELLO message in Openflow Switch 1.3 Spec"\r
+                reference "OFPT_HELLO message in Openflow Switch 1.3 Spec";\r
                 \r
                 /* Symmetric message */\r
             }\r
             notification error-message {\r
                 uses error;\r
-                // reference "OFPT_ERROR message in Openflow Switch 1.3 Spec"\r
+                reference "OFPT_ERROR message in Openflow Switch 1.3 Spec";\r
                 \r
                 /* Symmetric message */\r
             }\r
             notification echo-request-message {\r
                 uses echo-request;\r
-                // reference "OFPT_ECHO_REQUEST message in Openflow Switch 1.3 Spec"\r
+                reference "OFPT_ECHO_REQUEST message in Openflow Switch 1.3 Spec";\r
                 \r
                 /* Symmetric message */\r
             }\r
             notification experimenter-message {\r
                 uses experimenter;\r
-                // reference "OFPT_EXPERIMENTER message in Openflow Switch 1.3 Spec"\r
+                reference "OFPT_EXPERIMENTER message in Openflow Switch 1.3 Spec";\r
                 // TODO:: does switch send this when understood experimenter msg from lib?\r
                 /* Symmetric message */\r
             }\r
     // # Notification and RPCs\r
         /* Symmetric RPC. */\r
             rpc echo {\r
-                // reference "OFPT_ECHO_REQUEST message in Openflow Switch 1.3 Spec"\r
                 input {\r
                     uses echo-request;\r
                 }\r
             }\r
             \r
             rpc echo-reply {\r
-                // reference "OFPT_ECHO_REQUEST message in Openflow Switch 1.3 Spec"\r
                 input {\r
                     uses echo-reply;\r
                 }\r
             }\r
             \r
             rpc hello {\r
-                // reference "OFPT_HELLO message in Openflow Switch 1.3 Spec"\r
                 input {\r
                     uses hello;\r
                 }\r
             }\r
             \r
             rpc experimenter {\r
-                // reference "OFPT_EXPERIMENTER message in Openflow Switch 1.3 Spec"\r
                 input {\r
                     uses experimenter;\r
                 }\r
 \r
         /* Switch configuration messages. */\r
             rpc get-features {\r
-                // reference "OFPT_FEATURES_REQUEST message in Openflow Switch 1.3 Spec"\r
                 input {\r
                     uses features-request;\r
                 }\r
             }\r
             \r
             rpc get-config {\r
-                // reference "OFPT_GET_CONFIG_REQUEST message in Openflow Switch 1.3 Spec"\r
                 input {\r
                     uses get-config-request;\r
                 }\r
             }\r
             \r
             rpc set-config {\r
-                // reference "OFPT_SET_CONFIG message in Openflow Switch 1.3 Spec"\r
                 input {\r
                     uses set-config;\r
                 }   \r
         /* Asynchronous messages. */\r
             notification packet-in-message {\r
                 uses packet-in;\r
-                // reference "OFPT_PACKET_IN message in Openflow Switch 1.3 Spec"\r
                 \r
              /* Async message */\r
             }\r
             notification flow-removed-message {\r
                 uses flow-removed;\r
-                // reference "OFPT_FLOW_REMOVED message in Openflow Switch 1.3 Spec"\r
                 \r
                 /* Async message */\r
             } \r
             notification port-status-message {\r
                 uses port-status;\r
-                // reference "OFPT_PORT_STATUS message in Openflow Switch 1.3 Spec"\r
                 \r
             } /* Async message */\r
 \r
             rpc packet-out {\r
                 input {\r
                     uses packet-out;\r
-                    // reference "OFPT_PACKET_OUT message in Openflow Switch 1.3 Spec"\r
                 }\r
                 /* Controller/switch message */\r
             } \r
             rpc flow-mod {\r
                 input {\r
                     uses flow-mod;\r
-                    // reference "OFPT_FLOW_MOD message in Openflow Switch 1.3 Spec"\r
                 }\r
                 /* Controller/switch message */\r
             } \r
             rpc group-mod {\r
                 input {\r
                     uses group-mod;\r
-                    // reference "OFPT_GROUP_MOD message in Openflow Switch 1.3 Spec"\r
                 }\r
                 /* Controller/switch message */\r
             } \r
             rpc port-mod {\r
                 input {\r
                     uses port-mod;\r
-                    // reference "OFPT_PORT_MOD message in Openflow Switch 1.3 Spec"\r
                 }\r
             } /* Controller/switch message */\r
             \r
             rpc table-mod {\r
                 input {\r
                     uses table-mod;\r
-                    // reference "OFPT_TABLE_MOD message in Openflow Switch 1.3 Spec"\r
                 }\r
             } /* Controller/switch message */\r
 \r
              /* Controller/switch message */\r
             notification multipart-reply-message {\r
                 uses multipart-reply;\r
-                // reference "OFPT_MULTIPART_REPLY message in Openflow Switch 1.3 Spec"\r
                 // notification because of multiple following responses\r
             } /* Controller/switch message */\r
             \r
             rpc barrier {\r
                 input {\r
                     uses barrier-request;\r
-                    // reference "OFPT_BARRIER_REQUEST message in Openflow Switch 1.3 Spec"\r
                 }\r
                 output {\r
                     uses barrier-reply;\r
-                    // reference "OFPT_BARRIER_REPLY message in Openflow Switch 1.3 Spec"\r
                 }\r
             }\r
         /* Queue Configuration messages. */\r
             rpc get-queue-config {\r
                 input {\r
                     uses queue-get-config-request;\r
-                    // reference "OFPT_QUEUE_GET_CONFIG_REQUEST message in Openflow Switch 1.3 Spec"\r
                 }\r
                 output {\r
                     uses queue-get-config-reply;\r
-                    // reference "OFPT_QUEUE_GET_CONFIG_REPLY message in Openflow Switch 1.3 Spec"\r
                 }\r
             } \r
 \r
             rpc role-request {\r
                 input {\r
                     uses role-request;\r
-                    // reference "OFPT_ROLE_REQUEST message in Openflow Switch 1.3 Spec"\r
                 }\r
                 output {\r
                     uses role-reply;\r
-                    // reference "OFPT_ROLE_REPLY message in Openflow Switch 1.3 Spec"\r
                 }\r
             } /* Controller/switch message */\r
             \r
             rpc get-async {\r
                 input {\r
                     uses get-async-request;\r
-                    // reference "OFPT_GET_ASYNC_REQUEST message in Openflow Switch 1.3 Spec"\r
                 }\r
                 output {\r
                     uses get-async-reply;\r
-                    // reference "OFPT_GET_ASYNC_REPLY message in Openflow Switch 1.3 Spec"\r
                 }\r
             } \r
              /* Controller/switch message */\r
             rpc set-async {\r
                 input { \r
                     uses set-async;\r
-                // reference "OFPT_SET_ASYNC message in Openflow Switch 1.3 Spec"\r
                 }\r
                 \r
             } \r
             rpc meter-mod {\r
                 input {\r
                     uses meter-mod;\r
-                    // reference "OFPT_METER_MOD message in Openflow Switch 1.3 Spec"\r
                 }\r
             } /* Controller/switch message */\r
 }
\ No newline at end of file
index fa28ead97a4ea08d2ec3926d03651c2e7b84c69a..48fd179c2bb22c33359d87d41b9594c2abe4d90b 100644 (file)
     prefix "oft";
 
     revision "2013-07-31" {
-        //description "OpenFlow 1.3 - common types model";
+        description "OpenFlow 1.3 - common types model";
     }
 
     typedef port-number {
+        description "Port numbering. Ports are numbered starting from 1 -
+         supports special / reserved values (in OF v1.3)";
         type uint32;
     }
     
     typedef port-number-values {
+        description "Reserved OpenFlow Port (fake output \"ports\") (OF v1.3).";
         type enumeration {
             enum MAX {
-                value -256; // 0xffffff00 
+                description "Maximum number of physical and logical switch ports.";
+                value -256; // 0xffffff00
             }
             enum IN_PORT {
+                description "Send the packet out the input port. This
+                            reserved port must be explicitly used
+                            in order to send back out of the input
+                            port.";
                 value -8; // 0xfffffff8
             }
             enum TABLE {
+                description "Submit the packet to the first flow table
+                            NB: This destination port can only be
+                            used in packet-out messages.";
                 value -7; // 0xfffffff9 
             }
             enum NORMAL {
+                description "Process with normal L2/L3 switching.";
                 value -6; // 0xfffffffa 
             }
             enum FLOOD {
+                description "All physical ports in VLAN, except input
+                            port and those blocked or link down.";
                 value -5; // 0xfffffffb 
             }
             enum ALL {
+                description "All physical ports except input port.";
                 value -4; // 0xfffffffc 
             }
             enum CONTROLLER {
+                description "Send to controller.";
                 value -3; // 0xfffffffd
             }
             enum LOCAL {
+                description "Local openflow \"port\".";
                 value -2; // 0xfffffffe
             }
             enum ANY {
+                description "Wildcard port used only for flow mod
+                            (delete) and flow stats requests. Selects 
+                            all flows regardless of output port
+                            (including flows with no output port).";
                 value -1; // 0xffffffff
             }
         }
     }
 
     typedef port-features {
-        ////description "Features of ports available in datapath.";
-        //reference "ofp_port_features";
+        description "Features of ports available in datapath.";
         type bits {
             bit _10mb_hd { 
                 position 0;
-                //description "10 Mb half-duplex rate support.";
+                description "10 Mb half-duplex rate support.";
             }
             bit _10mb-fd { 
                 position 1;
-                //description "10 Mb full-duplex rate support.";
+                description "10 Mb full-duplex rate support.";
             }
             bit _100mb-hd { 
                 position 2;
-                //description "100 Mb half-duplex rate support.";
+                description "100 Mb half-duplex rate support.";
             }
             bit _100mb-fd { 
                 position 3;
-                //description "100 Mb full-duplex rate support.";
+                description "100 Mb full-duplex rate support.";
             }
             bit _1gb-hd { 
                 position 4;
-                //description "1 Gb half-duplex rate support.";
+                description "1 Gb half-duplex rate support.";
             }
             bit _1gb-fd { 
                 position 5;
-                //description "1 Gb full-duplex rate support.";
+                description "1 Gb full-duplex rate support.";
             }
             bit _10gb-fd { 
                 position 6;
-                //description "10 Gb full-duplex rate support.";
+                description "10 Gb full-duplex rate support.";
             }
             bit _40gb-fd { 
                 position 7;
-                //description "40 Gb full-duplex rate support.";
+                description "40 Gb full-duplex rate support.";
             }
             bit _100gb-fd { 
                 position 8;
-                //description "100 Gb full-duplex rate support.";
+                description "100 Gb full-duplex rate support.";
             }
             bit _1tb-fd { 
                 position 9;
-                //description "1 Tb full-duplex rate support.";
+                description "1 Tb full-duplex rate support.";
             }
             bit other { 
                 position 10;
-                //description "Other rate, not in the list.";
+                description "Other rate, not in the list.";
             }
             bit copper { 
                 position 11;
-                //description "Copper medium.";
+                description "Copper medium.";
             }
             bit fiber { 
                 position 12;
-                //description "Fiber medium.";
+                description "Fiber medium.";
             }
             bit autoneg { 
                 position 13;
-                //description "Auto-negotiation.";
+                description "Auto-negotiation.";
             }
             bit pause { 
                 position 14;
-                //description "Pause.";
+                description "Pause.";
             }
             bit pause-asym { 
                 position 15;
-                //description "Asymmetric pause.";
+                description "Asymmetric pause.";
             }
         }
     }
     }
 
     identity instruction {
+        description "Base identity for instruction types";
     }
 
     identity action {
+        description "Base identity for action types";
     }
 
     typedef metadata {
     }
     
     typedef capabilities {
+        description "Capabilities supported by the datapath.";
         type bits {
             bit OFPC_FLOW_STATS {
                 position 0;
     }
 
     typedef switch-config-flag {
-        /* Handling of IP fragments. */
+        description " Handling of IP fragments. ";
         type enumeration {
             enum FRAG_NORMAL {
                 value 0; 
     }
 
     typedef flow-removed-reason {
-        /* flow removed */
+        description "Why was this flow removed?";
         type enumeration {
             enum OFPRR_IDLE_TIMEOUT {
                 value 0;
     }
 
     typedef port-reason {
-        /* port status */
+        description "What changed about the physical port";
         type enumeration {
             enum OFPPR_ADD {
                 value 0;
     typedef flow-mod-command {
         /* ofp_flow_mod_command */
         type enumeration {
-            enum OFPFC_ADD {      
-                value 0;      
-                description "New flow.";    
+            enum OFPFC_ADD {
+                value 0;
+                description "New flow.";
             }
             enum OFPFC_MODIFY {
                 value 1;
         type bits {
             bit OFPFF_SEND_FLOW_REM {
                 position 0;
-                /* Send flow removed message when flow expires or is deleted. */
+                description "Send flow removed message when flow expires or is deleted.";
             }
             bit OFPFF_CHECK_OVERLAP {
                 position 1;
-                /* Check for overlapping entries first. */
+                description "Check for overlapping entries first.";
             }
             bit OFPFF_RESET_COUNTS {
                 position 2;
-                /* Reset flow packet and byte counts. */
+                description "Reset flow packet and byte counts.";
             }
             bit OFPFF_NO_PKT_COUNTS {
                 position 3;
-                /* Don't keep track of packet count. */
+                description "Don't keep track of packet count.";
             }
             bit OFPFF_NO_BYT_COUNTS {
                 position 4;
-                /* Don't keep track of byte count. */
+                description "Don't keep track of byte count.";
             }
         }
     }
     typedef group-mod-command {
         /* ofp_group_mod_command */
         type enumeration {
-            enum OFPGC_ADD {            
-              value 0;            
-              description "New group.";            
+            enum OFPGC_ADD {
+              value 0;
+              description "New group.";
             }
             enum OFPGC_MODIFY {
               value 1;
               value 2;
               description "Delete all matching groups.";
             }
-            
         }
     }
 
     typedef group-type {
         /* ofp_group_type */
         type enumeration {
-            enum OFPGT_ALL {            
-              value 0;            
-              description "All (multicast/broadcast) group.";            
+            enum OFPGT_ALL {
+              value 0;
+              description "All (multicast/broadcast) group.";
             }
             enum OFPGT_SELECT {
               value 1;
             }
         }
     }
-    
+
     typedef table-values {
         /* ofp_table */
         type enumeration {
-            enum OFPTT_MAX {            
-              value 254; // 0xfe             
-              description "Last usable table number.";            
+            enum OFPTT_MAX {
+              value 254; // 0xfe
+              description "Last usable table number.";
             }
             enum OFPTT_ALL {
               value 255; // 0xff
         }
     }
 
-       typedef group {
-               /* ofp_group - Group numbering. Groups can use any number up to OFPG_MAX.*/
-               type enumeration {
-                       enum OFPG_MAX {
-                               value -256; //0xffffff00
-                               description "Last usable group number";
-                       }
-                       
-                       /* Fake groups. */
-                       enum OFPG_ALL {
-                               value -4; //0xfffffffc
-                               description "Represents all groups for group delete commands";
-                       }
-                       enum OFPG_ANY {
-                               value -1; //0xffffffff
-                               description "Wildcard group used only for flow stats requests. 
-                                                               Selects all flows regardless of group (including flows with no group)";
-                               
-                       }
-               }
-               
-       }
-       
+    typedef group {
+        /* ofp_group - Group numbering. Groups can use any number up to OFPG_MAX.*/
+        type enumeration {
+            enum OFPG_MAX {
+                value -256; //0xffffff00
+                description "Last usable group number";
+            }
+            /* Fake groups. */
+            enum OFPG_ALL {
+                value -4; //0xfffffffc
+                description "Represents all groups for group delete commands";
+            }
+            enum OFPG_ANY {
+                value -1; //0xffffffff
+                description "Wildcard group used only for flow stats requests. 
+                            Selects all flows regardless of group (including flows with no group)";
+            }
+        }
+    }
+
     typedef multipart-request-flags {
-        description
-            "enum ofp_multipart_request_flags ";
+        description "enum ofp_multipart_request_flags ";
         type bits {
             bit OFPMPF_REQ_MORE {
-                //description "More requests to follow.";
+                description "More requests to follow.";
                 position 0;
             }
         }
     }
 
     typedef multipart-type {
-        /* ofp_multipart_type */
         type enumeration {
             enum OFPMP_DESC {
               value 0;
         }
     }
 
-       typedef meter {
-               /* ofp_meter - Meter numbering. Flow meters can use any number up to OFPM_MAX*/
-               type enumeration {
-                       enum OFPM_MAX {
-                               value -65536; //0xffff0000
-                               description "Last usable meter number";
-                       }
-                       
-                       /* Virtual meters. */
-                       enum OFPM_SLOWPATH {
-                               value -3; //0xfffffffd
-                               description "Meter for slow datapath";
-                       }
-                       enum OFPM_CONTROLLER {
-                               value -2; //0xfffffffe
-                               description "Meter for controller connection";
-                       }
-                       enum OFPM_ALL {
-                               value -1; //0xffffffff
-                               description "Represents all meters for stat requests commands";
-                       }
-               }
-               
-       }
+    typedef meter {
+        description "Meter numbering. Flow meters can use any number up to OFPM_MAX";
+        type enumeration {
+            enum OFPM_MAX {
+                value -65536; //0xffff0000
+                description "Last usable meter number";
+            }
+            /* Virtual meters. */
+            enum OFPM_SLOWPATH {
+                value -3; //0xfffffffd
+                description "Meter for slow datapath";
+            }
+            enum OFPM_CONTROLLER {
+                value -2; //0xfffffffe
+                description "Meter for controller connection";
+            }
+            enum OFPM_ALL {
+                value -1; //0xffffffff
+                description "Represents all meters for stat requests commands";
+            }
+        }
+    }
 
     typedef table-config {
         /* ofp_table_config */
         /* ofp_group_type */
         type bits {
             bit OFPGT_ALL {
-                /* All (multicast/broadcast) group. */
+                description "All (multicast/broadcast) group.";
                 position 0;
             }
             bit OFPGT_SELECT {
-                /* Select group. */
+                description "Select group.";
                 position 1;
             }
             bit OFPGT_INDIRECT {
-                /* Indirect group. */
+                description "Indirect group.";
                 position 2;
             }
             bit OFPGT_FF {
-                /* Fast failover group. */
+                description "Fast failover group.";
                 position 3;
             }
         }
         /* ofp_group_capabilities */
         type bits {
             bit OFPGFC_SELECT_WEIGHT {
-                /* Support weight for select groups */
+                description "Support weight for select groups";
                 position 0;
             }
             bit OFPGFC_SELECT_LIVENESS {
-                /* Support liveness for select groups */
+                description "Support liveness for select groups";
                 position 1;
             }
             bit OFPGFC_CHAINING {
-                /* Support chaining groups */
+                description "Support chaining group";
                 position 2;
             }
             bit OFPGFC_CHAINING_CHECKS {
-                /* Check chaining for loops and delete */
+                description "Check chaining for loops and delete";
                 position 3;
             }
         }
     }
     
     typedef ipv6-exthdr-flags {
+        description "Bit definitions for IPv6 Extension Header pseudo-field.";
         type bits {
             bit nonext {
                 description "<No next header> encountered.";
     }
     
     typedef port-number-values-v10 {
+        description "Port numbering. Physical ports are numbered starting from 1.";
         type enumeration {
             enum MAX {
                 value 65280; // 0xff00 
             }
             enum IN_PORT {
+                description "Send the packet out the input port. This
+                            virtual port must be explicitly used
+                            in order to send back out of the input
+                            port.";
                 value 65528; // 0xfff8
             }
             enum TABLE {
+                description "Perform actions in flow table.
+                            NB: This can only be the destination
+                            port for packet-out messages.";
                 value 65529; // 0xfff9 
             }
             enum NORMAL {
+                description "Process with normal L2/L3 switching.";
                 value 65530; // 0xfffa 
             }
             enum FLOOD {
+                description "All physical ports except input port and
+                            those disabled by STP.";
                 value 65531; // 0xfffb 
             }
             enum ALL {
+                description "All physical ports except input port.";
                 value 65532; // 0xfffc 
             }
             enum CONTROLLER {
+                description "Send to controller.";
                 value 65533; // 0xfffd
             }
             enum LOCAL {
+                description "Local openflow \"port\".";
                 value 65534; // 0xfffe
             }
             enum NONE {
+                description "Not associated with a physical port.";
                 value 65535; // 0xffff
             }
         }
             to configure the port's behavior.";
         type bits {
             bit port-down { 
-                //description " Port is administratively down.";
+                description " Port is administratively down.";
                 position 0;
             }
             bit no-stp {
-                //description" Disable 802.1D spanning tree on port.";
+                description" Disable 802.1D spanning tree on port.";
                 position 1;
             }
             bit no-recv { 
-                //description " Drop all packets received by port.";
+                description " Drop all packets received by port.";
                 position 2;
             }
             bit no-recv-stp { 
-                //description " Drop received 802.1D STP packets.";
+                description " Drop received 802.1D STP packets.";
                 position 3;
             }
             bit no-flood { 
-                //description " Do not include this port when flooding.";
+                description " Do not include this port when flooding.";
                 position 4;
             }
             bit no-fwd { 
-                //description " Drop packets forwarded to port.";
+                description " Drop packets forwarded to port.";
                 position 5;
             }
             bit no-packet-in { 
-                //description "Do not send packet-in msgs for port.";
+                description "Do not send packet-in msgs for port.";
                 position 6;
             }
         }
     }
     
     typedef port-state-v10 {
-        description 
-            "Current state of the physical port. These are not configurable from
-            the controller.";
+        description "Current state of the physical port. These are not configurable from
+                    the controller.";
         type bits {
             bit link_down {
-                //description "No physical link present.";
+                description "No physical link present.";
                 position 0;
             }
             bit blocked {
-                //description "Port is blocked";
+                description "Port is blocked";
                 position 1;
             }
             bit live {
-                //description "Live for Fast Failover Group.";
+                description "Live for Fast Failover Group.";
                 position 2;
             }
             bit stp_listen {
-                //description "Not learning or relaying frames.";
+                description "Not learning or relaying frames.";
             }
             bit stp_learn {
-                //description "Learning but not relaying frames.";
+                description "Learning but not relaying frames.";
             }
             bit stp_forward {
-                //description "Learning and relaying frames.";
+                description "Learning and relaying frames.";
             }
             bit stp_block {
-                //description "Not part of spanning tree.";
+                description "Not part of spanning tree.";
             }
             bit stp_mask {
-                //description "Bit mask for OFPPS_STP_* values.";
+                description "Bit mask for OFPPS_STP_* values.";
             }
         }
     }
     
     typedef port-features-v10 {
-        ////description "Features of ports available in datapath.";
-        //reference "ofp_port_features";
+        description "Features of ports available in datapath.";
+        reference "ofp_port_features";
         type bits {
             bit _10mb-hd { 
                 position 0;
-                //description "10 Mb half-duplex rate support.";
+                description "10 Mb half-duplex rate support.";
             }
             bit _10mb-fd { 
                 position 1;
-                //description "10 Mb full-duplex rate support.";
+                description "10 Mb full-duplex rate support.";
             }
             bit _100mb-hd { 
                 position 2;
-                //description "100 Mb half-duplex rate support.";
+                description "100 Mb half-duplex rate support.";
             }
             bit _100mb-fd { 
                 position 3;
-                //description "100 Mb full-duplex rate support.";
+                description "100 Mb full-duplex rate support.";
             }
             bit _1gb-hd { 
                 position 4;
-                //description "1 Gb half-duplex rate support.";
+                description "1 Gb half-duplex rate support.";
             }
             bit _1gb-fd { 
                 position 5;
-                //description "1 Gb full-duplex rate support.";
+                description "1 Gb full-duplex rate support.";
             }
             bit _10gb-fd { 
                 position 6;
-                //description "10 Gb full-duplex rate support.";
+                description "10 Gb full-duplex rate support.";
             }
             bit copper { 
                 position 7;
-                //description "Copper medium.";
+                description "Copper medium.";
             }
             bit fiber { 
                 position 8;
-                //description "Fiber medium.";
+                description "Fiber medium.";
             }
             bit autoneg { 
                 position 9;
-                //description "Auto-negotiation.";
+                description "Auto-negotiation.";
             }
             bit pause { 
                 position 10;
-                //description "Pause.";
+                description "Pause.";
             }
             bit pause-asym { 
                 position 11;
-                //description "Asymmetric pause.";
+                description "Asymmetric pause.";
             }
         }
     }
         type bits {
             bit OFPC_FLOW_STATS {
                 position 0;
-                /* Flow statistics. */
+                description "Flow statistics.";
             } 
             bit OFPC_TABLE_STATS {
                 position 1;
-                /* Table statistics. */
+                description "Table statistics.";
             }
             bit OFPC_PORT_STATS {
                 position 2;
-                /* Port statistics. */
+                description "Port statistics.";
             }
             bit OFPC_STP {
                 position 3;
-                /* 802.1d spanning tree. */
+                description "802.1d spanning tree.";
             }
             bit OFPC_RESERVED {
                 position 4;
-                /* Reserved, must be zero. */
+                description "Reserved, must be zero.";
             }
             bit OFPC_IP_REASM {
                 position 5;
-                /* Can reassemble IP fragments. */
+                description "Can reassemble IP fragments.";
             }
             bit OFPC_QUEUE_STATS {
                 position 6;
-                /* Queue statistics. */
+                description "Queue statistics.";
             }
             bit OFPC_ARP_MATCH_IP {
                 position 8;
-                /* Match IP addresses in ARP pkts. */
+                description "Match IP addresses in ARP pkts.";
             }
         }
     }
         type bits {
             bit OFPFF_SEND_FLOW_REM {
                 position 0;
-                /* Send flow removed message when flow expires or is deleted. */
+                description "Send flow removed message when flow expires or is deleted.";
             }
             bit OFPFF_CHECK_OVERLAP {
                 position 1;
-                /* Check for overlapping entries first. */
+                description "Check for overlapping entries first.";
             }
             bit OFPFF_EMERG {
                 position 2;
-                /* Reset flow packet and byte counts. */
+                description "Reset flow packet and byte counts.";
             }
         }
     }
         type bits {
             bit OFPAT_OUTPUT {
                 position 0;
-                /* Output to switch port. */
+                description "Output to switch port.";
             }
             bit OFPAT_SET_VLAN_VID {
                 position 1;
-                /* Set the 802.1q VLAN id. */
+                description "Set the 802.1q VLAN id.";
             }
             bit OFPAT_SET_VLAN_PCP {
                 position 2;
-                /* Set the 802.1q priority. */
+                description "Set the 802.1q priority.";
             }
             bit OFPAT_STRIP_VLAN {
                 position 3;
-                /* Strip the 802.1q header. */
+                description "Strip the 802.1q header.";
             }
             bit OFPAT_SET_DL_SRC {
                 position 4;
-                /* Ethernet source address. */
+                description "Ethernet source address.";
             }
             bit OFPAT_SET_DL_DST {
                 position 5;
-                /* Ethernet destination address. */
+                description "Ethernet destination address.";
             }
             bit OFPAT_SET_NW_SRC {
                 position 6;
-                /* IP source address. */
+                description "IP source address.";
             }
             bit OFPAT_SET_NW_DST {
                 position 7;
-                /* IP destination address. */
+                description "IP destination address.";
             }
             bit OFPAT_SET_NW_TOS {
                 position 8;
-                /* IP ToS (DSCP field, 6 bits). */
+                description "IP ToS (DSCP field, 6 bits).";
             }
             bit OFPAT_SET_TP_SRC {
                 position 9;
-                /* TCP/UDP source port. */
+                description "TCP/UDP source port.";
             }
             bit OFPAT_SET_TP_DST {
                 position 10;
-                /* TCP/UDP destination port. */
+                description "TCP/UDP destination port.";
             }
             bit OFPAT_ENQUEUE {
                 position 11;
-                /* Output to queue. */
+                description "Output to queue.";
             }
             bit OFPAT_VENDOR {
                 position 12;
-                /* Experimenter in later versions */
+                description "Experimenter in later versions.";
             }
         }
     }
     
     typedef flow-wildcards-v10 {
         /* ofp_flow_wildcards */
+        description "Flow wildcards - NW_SRC_MASK & NW_DST_MASK are handled separately";
         type bits {
             bit IN_PORT {
+                description "Switch input port.";
                 position 0;
             }
             bit DL_VLAN {
+                description "VLAN id.";
                 position 1;
             }
             bit DL_SRC {
+                description "Ethernet source address.";
                 position 2;
             }
             bit DL_DST {
+                description "Ethernet destination address.";
                 position 3;
             }
             bit DL_TYPE {
+                description "Ethernet frame type.";
                 position 4;
             }
             bit NW_PROTO {
+                description "IP protocol.";
                 position 5;
             }
             bit TP_SRC {
+                description "TCP/UDP source port.";
                 position 6;
             }
             bit TP_DST {
+                description "TCP/UDP destination port.";
                 position 7;
             }
             bit DL_VLAN_PCP {
+                description "VLAN priority.";
                 position 20;
             }
             bit NW_TOS {
+                description "IP ToS (DSCP field, 6 bits).";
                 position 21;
             }
         }
index f5806fca337f59f06c8f9c9665c29f2fc7fd9475..4cbe17e7bff13847a970d96d487d35efaac8fd35 100644 (file)
     prefix "ofs";
 
     revision "2013-09-27" {
-        //description "Model of system messages used in OpenFlow Protocol Library";
+        description "Model of system messages used in OpenFlow Protocol Library";
     }
 
     notification disconnect-event {
+        description "Disconnect notification";
         leaf info {
             type string;
         }
     }
 
     notification switch-idle-event {
+        description "Switch-idle notification";
         leaf info {
             type string;
         }