Fix for Bug 271
[controller.git] / opendaylight / md-sal / model / model-flow-base / src / main / yang / match-types.yang
index 757686c662ab747baced122af0d5218a170f061a..31736d2737dbcd7358ef264587de0910153afb63 100644 (file)
@@ -2,14 +2,15 @@ module opendaylight-match-types {
     namespace "urn:opendaylight:model:match:types";
     prefix "match";
 
-    import ietf-inet-types {prefix inet;}
-    import ietf-yang-types {prefix yang;}
-    import opendaylight-l2-types {prefix l2t;}
+    import ietf-inet-types {prefix inet; revision-date "2010-09-24";}
+    import ietf-yang-types {prefix yang; revision-date "2010-09-24";}
+    import opendaylight-l2-types {prefix l2t;revision-date "2013-08-27";}
+    import opendaylight-inventory {prefix inv;revision-date "2013-08-19";}
 
-    revision "2013-08-19" {
-        description "Initial revision of flow service";
+    revision "2013-10-26" {
+        description "Initial revision of macth types";
     }
-
+    
     grouping "mac-address-filter" {
         leaf address {
             mandatory true;
@@ -19,6 +20,16 @@ module opendaylight-match-types {
             type binary;
         }
     }
+    
+    grouping "of-metadata" {
+        leaf metadata {
+            type uint64;
+        }
+        
+        leaf metadata-mask {
+            type binary;
+        }
+    }
 
      /** Match Groupings **/
     grouping "ethernet-match-fields" {
@@ -40,6 +51,7 @@ module opendaylight-match-types {
                 mandatory true;
                 type l2t:ether-type; // Needs to define that as general model
             }
+
             leaf mask {
                 type binary;
             }
@@ -50,14 +62,14 @@ module opendaylight-match-types {
         container vlan-id {
             description "VLAN id.";
             presence "Match field is active and set";
-            
+
+            leaf vlan-id-present {
+                type boolean;
+            }
+                        
             leaf vlan-id {
-                mandatory true;
                 type l2t:vlan-id; 
             }
-            leaf mask {
-                type binary;
-            }
         }
         leaf vlan-pcp {
             description "VLAN priority.";
@@ -75,32 +87,77 @@ module opendaylight-match-types {
             description "IP DSCP (6 bits in ToS field).";
             type inet:dscp; 
         }
+        
         leaf ip-ecn {
             description "IP ECN (2 bits in ToS field).";
             type uint8; 
         }
-    }
-
+        
+        leaf ip-proto {                
+           description "IP Proto (IPv4 or IPv6 Protocol Number).";             
+              type inet:ip-version;            
+               }
+    } 
+    
     grouping "ipv4-match-fields" {
         leaf ipv4-source {
             description "IPv4 source address.";
             type inet:ipv4-prefix;
         }
+        
         leaf ipv4-destination {
             description "IPv4 destination address.";
             type inet:ipv4-prefix;
         }
+        
     }
-
+    
     grouping "ipv6-match-fields" {
         leaf ipv6-source {
             description "IPv6 source address.";
             type inet:ipv6-prefix;
         }
+    
         leaf ipv6-destination {
             description "IPv6 destination address.";
             type inet:ipv6-prefix;
         }
+        
+        leaf ipv6-nd-target {
+            description "IPv6 target address for neighbour discovery message";
+            type inet:ipv6-address;
+        }
+        
+        container "ipv6-label" {
+            leaf ipv6-flabel {
+                type inet:ipv6-flow-label;
+            }
+            
+            leaf flabel-mask {
+                type binary;
+            }
+        }
+        
+        leaf ipv6-nd-sll {
+            description "Link layer source address for neighbour discovery message";
+            type yang:mac-address;
+        }
+        
+        leaf ipv6-nd-tll {
+            description "Link layer target address for neighbour discovery message";
+            type yang:mac-address;
+        }
+        
+        container "ipv6-ext-header" {    
+            leaf ipv6-exthdr {
+                description "IPv6 Extension Header field";
+                type uint16;
+            }
+
+            leaf ipv6-exthdr-mask {
+                type binary;
+            }
+        }
     }
 
     grouping "udp-match-fields" {
@@ -114,6 +171,34 @@ module opendaylight-match-types {
         }
     }
 
+    grouping "protocol-match-fields" {
+        leaf mpls-label {
+            description "Label in the first MPLS shim header";
+            type uint32;
+        }
+        
+        leaf mpls-tc {
+            description "TC in the first MPLS shim header";
+            type uint8;
+        }
+        
+        leaf mpls-bos {
+            description "BoS bit in the first MPLS shim header";
+            type uint8;
+        }
+        
+        container "pbb" {
+            leaf pbb-isid {
+                description "I-SID in the first PBB service instance tag";
+                type uint32;
+            }  
+
+            leaf pbb-mask {
+                type binary;
+            }
+        }
+    }
+    
     grouping "tcp-match-fields" {
         leaf tcp-source-port {
             description "TCP source port.";
@@ -146,8 +231,23 @@ module opendaylight-match-types {
             type uint8; // Define ICMP Code
         }
     }
+    
+    grouping "icmpv6-match-fields" {
+        leaf icmpv6-type {
+        description "ICMP type.";
+            type uint8; // Define ICMP Type
+        }
+        description "ICMP code.";
+        leaf icmpv6-code {
+            type uint8; // Define ICMP Code
+        }
+    }
 
     grouping "arp-match-fields" {
+        leaf arp-op {
+            type uint16;
+        }
+        
         leaf arp-source-transport-address {
             description "ARP source IPv4 address.";
             type inet:ipv4-prefix;
@@ -160,79 +260,47 @@ module opendaylight-match-types {
         container arp-source-hardware-address {
             description "ARP source hardware address.";
             presence "Match field is active and set";
-        uses mac-address-filter;
+            uses mac-address-filter;
         }
         container arp-target-hardware-address {
             description "ARP target hardware address.";
             presence "Match field is active and set";
-        uses mac-address-filter;
+            uses mac-address-filter;
         }
     }
-
-    grouping action {
-        choice action {
-            case output-action {
-                leaf-list output-node-connector {
-                    type string;
-                }
-            }
-
-            case controller-action {
-                leaf max-length {
-                    type uint16 {
-                        range "0..65294";
-                    }
-                }
-            }
-
-            case set-queue-action {
-                leaf queue {
-                    type string; // TODO: define queues
-                }
-            }
-
-            case pop-mpls-action {
-                container pop-mpls {
-                    leaf ethernet-type {
-                        type uint16; // TODO: define ethertype type
-                    }
-                }
-            }
-
-            case set-mpls-ttl-action {
-                leaf mpls-ttl {
-                    type uint8;
-                }
-            }
-
-            case set-nw-ttl-action {
-                leaf nw-ttl {
-                    type uint8;
-                }
-            }
-
-            case push-pbb-action {
-
-            }
-
-            case push-mpls-action {
-
+    
+    grouping match {
+        leaf in-port {
+            type inv:node-connector-id;
+        }
+        
+        leaf in-phy-port {
+            type inv:node-connector-id;
+        }
+        
+        container "metadata" {
+            uses of-metadata;
+        }
+        
+        container "tunnel" {
+            leaf tunnel-id {
+                description "Metadata associated in the logical port";
+                type uint64;
             }
-
-            case push-vlan-action {
-
+            
+            leaf tunnel-mask {
+                type binary;
             }
         }
-    }
-
-
-    grouping match {
+        
         container "ethernet-match" {
             uses "ethernet-match-fields";
         }
+        
         container "vlan-match" {
             uses "vlan-match-fields";
         }
+        
         container "ip-match" {
             uses "ip-match-fields";
         }
@@ -260,8 +328,17 @@ module opendaylight-match-types {
                 uses "sctp-match-fields";
             }
         }
+        
         container "icmpv4-match" {
             uses "icmpv4-match-fields";
         }
+        
+        container "icmpv6-match" {
+            uses "icmpv6-match-fields";
+        }
+        
+        container "protocol-match-fields" {
+            uses "protocol-match-fields";
+        }
     }
 }
\ No newline at end of file