From 1ebe244eb98ca8c5c4728caaa767e76a777580d6 Mon Sep 17 00:00:00 2001 From: Marek Gradzki Date: Mon, 19 Jun 2017 08:25:04 +0200 Subject: Add support for BGP labeled unicast ipv4 extension Change-Id: Id004eaf98d03daec260e7c13b79ced0f4785b952 Signed-off-by: Marek Gradzki --- .../java/io/fd/honeycomb/infra/bgp/BgpRIBProvider.java | 12 ++++++++++-- .../fd/honeycomb/infra/bgp/BgpWriterFactoryProvider.java | 14 +++++++++++++- .../honeycomb-minimal-resources/config/bgp-peers.json | 5 +++++ 3 files changed, 28 insertions(+), 3 deletions(-) (limited to 'infra') diff --git a/infra/bgp-distribution/src/main/java/io/fd/honeycomb/infra/bgp/BgpRIBProvider.java b/infra/bgp-distribution/src/main/java/io/fd/honeycomb/infra/bgp/BgpRIBProvider.java index 11ee4cf8d..a2bd56df3 100644 --- a/infra/bgp-distribution/src/main/java/io/fd/honeycomb/infra/bgp/BgpRIBProvider.java +++ b/infra/bgp-distribution/src/main/java/io/fd/honeycomb/infra/bgp/BgpRIBProvider.java @@ -37,6 +37,7 @@ import org.opendaylight.protocol.bgp.rib.impl.spi.RIB; import org.opendaylight.protocol.bgp.rib.spi.RIBExtensionConsumerContext; import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.multiprotocol.rev151009.bgp.common.afi.safi.list.AfiSafi; import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.multiprotocol.rev151009.bgp.common.afi.safi.list.AfiSafiBuilder; +import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.types.rev151009.IPV4LABELLEDUNICAST; import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.types.rev151009.IPV4UNICAST; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.AsNumber; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address; @@ -75,11 +76,18 @@ final class BgpRIBProvider extends ProviderTrait { final ClusterIdentifier clusterId = new ClusterIdentifier(routerId); LOG.debug("Creating BGP RIB: routerId={}, asNumber={}", routerId, asNumber); // TODO configure other BGP Multiprotocol extensions: - final List afiSafi = ImmutableList.of(new AfiSafiBuilder().setAfiSafiName(IPV4UNICAST.class) + final List afiSafi = ImmutableList.of( + new AfiSafiBuilder().setAfiSafiName(IPV4UNICAST.class) .addAugmentation(AfiSafi2.class, new AfiSafi2Builder().setReceive(cfg.isBgpMultiplePathsEnabled()) .setSendMax(cfg.bgpSendMaxMaths.get().shortValue()).build()) - .build()); + .build(), + new AfiSafiBuilder().setAfiSafiName(IPV4LABELLEDUNICAST.class) + .addAugmentation(AfiSafi2.class, + new AfiSafi2Builder().setReceive(cfg.isBgpMultiplePathsEnabled()) + .setSendMax(cfg.bgpSendMaxMaths.get().shortValue()).build()) + .build() + ); final Map pathSelectionModes = mappingService.toPathSelectionMode(afiSafi) .entrySet().stream().collect(Collectors.toMap(entry -> new TablesKey(entry.getKey().getAfi(), entry.getKey().getSafi()), Map.Entry::getValue)); diff --git a/infra/bgp-distribution/src/main/java/io/fd/honeycomb/infra/bgp/BgpWriterFactoryProvider.java b/infra/bgp-distribution/src/main/java/io/fd/honeycomb/infra/bgp/BgpWriterFactoryProvider.java index 081fbd782..81faabbe5 100644 --- a/infra/bgp-distribution/src/main/java/io/fd/honeycomb/infra/bgp/BgpWriterFactoryProvider.java +++ b/infra/bgp-distribution/src/main/java/io/fd/honeycomb/infra/bgp/BgpWriterFactoryProvider.java @@ -26,6 +26,9 @@ import io.fd.honeycomb.translate.write.registry.ModifiableWriterRegistryBuilder; import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.inet.rev150305.ipv4.routes.Ipv4Routes; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.inet.rev150305.ipv4.routes.ipv4.routes.Ipv4Route; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.labeled.unicast.rev150525.labeled.unicast.LabelStack; +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.list.LabeledUnicastRoute; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.Attributes; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.attributes.LocalPref; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.attributes.Origin; @@ -59,6 +62,8 @@ final class BgpWriterFactoryProvider extends ProviderTrait { private static final InstanceIdentifier TABLES_IID = AR_IID.child(Tables.class); private static final InstanceIdentifier IPV4_ROUTES_IID = TABLES_IID.child((Class) Ipv4Routes.class); private static final InstanceIdentifier IPV4_ROUTE_IID = IPV4_ROUTES_IID.child(Ipv4Route.class); + private static final InstanceIdentifier LABELED_UNICAST_ROUTES_IID = TABLES_IID.child((Class) LabeledUnicastRoutes.class); + private static final InstanceIdentifier LABELED_UNICAST_ROUTE_IID = LABELED_UNICAST_ROUTES_IID.child(LabeledUnicastRoute.class); private BgpWriterFactory(final DataBroker dataBroker) { this.dataBroker = dataBroker; @@ -81,7 +86,14 @@ final class BgpWriterFactoryProvider extends ProviderTrait { IPV4_ROUTE_IID.child(Attributes.class), IPV4_ROUTE_IID.child(Attributes.class).child(Origin.class), IPV4_ROUTE_IID.child(Attributes.class).child(LocalPref.class), - IPV4_ROUTE_IID.child(Attributes.class).child(Ipv4NextHop.class) + IPV4_ROUTE_IID.child(Attributes.class).child(Ipv4NextHop.class), + LABELED_UNICAST_ROUTES_IID, + LABELED_UNICAST_ROUTE_IID, + LABELED_UNICAST_ROUTE_IID.child(Attributes.class), + LABELED_UNICAST_ROUTE_IID.child(Attributes.class).child(Origin.class), + LABELED_UNICAST_ROUTE_IID.child(Attributes.class).child(LocalPref.class), + LABELED_UNICAST_ROUTE_IID.child(Attributes.class).child(Ipv4NextHop.class), + LABELED_UNICAST_ROUTE_IID.child(LabelStack.class) ), new BindingBrokerWriter<>(InstanceIdentifier.create(ApplicationRib.class), dataBroker) ); diff --git a/infra/bgp-distribution/src/main/resources/honeycomb-minimal-resources/config/bgp-peers.json b/infra/bgp-distribution/src/main/resources/honeycomb-minimal-resources/config/bgp-peers.json index 6de2065b8..93405fba6 100644 --- a/infra/bgp-distribution/src/main/resources/honeycomb-minimal-resources/config/bgp-peers.json +++ b/infra/bgp-distribution/src/main/resources/honeycomb-minimal-resources/config/bgp-peers.json @@ -12,6 +12,11 @@ "afi-safi-name": "openconfig-bgp-types:IPV4-UNICAST", "receive": true, "send-max": 0 + }, + { + "afi-safi-name": "openconfig-bgp-types:IPV4-LABELLED-UNICAST", + "receive": true, + "send-max": 0 } ] } -- cgit 1.2.3-korg