INET Framework for OMNeT++/OMNEST
|
#include <BGPRouting.h>
Public Member Functions | |
BGPRouting () | |
virtual | ~BGPRouting () |
Public Member Functions inherited from inet::ILifecycle | |
virtual | ~ILifecycle () |
Public Member Functions inherited from inet::TCPSocket::CallbackInterface | |
virtual | ~CallbackInterface () |
virtual void | socketStatusArrived (int connId, void *yourPtr, TCPStatusInfo *status) |
virtual void | socketDeleted (int connId, void *yourPtr) |
Protected Member Functions | |
virtual int | numInitStages () const override |
virtual void | initialize (int stage) override |
virtual void | handleMessage (cMessage *msg) override |
virtual bool | handleOperationStage (LifecycleOperation *operation, int stage, IDoneCallback *doneCallback) override |
Perform one stage of a lifecycle operation. More... | |
virtual void | finish () override |
virtual void | socketDataArrived (int connId, void *yourPtr, cPacket *msg, bool urgent) override |
virtual void | socketEstablished (int connId, void *yourPtr) override |
virtual void | socketFailure (int connId, void *yourPtr, int code) override |
virtual void | socketPeerClosed (int connId, void *yourPtr) override |
virtual void | socketClosed (int connId, void *yourPtr) override |
void | getScheduleAt (simtime_t t, cMessage *msg) |
simtime_t | getSimTime () |
void | getCancelAndDelete (cMessage *msg) |
cMessage * | getCancelEvent (cMessage *msg) |
cGate * | getGate (const char *gateName) |
IIPv4RoutingTable * | getIPRoutingTable () |
std::vector< RoutingTableEntry * > | getBGPRoutingTable () |
void | listenConnectionFromPeer (SessionID sessionID) |
active listenSocket for a given session (used by fsm) More... | |
void | openTCPConnectionToPeer (SessionID sessionID) |
active TCPConnection for a given session (used by fsm) More... | |
void | updateSendProcess (const unsigned char decisionProcessResult, SessionID sessionIndex, RoutingTableEntry *entry) |
RFC 4271, 9.2 : Update-Send Process / Sent or not new UPDATE messages to its peers. More... | |
SessionID | findNextSession (BGPSessionType type, bool startSession=false) |
find the next SessionID compared to his type and start this session if boolean is true More... | |
bool | checkExternalRoute (const IPv4Route *ospfRoute) |
check if the route is in OSPF external IPv4RoutingTable More... | |
Private Types | |
typedef std::vector< RoutingTableEntry * > | RoutingTableEntryVector |
Private Member Functions | |
void | handleTimer (cMessage *timer) |
void | processMessageFromTCP (cMessage *msg) |
void | processMessage (const BGPOpenMessage &msg) |
void | processMessage (const BGPKeepAliveMessage &msg) |
void | processMessage (const BGPUpdateMessage &msg) |
bool | deleteBGPRoutingEntry (RoutingTableEntry *entry) |
unsigned char | decisionProcess (const BGPUpdateMessage &msg, RoutingTableEntry *entry, SessionID sessionIndex) |
RFC 4271: 9.1. More... | |
bool | tieBreakingProcess (RoutingTableEntry *oldEntry, RoutingTableEntry *entry) |
RFC 4271: 9.1.2.2 Breaking Ties used when BGP speaker may have several routes to the same destination that have the same degree of preference. More... | |
SessionID | createSession (BGPSessionType typeSession, const char *peerAddr) |
bool | isInASList (std::vector< ASID > ASList, RoutingTableEntry *entry) |
unsigned long | isInTable (std::vector< RoutingTableEntry * > rtTable, RoutingTableEntry *entry) |
std::vector< const char * > | loadASConfig (cXMLElementList &ASConfig) |
void | loadSessionConfig (cXMLElementList &sessionList, simtime_t *delayTab) |
void | loadConfigFromXML (cXMLElement *bgpConfig) |
ASID | findMyAS (cXMLElementList &ASList, int &outRouterPosition) |
bool | ospfExist (IIPv4RoutingTable *rtTable) |
void | loadTimerConfig (cXMLElementList &timerConfig, simtime_t *delayTab) |
unsigned char | asLoopDetection (RoutingTableEntry *entry, ASID myAS) |
SessionID | findIdFromPeerAddr (std::map< SessionID, BGPSession * > sessions, IPv4Address peerAddr) |
int | isInRoutingTable (IIPv4RoutingTable *rtTable, IPv4Address addr) |
int | isInInterfaceTable (IInterfaceTable *rtTable, IPv4Address addr) |
SessionID | findIdFromSocketConnId (std::map< SessionID, BGPSession * > sessions, int connId) |
unsigned int | calculateStartDelay (int rtListSize, unsigned char rtPosition, unsigned char rtPeerPosition) |
Private Attributes | |
TCPSocketMap | _socketMap |
ASID | _myAS = 0 |
SessionID | _currSessionId = 0 |
IInterfaceTable * | _inft = nullptr |
IIPv4RoutingTable * | _rt = nullptr |
RoutingTableEntryVector | _BGPRoutingTable |
RoutingTableEntryVector | _prefixListIN |
RoutingTableEntryVector | _prefixListOUT |
RoutingTableEntryVector | _prefixListINOUT |
std::vector< ASID > | _ASListIN |
std::vector< ASID > | _ASListOUT |
std::map< SessionID, BGPSession * > | _BGPSessions |
Static Private Attributes | |
static const int | BGP_TCP_CONNECT_VALID = 71 |
static const int | BGP_TCP_CONNECT_CONFIRM = 72 |
static const int | BGP_TCP_CONNECT_FAILED = 73 |
static const int | BGP_TCP_CONNECT_OPEN_RCV = 74 |
static const int | BGP_TCP_KEEP_ALIVE_RCV = 75 |
Friends | |
class | BGPSession |
|
private |
|
virtual |
|
private |
Referenced by processMessage().
|
private |
Referenced by loadConfigFromXML().
|
protected |
check if the route is in OSPF external IPv4RoutingTable
Referenced by inet::bgp::BGPSession::checkExternalRoute().
|
private |
Referenced by loadConfigFromXML(), and loadSessionConfig().
|
private |
RFC 4271: 9.1.
: Decision Process used when an UPDATE message is received As matches, routes are sent or not to UpdateSentProcess The result can be ROUTE_DESTINATION_CHANGED, NEW_ROUTE_ADDED or 0 if no routingTable modification
Referenced by processMessage().
|
private |
Referenced by tieBreakingProcess().
|
private |
Referenced by processMessageFromTCP().
|
private |
Referenced by socketDataArrived(), socketEstablished(), and socketFailure().
|
private |
Referenced by loadConfigFromXML().
|
protected |
find the next SessionID compared to his type and start this session if boolean is true
Referenced by inet::bgp::BGPSession::findAndStartNextSession(), and socketEstablished().
|
overrideprotectedvirtual |
|
inlineprotected |
Referenced by inet::bgp::BGPSession::getBGPRoutingTable().
|
inlineprotected |
Referenced by inet::bgp::BGPSession::~BGPSession().
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
Referenced by inet::bgp::BGPSession::getIPRoutingTable().
|
inlineprotected |
|
inlineprotected |
|
overrideprotectedvirtual |
|
overrideprotectedvirtual |
Perform one stage of a lifecycle operation.
Processing may be done entirely within this method, or may be a longer process that involves nonzero simulation time or several events, and is triggered by this method call.
Return value: true = "done"; false = "not yet done, will invoke doneCallback when done"
Implements inet::ILifecycle.
|
private |
Referenced by handleMessage().
|
overrideprotectedvirtual |
|
private |
Referenced by decisionProcess(), and updateSendProcess().
|
private |
Referenced by loadASConfig(), and loadSessionConfig().
|
private |
Referenced by decisionProcess().
|
private |
Referenced by decisionProcess(), and updateSendProcess().
|
protected |
active listenSocket for a given session (used by fsm)
Referenced by inet::bgp::BGPSession::listenConnectionFromPeer().
|
private |
Referenced by loadConfigFromXML().
|
private |
Referenced by initialize().
|
private |
Referenced by loadConfigFromXML().
|
private |
Referenced by loadConfigFromXML().
|
inlineoverrideprotectedvirtual |
|
protected |
active TCPConnection for a given session (used by fsm)
Referenced by inet::bgp::BGPSession::openTCPConnectionToPeer().
|
private |
Referenced by decisionProcess().
|
private |
Referenced by socketDataArrived().
|
private |
|
private |
|
private |
Referenced by handleMessage().
|
inlineoverrideprotectedvirtual |
Reimplemented from inet::TCPSocket::CallbackInterface.
|
overrideprotectedvirtual |
Implements inet::TCPSocket::CallbackInterface.
|
overrideprotectedvirtual |
Reimplemented from inet::TCPSocket::CallbackInterface.
|
overrideprotectedvirtual |
Reimplemented from inet::TCPSocket::CallbackInterface.
|
inlineoverrideprotectedvirtual |
Reimplemented from inet::TCPSocket::CallbackInterface.
|
private |
RFC 4271: 9.1.2.2 Breaking Ties used when BGP speaker may have several routes to the same destination that have the same degree of preference.
Referenced by decisionProcess().
|
protected |
RFC 4271, 9.2 : Update-Send Process / Sent or not new UPDATE messages to its peers.
Referenced by processMessage(), and inet::bgp::BGPSession::updateSendProcess().
|
friend |
Referenced by createSession().
|
private |
Referenced by decisionProcess(), and loadASConfig().
|
private |
Referenced by loadASConfig(), and updateSendProcess().
|
private |
Referenced by decisionProcess(), deleteBGPRoutingEntry(), and initialize().
|
private |
Referenced by createSession(), decisionProcess(), findNextSession(), finish(), listenConnectionFromPeer(), loadConfigFromXML(), loadSessionConfig(), openTCPConnectionToPeer(), processMessage(), processMessageFromTCP(), socketDataArrived(), socketEstablished(), socketFailure(), updateSendProcess(), and ~BGPRouting().
|
private |
Referenced by processMessage(), socketDataArrived(), socketEstablished(), and socketFailure().
|
private |
Referenced by findMyAS(), initialize(), loadASConfig(), and loadSessionConfig().
|
private |
Referenced by createSession(), initialize(), loadASConfig(), loadConfigFromXML(), processMessage(), and updateSendProcess().
|
private |
Referenced by decisionProcess(), and loadASConfig().
|
private |
Referenced by loadASConfig(), and ~BGPRouting().
|
private |
Referenced by loadASConfig(), and updateSendProcess().
|
private |
Referenced by createSession(), decisionProcess(), deleteBGPRoutingEntry(), findNextSession(), initialize(), and loadConfigFromXML().
|
private |
Referenced by listenConnectionFromPeer(), openTCPConnectionToPeer(), and processMessageFromTCP().
|
staticprivate |
|
staticprivate |
|
staticprivate |
|
staticprivate |
|
staticprivate |