Draft implementation of integration tests
[openflowjava.git] / openflow-protocol-api / src / main / yang / openflow-extensible-match.yang
index c82c93db4b3c4f77eb6e46408b58bd8c0ff4c8e3..9611abbc8dfad32224ea759b9d3f8c4918d344d0 100644 (file)
 module openflow-extensible-match {
-       namespace "urn:openflowopenflow:oxm";
-       prefix "oxm";
+    namespace "urn:openflowopenflow:oxm";
+    prefix "oxm";
 
 
-       
-       import ietf-yang-types {prefix yang;}
-       import ietf-inet-types {prefix inet;}
-       import openflow-types {prefix oft;}
+    
+    import ietf-yang-types {prefix yang;}
+    import ietf-inet-types {prefix inet;}
+    import openflow-types {prefix oft;}
 
 
     revision "2013-07-31" {
         description "Initial model";
     }
 
-       identity oxm-match-type {
-               description 
-                  "The OpenFlow Extensible Match type must be supported by all OpenFlow
-                       switches.";
-               base oft:match-type;
-       }
+    identity oxm-match-type {
+        description 
+           "The OpenFlow Extensible Match type must be supported by all OpenFlow
+            switches.";
+        base oft:match-type-base;
+    }
+    
 
-       // oxm classes
-               identity class {
-                       description "Base identity for OXM classes";
-               }
+    // oxm classes
+        identity class {
+            description "Base identity for OXM classes";
+        }
 
 
-               identity nxm-0-class {
-                       description "Backward compatibility with NXM";
-                       base class;
-               }
-               identity nxm-1-class {
-                       description "Backward compatibility with NXM";
-                       base class;
-               }
-               identity openflow-basic-class {
-                       description "Basic class for OpenFlow";
-                       base class;
-               }
-               identity experimenter-class {
-                       description 
-                               "Marks Experimenter match type class.
-                               All experimenter match classes MUST use this class as a base.";
-                       base class;
-               }
+        identity nxm-0-class {
+            description "Backward compatibility with NXM";
+            base class;
+        }
+        identity nxm-1-class {
+            description "Backward compatibility with NXM";
+            base class;
+        }
+        identity openflow-basic-class {
+            description "Basic class for OpenFlow";
+            base class;
+        }
+        identity experimenter-class {
+            description 
+                "Marks Experimenter match type class.
+                All experimenter match classes MUST use this class as a base.";
+            base class;
+        }
 
 
 
-       // field types
-           /*
-               identity match-field {
-                       description "Base identity for OXM Fields";
-               }
+    // field types
+        /*
+        identity match-field {
+            description "Base identity for OXM Fields";
+        }
 
-           identity in_port {
-               base match-field;
-               description "Match for Switch input port.";
-           }
-           identity in_phy_port {
-               base match-field;
-               description "Match for Switch physical input port.";
-           }
-           identity metadata {
-               base match-field;
-               description "Match for Metadata passed between tables.";
-           }
-           identity eth_dst {
-               base match-field;
-               description "Match for Ethernet destination address.";
-           }
-           identity eth_src {
-               base match-field;
-               description "Match for Ethernet source address.";
-           }
-           identity eth_type {
-               base match-field;
-               description "Match for Ethernet frame type.";
-           }
-           identity vlan_vid {
-               base match-field;
-               description "Match for VLAN id.";
-           }
-           identity vlan_pcp {
-               base match-field;
-               description "Match for VLAN priority.";
-           }
-           identity ip_dscp {
-               base match-field;
-               description "Match for IP DSCP (6 bits in ToS field).";
-           }
-           identity ip_ecn {
-               base match-field;
-               description "Match for IP ECN (2 bits in ToS field).";
-           }
-           identity ip_proto {
-               base match-field;
-               description "Match for IP protocol.";
-           }
-           identity ipv4_src {
-               base match-field;
-               description "Match for IPv4 source address.";
-           }
-           identity ipv4_dst {
-               base match-field;
-               description "Match for IPv4 destination address.";
-           }
-           identity tcp_src {
-               base match-field;
-               description "Match for TCP source port.";
-           }
-           identity tcp_dst {
-               base match-field;
-               description "Match for TCP destination port.";
-           }
-           identity udp_src {
-               base match-field;
-               description "Match for UDP source port.";
-           }
-           identity udp_dst {
-               base match-field;
-               description "Match for UDP destination port.";
-           }
-           identity sctp_src {
-               base match-field;
-               description "Match for SCTP source port.";
-           }
-           identity sctp_dst {
-               base match-field;
-               description "Match for SCTP destination port.";
-           }
-           identity icmpv4_type {
-               base match-field;
-               description "Match for ICMP type.";
-           }
-           identity icmpv4_code {
-               base match-field;
-               description "Match for ICMP code.";
-           }
-           identity arp_op {
-               base match-field;
-               description "Match for ARP opcode.";
-           }
-           identity arp_spa {
-               base match-field;
-               description "Match for ARP source IPv4 address.";
-           }
-           identity arp_tpa {
-               base match-field;
-               description "Match for ARP target IPv4 address.";
-           }
-           identity arp_sha {
-               base match-field;
-               description "Match for ARP source hardware address.";
-           }
-           identity arp_tha {
-               base match-field;
-               description "Match for ARP target hardware address.";
-           }
-           identity ipv6_src {
-               base match-field;
-               description "Match for IPv6 source address.";
-           }
-           identity ipv6_dst {
-               base match-field;
-               description "Match for IPv6 destination address.";
-           }
-           identity ipv6_flabel {
-               base match-field;
-               description "Match for IPv6 Flow Label";
-           }
-           identity icmpv6_type {
-               base match-field;
-               description "Match for ICMPv6 type.";
-           }
-           identity icmpv6_code {
-               base match-field;
-               description "Match for ICMPv6 code.";
-           }
-           identity ipv6_nd_target {
-               base match-field;
-               description "Match for Target address for ND.";
-           }
-           identity ipv6_nd_sll {
-               base match-field;
-               description "Match for Source link-layer for ND.";
-           }
-           identity ipv6_nd_tll {
-               base match-field;
-               description "Match for Target link-layer for ND.";
-           }
-           identity mpls_label {
-               base match-field;
-               description "Match for MPLS label.";
-           }
-           identity mpls_tc {
-               base match-field;
-               description "Match for MPLS TC.";
-           }
-           identity mpls_bos {
-               base match-field;
-               description "Match for MPLS BoS bit.";
-           }
-           identity pbb_isid {
-               base match-field;
-               description "Match for PBB I-SID.";
-           }
-           identity tunnel_id {
-               base match-field;
-               description "Match for Logical Port Metadata";
-           }
-           identity ipv6_exthdr {
-               base match-field;
-               description "Match for IPv6 Extension Header pseudo-field";
-           }
+        identity in_port {
+            base match-field;
+            description "Match for Switch input port.";
+        }
+        identity in_phy_port {
+            base match-field;
+            description "Match for Switch physical input port.";
+        }
+        identity metadata {
+            base match-field;
+            description "Match for Metadata passed between tables.";
+        }
+        identity eth_dst {
+            base match-field;
+            description "Match for Ethernet destination address.";
+        }
+        identity eth_src {
+            base match-field;
+            description "Match for Ethernet source address.";
+        }
+        identity eth_type {
+            base match-field;
+            description "Match for Ethernet frame type.";
+        }
+        identity vlan_vid {
+            base match-field;
+            description "Match for VLAN id.";
+        }
+        identity vlan_pcp {
+            base match-field;
+            description "Match for VLAN priority.";
+        }
+        identity ip_dscp {
+            base match-field;
+            description "Match for IP DSCP (6 bits in ToS field).";
+        }
+        identity ip_ecn {
+            base match-field;
+            description "Match for IP ECN (2 bits in ToS field).";
+        }
+        identity ip_proto {
+            base match-field;
+            description "Match for IP protocol.";
+        }
+        identity ipv4_src {
+            base match-field;
+            description "Match for IPv4 source address.";
+        }
+        identity ipv4_dst {
+            base match-field;
+            description "Match for IPv4 destination address.";
+        }
+        identity tcp_src {
+            base match-field;
+            description "Match for TCP source port.";
+        }
+        identity tcp_dst {
+            base match-field;
+            description "Match for TCP destination port.";
+        }
+        identity udp_src {
+            base match-field;
+            description "Match for UDP source port.";
+        }
+        identity udp_dst {
+            base match-field;
+            description "Match for UDP destination port.";
+        }
+        identity sctp_src {
+            base match-field;
+            description "Match for SCTP source port.";
+        }
+        identity sctp_dst {
+            base match-field;
+            description "Match for SCTP destination port.";
+        }
+        identity icmpv4_type {
+            base match-field;
+            description "Match for ICMP type.";
+        }
+        identity icmpv4_code {
+            base match-field;
+            description "Match for ICMP code.";
+        }
+        identity arp_op {
+            base match-field;
+            description "Match for ARP opcode.";
+        }
+        identity arp_spa {
+            base match-field;
+            description "Match for ARP source IPv4 address.";
+        }
+        identity arp_tpa {
+            base match-field;
+            description "Match for ARP target IPv4 address.";
+        }
+        identity arp_sha {
+            base match-field;
+            description "Match for ARP source hardware address.";
+        }
+        identity arp_tha {
+            base match-field;
+            description "Match for ARP target hardware address.";
+        }
+        identity ipv6_src {
+            base match-field;
+            description "Match for IPv6 source address.";
+        }
+        identity ipv6_dst {
+            base match-field;
+            description "Match for IPv6 destination address.";
+        }
+        identity ipv6_flabel {
+            base match-field;
+            description "Match for IPv6 Flow Label";
+        }
+        identity icmpv6_type {
+            base match-field;
+            description "Match for ICMPv6 type.";
+        }
+        identity icmpv6_code {
+            base match-field;
+            description "Match for ICMPv6 code.";
+        }
+        identity ipv6_nd_target {
+            base match-field;
+            description "Match for Target address for ND.";
+        }
+        identity ipv6_nd_sll {
+            base match-field;
+            description "Match for Source link-layer for ND.";
+        }
+        identity ipv6_nd_tll {
+            base match-field;
+            description "Match for Target link-layer for ND.";
+        }
+        identity mpls_label {
+            base match-field;
+            description "Match for MPLS label.";
+        }
+        identity mpls_tc {
+            base match-field;
+            description "Match for MPLS TC.";
+        }
+        identity mpls_bos {
+            base match-field;
+            description "Match for MPLS BoS bit.";
+        }
+        identity pbb_isid {
+            base match-field;
+            description "Match for PBB I-SID.";
+        }
+        identity tunnel_id {
+            base match-field;
+            description "Match for Logical Port Metadata";
+        }
+        identity ipv6_exthdr {
+            base match-field;
+            description "Match for IPv6 Extension Header pseudo-field";
+        }
         */
-       // Abstract definitions of fields structure
+    // Abstract definitions of fields structure
 
-               grouping in_port {
-                       description 
-                               "Ingress port. Numerical representation of incoming port, starting at 1. This may be a physical or switch-defined logical port.";
-                       leaf port-number {
-                               type oft:port-number;
-                       }
-               }
-               grouping in_phy_port {
-                       description "Physical port. In ofp_packet_in messages, underlying physical port when packet received on a logical port.";
-                       leaf port-number {
-                               type oft:port-number;
-                       }
-               }
-               grouping metadata {
-                       description "Metadata passed between tables.";
-                       leaf value {
-                               type oft:metadata;
-                       }
-                       leaf mask {
-                               type oft:metadata;
-                       }
-               }
-               grouping eth_dst {
-                       description "Ethernet destination address.";
-                       leaf address {
-                               type yang:mac-address;
-                       }
-               }
-               grouping eth_src {
-                       description "Ethernet source address.";
-                       leaf address {
-                               type yang:mac-address;
-                       }
-                       leaf mask {
-                               type binary;
-                       }
-               }
-               grouping eth_type {
-                       description "Ethernet frame type.";
-                       leaf type {
-                               type oft:ether-type; // Needs to define that as general model
-                       }
-                       leaf mask {
-                               type binary;
-                       }
-               }
-               grouping vlan_vid {
-                       description "VLAN id.";
-                       leaf vlan-id {
-                               type uint16; // TODO: Define proper vlan id type.
-                       }
-                       leaf mask {
-                               type binary;
-                       }
-               }
-               grouping vlan_pcp {
-                       description "VLAN priority.";
-                       leaf vlan-pcp {
-                               type uint8; // TODO: Define PCP type
-                       }
-               }
-               grouping ip_dscp {
-                       description "IP DSCP (6 bits in ToS field).";
+        grouping in-port {
+            description 
+                "Ingress port. Numerical representation of incoming port, starting at 1. This may be a physical or switch-defined logical port.";
+            leaf port-number {
+                type oft:port-number;
+            }
+        }
+        grouping in-phy-port {
+            description "Physical port. In ofp_packet_in messages, underlying physical port when packet received on a logical port.";
+            leaf port-number {
+                type oft:port-number;
+            }
+        }
+        grouping metadata {
+            description "Metadata passed between tables.";
+            leaf value {
+                type oft:metadata;
+            }
+            leaf mask {
+                type oft:metadata;
+            }
+        }
+        grouping eth-dst {
+            description "Ethernet destination address.";
+            leaf address {
+                type yang:mac-address;
+            }
+        }
+        grouping eth-src {
+            description "Ethernet source address.";
+            leaf address {
+                type yang:mac-address;
+            }
+            leaf mask {
+                type binary;
+            }
+        }
+        grouping eth-type {
+            description "Ethernet frame type.";
+            leaf type {
+                type oft:ether-type; // Needs to define that as general model
+            }
+            leaf mask {
+                type binary;
+            }
+        }
+        grouping vlan-vid {
+            description "VLAN id.";
+            leaf vlan-id {
+                type uint16; // TODO: Define proper vlan id type.
+            }
+            leaf mask {
+                type binary;
+            }
+        }
+        grouping vlan-pcp {
+            description "VLAN priority.";
+            leaf vlan-pcp {
+                type uint8; // TODO: Define PCP type
+            }
+        }
+        grouping ip-dscp {
+            description "IP DSCP (6 bits in ToS field).";
 
-                       leaf dscp {
-                               type inet:dscp; // TODO: Define DSCP type
-                       }
-               }
-               grouping ip_ecn {
-                       description "IP ECN (2 bits in ToS field).";
-                       leaf ecn {
-                               type uint8; // TODO define ECN
-                       }
-               }
-               grouping ip_proto {
-                       description "IP protocol.";
-                       leaf protocol-number {
-                               type uint8; // TODO define IP protocol number
-                       }
-               }
-               grouping ipv4_src {
-                       description "IPv4 source address.";
-                       leaf prefix {
-                               type inet:ipv4-prefix;
-                       }
-               }
-               grouping ipv4_dst {
-                       description "IPv4 destination address.";
-                       leaf prefix {
-                               type inet:ipv4-prefix;
-                       }
-               }
-               grouping tcp_src {
-                       description "TCP source port.";
-                       leaf port {
-                               type inet:port-number;
-                       }
-               }
-               grouping tcp_dst {
-                       description "TCP destination port.";
-                                       leaf port {
-                               type inet:port-number;
-                       }
-               }
-               grouping udp_src {
-                       description "UDP source port.";
-                       leaf port {
-                               type inet:port-number;
-                       }
-               }
-               grouping udp_dst {
-                       description "UDP destination port.";
-                       leaf port {
-                               type inet:port-number;
-                       }
-               }
-               grouping sctp_src {
-                       description "SCTP source port.";
-                       leaf port {
-                               type inet:port-number;
-                       }
-               }
-               grouping sctp_dst {
-                       description "SCTP destination port.";
-                       leaf port {
-                               type inet:port-number;
-                       }
-               }
-               grouping icmpv4_type {
-                       description "ICMP type.";
-                       leaf type {
-                               type uint8; // Define ICMP Type
-                       }
-               }
-               grouping icmpv4_code {
-                       description "ICMP code.";
-                       leaf code {
-                               type uint8; // Define ICMP Code
-                       }
-               }
-               grouping arp_op {
-                       description "ARP opcode.";
-                       leaf op-code {
-                               type uint16;
-                       }
-               }
-               grouping arp_spa {
-                       description "ARP source IPv4 address.";
-                       leaf prefix {
-                               type inet:ipv4-prefix;
-                       }
-               }
-               grouping arp_tpa {
-                       description "ARP target IPv4 address.";
-                       leaf prefix {
-                               type inet:ipv4-prefix;
-                       }
-               }
-               grouping arp_sha {
-                       description "ARP source hardware address.";
-                       leaf address {
-                               type yang:mac-address;
-                       }
-                       leaf mask {
-                               type binary;
-                       }
-               }
-               grouping arp_tha {
-                       description "ARP target hardware address.";
-                       leaf address {
-                               type yang:mac-address;
-                       }
-                       leaf mask {
-                               type binary;
-                       }
-               }
-               grouping ipv6_src {
-                       description "IPv6 source address.";
-                       leaf prefix {
-                               type inet:ipv6-prefix;
-                       }
-               }
-               grouping ipv6_dst {
-                       description "IPv6 destination address.";
-                       leaf prefix {
-                               type inet:ipv6-prefix;
-                       }
-               }
-               grouping ipv6_flabel {
-                       description "IPv6 Flow Label";
-                       leaf label {
-                               type inet:ipv6-flow-label;
-                       }
-               }
-               grouping icmpv6_type {
-                       description "ICMPv6 type.";
-                       leaf type {
-                               type uint8;
-                       }
-               }
-               grouping icmpv6_code {
-                       description "ICMPv6 code.";
-                       leaf code {
-                               type uint8;
-                       }
-               }
-               grouping ipv6_nd_target {
-                       description "Target address for ND.";
-                       leaf address {
-                               type inet:ipv6-address;
-                       }
-               }
-               grouping ipv6_nd_sll {
-                       description "Source link-layer for ND.";
-                       leaf address {
-                               type yang:mac-address;
-                       }
-               }
-               grouping ipv6_nd_tll {
-                       description "Target link-layer for ND.";
-                       leaf address {
-                               type yang:mac-address;
-                       }
-               }
-               grouping mpls_label {
-                       description "MPLS label.";
-                       leaf label {
-                               type uint32; // TODO define type
-                       }
-               }
-               grouping mpls_tc {
-                       description "MPLS TC.";
-                       leaf tc {
-                               type uint8;
-                       }
-               }
-               grouping mpls_bos {
-                       description "MPLS BoS bit.";
-                       leaf bos {
-                               type boolean;
-                       }
-               }
-               grouping pbb_isid {
-                       description "PBB I-SID.";
-                       leaf isid {
-                               type uint32;
-                       }
-                       leaf mask {
-                               type binary;
-                       }
-               }
-               grouping tunnel_id {
-                       description "Logical Port Metadata.";
-                       leaf value {
-                               type oft:metadata; 
-                       }
-                       leaf mask {
-                               type oft:metadata;
-                       }
-               }
-               grouping ipv6_exthdr {
-                       description "IPv6 Extension Header pseudo-field";
-                       leaf pseudo-field {
-                               type bits {
-                                       bit nonext {
-                                               description "<No next header> encountered.";
-                                               position 0;
-                                       }
-                                       bit esp {
-                                               description "Encrypted Sec Payload header present.";
-                                               position 1;
-                                       }
-                                       bit auth {
-                                               description "Authentication header present.";
-                                               position 2;
-                                       }
-                                       bit dest {
-                                               description "1 or 2 dest headers present.";
-                                               position 3;
-                                       }
-                                       bit frag {
-                                               description "Fragment header present.";
-                                               position 4;
-                                       }
-                                       bit router {
-                                               description "Router header present.";
-                                               position 5;
-                                       }
-                                       bit hop {
-                                               description "Hop-by-hop header present.";
-                                               position 6;
-                                       }
-                                       bit unrep {
-                                               description "Unexpected repeats encountered.";
-                                               position 7;
-                                       }
-                                       bit unseq {
-                                               description "Unexpected sequencing encountered.";
-                                               position 8;
-                                               }                                       
-                               }
-                       }
-                       leaf mask {
-                               type binary;
-                       }
-               }
+            leaf dscp {
+                type inet:dscp; // TODO: Define DSCP type
+            }
+        }
+        grouping ip-ecn {
+            description "IP ECN (2 bits in ToS field).";
+            leaf ecn {
+                type uint8; // TODO define ECN
+            }
+        }
+        grouping ip-proto {
+            description "IP protocol.";
+            leaf protocol-number {
+                type uint8; // TODO define IP protocol number
+            }
+        }
+        grouping ipv4-src {
+            description "IPv4 source address.";
+            leaf prefix {
+                type inet:ipv4-prefix;
+            }
+        }
+        grouping ipv4-dst {
+            description "IPv4 destination address.";
+            leaf prefix {
+                type inet:ipv4-prefix;
+            }
+        }
+        grouping tcp-src {
+            description "TCP source port.";
+            leaf port {
+                type inet:port-number;
+            }
+        }
+        grouping tcp-dst {
+            description "TCP destination port.";
+                    leaf port {
+                type inet:port-number;
+            }
+        }
+        grouping udp-src {
+            description "UDP source port.";
+            leaf port {
+                type inet:port-number;
+            }
+        }
+        grouping udp-dst {
+            description "UDP destination port.";
+            leaf port {
+                type inet:port-number;
+            }
+        }
+        grouping sctp-src {
+            description "SCTP source port.";
+            leaf port {
+                type inet:port-number;
+            }
+        }
+        grouping sctp-dst {
+            description "SCTP destination port.";
+            leaf port {
+                type inet:port-number;
+            }
+        }
+        grouping icmpv4-type {
+            description "ICMP type.";
+            leaf type {
+                type uint8; // Define ICMP Type
+            }
+        }
+        grouping icmpv4-code {
+            description "ICMP code.";
+            leaf code {
+                type uint8; // Define ICMP Code
+            }
+        }
+        grouping arp-op {
+            description "ARP opcode.";
+            leaf op-code {
+                type uint16;
+            }
+        }
+        grouping arp-spa {
+            description "ARP source IPv4 address.";
+            leaf prefix {
+                type inet:ipv4-prefix;
+            }
+        }
+        grouping arp-tpa {
+            description "ARP target IPv4 address.";
+            leaf prefix {
+                type inet:ipv4-prefix;
+            }
+        }
+        grouping arp-sha {
+            description "ARP source hardware address.";
+            leaf address {
+                type yang:mac-address;
+            }
+            leaf mask {
+                type binary;
+            }
+        }
+        grouping arp-tha {
+            description "ARP target hardware address.";
+            leaf address {
+                type yang:mac-address;
+            }
+            leaf mask {
+                type binary;
+            }
+        }
+        grouping ipv6-src {
+            description "IPv6 source address.";
+            leaf prefix {
+                type inet:ipv6-prefix;
+            }
+        }
+        grouping ipv6-dst {
+            description "IPv6 destination address.";
+            leaf prefix {
+                type inet:ipv6-prefix;
+            }
+        }
+        grouping ipv6-flabel {
+            description "IPv6 Flow Label";
+            leaf label {
+                type inet:ipv6-flow-label;
+            }
+        }
+        grouping icmpv6-type {
+            description "ICMPv6 type.";
+            leaf type {
+                type uint8;
+            }
+        }
+        grouping icmpv6-code {
+            description "ICMPv6 code.";
+            leaf code {
+                type uint8;
+            }
+        }
+        grouping ipv6-nd-target {
+            description "Target address for ND.";
+            leaf address {
+                type inet:ipv6-address;
+            }
+        }
+        grouping ipv6-nd-sll {
+            description "Source link-layer for ND.";
+            leaf address {
+                type yang:mac-address;
+            }
+        }
+        grouping ipv6-nd-tll {
+            description "Target link-layer for ND.";
+            leaf address {
+                type yang:mac-address;
+            }
+        }
+        grouping mpls-label {
+            description "MPLS label.";
+            leaf label {
+                type uint32; // TODO define type
+            }
+        }
+        grouping mpls-tc {
+            description "MPLS TC.";
+            leaf tc {
+                type uint8;
+            }
+        }
+        grouping mpls-bos {
+            description "MPLS BoS bit.";
+            leaf bos {
+                type boolean;
+            }
+        }
+        grouping pbb-isid {
+            description "PBB I-SID.";
+            leaf isid {
+                type uint32;
+            }
+            leaf mask {
+                type binary;
+            }
+        }
+        grouping tunnel-id {
+            description "Logical Port Metadata.";
+            leaf value {
+                type oft:metadata; 
+            }
+            leaf mask {
+                type oft:metadata;
+            }
+        }
+        grouping ipv6-exthdr {
+            description "IPv6 Extension Header pseudo-field";
+            leaf pseudo-field {
+                type bits {
+                    bit nonext {
+                        description "<No next header> encountered.";
+                        position 0;
+                    }
+                    bit esp {
+                        description "Encrypted Sec Payload header present.";
+                        position 1;
+                    }
+                    bit auth {
+                        description "Authentication header present.";
+                        position 2;
+                    }
+                    bit dest {
+                        description "1 or 2 dest headers present.";
+                        position 3;
+                    }
+                    bit frag {
+                        description "Fragment header present.";
+                        position 4;
+                    }
+                    bit router {
+                        description "Router header present.";
+                        position 5;
+                    }
+                    bit hop {
+                        description "Hop-by-hop header present.";
+                        position 6;
+                    }
+                    bit unrep {
+                        description "Unexpected repeats encountered.";
+                        position 7;
+                    }
+                    bit unseq {
+                        description "Unexpected sequencing encountered.";
+                        position 8;
+                        }                    
+                }
+            }
+            leaf mask {
+                type binary;
+            }
+        }
 
-       /* Basic Match Fields : 
-          - Maybe it will be better to split into several groupings
-            based on protocol types:
-               - L2 match
-               - L3 match
-                  - IPv4 match
-                  - IPv6 match
-               - L4 match
-               - ARP match
-               etc...
-           Maybe this works belongs to other module.
-       */
+    /* Basic Match Fields : 
+       - Maybe it will be better to split into several groupings
+         based on protocol types:
+             - L2 match
+             - L3 match
+                - IPv4 match
+                - IPv6 match
+             - L4 match
+             - ARP match
+             etc...
+        Maybe this works belongs to other module.
+    */
 
-               grouping basic-match-fields {
-                       container in_port {
-                               presence;
-                               uses in_port; 
-               
-                       }
-                       container in_phy_port {
-                               presence;
-                               uses in_phy_port; 
-                               
-                       }
-                       container metadata {
-                               presence;
-                               uses metadata; 
-                               
-                       }
-                       container eth_dst {
-                               presence;
-                               uses eth_dst; 
-                               
-                       }
-                       container eth_src {
-                               presence;
-                               uses eth_src; 
-                               
-                       }
-                       container eth_type {
-                               presence;
-                               uses eth_type; 
-                               
-                       }
-                       container vlan_vid {
-                               presence;
-                               uses vlan_vid; 
-                               
-                       }
-                       container vlan_pcp {
-                               presence;
-                               uses vlan_pcp; 
-                               
-                       }
-                       container ip_dscp {
-                               presence;
-                               uses ip_dscp; 
-                               
-                       }
-                       container ip_ecn {
-                               presence;
-                               uses ip_ecn; 
-                               
-                       }
-                       container ip_proto {
-                               presence;
-                               uses ip_proto; 
-                               
-                       }
-                       container ipv4_src {
-                               presence;
-                               uses ipv4_src; 
-                               
-                       }
-                       container ipv4_dst {
-                               presence;
-                               uses ipv4_dst; 
-                               
-                       }
-                       container tcp_src {
-                               presence;
-                               uses tcp_src; 
-                               
-                       }
-                       container tcp_dst {
-                               presence;
-                               uses tcp_dst; 
-                               
-                       }
-                       container udp_src {
-                               presence;
-                               uses udp_src; 
-                               
-                       }
-                       container udp_dst {
-                               presence;
-                               uses udp_dst; 
-                               
-                       }
-                       container sctp_src {
-                               presence;
-                               uses sctp_src; 
-                               
-                       }
-                       container sctp_dst {
-                               presence;
-                               uses sctp_dst; 
-                               
-                       }
-                       container icmpv4_type {
-                               presence;
-                               uses icmpv4_type; 
-                               
-                       }
-                       container icmpv4_code {
-                               presence;
-                               uses icmpv4_code; 
-                               
-                       }
-                       container arp_op {
-                               presence;
-                               uses arp_op; 
-                               
-                       }
-                       container arp_spa {
-                               presence;
-                               uses arp_spa; 
-                               
-                       }
-                       container arp_tpa {
-                               presence;
-                               uses arp_tpa; 
-                               
-                       }
-                       container arp_sha {
-                               presence;
-                               uses arp_sha; 
-                               
-                       }
-                       container arp_tha {
-                               presence;
-                               uses arp_tha; 
-                               
-                       }
-                       container ipv6_src {
-                               presence;
-                               uses ipv6_src; 
-                               
-                       }
-                       container ipv6_dst {
-                               presence;
-                               uses ipv6_dst; 
-                               
-                       }
-                       container ipv6_flabel {
-                               presence;
-                               uses ipv6_flabel; 
-                               
-                       }
-                       container icmpv6_type {
-                               presence;
-                               uses icmpv6_type; 
-                               
-                       }
-                       container icmpv6_code {
-                               presence;
-                               uses icmpv6_code; 
-                               
-                       }
-                       container ipv6_nd_target {
-                               presence;
-                               uses ipv6_nd_target; 
-                               
-                       }
-                       container ipv6_nd_sll {
-                               presence;
-                               uses ipv6_nd_sll; 
-                               
-                       }
-                       container ipv6_nd_tll {
-                               presence;
-                               uses ipv6_nd_tll; 
-                               
-                       }
-                       container mpls_label {
-                               presence;
-                               uses mpls_label; 
-                               
-                       }
-                       container mpls_tc {
-                               presence;
-                               uses mpls_tc; 
-                               
-                       }
-                       container mpls_bos {
-                               presence;
-                               uses mpls_bos; 
-                               
-                       }
-                       container pbb_isid {
-                               presence;
-                               uses pbb_isid; 
-                               
-                       }
-                       container tunnel_id {
-                               presence;
-                               uses tunnel_id; 
-                               
-                       }
-                       container ipv6_exthdr {
-                               presence;
-                               uses ipv6_exthdr; 
-                               
-                       }
-               }
+        grouping basic-match-fields {
+            container in-port {
+                presence "";
+                uses in-port; 
+        
+            }
+            container in-phy-port {
+                presence "";
+                uses in-phy-port; 
+                
+            }
+            container metadata {
+                presence "";
+                uses metadata; 
+                
+            }
+            container eth-dst {
+                presence "";
+                uses eth-dst; 
+                
+            }
+            container eth-src {
+                presence "";
+                uses eth-src; 
+                
+            }
+            container eth-type {
+                presence "";
+                uses eth-type; 
+                
+            }
+            container vlan-vid {
+                presence "";
+                uses vlan-vid; 
+                
+            }
+            container vlan-pcp {
+                presence "";
+                uses vlan-pcp; 
+                
+            }
+            container ip-dscp {
+                presence "";
+                uses ip-dscp; 
+                
+            }
+            container ip-ecn {
+                presence "";
+                uses ip-ecn; 
+                
+            }
+            container ip-proto {
+                presence "";
+                uses ip-proto; 
+                
+            }
+            container ipv4-src {
+                presence "";
+                uses ipv4-src; 
+                
+            }
+            container ipv4-dst {
+                presence "";
+                uses ipv4-dst; 
+                
+            }
+            container tcp-src {
+                presence "";
+                uses tcp-src; 
+                
+            }
+            container tcp-dst {
+                presence "";
+                uses tcp-dst; 
+                
+            }
+            container udp-src {
+                presence "";
+                uses udp-src; 
+                
+            }
+            container udp-dst {
+                presence "";
+                uses udp-dst; 
+                
+            }
+            container sctp-src {
+                presence "";
+                uses sctp-src; 
+                
+            }
+            container sctp-dst {
+                presence "";
+                uses sctp-dst; 
+                
+            }
+            container icmpv4-type {
+                presence "";
+                uses icmpv4-type; 
+                
+            }
+            container icmpv4-code {
+                presence "";
+                uses icmpv4-code; 
+                
+            }
+            container arp-op {
+                presence "";
+                uses arp-op; 
+                
+            }
+            container arp-spa {
+                presence "";
+                uses arp-spa; 
+                
+            }
+            container arp-tpa {
+                presence "";
+                uses arp-tpa; 
+                
+            }
+            container arp-sha {
+                presence "";
+                uses arp-sha; 
+                
+            }
+            container arp-tha {
+                presence "";
+                uses arp-tha; 
+                
+            }
+            container ipv6-src {
+                presence "";
+                uses ipv6-src; 
+                
+            }
+            container ipv6-dst {
+                presence "";
+                uses ipv6-dst; 
+                
+            }
+            container ipv6-flabel {
+                presence "";
+                uses ipv6-flabel; 
+                
+            }
+            container icmpv6-type {
+                presence "";
+                uses icmpv6-type; 
+                
+            }
+            container icmpv6-code {
+                presence "";
+                uses icmpv6-code; 
+                
+            }
+            container ipv6-nd-target {
+                presence "";
+                uses ipv6-nd-target; 
+                
+            }
+            container ipv6-nd-sll {
+                presence "";
+                uses ipv6-nd-sll; 
+                
+            }
+            container ipv6-nd-tll {
+                presence "";
+                uses ipv6-nd-tll; 
+                
+            }
+            container mpls-label {
+                presence "";
+                uses mpls-label; 
+                
+            }
+            container mpls-tc {
+                presence "";
+                uses mpls-tc; 
+                
+            }
+            container mpls-bos {
+                presence "";
+                uses mpls-bos; 
+                
+            }
+            container pbb-isid {
+                presence "";
+                uses pbb-isid; 
+                
+            }
+            container tunnel-id {
+                presence "";
+                uses tunnel-id; 
+                
+            }
+            container ipv6-exthdr {
+                presence "";
+                uses ipv6-exthdr; 
+                
+            }
+        }
 }
\ No newline at end of file