OpenSDN source code
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
bgp_peer_close.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2013 Juniper Networks, Inc. All rights reserved.
3  */
4 
5 #ifndef SRC_BGP_BGP_PEER_CLOSE_H__
6 #define SRC_BGP_BGP_PEER_CLOSE_H__
7 
8 #include <set>
9 #include <string>
10 #include <vector>
11 
12 #include "bgp/ipeer.h"
13 
14 class BgpNeighborResp;
15 class BgpPath;
16 class BgpPeerInfoData;
17 class PeerCloseManager;
18 
19 class BgpPeerClose : public IPeerClose {
20  public:
21  typedef std::set<Address::Family> Families;
22 
23  explicit BgpPeerClose(BgpPeer *peer);
24  virtual ~BgpPeerClose();
25  virtual void CustomClose();
26  virtual void GracefulRestartStale();
27  virtual void LongLivedGracefulRestartStale();
28  virtual void GracefulRestartSweep();
29  virtual bool IsReady() const;
30  virtual IPeer *peer() const;
31  virtual void Close(bool graceful);
32  virtual void Delete();
33  virtual int GetGracefulRestartTime() const;
34  virtual int GetLongLivedGracefulRestartTime() const;
35  virtual void ReceiveEndOfRIB(Address::Family family);
36  virtual const char *GetTaskName() const;
37  virtual int GetTaskInstance() const;
38  virtual void MembershipRequestCallbackComplete();
39 
40  virtual bool IsCloseGraceful() const;
41  virtual bool IsCloseLongLivedGraceful() const;
42  virtual void CloseComplete();
43  virtual void GetGracefulRestartFamilies(Families *families) const;
44  virtual void GetLongLivedGracefulRestartFamilies(Families *families) const;
45  virtual PeerCloseManager *GetManager() const;
46  virtual void UpdateRouteStats(Address::Family family,
47  const BgpPath *old_path, uint32_t path_flags) const;
48 
51  bool SetGRCapabilities(BgpPeerInfoData *peer_info);
52  void FillNeighborInfo(BgpNeighborResp *bnr) const;
53  virtual void RestartStateMachine();
55  return gr_params_;
56  }
57 
58 private:
59  virtual bool IsGRReady() const;
60  virtual bool IsGRHelperModeEnabled() const;
61  virtual const std::vector<std::string> &negotiated_families() const;
62  virtual const std::vector<std::string> &PeerNegotiatedFamilies() const;
63  virtual bool IsPeerDeleted() const;
64  virtual bool IsPeerAdminDown() const;
65  virtual bool IsServerDeleted() const;
66  virtual bool IsServerAdminDown() const;
67  virtual bool IsInGRTimerWaitState() const;
68  virtual bool IsInLlgrTimerWaitState() const;
69  virtual const std::vector<BgpProto::OpenMessage::Capability *>
70  &capabilities() const;
71  bool IsLlgrSupportedForFamilies() const;
73 
75  uint64_t flap_count_;
76  std::vector<std::string> negotiated_families_;
77  std::vector<std::string> gr_families_;
78  std::vector<std::string> llgr_families_;
81 
83 };
84 
85 #endif // SRC_BGP_BGP_PEER_CLOSE_H__
std::vector< std::string > llgr_families_
virtual void GetLongLivedGracefulRestartFamilies(Families *families) const
const BgpProto::OpenMessage::Capability::GR & gr_params() const
virtual void CustomClose()
virtual bool IsGRHelperModeEnabled() const
virtual int GetLongLivedGracefulRestartTime() const
virtual bool IsReady() const
virtual void LongLivedGracefulRestartStale()
virtual bool IsPeerAdminDown() const
Family
Definition: address.h:24
virtual void CloseComplete()
bool IsLlgrSupportedForFamilies() const
virtual const std::vector< std::string > & negotiated_families() const
virtual int GetGracefulRestartTime() const
virtual int GetTaskInstance() const
uint64_t flap_count_
Definition: ipeer.h:186
std::vector< std::string > gr_families_
void FillNeighborInfo(BgpNeighborResp *bnr) const
bool IsCloseLongLivedGracefulInternal() const
BgpProto::OpenMessage::Capability::GR gr_params_
virtual PeerCloseManager * GetManager() const
virtual bool IsCloseLongLivedGraceful() const
virtual bool IsPeerDeleted() const
virtual void Delete()
virtual void ReceiveEndOfRIB(Address::Family family)
virtual void GracefulRestartStale()
virtual ~BgpPeerClose()
virtual bool IsInLlgrTimerWaitState() const
virtual void UpdateRouteStats(Address::Family family, const BgpPath *old_path, uint32_t path_flags) const
bool SetGRCapabilities(BgpPeerInfoData *peer_info)
virtual const std::vector< std::string > & PeerNegotiatedFamilies() const
virtual bool IsServerAdminDown() const
BgpPeer * peer_
virtual void Close(bool graceful)
DISALLOW_COPY_AND_ASSIGN(BgpPeerClose)
virtual bool IsServerDeleted() const
virtual bool IsCloseGraceful() const
void AddGRCapabilities(BgpProto::OpenMessage::OptParam *opt_param)
BgpProto::OpenMessage::Capability::LLGR llgr_params_
virtual IPeer * peer() const
virtual const char * GetTaskName() const
virtual void MembershipRequestCallbackComplete()
virtual bool IsInGRTimerWaitState() const
virtual void GetGracefulRestartFamilies(Families *families) const
virtual void RestartStateMachine()
virtual void GracefulRestartSweep()
std::set< Address::Family > Families
BgpPeerClose(BgpPeer *peer)
virtual const std::vector< BgpProto::OpenMessage::Capability * > & capabilities() const
std::vector< std::string > negotiated_families_
void AddLLGRCapabilities(BgpProto::OpenMessage::OptParam *opt_param)
virtual bool IsGRReady() const