17 using namespace boost::asio::ip;
31 boost::system::error_code ec;
46 if (local_endpoint != new_endpoint) {
48 "Cannot change already bound " << local_endpoint <<
49 " to " << new_endpoint);
55 LOG(DEBUG,
"Starting Bgp Server at " <<
session_ip_ <<
":" << port);
59 "Cannot bind to bgp/tcp server ip:port " <<
145 if (instance && !instance->
deleted()) {
164 boost::system::error_code ec;
165 socket->open(boost::asio::ip::tcp::v4(), ec);
168 "Failed to open bgp socket, error: " << ec.message());
175 socket->bind(localaddr, ec);
179 ", error: " << ec.message());
245 "Remote end-point not found");
boost::asio::ip::address IpAddress
boost::asio::ip::address_v4 Ip4Address
IpAddress AddressFromString(const std::string &ip_address_str, boost::system::error_code *ec)
#define BGP_LOG_WARNING_STR(obj, flags, arg)
#define BGP_LOG_FLAG_TRACE
static const std::string kDefaultBgpSessionIp
static BgpAsServicePortIndexPair DecodeBgpaasServicePort(const uint32_t sport, const uint16_t port_range_start, const uint16_t port_range_end)
uint16_t bgpaas_port_start() const
uint16_t bgpaas_port_end() const
bool PrefixLimitIdleTimerRunning() const
virtual bool ProcessSession() const
bool IsCloseInProgress() const
bool AcceptSession(BgpSession *session)
LifetimeActor * deleter()
RoutingInstanceMgr * routing_instance_mgr()
BgpPeer * FindPeer(const std::string &name)
BgpGlobalSystemConfig * global_config()
WorkQueue< TcpSessionPtr > write_ready_queue_
WorkQueue< BgpSession * > session_queue_
virtual ~BgpSessionManager()
virtual TcpSession * AllocSession(Socket *socket)
bool ProcessWriteReady(TcpSessionPtr tcp_session)
void WorkQueueExitCallback(bool done)
virtual TcpSession * CreateSession()
BgpSessionManager(EventManager *evm, BgpServer *server)
virtual bool Initialize(unsigned short port)
size_t GetSessionQueueSize() const
bool ProcessSession(BgpSession *session)
void SetSessionQueueDisable(bool disabled)
void EnqueueWriteReady(BgpSession *session)
BgpPeer * FindPeer(Endpoint remote)
virtual bool AcceptSession(TcpSession *session)
void SendNotification(int code, int subcode, const std::string &data=std::string())
virtual BgpPeer * PeerLookup(std::string name) const
RoutingInstance * GetDefaultRoutingInstance()
PeerManager * peer_manager()
The TaskScheduler keeps track of what tasks are currently schedulable. When a task is enqueued it is ...
bool socket_open_failure() const
boost::asio::ip::tcp::endpoint Endpoint
Endpoint LocalEndpoint() const
virtual bool Initialize(unsigned short port)
virtual TcpSession * CreateSession()
boost::intrusive_ptr< TcpSession > TcpSessionPtr
virtual void DeleteSession(TcpSession *session)
boost::asio::ip::tcp::socket Socket
virtual Socket * socket() const
void set_read_on_connect(bool read)
boost::asio::ip::tcp::endpoint Endpoint
Endpoint remote_endpoint() const
virtual boost::system::error_code SetSocketOptions()
bool Enqueue(QueueEntryT entry)
void set_disable(bool disabled)
void Shutdown(bool delete_entries=true)
void SetExitCallback(TaskExitCallback on_exit)
bool IsQueueEmpty() const
#define LOG(_Level, _Msg)
#define CHECK_CONCURRENCY(...)