
es.tid.bgp.bgp4Peer.peer.BGP4SessionClientManager Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of topology Show documentation
Show all versions of topology Show documentation
Traffic Engineering Database, BGP-LS peer, Topology Module
The newest version!
package es.tid.bgp.bgp4Peer.peer;
import es.tid.bgp.bgp4Peer.bgp4session.BGP4SessionClient;
import es.tid.bgp.bgp4Peer.bgp4session.BGP4SessionExistsException;
import es.tid.bgp.bgp4Peer.bgp4session.BGP4SessionsInformation;
import es.tid.bgp.bgp4Peer.updateTEDB.UpdateDispatcher;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.net.Inet4Address;
/**
* Client session manager
* @author mcs
*
*/
public class BGP4SessionClientManager implements Runnable{
private BGP4SessionClient bgp4SessionClient;
private Logger log;
BGP4SessionsInformation bgp4SessionInformation;
/**
* peer contains the IP address and port where the peer listens.
*/
private BGP4LSPeerInfo peer;
private Inet4Address peerIP;
private String localBGP4Address;
private int localBGP4Port;
private int holdTime;
private int keepAliveTimer;
private Inet4Address BGPIdentifier;
private int version = 4;
private int myAutonomousSystem;
private UpdateDispatcher ud;
private Boolean updateFrom;
private Boolean sendTo;
public BGP4SessionClientManager(BGP4SessionsInformation bgp4SessionInformation,UpdateDispatcher ud, BGP4LSPeerInfo peer,int bgp4Port,String my_IPAddress,int my_bgp4Port , int holdTime,Inet4Address BGPIdentifier,int version,int myAutonomousSystem, int my_keepAliveTimer){
log=LoggerFactory.getLogger("BGP4Peer");
this.bgp4SessionInformation=bgp4SessionInformation;
this.holdTime=holdTime;
this.BGPIdentifier=BGPIdentifier;
this.version = version;
this.myAutonomousSystem=myAutonomousSystem;
this.peer = peer;
this.ud=ud;
this.localBGP4Address=my_IPAddress;
this.localBGP4Port=my_bgp4Port;
this.keepAliveTimer = my_keepAliveTimer;
this.peerIP=peer.getPeerIP();
this.setSendTo(peer.isSendToPeer());
this.setUpdateFrom(peer.isUpdateFromPeer());
}
/**
*
*
*
*/
public void run(){
if(bgp4SessionClient != null){
if (bgp4SessionClient.isAlive()){
if (bgp4SessionClient.isInterrupted()){
log.debug("Thread alive... backup session dead");
}
log.debug("Session alive and not interrupted");
return;
}
else{
try{
bgp4SessionInformation.notifySessionStart(peerIP);
log.debug("Session with BGP-LS peer"+peer +" dead, trying to establish new session");
bgp4SessionClient= new BGP4SessionClient(bgp4SessionInformation,ud,peer.getPeerIP(),peer.getPeerPort(),holdTime,BGPIdentifier,version,myAutonomousSystem,localBGP4Address, localBGP4Port,keepAliveTimer);
bgp4SessionClient.setSendTo(sendTo);
bgp4SessionClient.setUpdateFrom(updateFrom);
bgp4SessionClient.start();
} catch(BGP4SessionExistsException e){
log.debug("Checked that there is already a peer initiated session with "+this.peerIP);
}
return;
}
} else {
try{
bgp4SessionInformation.notifySessionStart(peerIP);
log.info("Trying to establish new session with peer "+ peer.getPeerIP()+" on port "+peer.getPeerPort());
bgp4SessionClient = new BGP4SessionClient(bgp4SessionInformation,ud, peer.getPeerIP(), peer.getPeerPort(), holdTime, BGPIdentifier,
version,myAutonomousSystem,localBGP4Address, localBGP4Port ,keepAliveTimer);
bgp4SessionClient.setSendTo(sendTo);
bgp4SessionClient.setUpdateFrom(updateFrom);
bgp4SessionClient.start();
} catch(BGP4SessionExistsException e){
log.debug("No need to start new connection with "+this.peerIP);
}
return;
}
}
public BGP4SessionClient getBgp4SessionClient() {
return bgp4SessionClient;
}
public void setBgp4SessionClient(BGP4SessionClient bgp4SessionClient) {
this.bgp4SessionClient = bgp4SessionClient;
}
public void killBGP4Session(){
bgp4SessionClient.killSession();
}
public void closeBGP4Session(){
log.info("Closing BGP4Session");
if (bgp4SessionClient.isAlive()){
//FIXME reason for close????
bgp4SessionClient.close();
}
}
public Boolean getUpdateFrom() {
return updateFrom;
}
public void setUpdateFrom(Boolean updateFrom) {
this.updateFrom = updateFrom;
}
public Boolean getSendTo() {
return sendTo;
}
public void setSendTo(Boolean sendTo) {
this.sendTo = sendTo;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy