bgpBuilder.setNeighbors(new NeighborsBuilder().build());
bgpBuilder.setPeerGroups(new PeerGroupsBuilder().setPeerGroup(Collections.singletonList(APP_PEER_GROUP)).build());
final Global global = new GlobalBuilder()
- .setAfiSafis(new AfiSafisBuilder().setAfiSafi(OpenConfigUtil.toAfiSafis(config.getTableTypes())).build())
+ .setAfiSafis(new AfiSafisBuilder().setAfiSafi(OpenConfigUtil.toAfiSafis(config.getTableTypes(),
+ (afiSafi, tableType) -> OpenConfigUtil.toGlobalAfiSafiMultiPath(afiSafi, tableType, config.getPathSelectionModes()))).build())
.setConfig(new ConfigBuilder()
.setAs(config.getLocalAs())
.setRouterId(config.getBgpRibId()).build()).build();
.build())
.setAfiSafis(
new org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.neighbor.group.AfiSafisBuilder()
- .setAfiSafi(OpenConfigUtil.toAfiSafis(config.getAdvertizedTables()))
+ .setAfiSafi(OpenConfigUtil.toAfiSafis(config.getAdvertizedTables(),
+ (afiSAfi, tableType) -> OpenConfigUtil.toNeigborAfiSafiMultiPath(afiSAfi, tableType, config.getAddPathCapabilities())))
.build())
.setTimers(new TimersBuilder().setConfig(
new org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.neighbor.group.timers.ConfigBuilder()
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableMap.Builder;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.List;
import java.util.Map;
+import java.util.function.BiFunction;
+import org.opendaylight.protocol.bgp.mode.api.PathSelectionMode;
+import org.opendaylight.protocol.bgp.mode.impl.add.n.paths.AddPathBestNPathSelection;
import org.opendaylight.protocol.bgp.parser.BgpTableTypeImpl;
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.multiprotocol.rev151009.bgp.use.multiple.paths.UseMultiplePathsBuilder;
+import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.multiprotocol.rev151009.bgp.use.multiple.paths.use.multiple.paths.ConfigBuilder;
+import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.multiprotocol.rev151009.bgp.use.multiple.paths.use.multiple.paths.EbgpBuilder;
+import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.multiprotocol.rev151009.bgp.use.multiple.paths.use.multiple.paths.IbgpBuilder;
+import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.AfiSafi1;
+import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.AfiSafi1Builder;
+import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.AfiSafi2;
+import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.AfiSafi2Builder;
import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.top.Bgp;
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.opendaylight.params.xml.ns.yang.bgp.linkstate.rev150210.LinkstateAddressFamily;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev150210.LinkstateSubsequentAddressFamily;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev130919.BgpTableType;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev130919.mp.capabilities.add.path.capability.AddressFamilies;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev150930.Ipv4Flow;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev150930.Ipv6Flow;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev150930.Linkstate;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.rib.TablesKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.Ipv4AddressFamily;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.Ipv6AddressFamily;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.MplsLabeledVpnSubsequentAddressFamily;
return Optional.fromNullable(TABLETYPE_TO_AFISAFI.get(tableType));
}
- public static List<AfiSafi> toAfiSafis(final List<BgpTableType> advertizedTables) {
+ public static List<AfiSafi> toAfiSafis(final List<BgpTableType> advertizedTables, final BiFunction<AfiSafi, BgpTableType, AfiSafi> function) {
final List<AfiSafi> afiSafis = new ArrayList<>(advertizedTables.size());
for (final BgpTableType tableType : advertizedTables) {
- final Optional<AfiSafi> afiSafi = toAfiSafi(new BgpTableTypeImpl(tableType.getAfi(), tableType.getSafi()));
- if (afiSafi.isPresent()) {
- afiSafis.add(afiSafi.get());
+ final Optional<AfiSafi> afiSafiMaybe = toAfiSafi(new BgpTableTypeImpl(tableType.getAfi(), tableType.getSafi()));
+ if (afiSafiMaybe.isPresent()) {
+ final AfiSafi afiSafi = function.apply(afiSafiMaybe.get(), tableType);
+ afiSafis.add(afiSafi);
}
}
return afiSafis;
public static String getModuleName(final String provider) {
return provider.substring(provider.lastIndexOf('=') + 2, provider.length() - 2);
}
+
+ public static AfiSafi toNeigborAfiSafiMultiPath(final AfiSafi afiSafi, final BgpTableType tableType, final Collection<AddressFamilies> addPathCapabilities) {
+ final java.util.Optional<AddressFamilies> addPathMayBe = addPathCapabilities.stream().filter(
+ af -> af.getAfi() == tableType.getAfi() && af.getSafi() == tableType.getSafi()).findFirst();
+ if (addPathMayBe.isPresent()) {
+ final AfiSafi2 afiSafi3 = new AfiSafi2Builder().setUseMultiplePaths(
+ new org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.multiprotocol.rev151009.bgp.use.multiple.paths.neighbor.UseMultiplePathsBuilder().setConfig(
+ new org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.multiprotocol.rev151009.bgp.use.multiple.paths.neighbor.use.multiple.paths.ConfigBuilder()
+ .setEnabled(true).build()).build()).build();
+ return new AfiSafiBuilder(afiSafi).addAugmentation(AfiSafi2.class, afiSafi3).build();
+ }
+ return afiSafi;
+ }
+
+ public static AfiSafi toGlobalAfiSafiMultiPath(final AfiSafi afiSafi, final BgpTableType tableType, final Map<TablesKey, PathSelectionMode> pathSelectionModes) {
+ final PathSelectionMode pathSelection = pathSelectionModes.get(new TablesKey(tableType.getAfi(), tableType.getSafi()));
+ if (pathSelection == null) {
+ return afiSafi;
+ }
+ final Long maxPaths;
+ if (pathSelection instanceof AddPathBestNPathSelection) {
+ maxPaths = ((AddPathBestNPathSelection) pathSelection).getNBestPaths();
+ } else {
+ maxPaths = null;
+ }
+ final AfiSafi1 afiSafi1 = new AfiSafi1Builder().setUseMultiplePaths(
+ new UseMultiplePathsBuilder().setConfig(new ConfigBuilder().setEnabled(true).build())
+ .setEbgp(maxPaths != null ? new EbgpBuilder().setConfig(
+ new org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.multiprotocol.rev151009.bgp.use.multiple.paths.use.multiple.paths.ebgp.ConfigBuilder()
+ .setMaximumPaths(maxPaths)
+ .build()).build() : null)
+ .setIbgp(maxPaths != null ? new IbgpBuilder().setConfig(
+ new org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.multiprotocol.rev151009.bgp.use.multiple.paths.use.multiple.paths.ibgp.ConfigBuilder()
+ .setMaximumPaths(maxPaths).build()).build() : null).build()).build();
+ return new AfiSafiBuilder(afiSafi).addAugmentation(AfiSafi1.class, afiSafi1).build();
+ }
}
public void testApply() {
final Bgp bgp = this.globalProvider.apply(new BGPRibInstanceConfiguration(new InstanceConfigurationIdentifier("instanceName"), new AsNumber(1L),
new Ipv4Address("1.2.3.4"), null,
- Lists.<BgpTableType>newArrayList(new BgpTableTypeImpl(LinkstateAddressFamily.class, LinkstateSubsequentAddressFamily.class))));
+ Lists.<BgpTableType>newArrayList(new BgpTableTypeImpl(LinkstateAddressFamily.class, LinkstateSubsequentAddressFamily.class)), Collections.emptyMap()));
final BgpBuilder bgpBuilder = new BgpBuilder();
bgpBuilder.setNeighbors(new NeighborsBuilder().build());
bgpBuilder.setPeerGroups(new PeerGroupsBuilder().setPeerGroup(
import com.google.common.base.Optional;
import com.google.common.collect.Lists;
import java.math.BigDecimal;
+import java.util.Collections;
import java.util.List;
import org.junit.Before;
import org.junit.Test;
private BGPPeerInstanceConfiguration createConfiguration(final InstanceConfigurationIdentifier confId, final IpAddress ip, final PortNumber port,
final short holdTimer, final PeerRole role, final boolean active, final List<BgpTableType> advertized, final AsNumber as, final Optional<Rfc2385Key> passwd) {
- return new BGPPeerInstanceConfiguration(confId, ip, port, holdTimer, role, active, advertized, as, passwd);
+ return new BGPPeerInstanceConfiguration(confId, ip, port, holdTimer, role, active, advertized, as, passwd, Collections.emptyList());
}
private Neighbor createNeighbor(final List<AfiSafi> families, final IpAddress ip, final String passwd, final AsNumber as, final PeerType peerType, final PeerRole role, final short timer, final boolean passive) {
import static org.junit.Assert.assertEquals;
import static org.opendaylight.protocol.bgp.openconfig.impl.util.OpenConfigUtil.getModuleName;
import static org.opendaylight.protocol.bgp.openconfig.impl.util.OpenConfigUtil.toAfiSafi;
+
import com.google.common.collect.Lists;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.util.List;
import org.junit.Assert;
import org.junit.Test;
+import org.opendaylight.protocol.bgp.mode.impl.add.all.paths.AllPathSelection;
+import org.opendaylight.protocol.bgp.mode.impl.add.n.paths.AddPathBestNPathSelection;
import org.opendaylight.protocol.bgp.parser.BgpTableTypeImpl;
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.multiprotocol.rev151009.bgp.use.multiple.paths.UseMultiplePaths;
+import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.AfiSafi1;
+import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.AfiSafi2;
import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.types.rev151009.IPV4UNICAST;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev130919.BgpTableType;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev130919.SendReceive;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev130919.mp.capabilities.add.path.capability.AddressFamiliesBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.rib.TablesKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.Ipv4AddressFamily;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.UnicastSubsequentAddressFamily;
public class OpenConfigUtilTest {
+ private static final BgpTableType BGP_TABLE_TYPE_IPV4 = new BgpTableTypeImpl(Ipv4AddressFamily.class, UnicastSubsequentAddressFamily.class);
+ private static final AfiSafi AFISAFI_IPV4 = new AfiSafiBuilder().setAfiSafiName(IPV4UNICAST.class).build();
private static final String TEST = "/modules/module[type='dom-concurrent-data-broker'][name='concurrent-data-broker']";
@Test
@Test
public void testToAfiSafi() {
- assertEquals(toAfiSafi(new BgpTableTypeImpl(Ipv4AddressFamily.class, UnicastSubsequentAddressFamily.class)).get(),
- new AfiSafiBuilder().setAfiSafiName(IPV4UNICAST.class).build());
+ assertEquals(toAfiSafi(BGP_TABLE_TYPE_IPV4).get(),
+ AFISAFI_IPV4);
}
@Test
public void testToAfiSafis() {
- final List<AfiSafi> afiSafis = OpenConfigUtil.toAfiSafis(Lists.<BgpTableType>newArrayList(new BgpTableTypeImpl(Ipv4AddressFamily.class, UnicastSubsequentAddressFamily.class)));
- Assert.assertEquals(Collections.singletonList(new AfiSafiBuilder().setAfiSafiName(IPV4UNICAST.class).build()), afiSafis);
+ final List<AfiSafi> afiSafis = OpenConfigUtil.toAfiSafis(Lists.<BgpTableType>newArrayList(BGP_TABLE_TYPE_IPV4),
+ (afisafi, tableType) -> afisafi);
+ Assert.assertEquals(Collections.singletonList(AFISAFI_IPV4), afiSafis);
+ }
+
+ @Test
+ public void toNeigborAfiSafiMultiPathMatch() {
+ final AfiSafi afiSafi = OpenConfigUtil.toNeigborAfiSafiMultiPath(AFISAFI_IPV4, BGP_TABLE_TYPE_IPV4,
+ Lists.newArrayList(new AddressFamiliesBuilder(BGP_TABLE_TYPE_IPV4).setSendReceive(SendReceive.Both).build()));
+ Assert.assertTrue(afiSafi.getAugmentation(AfiSafi2.class).getUseMultiplePaths().getConfig().isEnabled());
+ }
+
+ @Test
+ public void toNeigborAfiSafiMultiPathNoMatch() {
+ final AfiSafi afiSafi = OpenConfigUtil.toNeigborAfiSafiMultiPath(AFISAFI_IPV4, BGP_TABLE_TYPE_IPV4, Collections.emptyList());
+ Assert.assertEquals(AFISAFI_IPV4, afiSafi);
+ }
+
+ @Test
+ public void toGlobalAfiSafiMultiPathNPaths() {
+ final AfiSafi afiSafi = OpenConfigUtil.toGlobalAfiSafiMultiPath(AFISAFI_IPV4, BGP_TABLE_TYPE_IPV4,
+ Collections.singletonMap(new TablesKey(Ipv4AddressFamily.class, UnicastSubsequentAddressFamily.class), new AddPathBestNPathSelection(5L)));
+ final UseMultiplePaths multiplePaths = afiSafi.getAugmentation(AfiSafi1.class).getUseMultiplePaths();
+ Assert.assertTrue(multiplePaths.getConfig().isEnabled());
+ Assert.assertEquals(5, multiplePaths.getIbgp().getConfig().getMaximumPaths().intValue());
+ Assert.assertEquals(5, multiplePaths.getEbgp().getConfig().getMaximumPaths().intValue());
+ }
+
+ @Test
+ public void toGlobalAfiSafiMultiPathAllPaths() {
+ final AfiSafi afiSafi = OpenConfigUtil.toGlobalAfiSafiMultiPath(AFISAFI_IPV4, BGP_TABLE_TYPE_IPV4,
+ Collections.singletonMap(new TablesKey(Ipv4AddressFamily.class, UnicastSubsequentAddressFamily.class), new AllPathSelection()));
+ final UseMultiplePaths multiplePaths = afiSafi.getAugmentation(AfiSafi1.class).getUseMultiplePaths();
+ Assert.assertTrue(multiplePaths.getConfig().isEnabled());
+ Assert.assertNull(multiplePaths.getIbgp());
+ Assert.assertNull(multiplePaths.getEbgp());
+ }
+
+ @Test
+ public void toGlobalAfiSafiMultiPathNoMatch() {
+ final AfiSafi afiSafi = OpenConfigUtil.toGlobalAfiSafiMultiPath(AFISAFI_IPV4, BGP_TABLE_TYPE_IPV4,
+ Collections.emptyMap());
+ Assert.assertEquals(AFISAFI_IPV4, afiSafi);
}
@Test(expected=UnsupportedOperationException.class)
<groupId>${project.groupId}</groupId>
<artifactId>bgp-rib-api</artifactId>
</dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>bgp-path-selection-mode</artifactId>
+ </dependency>
<dependency>
<groupId>org.opendaylight.mdsal.model</groupId>
<artifactId>ietf-inet-types-2013-07-15</artifactId>
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.PortNumber;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev130919.BgpTableType;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev130919.mp.capabilities.add.path.capability.AddressFamilies;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.PeerRole;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.tcpmd5.cfg.rev140427.Rfc2385Key;
private final List<BgpTableType> advertizedTables;
private final AsNumber asNumber;
private final Optional<Rfc2385Key> password;
+ private final List<AddressFamilies> addPathCapabilities;
public BGPPeerInstanceConfiguration(final InstanceConfigurationIdentifier identifier, final IpAddress host, final PortNumber port, final short holdTimer, final PeerRole peerRole,
- final boolean active, final List<BgpTableType> advertizedTables, final AsNumber asNumber, final Optional<Rfc2385Key> password) {
+ final boolean active, final List<BgpTableType> advertizedTables, final AsNumber asNumber, final Optional<Rfc2385Key> password,
+ final List<AddressFamilies> addPathCapabilities) {
super(identifier);
+ this.addPathCapabilities = addPathCapabilities;
this.host = Preconditions.checkNotNull(host);
this.port = Preconditions.checkNotNull(port);
this.holdTimer = Preconditions.checkNotNull(holdTimer);
return password;
}
+ public List<AddressFamilies> getAddPathCapabilities() {
+ return addPathCapabilities;
+ }
+
}
import com.google.common.base.Optional;
import com.google.common.base.Preconditions;
import java.util.List;
+import java.util.Map;
+import org.opendaylight.protocol.bgp.mode.api.PathSelectionMode;
import org.opendaylight.protocol.bgp.openconfig.spi.InstanceConfigurationIdentifier;
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;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev130919.BgpTableType;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.rib.TablesKey;
/**
* POJO for holding BGP RIB module instance configuration
private final Ipv4Address bgpRibId;
private final Ipv4Address clusterId;
private final List<BgpTableType> tableTypes;
+ private final Map<TablesKey, PathSelectionMode> pathSelectionModes;
public BGPRibInstanceConfiguration(final InstanceConfigurationIdentifier identifier, final AsNumber localAs, final Ipv4Address bgpRibId,
- final Ipv4Address clusterId, final List<BgpTableType> tableTypes) {
+ final Ipv4Address clusterId, final List<BgpTableType> tableTypes, final Map<TablesKey, PathSelectionMode> pathSelectionModes) {
super(identifier);
+ this.pathSelectionModes = pathSelectionModes;
this.localAs = Preconditions.checkNotNull(localAs);
this.bgpRibId = Preconditions.checkNotNull(bgpRibId);
this.clusterId = clusterId;
return tableTypes;
}
+ public Map<TablesKey, PathSelectionMode> getPathSelectionModes() {
+ return pathSelectionModes;
+ }
+
}
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.PortNumber;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev130919.BgpTableType;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.PeerRole;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.tcpmd5.cfg.rev140427.Rfc2385Key;
private static final AsNumber AS_NUMBER = new AsNumber(72L);
private final BGPPeerInstanceConfiguration config = new BGPPeerInstanceConfiguration(INSTANCE_NAME, HOST, PORT, HOLD_TIMER, PeerRole.Ibgp,
- Boolean.FALSE, Collections.<BgpTableType>emptyList(), AS_NUMBER, Optional.<Rfc2385Key>absent());
+ Boolean.FALSE, Collections.emptyList(), AS_NUMBER, Optional.<Rfc2385Key>absent(), Collections.emptyList());
@Test
public final void testGetHost() {
assertEquals(INSTANCE_NAME, config.getIdentifier());
}
+ @Test
+ public final void testGetAddPathCapabilities() {
+ assertEquals(Collections.EMPTY_LIST, config.getAddPathCapabilities());
+ }
+
}
import org.opendaylight.protocol.bgp.openconfig.spi.InstanceConfigurationIdentifier;
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;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev130919.BgpTableType;
;
private static final AsNumber AS_NUMBER = new AsNumber(72L);
private final BGPRibInstanceConfiguration config = new BGPRibInstanceConfiguration(INSTANCE_NAME, AS_NUMBER, BGP_ID, CLUSTER_ID,
- Collections.<BgpTableType>emptyList());
+ Collections.emptyList(), Collections.emptyMap());
@Test
public final void testGetLocalAs() {
assertEquals(INSTANCE_NAME, config.getIdentifier());
}
+ @Test
+ public final void testGetPathSelectionModes() {
+ assertEquals(Collections.EMPTY_MAP, config.getPathSelectionModes());
+ }
+
}
@Override
public RouteEntry createRouteEntry(final boolean isComplex) {
if (isComplex) {
- return new ComplexRouteEntry(this.nBestPaths);
+ return new ComplexRouteEntry(this.getNBestPaths());
} else {
- return new SimpleRouteEntry(this.nBestPaths);
+ return new SimpleRouteEntry(this.getNBestPaths());
}
}
+
+ public Long getNBestPaths() {
+ return nBestPaths;
+ }
}
\ No newline at end of file
this.bgpPeerInstanceConfiguration = new BGPPeerInstanceConfiguration(identifier, Rev130715Util.getIpvAddress(getNormalizedHost()),
Rev130715Util.getPort(getPort().getValue()), getHoldtimer(), getPeerRole(), getInitiateConnection(),
getAdvertizedTableDependency(), Rev130715Util.getASNumber(getAsOrDefault(getRibDependency()).getValue()),
- getOptionaPassword(getPassword()));
+ getOptionaPassword(getPassword()), getAddPathDependency());
}
@Override
final org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.AsNumber as = Rev130715Util.getASNumber(getLocalAs());
final Ipv4Address bgpRibId = Rev130715Util.getIpv4Address(getBgpRibId());
final Ipv4Address clusterId = Rev130715Util.getIpv4Address(getClusterId());
- this.bgpRibConfig = new BGPRibInstanceConfiguration(identifier, as, bgpRibId, clusterId, tableDependency);
+ this.bgpRibConfig = new BGPRibInstanceConfiguration(identifier, as, bgpRibId, clusterId, tableDependency,
+ mapBestPathSelectionStrategyByFamily(getRibPathSelectionModeDependency()));
}
@Override