BUG-5434: IPv6 support for BGP-LU 77/39977/3
authorClaudio D. Gasparini <cgaspari@cisco.com>
Tue, 7 Jun 2016 13:58:30 +0000 (15:58 +0200)
committerClaudio D. Gasparini <cgaspari@cisco.com>
Wed, 8 Jun 2016 11:12:49 +0000 (11:12 +0000)
Extend existing BGP labeled unicast implementation to support IPv6 AFI.

Change-Id: I1a55280c9578fbdf744e8d3e65852eb99b1b46fd
Signed-off-by: Claudio D. Gasparini <cgaspari@cisco.com>
bgp/labeled-unicast/src/main/java/org/opendaylight/protocol/bgp/labeled/unicast/LabeledUnicastRIBSupport.java
bgp/labeled-unicast/src/main/yang/bgp-labeled-unicast.yang

index f059cec2d3818d42d983c366986dd64149c0b6fb..617621ba1a469463c99253eafe5d2228fb3386fe 100644 (file)
@@ -33,7 +33,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.labe
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.labeled.unicast.rev150525.labeled.unicast.destination.CLabeledUnicastDestination;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.labeled.unicast.rev150525.labeled.unicast.destination.CLabeledUnicastDestinationBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.labeled.unicast.rev150525.labeled.unicast.routes.LabeledUnicastRoutes;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.labeled.unicast.rev150525.labeled.unicast.routes.labeled.unicast.routes.LabeledUnicastRoute;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.labeled.unicast.rev150525.labeled.unicast.routes.list.LabeledUnicastRoute;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.labeled.unicast.rev150525.update.attributes.mp.reach.nlri.advertized.routes.destination.type.DestinationLabeledUnicastCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.labeled.unicast.rev150525.update.attributes.mp.reach.nlri.advertized.routes.destination.type.destination.labeled.unicast._case.DestinationLabeledUnicast;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.labeled.unicast.rev150525.update.attributes.mp.reach.nlri.advertized.routes.destination.type.destination.labeled.unicast._case.DestinationLabeledUnicastBuilder;
index 7abdd35d16cb7956b2828c67ad4c81e73a226b73..a442b346fd74024a441a23137d202516a17f8e85 100644 (file)
@@ -75,34 +75,49 @@ module bgp-labeled-unicast {
         }
     }
 
-    grouping labeled-unicast-routes {
-        container labeled-unicast-routes {
-            list labeled-unicast-route {
-                leaf route-key {
-                    type binary;
-                }
-                key "route-key path-id";
-                uses labeled-unicast;
-                uses bgp-rib:route {
-                    augment "attributes/bgp-prefix-sid/bgp-prefix-sid-tlvs/bgp-prefix-sid-tlv" {
-                        case lu-label-index-tlv {
-                            uses label-index-tlv;
-                        }
-                        case lu-originator-srgb-tlv {
-                            uses originator-srgb-tlv;
-                        }
+    grouping labeled-unicast-routes-list {
+        list labeled-unicast-route {
+            leaf route-key {
+                type binary;
+            }
+            key "route-key path-id";
+            uses labeled-unicast;
+            uses bgp-rib:route {
+                augment "attributes/bgp-prefix-sid/bgp-prefix-sid-tlvs/bgp-prefix-sid-tlv" {
+                    case lu-label-index-tlv {
+                        uses label-index-tlv;
+                    }
+                    case lu-originator-srgb-tlv {
+                        uses originator-srgb-tlv;
                     }
                 }
             }
         }
     }
 
+    grouping labeled-unicast-routes {
+        container labeled-unicast-routes {
+            uses labeled-unicast-routes-list;
+        }
+    }
+
+    grouping labeled-unicast-ipv6-routes {
+        container labeled-unicast-ipv6-routes {
+            uses labeled-unicast-routes-list;
+        }
+    }
+
     augment "/bgp-msg:update/bgp-msg:attributes/bgp-mp:mp-reach-nlri/bgp-mp:advertized-routes/bgp-mp:destination-type" {
         case destination-labeled-unicast-case {
             container destination-labeled-unicast {
                 uses labeled-unicast-destination;
             }
         }
+        case destination-ipv6-labeled-unicast-case {
+            container destination-ipv6-labeled-unicast {
+                uses labeled-unicast-destination;
+            }
+        }
     }
 
     augment "/bgp-msg:update/bgp-msg:attributes/bgp-mp:mp-unreach-nlri/bgp-mp:withdrawn-routes/bgp-mp:destination-type" {
@@ -111,48 +126,74 @@ module bgp-labeled-unicast {
                 uses labeled-unicast-destination;
             }
         }
+        case destination-ipv6-labeled-unicast-case {
+            container destination-ipv6-labeled-unicast {
+                uses labeled-unicast-destination;
+            }
+        }
     }
 
     augment "/bgp-rib:application-rib/bgp-rib:tables/bgp-rib:routes" {
         case labeled-unicast-routes-case {
             uses labeled-unicast-routes;
         }
+        case labeled-unicast-ipv6-routes-case {
+            uses labeled-unicast-ipv6-routes;
+        }
     }
 
     augment "/bgp-rib:bgp-rib/bgp-rib:rib/bgp-rib:loc-rib/bgp-rib:tables/bgp-rib:routes" {
         case labeled-unicast-routes-case {
             uses labeled-unicast-routes;
         }
+        case labeled-unicast-ipv6-routes-case {
+            uses labeled-unicast-ipv6-routes;
+        }
     }
 
     augment "/bgp-rib:bgp-rib/bgp-rib:rib/bgp-rib:peer/bgp-rib:adj-rib-in/bgp-rib:tables/bgp-rib:routes" {
         case labeled-unicast-routes-case {
             uses labeled-unicast-routes;
         }
+        case labeled-unicast-ipv6-routes-case {
+            uses labeled-unicast-ipv6-routes;
+        }
     }
 
     augment "/bgp-rib:bgp-rib/bgp-rib:rib/bgp-rib:peer/bgp-rib:effective-rib-in/bgp-rib:tables/bgp-rib:routes" {
         case labeled-unicast-routes-case {
             uses labeled-unicast-routes;
         }
+        case labeled-unicast-ipv6-routes-case {
+            uses labeled-unicast-ipv6-routes;
+        }
     }
 
     augment "/bgp-rib:bgp-rib/bgp-rib:rib/bgp-rib:peer/bgp-rib:adj-rib-out/bgp-rib:tables/bgp-rib:routes" {
         case labeled-unicast-routes-case {
             uses labeled-unicast-routes;
         }
+        case labeled-unicast-ipv6-routes-case {
+            uses labeled-unicast-ipv6-routes;
+        }
     }
 
     augment "/bmp-mon:bmp-monitor/bmp-mon:monitor/bmp-mon:router/bmp-mon:peer/bmp-mon:pre-policy-rib/bmp-mon:tables/bmp-mon:routes" {
         case labeled-unicast-routes-case {
             uses labeled-unicast-routes;
         }
+        case labeled-unicast-ipv6-routes-case {
+            uses labeled-unicast-ipv6-routes;
+        }
     }
 
     augment "/bmp-mon:bmp-monitor/bmp-mon:monitor/bmp-mon:router/bmp-mon:peer/bmp-mon:post-policy-rib/bmp-mon:tables/bmp-mon:routes" {
         case labeled-unicast-routes-case {
             uses labeled-unicast-routes;
         }
+        case labeled-unicast-ipv6-routes-case {
+            uses labeled-unicast-ipv6-routes;
+        }
     }
 
     grouping label-index-tlv {