Merge "Table features : modified yang model. Patch set 2: Modified match types as...
[controller.git] / opendaylight / md-sal / model / model-flow-base / src / main / yang / table-types.yang
index 1b6a689750df8e3bd88e8ef632791b7a65384f3a..3774f950fc63aa139b35749cfaf9e2c4ffad0af4 100644 (file)
@@ -19,7 +19,186 @@ module opendaylight-table-types {
         type bits {
             bit DEPRECATED-MASK;
         }
-    }  
+    }
+
+    // field types
+    identity match-field {
+        description "Base identity for match 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";
+    }
+        
+    grouping set-field-match {
+        list set-field-match {
+            leaf match-type {
+                type identityref {
+                    base match-field;
+                }
+            }
+            leaf has-mask {
+                type boolean;
+            } 
+        }
+    }
       
     grouping table-feature-prop-type {
         choice table-feature-prop-type {
@@ -37,24 +216,16 @@ module opendaylight-table-types {
 
             case next-table {   
                 container tables {
-                    list table-id {
-                        key "table";                        
-                        
-                        leaf table-id {
-                            type table-ref;
-                        } 
+                    leaf-list table-ids {
+                        type uint8;
                     }
                 } 
             }
             
             case next-table-miss {   
                 container tables {
-                    list table-id {
-                        key "table-id";                        
-                        
-                        leaf table-id {
-                            type table-ref;
-                        } 
+                    leaf-list table-ids {
+                        type uint8;
                     }
                 } 
             }
@@ -83,52 +254,28 @@ module opendaylight-table-types {
                 } 
             }
             
-            case match {   
-                container matches {
-                    leaf-list match {                                              
-                        type uint32;
-                    }
-                } 
+            case match {
+                uses set-field-match; 
             }
             
             case wildcards {   
-                container wildcards {
-                    leaf-list wildcard {                                              
-                        type uint32;
-                    }
-                } 
+                uses set-field-match;
             }
             
             case write-setfield {   
-                container write-setfield {
-                    leaf-list setfield {                                              
-                        type uint32;
-                    }
-                } 
+                uses set-field-match;
             }
             
             case write-setfield-miss {   
-                container write-setfield-miss {
-                    leaf-list setfield {                                              
-                        type uint32;
-                    }
-                } 
+                uses set-field-match;
             }
             
             case apply-setfield {   
-                container apply-setfield {
-                    leaf-list setfield {                                              
-                        type uint32;
-                    }
-                } 
+                uses set-field-match; 
             }
             
             case apply-setfield-miss {   
-                container apply-setfield-miss {
-                    leaf-list setfield {                                              
-                        type uint32;
-                    }
-                } 
+                uses set-field-match; 
             }
         }
     } 
@@ -138,7 +285,7 @@ module opendaylight-table-types {
             key "table-id";
             
             leaf table-id {
-                type table-ref;
+                type uint8;
             }      
             
             leaf name {
@@ -167,15 +314,15 @@ module opendaylight-table-types {
             }
             
             container table-properties {
-                list instruction-id {
-                    key "order";
-                    leaf order {
-                        type int32;
-                    }
-                    
-                    uses table-feature-prop-type;
+                list table-feature-properties {
+                     key "order";
+                     leaf order {
+                         type int32;
+                     }
+                     uses table-feature-prop-type;
                 }
             }
+
         }
     }    
-}
\ No newline at end of file
+}