emergencies, alerts, critical, errors, warnings, notifications, informational, debugging
}
+ private final BgpManager bgpManager;
private final BgpConfigurationManager bgpConfigurationManager;
- public ConfigureBgpCli(BgpConfigurationManager bgpConfigurationManager) {
+ public ConfigureBgpCli(BgpManager bgpManager, BgpConfigurationManager bgpConfigurationManager) {
+ this.bgpManager = bgpManager;
this.bgpConfigurationManager = bgpConfigurationManager;
}
@Override
- protected Object doExecute() {
+ protected Object doExecute() throws Exception {
if (op == null) {
session.getConsole().println("Please provide valid operation");
usage();
try {
int time = Integer.parseInt(stalePathTime);
if (time < 30 || time > 3600) {
- session.getConsole().println("invalid stale path time valid range [30-3600]");
+ session.getConsole().println("invalid stale path time valid range [30-3600]" + stalePathTime);
printGracefulRestartHelp();
return false;
}
} catch (NumberFormatException e) {
- session.getConsole().println("invalid stale path time");
+ session.getConsole().println("invalid stale path time" + stalePathTime);
printGracefulRestartHelp();
return false;
}
if (!validStalepathTime) {
return;
}
- bgpConfigurationManager.addGracefulRestart(Integer.parseInt(stalePathTime));
+ bgpManager.configureGR(Integer.parseInt(stalePathTime));
}
private void deleteNeighbor() {
printDeleteNeighborHelp();
return;
}
- bgpConfigurationManager.delNeighbor(ip);
+ bgpManager.deleteNeighbor(ip);
}
public long getAsNumber(String nbrIp) {
- Bgp conf = bgpConfigurationManager.getConfig();
+ Bgp conf = bgpManager.getConfig();
if (conf == null) {
return -1;
}
}
private void stopBgp() {
- Bgp conf = bgpConfigurationManager.getConfig();
+ Bgp conf = bgpManager.getConfig();
if (conf == null) {
return;
}
"error: all BGP congiguration must be deleted before stopping the router instance");
return;
}
- bgpConfigurationManager.stopBgp();
+ bgpManager.stopBgp();
}
private void usage() {
private void startBgp() {
boolean validRouterId = false;
- if (bgpConfigurationManager.getConfig() != null && bgpConfigurationManager.getConfig().getAsId() != null) {
+ if (bgpManager.getConfig() != null && bgpManager.getConfig().getAsId() != null) {
session.getConsole().println("bgp is already started please use stop-bgp-server and start again");
return;
}
return;
}
}
- bgpConfigurationManager.startBgp(Long.parseLong(asNumber), routerId,
+ bgpManager.startBgp(Long.parseLong(asNumber), routerId,
stalePathTime == null ? 0 : Integer.parseInt(stalePathTime), false);
}
try {
long val = Long.parseLong(ebgpMultihops);
if (val < 1 || val > 255) {
- session.getConsole().println("invalid ebgpMultihops number , valid range [1,255] ");
+ session.getConsole().println("invalid ebgpMultihops number , valid range [1,255] "
+ + ebgpMultihops);
printAddNeighborHelp();
return;
}
} catch (NumberFormatException e) {
- session.getConsole().println("invalid ebgpMultihops number, valid range [1-255]");
+ session.getConsole().println("invalid ebgpMultihops number, valid range [1-255]"
+ + ebgpMultihops);
printAddNeighborHelp();
return;
}
safi = 5;
} else {
session.getConsole().println(
- "invalid addressFamily valid values SAFI_IPV4_LABELED_UNICAST | SAFI_MPLS_VPN");
+ "invalid addressFamily valid values lu/evpn/vpnv4/vpnv6");
printAddNeighborHelp();
- return;
+ return ;
}
- bgpConfigurationManager.addAddressFamily(ip, afi, safi);
-
}
if (getAsNumber(ip) != -1) {
session.getConsole().println("neighbor with ip " + ip + " already exists");
}
protected void addRoute() {
- bgpConfigurationManager.onUpdatePushRoute(protocol_type.PROTOCOL_EVPN, rd, prefix,
+ bgpConfigurationManager.onUpdatePushRoute(protocol_type.PROTOCOL_L3VPN, rd, prefix,
0, nexthop, mac, l3vni, l2vni, null, null);
}
protected void deleteRoute() {
- bgpConfigurationManager.onUpdateWithdrawRoute(protocol_type.PROTOCOL_EVPN, rd, prefix,
+ bgpConfigurationManager.onUpdateWithdrawRoute(protocol_type.PROTOCOL_L3VPN, rd, prefix,
0, nexthop, mac);
}
"exec configure-bgp -op enable-log --log-file-path <logfile> --log-level <level>");
return;
}
- bgpConfigurationManager.addLogging(logFile, logLevel);
+ bgpManager.setQbgpLog(logFile, logLevel);
}
private boolean validateAsNumber(String strAsnum) {
return false;
}
} catch (NumberFormatException e) {
- session.getConsole().println("invalid AS Number ");
+ session.getConsole().println("invalid AS Number " + asNumber);
return false;
}
return true;
Boolean showHistory = false;
private final BgpManager bgpManager;
- private final BgpConfigurationManager bgpConfigurationManager;
- public DisplayBgpConfigCli(BgpManager bgpManager, BgpConfigurationManager bgpConfigurationManager) {
+ public DisplayBgpConfigCli(BgpManager bgpManager) {
this.bgpManager = bgpManager;
- this.bgpConfigurationManager = bgpConfigurationManager;
}
@SuppressWarnings("checkstyle:RegexpSinglelineJava")
@Override
- protected Object doExecute() {
+ protected Object doExecute() throws Exception {
PrintStream ps = System.out;
if (debug) {
- ps.printf("%nis ODL Connected to Q-BGP: %s%n", bgpConfigurationManager.isBgpConnected() ? "TRUE" : "FALSE");
- final TTransport transport = bgpConfigurationManager.getTransport();
+ ps.printf("%nis ODL Connected to Q-BGP: %s%n", bgpManager.isBgpConnected() ? "TRUE" : "FALSE");
+ final TTransport transport = bgpManager.getBgpConfigurationManager().getTransport();
if (transport != null) {
ps.printf("%nODL BGP Router transport is open: %s%n",
transport.isOpen() ? "TRUE" : "FALSE");
ps.printf("%nODL BGP Router transport is NULL%n");
}
//last ODL connection attempted TS
- ps.printf("Last ODL connection attempt TS: %s%n", new Date(bgpConfigurationManager.getConnectTS()));
+ ps.printf("Last ODL connection attempt TS: %s%n", new Date(bgpManager.getConnectTS()));
//last successful connected TS
- ps.printf("Last Successful connection TS: %s%n", new Date(bgpConfigurationManager.getLastConnectedTS()));
+ ps.printf("Last Successful connection TS: %s%n", new Date(bgpManager.getLastConnectedTS()));
//last ODL started BGP due to configuration trigger TS
- ps.printf("Last ODL started BGP at: %s%n", new Date(bgpConfigurationManager.getStartTS()));
+ ps.printf("Last ODL started BGP at: %s%n", new Date(bgpManager.getStartTS()));
//last Quagga attempted to RESTART the connection
ps.printf("Last Quagga BGP, sent reSync at: %s%n", new Date(bgpManager.getQbgprestartTS()));
//stale cleanup start - end TS
ps.printf("Time taken to create stale fib : %s ms%n",
- bgpConfigurationManager.getStaleEndTime() - bgpConfigurationManager.getStaleStartTime());
+ bgpManager.getStaleEndTime() - bgpManager.getStaleStartTime());
//Config replay start - end TS
ps.printf("Time taken to create replay configuration : %s ms%n",
- bgpConfigurationManager.getCfgReplayEndTime() - bgpConfigurationManager.getCfgReplayStartTime());
+ bgpManager.getCfgReplayEndTime() - bgpManager.getCfgReplayStartTime());
//Stale cleanup time
- ps.printf("Time taken for Stale FIB cleanup : %s ms%n", bgpConfigurationManager.getStaleCleanupTime());
+ ps.printf("Time taken for Stale FIB cleanup : %s ms%n", bgpManager.getStaleCleanupTime());
- ps.printf("Total stale entries created %d %n", bgpConfigurationManager.getTotalStaledCount());
- ps.printf("Total stale entries cleared %d %n", bgpConfigurationManager.getTotalCleared());
+ ps.printf("Total stale entries created %d %n",
+ bgpManager.getBgpConfigurationManager().getTotalStaledCount());
+ ps.printf("Total stale entries cleared %d %n",
+ bgpManager.getBgpConfigurationManager().getTotalCleared());
+
+ ps.printf("Am I Owner %s %n",
+ bgpManager.getBgpConfigurationManager().isBGPEntityOwner() ? "True" : "False");
}
+
if (showHistory) {
TransactionHistory bgpUpdatesHistory = bgpManager.getBgpConfigurationManager().getBgpUpdatesHistory();
bgpUpdatesHistory.getElements().forEach(update -> {
ps.println();
});
}
- Cache cache = new Cache(bgpConfigurationManager);
+ Cache cache = new Cache(bgpManager);
return cache.show(session);
}
}
import org.apache.karaf.shell.commands.Command;
import org.apache.karaf.shell.commands.Option;
import org.apache.karaf.shell.console.OsgiCommandSupport;
-import org.opendaylight.netvirt.bgpmanager.BgpConfigurationManager;
+import org.opendaylight.netvirt.bgpmanager.BgpManager;
import org.opendaylight.yang.gen.v1.urn.ericsson.params.xml.ns.yang.ebgp.rev150901.Bgp;
import org.opendaylight.yang.gen.v1.urn.ericsson.params.xml.ns.yang.ebgp.rev150901.bgp.AsId;
import org.opendaylight.yang.gen.v1.urn.ericsson.params.xml.ns.yang.ebgp.rev150901.bgp.GracefulRestart;
private static final String RDSTR = "RD";
private static final String MPSTR = "Maxpath";
- private final BgpConfigurationManager bgpConfigurationManager;
+ private final BgpManager bgpManager;
- public Cache(BgpConfigurationManager bgpConfigurationManager) {
- this.bgpConfigurationManager = bgpConfigurationManager;
+ public Cache(BgpManager bgpManager) {
+ this.bgpManager = bgpManager;
}
private Object usage() {
boolean listVrfs = false;
boolean listNets = false;
PrintStream ps = System.out;
+
if (action != null) {
return usage();
}
// legacy behaviour forces to check for a connection
// that's initiated by default at startup without
// writing to config.
- String configHost = bgpConfigurationManager.getConfigHost();
- int configPort = bgpConfigurationManager.getConfigPort();
+ 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 = bgpConfigurationManager.getConfig();
+ Bgp config = bgpManager.getConfig();
if (config == null) {
if (fileStream != null) {
fileStream.close();
import org.apache.karaf.shell.commands.Command;
import org.apache.karaf.shell.commands.Option;
import org.apache.karaf.shell.console.OsgiCommandSupport;
-import org.opendaylight.netvirt.bgpmanager.BgpConfigurationManager;
+import org.opendaylight.netvirt.bgpmanager.BgpManager;
@Command(scope = "odl", name = "bgp-connect",
description = "Add or delete client connection to BGP Config Server")
multiValued = false)
String port = null;
- private final BgpConfigurationManager bgpConfigurationManager;
+ private final BgpManager bgpManager;
- public Connect(BgpConfigurationManager bgpConfigurationManager) {
- this.bgpConfigurationManager = bgpConfigurationManager;
+ public Connect(BgpManager bgpManager) {
+ this.bgpManager = bgpManager;
}
private Object usage() {
return null;
}
// check: already connected?
- bgpConfigurationManager.startConfig(host, Integer.parseInt(port));
+ bgpManager.startConfig(host, Integer.parseInt(port));
break;
case "del":
if (host != null || port != null) {
session.getConsole().println("note: option(s) not needed; ignored");
}
// check: nothing to stop?
- bgpConfigurationManager.stopConfig();
+ bgpManager.stopConfig();
break;
default:
return usage();
import org.apache.karaf.shell.commands.Command;
import org.apache.karaf.shell.commands.Option;
import org.apache.karaf.shell.console.OsgiCommandSupport;
-import org.opendaylight.netvirt.bgpmanager.BgpConfigurationManager;
+import org.opendaylight.netvirt.bgpmanager.BgpManager;
@Command(scope = "odl", name = "bgp-misc",
description = "Add or delete miscellaneous BGP config options")
multiValued = false)
private final String spt = null;
- private final BgpConfigurationManager bgpConfigurationManager;
+ private final BgpManager bgpManager;
- public Misc(BgpConfigurationManager bgpConfigurationManager) {
- this.bgpConfigurationManager = bgpConfigurationManager;
+ public Misc(BgpManager bgpManager) {
+ this.bgpManager = bgpManager;
}
private Object usage() {
switch (action) {
case "add":
if (spt != null && Commands.isValid(session.getConsole(), spt, Commands.Validators.INT, SP)) {
- bgpConfigurationManager.addGracefulRestart(Integer.parseInt(spt));
+ bgpManager.configureGR(Integer.parseInt(spt));
}
if (file != null && level != null) {
- bgpConfigurationManager.addLogging(file, level);
+ bgpManager.setQbgpLog(file, level);
}
break;
case "del":
if (spt != null) {
- bgpConfigurationManager.delGracefulRestart();
+ bgpManager.delGracefulRestart();
}
if (file != null && level != null) {
- bgpConfigurationManager.delLogging();
+ bgpManager.delLogging();
}
break;
default:
import org.apache.karaf.shell.commands.Command;
import org.apache.karaf.shell.commands.Option;
import org.apache.karaf.shell.console.OsgiCommandSupport;
-import org.opendaylight.netvirt.bgpmanager.BgpConfigurationManager;
+import org.opendaylight.netvirt.bgpmanager.BgpManager;
import org.opendaylight.netvirt.bgpmanager.thrift.gen.af_afi;
import org.opendaylight.netvirt.bgpmanager.thrift.gen.af_safi;
String multipathEnable;
- private final BgpConfigurationManager bgpConfigurationManager;
+ private final BgpManager bgpManager;
- public Multipath(BgpConfigurationManager bgpConfigurationManager) {
- this.bgpConfigurationManager = bgpConfigurationManager;
+ public Multipath(BgpManager bgpManager) {
+ this.bgpManager = bgpManager;
}
@Override
}
if (multipathEnable != null) {
-
switch (multipathEnable) {
case "enable":
- bgpConfigurationManager.setMultipathStatus(afi, safi, true);
+ bgpManager.enableMultipath(afi, safi);
break;
case "disable":
- bgpConfigurationManager.setMultipathStatus(afi, safi, false);
+ bgpManager.disableMultipath(afi, safi);
break;
case "setmaxpath":
if (rd != null && maxpath != null) {
- bgpConfigurationManager.setMultipaths(rd, Integer.parseInt(maxpath));
+ bgpManager.setMultipaths(rd, Integer.parseInt(maxpath));
}
break;
-
default:
return usage();
}
import org.apache.karaf.shell.commands.Command;
import org.apache.karaf.shell.commands.Option;
import org.apache.karaf.shell.console.OsgiCommandSupport;
-import org.opendaylight.netvirt.bgpmanager.BgpConfigurationManager;
+import org.opendaylight.netvirt.bgpmanager.BgpManager;
import org.opendaylight.yang.gen.v1.urn.ericsson.params.xml.ns.yang.ebgp.rev150901.Bgp;
import org.opendaylight.yang.gen.v1.urn.ericsson.params.xml.ns.yang.ebgp.rev150901.bgp.Neighbors;
required = false, multiValued = false)
private final String fbit = null;
- private final BgpConfigurationManager bgpConfigurationManager;
+ private final BgpManager bgpManager;
- public Router(BgpConfigurationManager bgpConfigurationManager) {
- this.bgpConfigurationManager = bgpConfigurationManager;
+ public Router(BgpManager bgpManager) {
+ this.bgpManager = bgpManager;
}
private Object usage() {
return null;
}
}
- bgpConfigurationManager.startBgp(asn, rid, stalePath, fb);
+ bgpManager.startBgp(asn, rid, stalePath, fb);
break;
case "del":
// check: nothing to stop?
if (asNum != null || rid != null || spt != null || fbit != null) {
session.getConsole().println("note: option(s) not needed; ignored");
}
- Bgp conf = bgpConfigurationManager.getConfig();
+ Bgp conf = bgpManager.getConfig();
if (conf == null) {
session.getConsole().println("error : no BGP configs present");
break;
+ "before stopping the router instance");
break;
}
- bgpConfigurationManager.stopBgp();
+ bgpManager.stopBgp();
break;
default:
return usage();
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+
public final class BgpRouter {
private static final Logger LOG = LoggerFactory.getLogger(BgpRouter.class);
private static final int GET_RTS_INIT = 0;
private static final int GET_RTS_NEXT = 1;
private static final int CONNECTION_TIMEOUT = 60000;
+ private static String configServerIP = "127.0.0.1";
+ private static int configServerPort = 7644;
+
private enum Optype {
START, STOP, NBR, VRF, PFX, SRC, MHOP, LOG, AF, GR, MP, VRFMP, EOR, DELAY_EOR, BFD, PEER_STATUS
List<String> irts;
List<String> erts;
long asNumber;
+ int holdTime;
+ int kaTime;
layer_type thriftLayerType;
protocol_type thriftProtocolType;
int ethernetTag;
String macAddress;
int l2label;
int l3label;
- int holdTime;
- int kaTime;
encap_type thriftEncapType;
String routermac;
public af_afi afi;
+ ", safi=" + safi
+ '}' + '\n';
}
- }
-
+ }
private final BgpOp bop = new BgpOp();
private final Supplier<Bgp> bgpConfigSupplier;
private final BooleanSupplier isBGPEntityOwner;
+
private volatile TTransport transport;
private volatile BgpConfigurator.Client bgpClient;
private volatile boolean isConnected = false;
private volatile long startTS;
private volatile long connectTS;
private volatile long lastConnectedTS;
- private final TransactionHistory transactionHistory;
private volatile boolean configServerUpdated = false;
+ private final TransactionHistory transactionHistory;
private BgpRouter(Supplier<Bgp> bgpConfigSupplier, BooleanSupplier isBGPEntityOwner,
TransactionHistory transactionHistory) {
}
}
+ @SuppressWarnings("checkstyle:IllegalCatch")
public synchronized boolean connect(String bgpHost, int bgpPort) {
String msgPiece = "BGP config server at " + bgpHost + ":" + bgpPort;
+ "msg: {}; Exception :", bgpHost, bgpPort, msgPiece, tte);
connectRetry.errorOccured();
} else {
- //In Case of other exceptions we try only 3 times
- connectRetry.errorOccured(60);
+ LOG.error("Failed connecting to BGP config server at {} : {}. msg: {}; Exception :",
+ bgpHost, bgpPort, msgPiece, tte);
+ //In Case of other exceptions we try only 18 times
+ connectRetry.errorOccured(10);
}
+ } catch (Exception e) {
+ LOG.error("Failed connecting to BGP config server at {} : {}. msg: {}; Exception :",
+ bgpHost, bgpPort, msgPiece, e);
}
} while (connectRetry.shouldRetry());
return isConnected;
}
- private TransactionType getTransactionType(BgpOp op) {
- return op.add ? TransactionType.ADD : TransactionType.DELETE;
+ public static void setConfigServerIP(String configServerIP) {
+ BgpRouter.configServerIP = configServerIP;
+ }
+
+ public static void setConfigServerPort(int configServerPort) {
+ BgpRouter.configServerPort = configServerPort;
}
private void dispatch(BgpOp op) throws TException, BgpRouterException {
}
}
+ private TransactionType getTransactionType(BgpOp op) {
+ return op.add ? TransactionType.ADD : TransactionType.DELETE;
+ }
+
private void reConnect(TTransportException tte) {
Bgp bgpConfig = bgpConfigSupplier.get();
if (bgpConfig != null) {