public final class RIBActivator extends AbstractRIBExtensionProviderActivator {
- private final SimpleFlowspecExtensionProviderContext fs_context;
+ private final SimpleFlowspecExtensionProviderContext fsContext;
public RIBActivator(SimpleFlowspecExtensionProviderContext context) {
super();
- this.fs_context = context;
+ this.fsContext = context;
}
@Override
protected List<AutoCloseable> startRIBExtensionProviderImpl(final RIBExtensionProviderContext context) {
final List<AutoCloseable> regs = new ArrayList<>();
- regs.add(context.registerRIBSupport(Ipv4AddressFamily.class, FlowspecSubsequentAddressFamily.class, FlowspecIpv4RIBSupport.getInstance(fs_context)));
- regs.add(context.registerRIBSupport(Ipv6AddressFamily.class, FlowspecSubsequentAddressFamily.class, FlowspecIpv6RIBSupport.getInstance(fs_context)));
- regs.add(context.registerRIBSupport(Ipv4AddressFamily.class, FlowspecL3vpnSubsequentAddressFamily.class, FlowspecL3vpnIpv4RIBSupport.getInstance(fs_context)));
- regs.add(context.registerRIBSupport(Ipv6AddressFamily.class, FlowspecL3vpnSubsequentAddressFamily.class, FlowspecL3vpnIpv6RIBSupport.getInstance(fs_context)));
+ regs.add(context.registerRIBSupport(Ipv4AddressFamily.class, FlowspecSubsequentAddressFamily.class, FlowspecIpv4RIBSupport.getInstance(fsContext)));
+ regs.add(context.registerRIBSupport(Ipv6AddressFamily.class, FlowspecSubsequentAddressFamily.class, FlowspecIpv6RIBSupport.getInstance(fsContext)));
+ regs.add(context.registerRIBSupport(Ipv4AddressFamily.class, FlowspecL3vpnSubsequentAddressFamily.class, FlowspecL3vpnIpv4RIBSupport.getInstance(fsContext)));
+ regs.add(context.registerRIBSupport(Ipv6AddressFamily.class, FlowspecL3vpnSubsequentAddressFamily.class, FlowspecL3vpnIpv6RIBSupport.getInstance(fsContext)));
return regs;
}
}
@Test
public void testActivator() throws Exception {
- final SimpleFlowspecExtensionProviderContext fs_context = new SimpleFlowspecExtensionProviderContext();
- final FlowspecActivator activator = new FlowspecActivator(fs_context);
+ final SimpleFlowspecExtensionProviderContext fsContext = new SimpleFlowspecExtensionProviderContext();
+ final FlowspecActivator activator = new FlowspecActivator(fsContext);
final BGPActivator act = new BGPActivator(activator);
final BGPExtensionProviderContext context = new SimpleBGPExtensionProviderContext();
assertNull(context.getSubsequentAddressFamilyRegistry().classForFamily(FLOWSPEC_SAFI));
.attributes.mp.unreach.nlri.withdrawn.routes.destination.type.DestinationFlowspecCaseBuilder().setDestinationFlowspec(DEST_FLOW).build();
static {
- final SimpleFlowspecExtensionProviderContext fs_context = new SimpleFlowspecExtensionProviderContext();
- final FlowspecActivator activator = new FlowspecActivator(fs_context);
+ final SimpleFlowspecExtensionProviderContext fsContext = new SimpleFlowspecExtensionProviderContext();
+ final FlowspecActivator activator = new FlowspecActivator(fsContext);
final BGPActivator act = new BGPActivator(activator);
final BGPExtensionProviderContext context = new SimpleBGPExtensionProviderContext();
act.start(context);
- RIB_SUPPORT = FlowspecIpv4RIBSupport.getInstance(fs_context);
+ RIB_SUPPORT = FlowspecIpv4RIBSupport.getInstance(fsContext);
final SimpleFlowspecIpv4NlriParser parser = new SimpleFlowspecIpv4NlriParser(
- fs_context.getFlowspecTypeRegistry(SimpleFlowspecExtensionProviderContext.AFI.IPV4, SimpleFlowspecExtensionProviderContext.SAFI.FLOWSPEC));
+ fsContext.getFlowspecTypeRegistry(SimpleFlowspecExtensionProviderContext.AFI.IPV4, SimpleFlowspecExtensionProviderContext.SAFI.FLOWSPEC));
ROUTE_KEY = new FlowspecRouteKey(PATH_ID, parser.stringNlri(FLOW_LIST));
ROUTE = new FlowspecRouteBuilder().setKey(ROUTE_KEY).setPathId(PATH_ID).setFlowspec(FLOW_LIST)
.attributes.mp.unreach.nlri.withdrawn.routes.destination.type.DestinationFlowspecIpv6CaseBuilder().setDestinationFlowspec(DEST_FLOW).build();
private static final FlowspecIpv6Routes ROUTES;
static {
- final SimpleFlowspecExtensionProviderContext fs_context = new SimpleFlowspecExtensionProviderContext();
- final FlowspecActivator activator = new FlowspecActivator(fs_context);
+ final SimpleFlowspecExtensionProviderContext fsContext = new SimpleFlowspecExtensionProviderContext();
+ final FlowspecActivator activator = new FlowspecActivator(fsContext);
final BGPActivator act = new BGPActivator(activator);
final BGPExtensionProviderContext context = new SimpleBGPExtensionProviderContext();
act.start(context);
- RIB_SUPPORT = FlowspecIpv6RIBSupport.getInstance(fs_context);
+ RIB_SUPPORT = FlowspecIpv6RIBSupport.getInstance(fsContext);
final SimpleFlowspecIpv6NlriParser parser = new SimpleFlowspecIpv6NlriParser(
- fs_context.getFlowspecTypeRegistry(SimpleFlowspecExtensionProviderContext.AFI.IPV4, SimpleFlowspecExtensionProviderContext.SAFI.FLOWSPEC));
+ fsContext.getFlowspecTypeRegistry(SimpleFlowspecExtensionProviderContext.AFI.IPV4, SimpleFlowspecExtensionProviderContext.SAFI.FLOWSPEC));
ROUTE_KEY = new FlowspecRouteKey(PATH_ID, parser.stringNlri(FLOW_LIST));
ROUTE = new FlowspecRouteBuilder().setKey(ROUTE_KEY).setPathId(PATH_ID).setFlowspec(FLOW_LIST)
@Before
public void setUp() throws Exception {
- final SimpleFlowspecExtensionProviderContext fs_context = new SimpleFlowspecExtensionProviderContext();
- final FlowspecActivator activator = new FlowspecActivator(fs_context);
+ final SimpleFlowspecExtensionProviderContext fsContext = new SimpleFlowspecExtensionProviderContext();
+ final FlowspecActivator activator = new FlowspecActivator(fsContext);
this.act= new BGPActivator(activator);
final BGPExtensionProviderContext context = new SimpleBGPExtensionProviderContext();
import java.util.Map;
import java.util.Optional;
import javax.annotation.concurrent.NotThreadSafe;
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
import org.opendaylight.controller.md.sal.dom.api.DOMDataWriteTransaction;
import org.opendaylight.protocol.bgp.mode.api.BestPath;
import org.opendaylight.protocol.bgp.mode.spi.AbstractRouteEntry;
for (final Map.Entry<PeerId, PeerExporTuple> pid : peerGroup.getPeers()) {
final PeerId destPeer = pid.getKey();
final boolean destPeerSupAddPath = peerPT.isAddPathSupportedByPeer(destPeer);
- if (filterRoutes(routePeerId, destPeer, peerPT, localTK, getRoutePeerIdRole(peerPT, destPeer))
- && peersSupportsAddPathOrIsFirstBestPath(destPeerSupAddPath, isFirstBestPath)) {
+ if (filterRoutes(routePeerId, destPeer, peerPT, localTK, role) &&
+ peersSupportsAddPathOrIsFirstBestPath(destPeerSupAddPath, isFirstBestPath)) {
if (destPeerSupAddPath) {
update(destPeer, getAdjRibOutYII(ribSup, pid.getValue().getYii(), routeIdAddPath, localTK), effectiveAttributes,
addPathValue, ribSup, tx);
}
}
- private void update(final PeerId destPeer, final YangInstanceIdentifier routeTarget, final ContainerNode effAttr, final NormalizedNode<?, ?> value,
- final RIBSupport ribSup, final DOMDataWriteTransaction tx) {
- if (!writeRoute(destPeer, routeTarget, effAttr, value, ribSup, tx)) {
- LOG.trace("Removing {} from transaction for peer {}", routeTarget, destPeer);
- tx.delete(LogicalDatastoreType.OPERATIONAL, routeTarget);
- }
- }
protected final OffsetMap getOffsets() {
return this.offsets;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.primitives.UnsignedInteger;
import javax.annotation.concurrent.NotThreadSafe;
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
import org.opendaylight.controller.md.sal.dom.api.DOMDataWriteTransaction;
import org.opendaylight.protocol.bgp.mode.api.BestPath;
import org.opendaylight.protocol.bgp.mode.spi.AbstractRouteEntry;
}
}
}
-
- private void update(final PeerId destPeer, final YangInstanceIdentifier routeTarget, final ContainerNode effAttrib,
- final NormalizedNode<?, ?> value, final RIBSupport ribSup, final DOMDataWriteTransaction tx) {
- if (!writeRoute(destPeer, routeTarget, effAttrib, value, ribSup, tx)) {
- LOG.trace("Removing {} from transaction for peer {}", routeTarget, destPeer);
- tx.delete(LogicalDatastoreType.OPERATIONAL, routeTarget);
- }
- }
}
\ No newline at end of file
}
}
+
+ protected final void update(final PeerId destPeer, final YangInstanceIdentifier routeTarget, final ContainerNode effAttr,
+ final NormalizedNode<?, ?> value, final RIBSupport ribSup, final DOMDataWriteTransaction tx) {
+ if (!writeRoute(destPeer, routeTarget, effAttr, value, ribSup, tx)) {
+ deleteRoute(destPeer, routeTarget, tx);
+ }
+ }
+
protected final boolean writeRoute(final PeerId destPeer, final YangInstanceIdentifier routeTarget, final ContainerNode effAttrib,
final NormalizedNode<?, ?> value, final RIBSupport ribSup, final DOMDataWriteTransaction tx) {
if (effAttrib != null && value != null) {
return false;
}
+ private void deleteRoute(final PeerId destPeer, final YangInstanceIdentifier routeTarget, final DOMDataWriteTransaction tx) {
+ LOG.trace("Removing {} from transaction for peer {}", routeTarget, destPeer);
+ tx.delete(LogicalDatastoreType.OPERATIONAL, routeTarget);
+ }
+
protected final boolean filterRoutes(final PeerId rootPeer, final PeerId destPeer, final ExportPolicyPeerTracker peerPT, final TablesKey localTK, final PeerRole destPeerRole) {
return !rootPeer.equals(destPeer) && isTableSupported(destPeer, peerPT, localTK) && !PeerRole.Internal.equals(destPeerRole);
}
final org.opendaylight.protocol.bgp.evpn.impl.BGPActivator evpnActivator = new org.opendaylight.protocol.bgp.evpn.impl.BGPActivator();
evpnActivator.start(ctx);
- final SimpleFlowspecExtensionProviderContext fs_context = new SimpleFlowspecExtensionProviderContext();
- final FlowspecActivator flowspecActivator = new FlowspecActivator(fs_context);
+ final SimpleFlowspecExtensionProviderContext fsContext = new SimpleFlowspecExtensionProviderContext();
+ final FlowspecActivator flowspecActivator = new FlowspecActivator(fsContext);
final org.opendaylight.protocol.bgp.flowspec.BGPActivator flowspecBGPActivator = new org.opendaylight.protocol.bgp.flowspec.BGPActivator(flowspecActivator);
flowspecBGPActivator.start(ctx);