use of org.opendaylight.yang.gen.v1.urn.ericsson.params.xml.ns.yang.ebgp.rev150901.bgp.networkscontainer.NetworksKey in project netvirt by opendaylight.
the class VpnSubnetRouteHandlerTest method setupMocks.
private void setupMocks() {
nexthopIp = "10.1.1.25";
idKey = "100:1.10.1.1.24";
poolName = "vpnservices";
elanTag = 2L;
longId = Long.valueOf("100");
nodeConnectorId = buildNodeConnectorId(dpId, 2L);
ipAddress = IpAddressBuilder.getDefaultInstance(nexthopIp);
vpnIntfaces = new VpnInterfacesBuilder().setInterfaceName(interfaceName).withKey(new VpnInterfacesKey(interfaceName)).build();
List<VpnInterfaces> vpnInterfaces = new ArrayList<>();
final List<SubnetToDpn> subToDpn = new ArrayList<>();
final List<Uuid> portList = new ArrayList<>();
final List<PortOpDataEntry> listPortOpDataEntry = new ArrayList<>();
final List<TunnelEndPoints> tunnelEndPoints = new ArrayList<>();
List<Uuid> subnetIdList = new ArrayList<>();
subnetIdList.add(subnetId);
vpnInterfaces.add(vpnIntfaces);
lowerLayerIfList.add(nodeConnectorId.getValue());
portOp = new PortOpDataEntryBuilder().setDpnId(dpId).withKey(new PortOpDataEntryKey(tenantId.getValue())).setSubnetIds(subnetIdList).setPortId(tenantId.getValue()).build();
subnetToDpn = new SubnetToDpnBuilder().setDpnId(dpId).withKey(new SubnetToDpnKey(dpId)).setVpnInterfaces(vpnInterfaces).build();
allocateIdOutput = new AllocateIdOutputBuilder().setIdValue(longId).build();
allocateIdInput = new AllocateIdInputBuilder().setPoolName(poolName).setIdKey(idKey).build();
subToDpn.add(subnetToDpn);
portList.add(portId);
listPortOpDataEntry.add(portOp);
org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.InterfaceBuilder ifaceBuilder = new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.InterfaceBuilder();
ifaceBuilder.setLowerLayerIf(lowerLayerIfList).setType(L2vlan.class).setAdminStatus(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface.AdminStatus.Up).setOperStatus(Interface.OperStatus.Up).setIfIndex(100).withKey(new InterfaceKey(interfaceName)).setName(interfaceName).setPhysAddress(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.PhysAddress.getDefaultInstance("AA:AA:AA:AA:AA:AA"));
stateInterface = ifaceBuilder.build();
subnetOp = new SubnetOpDataEntryBuilder().setElanTag(elanTag).setNhDpnId(dpId).setSubnetCidr(subnetIp).setSubnetId(subnetId).withKey(new SubnetOpDataEntryKey(subnetId)).setVpnName(interfaceName).setVrfId(primaryRd).setSubnetToDpn(subToDpn).setRouteAdvState(TaskState.Advertised).build();
vpnInstance = new VpnInstanceBuilder().setVpnId(elanTag).setVpnInstanceName(interfaceName).setVrfId(interfaceName).withKey(new VpnInstanceKey(interfaceName)).build();
subnetmap = new SubnetmapBuilder().setSubnetIp(subnetIp).setId(subnetId).setNetworkId(portId).withKey(new SubnetmapKey(subnetId)).setRouterId(portId).setVpnId(subnetId).setTenantId(tenantId).setPortList(portList).build();
portOpData = new PortOpDataBuilder().setPortOpDataEntry(listPortOpDataEntry).build();
dpntePsInfo = new DPNTEPsInfoBuilder().setDPNID(dpId).setUp(true).withKey(new DPNTEPsInfoKey(dpId)).setTunnelEndPoints(tunnelEndPoints).build();
tunlEndPts = new TunnelEndPointsBuilder().setInterfaceName(interfaceName).setIpAddress(ipAddress).build();
tunnelEndPoints.add(tunlEndPts);
vpnInstnce = new org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.l3vpn.rev200204.vpn.instances.VpnInstanceBuilder().withKey(new org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.l3vpn.rev200204.vpn.instances.VpnInstanceKey(interfaceName)).setVpnInstanceName(interfaceName).setRouteDistinguisher(routeDistinguishers).build();
networks = new NetworksBuilder().setId(portId).withKey(new NetworksKey(portId)).build();
doReturn(mockReadTx).when(dataBroker).newReadOnlyTransaction();
doReturn(mockWriteTx).when(dataBroker).newWriteOnlyTransaction();
doReturn(FluentFutures.immediateNullFluentFuture()).when(mockWriteTx).commit();
}
use of org.opendaylight.yang.gen.v1.urn.ericsson.params.xml.ns.yang.ebgp.rev150901.bgp.networkscontainer.NetworksKey in project netvirt by opendaylight.
the class NeutronvpnNatManager method addExternalNetwork.
public void addExternalNetwork(Network net) {
Uuid extNetId = net.getUuid();
// Create and add Networks object for this External Network to the ExternalNetworks list
InstanceIdentifier<Networks> netsIdentifier = InstanceIdentifier.builder(ExternalNetworks.class).child(Networks.class, new NetworksKey(extNetId)).build();
try {
LOG.trace(" Creating/Updating a new Networks node {}", extNetId.getValue());
Optional<Networks> optionalNets = SingleTransactionDataBroker.syncReadOptional(dataBroker, LogicalDatastoreType.CONFIGURATION, netsIdentifier);
if (optionalNets.isPresent()) {
LOG.error("External Network {} already detected to be present", extNetId.getValue());
return;
}
ProviderTypes provType = NeutronvpnUtils.getProviderNetworkType(net);
if (provType == null) {
LOG.error("Unable to get Network Provider Type for network {}", extNetId);
return;
}
NetworksBuilder builder = null;
builder = new NetworksBuilder().withKey(new NetworksKey(extNetId)).setId(extNetId);
builder.setVpnid(neutronvpnUtils.getVpnForNetwork(extNetId));
builder.setRouterIds(new ArrayList<>());
builder.setProviderNetworkType(provType);
Networks networkss = builder.build();
// Add Networks object to the ExternalNetworks list
LOG.trace("Creating externalnetworks {}", networkss);
SingleTransactionDataBroker.syncWrite(dataBroker, LogicalDatastoreType.CONFIGURATION, netsIdentifier, networkss);
LOG.trace("Wrote externalnetwork successfully to CONFIG Datastore");
} catch (TransactionCommitFailedException | ExecutionException | InterruptedException ex) {
LOG.error("Creation of External Network {} failed", extNetId.getValue(), ex);
}
}
use of org.opendaylight.yang.gen.v1.urn.ericsson.params.xml.ns.yang.ebgp.rev150901.bgp.networkscontainer.NetworksKey in project netvirt by opendaylight.
the class NeutronvpnNatManager method removeExternalNetworkFromRouter.
public void removeExternalNetworkFromRouter(Uuid origExtNetId, Router update, List<ExternalFixedIps> origExtFixedIps) {
Uuid routerId = update.getUuid();
// Remove the router to the ExtRouters list
removeExternalRouter(update);
// Remove router entry from floating-ip-info list
removeRouterFromFloatingIpInfo(update, dataBroker);
// Remove the router from External Subnets
removeRouterFromExternalSubnets(routerId, origExtNetId, origExtFixedIps);
// Remove the router from the ExternalNetworks list
InstanceIdentifier<Networks> netsIdentifier = InstanceIdentifier.builder(ExternalNetworks.class).child(Networks.class, new NetworksKey(origExtNetId)).build();
Optional<Networks> optionalNets = null;
try {
optionalNets = SingleTransactionDataBroker.syncReadOptional(dataBroker, LogicalDatastoreType.CONFIGURATION, netsIdentifier);
} catch (ExecutionException | InterruptedException ex) {
LOG.error("removeExternalNetworkFromRouter: Failed to remove provider network {} from router {}", origExtNetId.getValue(), routerId.getValue(), ex);
return;
}
if (!optionalNets.isPresent()) {
LOG.error("removeExternalNetworkFromRouter: Provider Network {} not present in the NVPN datamodel", origExtNetId.getValue());
return;
}
Networks nets = optionalNets.get();
try {
NetworksBuilder builder = new NetworksBuilder(nets);
List<Uuid> rtrList = new ArrayList<>();
rtrList = builder.getRouterIds() != null ? new ArrayList<>(builder.getRouterIds()) : rtrList;
if (rtrList != null) {
rtrList.remove(routerId);
builder.setRouterIds(rtrList);
Networks networkss = builder.build();
SingleTransactionDataBroker.syncWrite(dataBroker, LogicalDatastoreType.CONFIGURATION, netsIdentifier, networkss);
LOG.trace("removeExternalNetworkFromRouter: Remove router {} from External Networks node {}", routerId, origExtNetId.getValue());
}
} catch (TransactionCommitFailedException ex) {
LOG.error("removeExternalNetworkFromRouter: Failed to remove provider network {} from router {}", origExtNetId.getValue(), routerId.getValue(), ex);
}
}
use of org.opendaylight.yang.gen.v1.urn.ericsson.params.xml.ns.yang.ebgp.rev150901.bgp.networkscontainer.NetworksKey in project netvirt by opendaylight.
the class BgpConfigurationManager method replay.
@SuppressWarnings("checkstyle:IllegalCatch")
public synchronized boolean replay() throws InterruptedException, TimeoutException, ExecutionException {
boolean replaySucceded = true;
boolean doRouteSync = false;
String host = getConfigHost();
int port = getConfigPort();
LOG.error("connecting to bgp host {} ", host);
boolean res = bgpRouter.connect(host, port);
if (!res) {
LOG.error("Cannot connect to BGP config server at {} {}", host, port);
return replaySucceded;
}
config = getConfig();
if (config == null) {
LOG.error("bgp config is empty nothing to push to bgp");
return replaySucceded;
}
BgpRouter br = bgpRouter;
AsId asId = config.getAsId();
if (asId == null) {
LOG.error("bgp as-id is null");
return replaySucceded;
}
long asNum = asId.getLocalAs().toJava();
IpAddress routerId = asId.getRouterId();
String rid = routerId == null ? "" : routerId.stringValue();
int stalepathTime = (int) getStalePathtime(bgpGrRestartTime, config.getAsId());
boolean announceFbit = true;
boolean replayDone = false;
final int numberOfStartBgpRetries = 3;
RetryOnException startBgpRetry = new RetryOnException(numberOfStartBgpRetries);
do {
try {
LOG.debug("Replaying BGPConfig ");
br.startBgp(asNum, rid, bgpKaTime, bgpHoldTime, stalepathTime, announceFbit);
LOG.debug("Replay BGPConfig successful");
replayDone = true;
break;
} catch (BgpRouterException bre) {
if (bre.getErrorCode() == BgpRouterException.BGP_ERR_ACTIVE) {
LOG.debug("Starting the routesync for exception", bre);
startBgpRetry.errorOccured();
if (!startBgpRetry.shouldRetry()) {
doRouteSync = true;
replayDone = true;
}
} else {
LOG.error("Replay: startBgp() received exception error {} : ", bre.getErrorCode(), bre);
startBgpRetry.errorOccured();
}
} catch (TApplicationException tae) {
if (tae.getType() == BgpRouterException.BGP_ERR_ACTIVE) {
LOG.debug("Starting the routesync for exception", tae);
startBgpRetry.errorOccured();
if (!startBgpRetry.shouldRetry()) {
doRouteSync = true;
replayDone = true;
}
} else if (tae.getType() == BgpRouterException.BGP_ERR_COMMON_FAILURE) {
LOG.debug("Starting the routesync for AS-ID started exception", tae);
startBgpRetry.errorOccured();
if (!startBgpRetry.shouldRetry()) {
doRouteSync = true;
replayDone = true;
}
} else {
LOG.error("Replay: startBgp() received exception type {}: ", tae.getType(), tae);
startBgpRetry.errorOccured();
}
} catch (Exception e) {
// not unusual. We may have restarted & BGP is already on
LOG.error("Replay:startBgp() received exception: ", e);
startBgpRetry.errorOccured();
}
} while (startBgpRetry.shouldRetry());
replaySucceded = replayDone;
startBgpCountersTask();
startBgpAlarmsTask();
/*
* commenting this due to a bug with QBGP. Will uncomment once QBGP fix is done.
* This wont have any functional impacts
*/
// try {
// br.delayEOR(delayEorSeconds);
// } catch (TException | BgpRouterException e) {
// LOG.error("Replay: delayEOR() number of seconds to wait for EOR from ODL:", e);
// }
BfdConfig bfdConfig = bgpUtil.getBfdConfig();
if (bfdConfig != null) {
if (bfdConfig.isBfdEnabled()) {
LOG.debug("Replaying bfd config min-rx {} min-tx {} detect-mul {} mhop {}", bfdConfig.getMinRx(), bfdConfig.getMinTx(), bfdConfig.getDetectMult(), bfdConfig.isMultihop());
try {
br.addBfd(bfdConfig.getDetectMult().intValue(), bfdConfig.getMinRx().intValue(), bfdConfig.getMinTx().intValue(), bfdConfig.isMultihop());
} catch (TApplicationException tae) {
if (tae.getType() == BgpRouterException.BGP_ERR_PEER_EXISTS) {
LOG.debug("Replay:addBfd() received exception", tae);
} else {
LOG.error("Replay:addBfd() received exception", tae);
}
} catch (TException | BgpRouterException e) {
LOG.error("Replay:addBfd() received exception", e);
}
}
}
Map<NeighborsKey, Neighbors> keyNeighborsMap = config.getNeighborsContainer() == null ? null : config.getNeighborsContainer().getNeighbors();
if (keyNeighborsMap != null) {
LOG.error("configuring existing Neighbors present for replay total keyNeighborsMap {}", keyNeighborsMap.values().size());
boolean neighborConfigReplayResult = replayNbrConfig(new ArrayList<Neighbors>(keyNeighborsMap.values()), br);
if (neighborConfigReplayResult == false) {
replaySucceded = false;
}
} else {
LOG.error("no Neighbors present for replay config ");
}
Logging logging = config.getLogging();
if (logging != null) {
try {
br.setLogging(logging.getFile(), logging.getLevel());
} catch (TException | BgpRouterException e) {
LOG.error("Replay:setLogging() received exception", e);
}
}
GracefulRestart gracefulRestart = config.getGracefulRestart();
bgpGrRestartTime = ((gracefulRestart != null) ? gracefulRestart.getStalepathTime().intValue() : bgpGrRestartTime);
try {
br.addGracefulRestart(bgpGrRestartTime);
} catch (Exception e) {
LOG.error("Replay:addGr() received exception: ", e);
}
Map<VrfsKey, Vrfs> keyVrfsMap = config.getVrfsContainer() == null ? null : config.getVrfsContainer().getVrfs();
if (keyVrfsMap == null) {
keyVrfsMap = new HashMap<VrfsKey, Vrfs>();
}
for (Vrfs vrf : keyVrfsMap.values()) {
for (AddressFamiliesVrf adf : vrf.getAddressFamiliesVrf().values()) {
try {
br.addVrf(BgpUtil.getLayerType(adf), vrf.getRd(), vrf.getImportRts(), vrf.getExportRts(), adf.getAfi().toJava(), adf.getSafi().toJava());
} catch (TException | BgpRouterException e) {
LOG.error("Replay:addVrf() received exception", e);
}
}
}
Map<NetworksKey, Networks> keyNetworksMap = config.getNetworksContainer() == null ? null : config.getNetworksContainer().getNetworks();
if (keyNetworksMap != null) {
for (Networks net : keyNetworksMap.values()) {
String rd = net.getRd();
String pfxlen = net.getPrefixLen();
String nh = net.getNexthop().getValue();
Long label = net.getLabel().toJava();
int lbl = label == null ? 0 : label.intValue();
int l3vni = net.getL3vni() == null ? 0 : net.getL3vni().intValue();
int l2vni = net.getL2vni() == null ? 0 : net.getL2vni().intValue();
if (rd == null && lbl > 0) {
// LU prefix is being deleted.
rd = Integer.toString(lbl);
}
BgpControlPlaneType protocolType = net.getBgpControlPlaneType();
int ethernetTag = net.getEthtag().intValue();
String esi = net.getEsi();
String macaddress = net.getMacaddress();
EncapType encapType = net.getEncapType();
String routerMac = net.getRoutermac();
try {
br.addPrefix(rd, pfxlen, nh, lbl, l3vni, l2vni, BgpUtil.convertToThriftProtocolType(protocolType), ethernetTag, esi, macaddress, BgpUtil.convertToThriftEncapType(encapType), routerMac);
} catch (TException | BgpRouterException e) {
LOG.error("Replay:addPfx() received exception", e);
}
}
}
Map<MultipathKey, Multipath> keyMultipathMap = config.getMultipathContainer() == null ? null : config.getMultipathContainer().getMultipath();
if (keyMultipathMap != null) {
for (Multipath multipath : keyMultipathMap.values()) {
if (multipath != null) {
af_afi afi = af_afi.findByValue(multipath.getAfi().intValue());
af_safi safi = af_safi.findByValue(multipath.getSafi().intValue());
try {
if (multipath.isMultipathEnabled()) {
br.enableMultipath(afi, safi);
} else {
br.disableMultipath(afi, safi);
}
} catch (TException | BgpRouterException e) {
LOG.info("Replay:keyMultipathMap() received exception", e);
}
}
}
}
Map<VrfMaxpathKey, VrfMaxpath> keyVrfMaxpathMap = config.getVrfMaxpathContainer() == null ? null : config.getVrfMaxpathContainer().getVrfMaxpath();
if (keyVrfMaxpathMap != null) {
for (VrfMaxpath vrfMaxpath : keyVrfMaxpathMap.values()) {
try {
br.multipaths(vrfMaxpath.getRd(), vrfMaxpath.getMaxpaths().toJava());
} catch (TException | BgpRouterException e) {
LOG.info("Replay:vrfMaxPath() received exception", e);
}
}
}
// send End of Rib Marker to Qthriftd.
final int numberOfEORRetries = 3;
RetryOnException eorRetry = new RetryOnException(numberOfEORRetries);
do {
try {
br.sendEOR();
LOG.debug("Replay sendEOR() successful");
break;
} catch (Exception e) {
eorRetry.errorOccured();
LOG.error("Replay:sedEOR() received exception:", e);
}
} while (eorRetry.shouldRetry());
if (doRouteSync) {
LOG.debug("starting route sync for Thrift BGP_ERR_COMMON_FAILURE exception " + "happened earlier");
doRouteSync();
}
return replaySucceded;
}
use of org.opendaylight.yang.gen.v1.urn.ericsson.params.xml.ns.yang.ebgp.rev150901.bgp.networkscontainer.NetworksKey in project netvirt by opendaylight.
the class Cache method doExecute.
@SuppressWarnings({ "resource", "checkstyle:RegexpSinglelineJava" })
@Override
protected Object doExecute() {
boolean listVrfs = false;
boolean listNets = false;
PrintStream ps = System.out;
if (action != null) {
return usage();
}
PrintStream fileStream = null;
try {
if (ofile != null) {
try {
fileStream = new PrintStream(ofile);
ps = fileStream;
} catch (FileNotFoundException e) {
System.out.println("error: cannot create file " + ofile + "; exception: " + e);
return null;
}
}
if (list != null) {
for (String item : list) {
switch(item) {
case "vrfs":
listVrfs = true;
break;
case "networks":
listNets = true;
break;
default:
System.out.println("error: unknown value for " + LST + ": " + item);
if (fileStream != null) {
fileStream.close();
}
return null;
}
}
}
// we'd normally read this directly from 'config' but
// legacy behaviour forces to check for a connection
// that's initiated by default at startup without
// writing to config.
String configHost = bgpManager.getConfigHost();
int configPort = bgpManager.getConfigPort();
ps.printf("%nConfiguration Server%n\t%s %s%n\t%s %d%n", HTSTR, configHost, PTSTR, configPort);
Bgp config = bgpManager.getConfig();
if (config == null) {
if (fileStream != null) {
fileStream.close();
}
return null;
}
AsId asId = config.getAsId();
if (asId != null) {
Long asNum = asId.getLocalAs().longValue();
IpAddress routerId = asId.getRouterId();
Long spt = asId.getStalepathTime().toJava();
Boolean afb = asId.isAnnounceFbit();
String rid = routerId == null ? "<n/a>" : routerId.stringValue();
// F-bit is always set to ON (hardcoded), in SDN even though the controller is down
// forwarding state shall be retained.
String bit = "ON";
GracefulRestart gracefulRestart = config.getGracefulRestart();
if (gracefulRestart != null) {
spt = gracefulRestart.getStalepathTime().toJava();
}
ps.printf("%nBGP Router%n");
ps.printf("\t%-15s %s%n\t%-15s %s%n\t%-15s %s%n\t%-15s %s%n", ASSTR, asNum.toString(), RISTR, rid, SPSTR, spt == null || spt == 0 ? "default" : spt.toString(), FBSTR, bit);
}
Logging logging = config.getLogging();
if (logging != null) {
ps.printf("\t%-15s %s%n\t%-15s %s%n", LFSTR, logging.getFile(), LLSTR, logging.getLevel());
}
Map<NeighborsKey, Neighbors> keyNeighborsMap = (config.getNeighborsContainer() == null) ? null : config.getNeighborsContainer().getNeighbors();
if (keyNeighborsMap != null) {
ps.printf("%nNeighbors%n");
for (Neighbors nbr : keyNeighborsMap.values()) {
ps.printf("\t%s%n\t\t%-16s %d%n", nbr.getAddress().getValue(), ASSTR, nbr.getRemoteAs());
EbgpMultihop en = nbr.getEbgpMultihop();
if (en != null) {
ps.printf("\t\t%-16s %d%n", EBSTR, en.getNhops().intValue());
}
UpdateSource us = nbr.getUpdateSource();
if (us != null) {
ps.printf("\t\t%-16s %s%n", USSTR, us.getSourceIp().getValue());
}
ps.printf("\t\t%-16s IPv4-Labeled-VPN", AFSTR);
Map<AddressFamiliesKey, AddressFamilies> keyAddressFamiliesMap = nbr.getAddressFamilies();
if (keyAddressFamiliesMap != null) {
for (AddressFamilies af : keyAddressFamiliesMap.values()) {
// Should not print "unknown" in vpnv4 case
if (!(af.getSafi().intValue() == 5 && af.getAfi().intValue() == 1)) {
if (af.getSafi().intValue() == 4 && af.getAfi().intValue() == 1) {
ps.printf(" %s", "IPv4-Labeled-Unicast");
} else if (af.getSafi().intValue() == 5 && af.getAfi().intValue() == 2) {
ps.printf(" %s", "IPv6-Labeled-VPN");
} else if (af.getSafi().intValue() == 6) {
ps.printf(" %s", "Ethernet-VPN");
} else {
ps.printf(" %s", "Unknown");
}
}
}
}
ps.printf("%n");
}
}
if (listVrfs) {
Map<VrfsKey, Vrfs> keyVrfsMap = (config.getVrfsContainer() == null) ? null : config.getVrfsContainer().getVrfs();
if (keyVrfsMap != null) {
ps.printf("%nVRFs%n");
for (Vrfs vrf : keyVrfsMap.values()) {
ps.printf("\t%s%n", vrf.getRd());
ps.printf("\t\t%s ", IRSTR);
for (String rt : vrf.getImportRts()) {
ps.printf("%s ", rt);
}
ps.printf("%n\t\t%s ", ERSTR);
for (String rt : vrf.getExportRts()) {
ps.printf("%s ", rt);
}
for (AddressFamiliesVrf adf : vrf.getAddressFamiliesVrf().values()) {
ps.printf("%n\t\tafi %d safi %d", adf.getAfi(), adf.getSafi());
}
ps.printf("%n");
}
}
}
if (listNets) {
Map<NetworksKey, Networks> keyNetworksMap = (config.getNetworksContainer() == null) ? null : config.getNetworksContainer().getNetworks();
if (keyNetworksMap != null) {
ps.printf("%nNetworks%n");
for (Networks net : keyNetworksMap.values()) {
String rd = net.getRd();
String pfxlen = net.getPrefixLen();
String nh = net.getNexthop().getValue();
int label = net.getLabel().intValue();
ps.printf("\t%s%n\t\t%-7s %s%n\t\t%-7s %s%n\t\t%-7s %d%n", pfxlen, RDSTR, rd, NHSTR, nh, LBSTR, label);
}
}
}
Map<MultipathKey, Multipath> keyMultipathMap = config.getMultipathContainer() == null ? null : config.getMultipathContainer().getMultipath();
Map<VrfMaxpathKey, VrfMaxpath> keyVrfMaxpathMap = config.getVrfMaxpathContainer() == null ? null : config.getVrfMaxpathContainer().getVrfMaxpath();
if (keyMultipathMap != null) {
ps.printf("%nMultipath%n");
for (Multipath multipath : keyMultipathMap.values()) {
int afi = multipath.getAfi().intValue();
int safi = multipath.getSafi().intValue();
Boolean enabled = multipath.isMultipathEnabled();
if (enabled) {
if (afi == 1 && safi == 5) {
ps.printf("\t%-16s %s%n%n", AFSTR, "vpnv4");
} else if (afi == 2 && safi == 5) {
ps.printf("\t%-16s %s%n%n", AFSTR, "vpnv6");
} else if (afi == 3 && safi == 6) {
ps.printf("\t%-16s %s%n%n", AFSTR, "evpn");
} else {
ps.printf("\t%-16s %s%n%n", AFSTR, "Unknown");
}
if (keyVrfMaxpathMap != null) {
ps.printf("\t%-16s %s%n", RDSTR, MPSTR);
for (VrfMaxpath vrfMaxpath : keyVrfMaxpathMap.values()) {
String rd = vrfMaxpath.getRd();
int maxpath = vrfMaxpath.getMaxpaths().toJava();
ps.printf("\t%-16s %d%n", rd, maxpath);
}
}
}
}
}
} finally {
if (fileStream != null) {
fileStream.close();
}
}
return null;
}
Aggregations