|
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 |