Merge "Table features : modified yang model. Patch set 2: Modified match types as...
authorEd Warnicke <eaw@cisco.com>
Thu, 28 Nov 2013 09:45:10 +0000 (09:45 +0000)
committerGerrit Code Review <gerrit@opendaylight.org>
Thu, 28 Nov 2013 09:45:10 +0000 (09:45 +0000)
1  2 
opendaylight/md-sal/model/model-flow-base/src/main/yang/table-types.yang

index 1b6a689750df8e3bd88e8ef632791b7a65384f3a,52629516f3f61314b76d017117b8fcf47fe5b4d5..3774f950fc63aa139b35749cfaf9e2c4ffad0af4
@@@ -4,7 -4,7 +4,7 @@@ module opendaylight-table-types 
  
      import ietf-inet-types {prefix inet; revision-date "2010-09-24";}
      import ietf-yang-types {prefix yang; revision-date "2010-09-24";}
 -    import opendaylight-flow-types {prefix flow;revision-date 2013-10-26";}
 +    import opendaylight-flow-types {prefix flow;revision-date "2013-10-26";}
      import opendaylight-action-types {prefix action;}
  
      revision "2013-10-26" {
          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 {
  
              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;
                      }
                  } 
              }
                  } 
              }
              
-             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; 
              }
          }
      } 
              key "table-id";
              
              leaf table-id {
-                 type table-ref;
+                 type uint8;
              }      
              
              leaf name {
              }
              
              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;
                  }
              }
          }
      }    
--}
++}