package org.opendaylight.protocol.bgp.mvpn.impl;
+import com.google.common.collect.ImmutableCollection;
+import com.google.common.collect.ImmutableSet;
import java.util.Optional;
import org.opendaylight.controller.md.sal.dom.api.DOMDataWriteTransaction;
import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer;
extends AbstractRIBSupport<C, MvpnRoutes, MvpnRoute, MvpnRouteKey> {
private static final Logger LOG = LoggerFactory.getLogger(AbstractMvpnRIBSupport.class);
private final NodeIdentifier nlriRoutesList;
+ private final ImmutableCollection<Class<? extends DataObject>> cacheableNlriObjects;
/**
* Default constructor. Requires the QName of the container augmented under the routes choice
super(mappingService, cazeClass, MvpnRoutes.class, MvpnRoute.class, afiClass,
McastVpnSubsequentAddressFamily.class, destContainerQname);
this.nlriRoutesList = NodeIdentifier.create(destListQname);
+ this.cacheableNlriObjects = ImmutableSet.of(cazeClass);
+
+ }
+
+ @Override
+ public final ImmutableCollection<Class<? extends DataObject>> cacheableNlriObjects() {
+ return this.cacheableNlriObjects;
}
@Override
import org.opendaylight.protocol.bgp.mvpn.impl.nlri.Ipv4NlriHandler;
import org.opendaylight.protocol.bgp.parser.spi.PathIdUtil;
import org.opendaylight.protocol.util.ByteArray;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Prefix;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.destination.DestinationType;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.mvpn.ipv4.rev180417.MvpnDestination;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.mvpn.ipv4.rev180417.bgp.rib.rib.loc.rib.tables.routes.MvpnRoutesIpv4Case;
private org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.mvpn.ipv4.rev180417.mvpn
.destination.MvpnDestination extractDestinations(final DataContainerNode<? extends PathArgument> mvpnDest) {
return new MvpnDestinationBuilder()
- .setPrefix(new Ipv4Prefix(extractPrefix(mvpnDest)))
.setMvpnChoice(extractMvpnChoice(mvpnDest))
.setPathId(PathIdUtil.buildPathId(mvpnDest, routePathIdNid()))
.build();
import org.opendaylight.protocol.bgp.mvpn.impl.nlri.Ipv6NlriHandler;
import org.opendaylight.protocol.bgp.parser.spi.PathIdUtil;
import org.opendaylight.protocol.util.ByteArray;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6Prefix;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.destination.DestinationType;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.mvpn.ipv6.rev180417.MvpnDestination;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.mvpn.ipv6.rev180417.bgp.rib.rib.loc.rib.tables.routes.MvpnRoutesIpv6Case;
private org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.mvpn.ipv6.rev180417.mvpn
.destination.MvpnDestination extractDestination(final DataContainerNode<? extends PathArgument> mvpnDest) {
return new MvpnDestinationBuilder()
- .setPrefix(new Ipv6Prefix(extractPrefix(mvpnDest)))
.setMvpnChoice(extractMvpnChoice(mvpnDest))
.setPathId(PathIdUtil.buildPathId(mvpnDest, routePathIdNid()))
.build();
final BindingNormalizedNodeSerializer mappingService) {
return Lists.newArrayList(
context.registerRIBSupport(Ipv4AddressFamily.class, McastVpnSubsequentAddressFamily.class,
- MvpnIpv6RIBSupport.getInstance(mappingService)),
+ MvpnIpv4RIBSupport.getInstance(mappingService)),
context.registerRIBSupport(Ipv6AddressFamily.class, McastVpnSubsequentAddressFamily.class,
- MvpnIpv4RIBSupport.getInstance(mappingService))
+ MvpnIpv6RIBSupport.getInstance(mappingService))
);
}
}
dests.add(builder.build());
}
- return new DestinationMvpnIpv4AdvertizedCaseBuilder().setDestinationMvpn(
- new DestinationMvpnBuilder().setMvpnDestination(dests).build()).build();
+ return new DestinationMvpnIpv4AdvertizedCaseBuilder()
+ .setDestinationMvpn(new DestinationMvpnBuilder().setMvpnDestination(dests).build()).build();
}
static DestinationMvpnIpv4WithdrawnCase parseIpv4UnreachNlri(
grouping mvpn-destination {
list mvpn-destination {
uses mvpn:mvpn;
- leaf prefix {
- type inet:ipv4-prefix;
- }
uses bgp-msg:path-id-grouping;
}
}
grouping mvpn-destination {
list mvpn-destination {
uses mvpn:mvpn;
- leaf prefix {
- type inet:ipv6-prefix;
- }
uses bgp-msg:path-id-grouping;
}
}
container mvpn-routes {
list mvpn-route {
key "route-key path-id";
-
uses mvpn-bgp-rib-route;
- leaf prefix {
- type inet:ip-prefix;
- }
}
}
}
import org.junit.Test;
import org.opendaylight.protocol.bgp.rib.spi.AbstractRIBSupportTest;
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.IpPrefix;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Prefix;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev180329.PathId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev180329.Update;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.Attributes1;
public class MvpnIpv4RIBSupportTest extends AbstractRIBSupportTest<MvpnRoute> {
private static final MvpnRouteKey ROUTE_KEY;
private static final MvpnRoute ROUTE;
- private static final IpPrefix PREFIX = new IpPrefix(new Ipv4Prefix("127.0.0.1/32"));
private static final org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.mvpn.rev180417.mvpn
.routes.MvpnRoutes MVPN_ROUTES;
private static final MvpnChoice MVPN = new InterAsIPmsiADCaseBuilder().setInterAsIPmsiAD(
private static final PathId PATH_ID = new PathId(0L);
private static final MvpnDestination MVPN_DESTINATION = new MvpnDestinationBuilder()
.setMvpnChoice(MVPN)
- .setPrefix(PREFIX.getIpv4Prefix())
.setPathId(PATH_ID)
.build();
private static final DestinationMvpnIpv4AdvertizedCase REACH_NLRI = new DestinationMvpnIpv4AdvertizedCaseBuilder()
ROUTE_KEY = new MvpnRouteKey(PATH_ID, "AgwAAQECAwQBAgAAAAE=");
ROUTE = new MvpnRouteBuilder()
.setRouteKey(ROUTE_KEY.getRouteKey())
- .setPrefix(PREFIX)
.setPathId(ROUTE_KEY.getPathId())
.setAttributes(ATTRIBUTES)
.setMvpnChoice(MVPN)
import org.opendaylight.protocol.bgp.rib.spi.AbstractRIBSupportTest;
import org.opendaylight.protocol.util.ByteArray;
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.IpPrefix;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6Prefix;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev180329.PathId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev180329.Update;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.Attributes1;
public final class MvpnIpv6RIBSupportTest extends AbstractRIBSupportTest<MvpnRoute> {
private static final MvpnRouteKey ROUTE_KEY;
private static final MvpnRoute ROUTE;
- private static final IpPrefix PREFIX = new IpPrefix(new Ipv6Prefix("2001:db8:1:1::/64"));
private static final org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.mvpn.rev180417.mvpn
.routes.MvpnRoutes MVPN_ROUTES;
private static final MvpnChoice MVPN = new InterAsIPmsiADCaseBuilder().setInterAsIPmsiAD(
private static final PathId PATH_ID = new PathId(0L);
private static final MvpnDestination MVPN_DESTINATION = new MvpnDestinationBuilder()
.setMvpnChoice(MVPN)
- .setPrefix(PREFIX.getIpv6Prefix())
.setPathId(PATH_ID)
.build();
private static final DestinationMvpnIpv6AdvertizedCase REACH_NLRI = new DestinationMvpnIpv6AdvertizedCaseBuilder()
ROUTE_KEY = new MvpnRouteKey(PATH_ID, ByteArray.encodeBase64(buffer));
ROUTE = new MvpnRouteBuilder()
.setRouteKey(ROUTE_KEY.getRouteKey())
- .setPrefix(PREFIX)
.setPathId(ROUTE_KEY.getPathId())
.setAttributes(ATTRIBUTES)
.setMvpnChoice(MVPN)
private static final NodeIdentifier ADVERTISED_ROUTES = new NodeIdentifier(AdvertizedRoutes.QNAME);
private static final NodeIdentifier WITHDRAWN_ROUTES = new NodeIdentifier(WithdrawnRoutes.QNAME);
private static final NodeIdentifier DESTINATION_TYPE = new NodeIdentifier(DestinationType.QNAME);
- private static final InstanceIdentifier TABLES_II = InstanceIdentifier.create(BgpRib.class)
+ private static final InstanceIdentifier<Tables> TABLES_II = InstanceIdentifier.create(BgpRib.class)
.child(Rib.class).child(LocRib.class).child(Tables.class);
private static final NodeIdentifier ROUTES = new NodeIdentifier(Routes.QNAME);
private static final ApplyRoute DELETE_ROUTE = new DeleteRoute();