Mass-convert all compontents to use -no-zone addresses
[bgpcep.git] / bgp / concepts / src / main / yang / bgp-types.yang
index 61a55f3f6297f4e45798a99a37e4137e66b68865..f3204dfeb4d160c4b651ef3ae824daeb6cea6efb 100644 (file)
@@ -3,7 +3,7 @@ module bgp-types {
     namespace "urn:opendaylight:params:xml:ns:yang:bgp-types";
     prefix "bgp-t";
 
-    import ietf-inet-types { prefix inet; revision-date 2010-09-24; }
+    import ietf-inet-types { prefix inet; revision-date 2013-07-15; }
     import network-concepts { prefix netc; revision-date 2013-11-25; }
 
     organization "Cisco Systems, Inc.";
@@ -19,6 +19,11 @@ module bgp-types {
         accompanies this distribution, and is available at
         http://www.eclipse.org/legal/epl-v10.html";
 
+    revision "2018-03-29" {
+        description "RFC6514 Extended communities";
+        reference "https://tools.ietf.org/html/rfc6514";
+    }
+
     revision "2013-09-19" {
         description
             "Initial revision.";
@@ -41,6 +46,11 @@ module bgp-types {
         }
     }
 
+    typedef bgp-id {
+        description "BGP identifier";
+        type inet:ipv4-address-no-zone;
+    }
+
     identity address-family {
         reference "http://www.iana.org/assignments/address-family-numbers/address-family-numbers.xhtml#address-family-numbers-2";
     }
@@ -71,7 +81,7 @@ module bgp-types {
 
     typedef cluster-identifier {
         reference "http://tools.ietf.org/html/rfc4456#section-8";
-        type inet:ipv4-address;
+        type inet:ipv4-address-no-zone;
     }
 
     typedef short-as-number {
@@ -194,7 +204,7 @@ module bgp-types {
             type inet:as-number;
         }
         leaf network-address {
-            type inet:ipv4-address;
+            type inet:ipv4-address-no-zone;
         }
     }
 
@@ -212,7 +222,7 @@ module bgp-types {
     grouping route-ipv4-extended-community {
         reference "http://tools.ietf.org/html/rfc4360";
         leaf global-administrator {
-            type inet:ipv4-address;
+            type inet:ipv4-address-no-zone;
         }
         leaf local-administrator {
             type uint16;
@@ -260,6 +270,85 @@ module bgp-types {
         }
     }
 
+    grouping inet4-specific-extended-community-common {
+        container inet4-specific-extended-community-common {
+            leaf global-administrator {
+                type inet:ipv4-address-no-zone;
+            }
+            leaf local-administrator {
+                type binary {
+                    length "2";
+                }
+            }
+        }
+    }
+
+    grouping source-as-4-extended-community-grouping {
+        reference "https://tools.ietf.org/html/rfc6514#section-6";
+        leaf global-administrator {
+            description "Carries a 4-octet Autonomous System (AS) number";
+            reference "https://tools.ietf.org/html/rfc5668#section-2";
+
+            mandatory true;
+            type inet:as-number;
+        }
+    }
+
+    grouping source-as-extended-community-grouping {
+        reference "https://tools.ietf.org/html/rfc6514#section-6";
+        leaf global-administrator {
+            type bgp-t:short-as-number;
+        }
+    }
+
+    grouping route-target {
+        description "Marker grouping for Route Target extended communities.";
+    }
+
+    grouping route-target-constrain-default-route-grouping {
+        container route-target-constrain-default-route {
+            uses route-target;
+            presence
+                "The presence of this container indicates that the routes
+                is a default route target";
+        }
+    }
+
+    grouping route-target-extended-community-grouping {
+        container route-target-extended-community {
+            description "Type 0x00 / Subtype 0x02";
+            reference "http://tools.ietf.org/html/rfc4360#section-4";
+            uses route-target;
+
+            leaf global-administrator {
+                type short-as-number;
+            }
+            leaf local-administrator {
+                type binary {
+                    length "4";
+                }
+            }
+        }
+    }
+
+    grouping route-target-ipv4-grouping {
+        container route-target-ipv4 {
+            description "Type 0x01 / Subtype 0x02";
+            reference "http://tools.ietf.org/html/rfc4360#section-4";
+            uses route-target;
+            uses route-ipv4-extended-community;
+        }
+    }
+
+    grouping as-4-route-target-extended-community-grouping {
+        container as-4-route-target-extended-community {
+            description "Type 0x02 / Subtype 0x02";
+            reference "https://tools.ietf.org/html/rfc5668";
+            uses route-target;
+            uses as-4-spec-common;
+        }
+    }
+
     grouping extended-community {
         leaf transitive {
             type boolean;
@@ -279,10 +368,13 @@ module bgp-types {
             }
             case inet4-specific-extended-community-case {
                 container inet4-specific-extended-community {
+                    uses inet4-specific-extended-community-common;
                     leaf global-administrator {
-                        type inet:ipv4-address;
+                        status deprecated;
+                        type inet:ipv4-address-no-zone;
                     }
                     leaf local-administrator {
+                        status deprecated;
                         type binary {
                             length "2";
                         }
@@ -299,16 +391,13 @@ module bgp-types {
                 }
             }
             case route-target-extended-community-case {
-                container route-target-extended-community {
-                    leaf global-administrator {
-                        type short-as-number;
-                    }
-                    leaf local-administrator {
-                        type binary {
-                            length "4";
-                        }
-                    }
-                }
+                uses route-target-extended-community-grouping;
+            }
+            case route-target-ipv4-case {
+                uses route-target-ipv4-grouping;
+            }
+            case as-4-route-target-extended-community-case {
+                uses as-4-route-target-extended-community-grouping;
             }
             case route-origin-extended-community-case {
                 container route-origin-extended-community {
@@ -322,12 +411,6 @@ module bgp-types {
                     }
                 }
             }
-            case route-target-ipv4-case {
-                container route-target-ipv4 {
-                    reference "http://tools.ietf.org/html/rfc4360#section-4";
-                    uses route-ipv4-extended-community;
-                }
-            }
             case route-origin-ipv4-case {
                 container route-origin-ipv4 {
                     reference "http://tools.ietf.org/html/rfc4360#section-5";
@@ -345,12 +428,6 @@ module bgp-types {
                     uses as-4-spec-common;
                 }
             }
-            case as-4-route-target-extended-community-case {
-                container as-4-route-target-extended-community {
-                    reference "https://tools.ietf.org/html/rfc5668";
-                    uses as-4-spec-common;
-                }
-            }
             case as-4-route-origin-extended-community-case {
                 container as-4-route-origin-extended-community {
                     reference "https://tools.ietf.org/html/rfc5668";
@@ -362,6 +439,22 @@ module bgp-types {
                     uses encapsulation-extended-community;
                 }
             }
+            case vrf-route-import-extended-community-case {
+                reference "https://tools.ietf.org/html/rfc6514#section-7";
+                container vrf-route-import-extended-community {
+                    uses inet4-specific-extended-community-common;
+                }
+            }
+            case source-as-4-extended-community-case {
+                container source-as-4-extended-community {
+                    uses source-as-4-extended-community-grouping;
+                }
+            }
+            case source-as-extended-community-case {
+                container source-as-extended-community {
+                    uses source-as-extended-community-grouping;
+                }
+            }
         }
     }
 
@@ -372,7 +465,8 @@ module bgp-types {
                 container ipv4-next-hop {
                     reference "http://tools.ietf.org/html/rfc4271#section-5.1.3";
                     leaf global {
-                        type inet:ipv4-address;
+                        type inet:ipv4-address-no-zone;
+                        mandatory true;
                     }
                 }
             }
@@ -380,10 +474,11 @@ module bgp-types {
                 container ipv6-next-hop {
                     reference "http://tools.ietf.org/html/rfc4760#section-3";
                     leaf global {
-                        type inet:ipv6-address;
+                        type inet:ipv6-address-no-zone;
+                        mandatory true;
                     }
                     leaf link-local {
-                        type inet:ipv6-address;
+                        type inet:ipv6-address-no-zone;
                     }
                 }
             }
@@ -406,4 +501,18 @@ module bgp-types {
             type inet:as-number;
         }
     }
+
+    grouping route-distinguisher-grouping {
+        leaf route-distinguisher {
+            type route-distinguisher;
+            mandatory true;
+        }
+    }
+
+    grouping orig-route-ip-grouping {
+        leaf orig-route-ip {
+            type inet:ip-address-no-zone;
+            mandatory true;
+        }
+    }
 }