From: Michal Polkorab Date: Mon, 3 Feb 2014 20:30:11 +0000 (-0800) Subject: Model updated with descriptions X-Git-Tag: release/helium~101 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=d85c80c60aedb20c472dda502e8ffcaa6a5669d0;hp=a05ed1406ca28056c6c91525f590117c3ca4a8c6;p=openflowjava.git Model updated with descriptions Signed-off-by: Michal Polkorab Change-Id: I32124b20c03f1b103ae7fec48437bd29ccaddeb1 --- diff --git a/openflow-protocol-api/src/main/yang/openflow-action.yang b/openflow-protocol-api/src/main/yang/openflow-action.yang index 5205fc5d..3f1168bd 100644 --- a/openflow-protocol-api/src/main/yang/openflow-action.yang +++ b/openflow-protocol-api/src/main/yang/openflow-action.yang @@ -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 { @@ -104,47 +104,47 @@ // 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; } diff --git a/openflow-protocol-api/src/main/yang/openflow-augments.yang b/openflow-protocol-api/src/main/yang/openflow-augments.yang index 1ba234bf..a0ac66a5 100644 --- a/openflow-protocol-api/src/main/yang/openflow-augments.yang +++ b/openflow-protocol-api/src/main/yang/openflow-augments.yang @@ -21,7 +21,10 @@ import openflow-extensible-match {prefix oxm;} revision "2013-10-02" { - description "OpenFlow 1.3 - augments model"; + description "OpenFlow 1.3 - augments model. + Please visit + https://wiki.opendaylight.org/view/File:OpenFlow_Protocol_Library_-_Project_documentation.pdf + - Augmentation Tables chapter"; } // OFP_MATCH AUGMENTS diff --git a/openflow-protocol-api/src/main/yang/openflow-extensible-match.yang b/openflow-protocol-api/src/main/yang/openflow-extensible-match.yang index cd91b132..7caf73f0 100644 --- a/openflow-protocol-api/src/main/yang/openflow-extensible-match.yang +++ b/openflow-protocol-api/src/main/yang/openflow-extensible-match.yang @@ -31,11 +31,11 @@ } 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 { @@ -56,163 +56,163 @@ 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 { @@ -221,6 +221,7 @@ 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 { @@ -241,49 +242,67 @@ // 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; } } diff --git a/openflow-protocol-api/src/main/yang/openflow-instruction.yang b/openflow-protocol-api/src/main/yang/openflow-instruction.yang index 8f3a0434..6e7c8a29 100644 --- a/openflow-protocol-api/src/main/yang/openflow-instruction.yang +++ b/openflow-protocol-api/src/main/yang/openflow-instruction.yang @@ -13,15 +13,15 @@ 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 { diff --git a/openflow-protocol-api/src/main/yang/openflow-protocol.yang b/openflow-protocol-api/src/main/yang/openflow-protocol.yang index 9791a4b4..d95b1e07 100644 --- a/openflow-protocol-api/src/main/yang/openflow-protocol.yang +++ b/openflow-protocol-api/src/main/yang/openflow-protocol.yang @@ -23,93 +23,79 @@ // Generic Structures grouping port { - // reference "ofp_port"; - leaf port-no { - // reference "ofp_port.port_no"; + reference "ofp_port"; + leaf port-no { type uint32; } - leaf hw-addr { - // reference "ofp_port.hw_addr"; + leaf hw-addr { type yang:mac-address; } - leaf name { - // reference "ofp_port.name"; + leaf name { type string; } - leaf config { - // reference "ofp_port.config"; + leaf config { + description "Bitmap of OFPPC_* flags."; type oft:port-config; } - leaf state { - // reference "ofp_port.state"; + leaf state { + description "Bitmap of OFPPS_* flags."; type oft:port-state; } - leaf current-features { + leaf current-features { description "Current features."; - // reference "ofp_port.curr"; - type oft:port-features; + type oft:port-features; } - leaf advertised-features { + leaf advertised-features { description "Features being advertised by the port."; - // reference "ofp_port.advertised"; - type oft:port-features; + type oft:port-features; } - leaf supported-features { + leaf supported-features { description "Features supported by the port."; - // reference "ofp_port.supported"; - type oft:port-features; + type oft:port-features; } - leaf peer-features { + leaf peer-features { description "Features advertised by peer."; - // reference "ofp_port.peer"; type oft:port-features; } - leaf curr-speed { + leaf curr-speed { description "Current port bitrate in kbps."; - // reference "ofp_port.curr_speed"; - type uint32; + type uint32; units "kbps"; } - leaf max-speed { + leaf max-speed { description "Max port bitrate in kbps"; - // reference "ofp_port.max_speed"; type uint32; - units "kbps"; + units "kbps"; } - + // OF1.0 structures - leaf config-v10 { - // reference "ofp_port.config"; + leaf config-v10 { type oft:port-config-v10; } leaf state-v10 { - // reference "ofp_port.state"; type oft:port-state-v10; } - leaf current-features-v10 { + leaf current-features-v10 { description "Current features."; - // reference "ofp_port.curr"; - type oft:port-features-v10; + type oft:port-features-v10; } - leaf advertised-features-v10 { + leaf advertised-features-v10 { description "Features being advertised by the port."; - // reference "ofp_port.advertised"; - type oft:port-features-v10; + type oft:port-features-v10; } - leaf supported-features-v10 { + leaf supported-features-v10 { description "Features supported by the port."; - // reference "ofp_port.supported"; - type oft:port-features-v10; + type oft:port-features-v10; } leaf peer-features-v10 { description "Features advertised by peer."; - // reference "ofp_port.peer"; type oft:port-features-v10; } } - + grouping match-grouping { container match { + description "Match structure (OF v1.3)"; leaf type { type identityref { base oft:match-type-base; @@ -124,18 +110,27 @@ uses bucket; } } - + grouping bucket { + description "Bucket for use in groups."; leaf weight { + description "Relative weight of bucket. Only + defined for select groups."; type uint16; } leaf watch-port { + description "Port whose state affects whether this + bucket is live. Only required for fast + failover groups."; type oft:port-number; } leaf watch-group { + description "Group whose state affects whether this + bucket is live. Only required for fast + failover groups."; type uint32; } - + uses ofaction:actions; } @@ -155,25 +150,25 @@ // # MESSAGE Structures /* Immutable messages. */ grouping ofHeader { - //reference "ofpt_header struct in Openflow Switch 1.3 Spec" + reference "ofp_header struct in Openflow Switch 1.3 Spec"; leaf version { type uint8; - //reference "OpenFlow Header - OFP_VERSION"; + description "OpenFlow version"; } leaf xid { type uint32; - //reference "OpenFlow Header - transaction id"; + description "Transaction ID"; } } grouping ofHelloElementHeader { - //reference "ofpt_hello_elem_header struct in Openflow Switch 1.3 Spec" + reference "ofpt_hello_elem_header struct in Openflow Switch 1.3 Spec"; leaf type { type oft:hello-element-type; //reference "OpenFlow Header element type - OFPHET_*"; } } grouping hello { - // reference "OFPT_HELLO message in Openflow Switch 1.3 Spec" + reference "OFPT_HELLO message in Openflow Switch 1.3 Spec"; /* Symmetric message */ uses ofHeader; @@ -186,7 +181,7 @@ } } grouping error { - // reference "OFPT_ERROR message in Openflow Switch 1.3 Spec" + reference "OFPT_ERROR message in Openflow Switch 1.3 Spec"; /* Symmetric message */ uses ofHeader; @@ -207,7 +202,7 @@ } } grouping echo-request { - // reference "OFPT_ECHO_REQUEST message in Openflow Switch 1.3 Spec" + reference "OFPT_ECHO_REQUEST message in Openflow Switch 1.3 Spec"; /* Symmetric message */ uses ofHeader; @@ -216,7 +211,7 @@ } } grouping echo-reply { - // reference "OFPT_ECHO_REPLY message in Openflow Switch 1.3 Spec" + reference "OFPT_ECHO_REPLY message in Openflow Switch 1.3 Spec"; /* Symmetric message */ uses ofHeader; @@ -225,7 +220,7 @@ } } grouping experimenter { - // reference "OFPT_EXPERIMENTER message in Openflow Switch 1.3 Spec" + reference "OFPT_EXPERIMENTER message in Openflow Switch 1.3 Spec"; /* Symmetric message */ uses ofHeader; @@ -241,12 +236,12 @@ } /* Switch configuration messages. */ grouping features-request { - // reference "OFPT_FEATURES_REQUEST message in Openflow Switch 1.3 Spec" + reference "OFPT_FEATURES_REQUEST message in Openflow Switch 1.3 Spec"; /* Controller/switch message */ uses ofHeader; } grouping features-reply { - // reference "OFPT_FEATURES_REPLY message in Openflow Switch 1.3 Spec" + reference "OFPT_FEATURES_REPLY message in Openflow Switch 1.3 Spec"; /* Controller/switch message */ uses ofHeader; @@ -280,12 +275,12 @@ } } grouping get-config-request { - // reference "OFPT_GET_CONFIG_REQUEST message in Openflow Switch 1.3 Spec" + reference "OFPT_GET_CONFIG_REQUEST message in Openflow Switch 1.3 Spec"; /* Controller/switch message */ uses ofHeader; } grouping get-config-reply { - // reference "OFPT_GET_CONFIG_REPLY message in Openflow Switch 1.3 Spec" + reference "OFPT_GET_CONFIG_REPLY message in Openflow Switch 1.3 Spec"; /* Controller/switch message */ uses ofHeader; @@ -297,7 +292,7 @@ } } grouping set-config { - // reference "OFPT_SET_CONFIG message in Openflow Switch 1.3 Spec" + reference "OFPT_SET_CONFIG message in Openflow Switch 1.3 Spec"; /* Controller/switch message */ uses ofHeader; @@ -311,7 +306,7 @@ } /* Asynchronous messages. */ grouping packet-in { - // reference "OFPT_PACKET_IN message in Openflow Switch 1.3 Spec" + reference "OFPT_PACKET_IN message in Openflow Switch 1.3 Spec"; /* Async message */ uses ofHeader; @@ -337,14 +332,7 @@ type uint64; } uses match-grouping; - -// struct ofp_match match; /* Packet metadata. Variable size. */ -// /* The variable size and padded match is always followed by: -// * - Exactly 2 all-zero padding bytes, then -// * - An Ethernet frame whose length is inferred from header.length. -// * The padding bytes preceding the Ethernet frame ensure that the IP -// * header (if any) following the Ethernet header is 32-bit aligned. -// */ + leaf data { type binary; } @@ -355,7 +343,7 @@ } } grouping flow-removed { - // reference "OFPT_FLOW_REMOVED message in Openflow Switch 1.3 Spec" + reference "OFPT_FLOW_REMOVED message in Openflow Switch 1.3 Spec"; /* Async message */ uses ofHeader; @@ -395,7 +383,7 @@ uses oxm:match-v10-grouping; } grouping port-status { - // reference "OFPT_PORT_STATUS message in Openflow Switch 1.3 Spec" + reference "OFPT_PORT_STATUS message in Openflow Switch 1.3 Spec"; uses ofHeader; @@ -404,10 +392,10 @@ leaf reason { type oft:port-reason; } - } /* Async message */ + } /* Controller command messages. */ grouping packet-out { - // reference "OFPT_PACKET_OUT message in Openflow Switch 1.3 Spec" + reference "OFPT_PACKET_OUT message in Openflow Switch 1.3 Spec"; /* Controller/switch message */ uses ofHeader; @@ -425,7 +413,7 @@ } } grouping flow-mod { - // reference "OFPT_FLOW_MOD message in Openflow Switch 1.3 Spec" + reference "OFPT_FLOW_MOD message in Openflow Switch 1.3 Spec"; /* Controller/switch message */ uses ofHeader; @@ -475,7 +463,7 @@ uses ofaction:actions; } grouping group-mod { - // reference "OFPT_GROUP_MOD message in Openflow Switch 1.3 Spec" + reference "OFPT_GROUP_MOD message in Openflow Switch 1.3 Spec"; /* Controller/switch message */ uses ofHeader; @@ -494,7 +482,7 @@ } grouping port-mod { - // reference "OFPT_PORT_MOD message in Openflow Switch 1.3 Spec" + reference "OFPT_PORT_MOD message in Openflow Switch 1.3 Spec"; /* Controller/switch message */ uses ofHeader; @@ -526,7 +514,7 @@ } } grouping table-mod { - // reference "OFPT_TABLE_MOD message in Openflow Switch 1.3 Spec" + reference "OFPT_TABLE_MOD message in Openflow Switch 1.3 Spec"; /* Controller/switch message */ uses ofHeader; @@ -541,17 +529,17 @@ /* Multipart messages. */ grouping multipart-request { - // reference "OFPT_MULTIPART_REQUEST message in Openflow Switch 1.3 Spec" + reference "OFPT_MULTIPART_REQUEST message in Openflow Switch 1.3 Spec"; /* Controller/switch message */ uses ofHeader; leaf type { type oft:multipart-type; - } + } leaf flags { type oft:multipart-request-flags; - } + } choice multipart-request-body { case multipart-request-desc-case { container multipart-request-desc { @@ -720,7 +708,7 @@ } } grouping multipart-reply { - // reference "OFPT_MULTIPART_REPLY message in Openflow Switch 1.3 Spec" + reference "OFPT_MULTIPART_REPLY message in Openflow Switch 1.3 Spec"; /* Controller/switch message */ uses ofHeader; @@ -1096,18 +1084,18 @@ } /* Barrier messages. */ grouping barrier-request { - // reference "OFPT_BARRIER_REQUEST message in Openflow Switch 1.3 Spec" + reference "OFPT_BARRIER_REQUEST message in Openflow Switch 1.3 Spec"; /* Controller/switch message */ uses ofHeader; } grouping barrier-reply { - // reference "OFPT_BARRIER_REPLY message in Openflow Switch 1.3 Spec" + reference "OFPT_BARRIER_REPLY message in Openflow Switch 1.3 Spec"; /* Controller/switch message */ uses ofHeader; } /* Queue Configuration messages. */ grouping queue-get-config-request { - // reference "OFPT_QUEUE_GET_CONFIG_REQUEST message in Openflow Switch 1.3 Spec" + reference "OFPT_QUEUE_GET_CONFIG_REQUEST message in Openflow Switch 1.3 Spec"; /* Controller/switch message */ uses ofHeader; @@ -1117,7 +1105,7 @@ } } grouping queue-get-config-reply { - // reference "OFPT_QUEUE_GET_CONFIG_REPLY message in Openflow Switch 1.3 Spec" + reference "OFPT_QUEUE_GET_CONFIG_REPLY message in Openflow Switch 1.3 Spec"; /* Controller/switch message */ uses ofHeader; @@ -1151,7 +1139,7 @@ } /* Controller role change request messages. */ grouping role-request { - // reference "OFPT_ROLE_REQUEST message in Openflow Switch 1.3 Spec" + reference "OFPT_ROLE_REQUEST message in Openflow Switch 1.3 Spec"; /* Controller/switch message */ uses ofHeader; @@ -1164,7 +1152,7 @@ } } grouping role-reply { - // reference "OFPT_ROLE_REPLY message in Openflow Switch 1.3 Spec" + reference "OFPT_ROLE_REPLY message in Openflow Switch 1.3 Spec"; /* Controller/switch message */ uses ofHeader; @@ -1178,20 +1166,20 @@ } /* Asynchronous message configuration. */ grouping get-async-request { - // reference "OFPT_GET_ASYNC_REQUEST message in Openflow Switch 1.3 Spec" + reference "OFPT_GET_ASYNC_REQUEST message in Openflow Switch 1.3 Spec"; /* Controller/switch message */ uses ofHeader; } grouping get-async-reply { - // reference "OFPT_GET_ASYNC_REPLY message in Openflow Switch 1.3 Spec" + reference "OFPT_GET_ASYNC_REPLY message in Openflow Switch 1.3 Spec"; /* Controller/switch message */ uses ofHeader; uses async-body-grouping; } grouping set-async { - // reference "OFPT_SET_ASYNC message in Openflow Switch 1.3 Spec" + reference "OFPT_SET_ASYNC message in Openflow Switch 1.3 Spec"; /* Controller/switch message */ uses ofHeader; @@ -1217,7 +1205,7 @@ } /* Meters and rate limiters configuration messages. */ grouping meter-mod { - // reference "OFPT_METER_MOD message in Openflow Switch 1.3 Spec" + reference "OFPT_METER_MOD message in Openflow Switch 1.3 Spec"; /* Controller/switch message */ uses ofHeader; @@ -1277,32 +1265,31 @@ /* Immutable messages. */ notification hello-message { uses hello; - // reference "OFPT_HELLO message in Openflow Switch 1.3 Spec" + reference "OFPT_HELLO message in Openflow Switch 1.3 Spec"; /* Symmetric message */ } notification error-message { uses error; - // reference "OFPT_ERROR message in Openflow Switch 1.3 Spec" + reference "OFPT_ERROR message in Openflow Switch 1.3 Spec"; /* Symmetric message */ } notification echo-request-message { uses echo-request; - // reference "OFPT_ECHO_REQUEST message in Openflow Switch 1.3 Spec" + reference "OFPT_ECHO_REQUEST message in Openflow Switch 1.3 Spec"; /* Symmetric message */ } notification experimenter-message { uses experimenter; - // reference "OFPT_EXPERIMENTER message in Openflow Switch 1.3 Spec" + reference "OFPT_EXPERIMENTER message in Openflow Switch 1.3 Spec"; // TODO:: does switch send this when understood experimenter msg from lib? /* Symmetric message */ } // # Notification and RPCs /* Symmetric RPC. */ rpc echo { - // reference "OFPT_ECHO_REQUEST message in Openflow Switch 1.3 Spec" input { uses echo-request; } @@ -1313,21 +1300,18 @@ } rpc echo-reply { - // reference "OFPT_ECHO_REQUEST message in Openflow Switch 1.3 Spec" input { uses echo-reply; } } rpc hello { - // reference "OFPT_HELLO message in Openflow Switch 1.3 Spec" input { uses hello; } } rpc experimenter { - // reference "OFPT_EXPERIMENTER message in Openflow Switch 1.3 Spec" input { uses experimenter; } @@ -1335,7 +1319,6 @@ /* Switch configuration messages. */ rpc get-features { - // reference "OFPT_FEATURES_REQUEST message in Openflow Switch 1.3 Spec" input { uses features-request; } @@ -1346,7 +1329,6 @@ } rpc get-config { - // reference "OFPT_GET_CONFIG_REQUEST message in Openflow Switch 1.3 Spec" input { uses get-config-request; } @@ -1357,7 +1339,6 @@ } rpc set-config { - // reference "OFPT_SET_CONFIG message in Openflow Switch 1.3 Spec" input { uses set-config; } @@ -1366,19 +1347,16 @@ /* Asynchronous messages. */ notification packet-in-message { uses packet-in; - // reference "OFPT_PACKET_IN message in Openflow Switch 1.3 Spec" /* Async message */ } notification flow-removed-message { uses flow-removed; - // reference "OFPT_FLOW_REMOVED message in Openflow Switch 1.3 Spec" /* Async message */ } notification port-status-message { uses port-status; - // reference "OFPT_PORT_STATUS message in Openflow Switch 1.3 Spec" } /* Async message */ @@ -1386,35 +1364,30 @@ rpc packet-out { input { uses packet-out; - // reference "OFPT_PACKET_OUT message in Openflow Switch 1.3 Spec" } /* Controller/switch message */ } rpc flow-mod { input { uses flow-mod; - // reference "OFPT_FLOW_MOD message in Openflow Switch 1.3 Spec" } /* Controller/switch message */ } rpc group-mod { input { uses group-mod; - // reference "OFPT_GROUP_MOD message in Openflow Switch 1.3 Spec" } /* Controller/switch message */ } rpc port-mod { input { uses port-mod; - // reference "OFPT_PORT_MOD message in Openflow Switch 1.3 Spec" } } /* Controller/switch message */ rpc table-mod { input { uses table-mod; - // reference "OFPT_TABLE_MOD message in Openflow Switch 1.3 Spec" } } /* Controller/switch message */ @@ -1429,7 +1402,6 @@ /* Controller/switch message */ notification multipart-reply-message { uses multipart-reply; - // reference "OFPT_MULTIPART_REPLY message in Openflow Switch 1.3 Spec" // notification because of multiple following responses } /* Controller/switch message */ @@ -1438,22 +1410,18 @@ rpc barrier { input { uses barrier-request; - // reference "OFPT_BARRIER_REQUEST message in Openflow Switch 1.3 Spec" } output { uses barrier-reply; - // reference "OFPT_BARRIER_REPLY message in Openflow Switch 1.3 Spec" } } /* Queue Configuration messages. */ rpc get-queue-config { input { uses queue-get-config-request; - // reference "OFPT_QUEUE_GET_CONFIG_REQUEST message in Openflow Switch 1.3 Spec" } output { uses queue-get-config-reply; - // reference "OFPT_QUEUE_GET_CONFIG_REPLY message in Openflow Switch 1.3 Spec" } } @@ -1461,11 +1429,9 @@ rpc role-request { input { uses role-request; - // reference "OFPT_ROLE_REQUEST message in Openflow Switch 1.3 Spec" } output { uses role-reply; - // reference "OFPT_ROLE_REPLY message in Openflow Switch 1.3 Spec" } } /* Controller/switch message */ @@ -1473,18 +1439,15 @@ rpc get-async { input { uses get-async-request; - // reference "OFPT_GET_ASYNC_REQUEST message in Openflow Switch 1.3 Spec" } output { uses get-async-reply; - // reference "OFPT_GET_ASYNC_REPLY message in Openflow Switch 1.3 Spec" } } /* Controller/switch message */ rpc set-async { input { uses set-async; - // reference "OFPT_SET_ASYNC message in Openflow Switch 1.3 Spec" } } @@ -1492,7 +1455,6 @@ rpc meter-mod { input { uses meter-mod; - // reference "OFPT_METER_MOD message in Openflow Switch 1.3 Spec" } } /* Controller/switch message */ } \ No newline at end of file diff --git a/openflow-protocol-api/src/main/yang/openflow-types.yang b/openflow-protocol-api/src/main/yang/openflow-types.yang index fa28ead9..48fd179c 100644 --- a/openflow-protocol-api/src/main/yang/openflow-types.yang +++ b/openflow-protocol-api/src/main/yang/openflow-types.yang @@ -11,112 +11,132 @@ 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."; } } } @@ -179,9 +199,11 @@ } identity instruction { + description "Base identity for instruction types"; } identity action { + description "Base identity for action types"; } typedef metadata { @@ -685,6 +707,7 @@ } typedef capabilities { + description "Capabilities supported by the datapath."; type bits { bit OFPC_FLOW_STATS { position 0; @@ -718,7 +741,7 @@ } typedef switch-config-flag { - /* Handling of IP fragments. */ + description " Handling of IP fragments. "; type enumeration { enum FRAG_NORMAL { value 0; @@ -739,7 +762,7 @@ } typedef flow-removed-reason { - /* flow removed */ + description "Why was this flow removed?"; type enumeration { enum OFPRR_IDLE_TIMEOUT { value 0; @@ -761,7 +784,7 @@ } typedef port-reason { - /* port status */ + description "What changed about the physical port"; type enumeration { enum OFPPR_ADD { value 0; @@ -781,9 +804,9 @@ 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; @@ -809,23 +832,23 @@ 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."; } } } @@ -833,9 +856,9 @@ 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; @@ -845,16 +868,15 @@ 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; @@ -870,13 +892,13 @@ } } } - + 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 @@ -886,42 +908,37 @@ } } - 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; @@ -1224,30 +1241,28 @@ } } - 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 */ @@ -1332,19 +1347,19 @@ /* 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; } } @@ -1354,25 +1369,26 @@ /* 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 " encountered."; @@ -1572,32 +1588,47 @@ } 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 } } @@ -1610,122 +1641,121 @@ 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."; } } } @@ -1734,35 +1764,35 @@ 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."; } } } @@ -1772,15 +1802,15 @@ 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."; } } } @@ -1790,90 +1820,101 @@ 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; } } diff --git a/openflow-protocol-api/src/main/yang/system-notifications.yang b/openflow-protocol-api/src/main/yang/system-notifications.yang index f5806fca..4cbe17e7 100644 --- a/openflow-protocol-api/src/main/yang/system-notifications.yang +++ b/openflow-protocol-api/src/main/yang/system-notifications.yang @@ -11,16 +11,18 @@ 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; }