Issue 1:
Modified BGP-Util MD-SAL read, not to supress the exception.
As this exception is used for BGP configuration retry mechanism.
Issue 2:
BGP stale path timer will be shown as default.
Issue 3:
BGP replay mechanism: Publishes internal VRF's & prefixes before
neighborship configuration.
6windQuagga EOR(End of Rib) marker: EOR Marker sent immediately after the
neighborship establishment.
So in case of BGP-restart scenario, 6windQuagga sends EOR immediately
after the session establishment,
in this scenario, the prefixes which are published earlier (before
restart) will be purged till CSC
replays them. Due to this there will be impact in datapath between
local-VM's to external DC-Gwy.
Change-Id: I6fababd4f8b5f8a96bc2f1e72fefdaf089f75d50
Signed-off-by: Vyshakh Krishnan CH <vyshakh.krishnan.c.h@ericsson.com>
- List<Neighbors> n = config.getNeighbors();
- if (n != null) {
- LOG.error("configuring existing Neighbors present for replay total neighbors {}", n.size());
- replayNbrConfig(n, br);
- } else {
- LOG.error("no Neighbors present for replay config ");
- }
-
List<Vrfs> v = config.getVrfs();
if (v != null) {
for (Vrfs vrf : v) {
List<Vrfs> v = config.getVrfs();
if (v != null) {
for (Vrfs vrf : v) {
+ List<Neighbors> n = config.getNeighbors();
+ if (n != null) {
+ LOG.error("configuring existing Neighbors present for replay total neighbors {}", n.size());
+ replayNbrConfig(n, br);
+ } else {
+ LOG.error("no Neighbors present for replay config ");
+ }
return (Optional<T>) result.get();
} catch (Exception e) {
LOG.error("DataStore read exception {} ", e);
return (Optional<T>) result.get();
} catch (Exception e) {
LOG.error("DataStore read exception {} ", e);
- return Optional.absent();
}
public static <T extends DataObject> void syncWrite(DataBroker broker, LogicalDatastoreType datastoreType,
}
public static <T extends DataObject> void syncWrite(DataBroker broker, LogicalDatastoreType datastoreType,
private String action = null;
@Option(name=LST, aliases={"-l"},
private String action = null;
@Option(name=LST, aliases={"-l"},
- description="list vrfs and/or networks",
+ description="list vrfs and/or networks",
required=false, multiValued=true)
private List<String> list = null;
required=false, multiValued=true)
private List<String> list = null;
- @Option(name=OFL, aliases={"-o"},
- description="output file",
+ @Option(name=OFL, aliases={"-o"},
+ description="output file",
required=false, multiValued=false)
private String ofile = null;
required=false, multiValued=false)
private String ofile = null;
public Object show() throws Exception {
return doExecute();
public Object show() throws Exception {
return doExecute();
@Override
protected Object doExecute() throws Exception {
@Override
protected Object doExecute() throws Exception {
if (list != null) {
for (String item : list) {
switch (item) {
if (list != null) {
for (String item : list) {
switch (item) {
System.err.println("error: unknown value for "+LST+": "+item);
return null;
}
System.err.println("error: unknown value for "+LST+": "+item);
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
// 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
String cHost = Commands.getBgpManager().getConfigHost();
int cPort = Commands.getBgpManager().getConfigPort();
ps.printf("\nConfiguration Server\n\t%s %s\n\t%s %d\n",
String cHost = Commands.getBgpManager().getConfigHost();
int cPort = Commands.getBgpManager().getConfigPort();
ps.printf("\nConfiguration Server\n\t%s %s\n\t%s %d\n",
- HTSTR, cHost, PTSTR, cPort);
+ HTSTR, cHost, PTSTR, cPort);
if (config == null) {
return null;
}
if (config == null) {
return null;
}
s = g.getStalepathTime().intValue();
}
ps.printf("\nBGP Router\n");
s = g.getStalepathTime().intValue();
}
ps.printf("\nBGP Router\n");
- ps.printf("\t%-15s %d\n\t%-15s %s\n\t%-15s %d\n\t%-15s %s\n",
- ASSTR, asNum, RISTR, rid, SPSTR, (s!=0?s:"default"), FBSTR, bit);
+ ps.printf("\t%-15s %d\n\t%-15s %s\n\t%-15s %s\n\t%-15s %s\n",
+ ASSTR, asNum, RISTR, rid, SPSTR, (s!=0?Integer.toString(s):"default"), FBSTR, bit);
}
Logging l = config.getLogging();
if (l != null) {
}
Logging l = config.getLogging();
if (l != null) {
- ps.printf("\t%-15s %s\n\t%-15s %s\n", LFSTR, l.getFile(),
+ ps.printf("\t%-15s %s\n\t%-15s %s\n", LFSTR, l.getFile(),
List<Neighbors> n = config.getNeighbors();
if (n != null) {
ps.printf("\nNeighbors\n");
List<Neighbors> n = config.getNeighbors();
if (n != null) {
ps.printf("\nNeighbors\n");
List<AddressFamilies> afs = nbr.getAddressFamilies();
if (afs != null) {
for (AddressFamilies af : afs) {
List<AddressFamilies> afs = nbr.getAddressFamilies();
if (afs != null) {
for (AddressFamilies af : afs) {
- ps.printf(" %s", af.getSafi().intValue() == 4 ?
+ ps.printf(" %s", af.getSafi().intValue() == 4 ?
"IPv4-Labeled-Unicast" : "Unknown");
}
}
"IPv4-Labeled-Unicast" : "Unknown");
}
}
if (list_vrfs) {
List<Vrfs> v = config.getVrfs();
if (v != null) {
if (list_vrfs) {
List<Vrfs> v = config.getVrfs();
if (v != null) {
for (Vrfs vrf : v) {
ps.printf("\t%s\n",vrf.getRd());
ps.printf("\t\t%s ", IRSTR);
for (Vrfs vrf : v) {
ps.printf("\t%s\n",vrf.getRd());
ps.printf("\t\t%s ", IRSTR);
- for (String rt : vrf.getImportRts())
+ for (String rt : vrf.getImportRts())
ps.printf("%s ", rt);
ps.printf("\n\t\t%s ", ERSTR);
ps.printf("%s ", rt);
ps.printf("\n\t\t%s ", ERSTR);
- for (String rt : vrf.getExportRts())
+ for (String rt : vrf.getExportRts())
ps.printf("%s ", rt);
ps.printf("\n");
}
}
}
ps.printf("%s ", rt);
ps.printf("\n");
}
}
}
if (list_nets) {
List<Networks> ln = config.getNetworks();
if (ln != null) {
if (list_nets) {
List<Networks> ln = config.getNetworks();
if (ln != null) {