5 #ifndef SRC_BGP_BGP_PROTO_H_
6 #define SRC_BGP_BGP_PROTO_H_
54 virtual const std::string
ToString()
const {
return ""; }
93 return "RouteRefresh";
95 return "OutboundRouteFiltering";
97 return "MultipleRoutesToADestination";
99 return "ExtendedNextHop";
101 return "GracefulRestart";
107 return "MultisessionBgp";
111 return "EnhancedRouteRefresh";
113 return "LongLivedGracefulRestart";
115 return "RouteRefreshCisco";
118 std::ostringstream oss;
119 oss <<
"Unknown(" << capability <<
")";
141 afi(afi), safi(safi), flags(flags) { }
152 const std::vector<uint8_t> &gr_afi_flags,
153 const std::vector<Address::Family> &gr_families);
155 const std::vector<Capability *> &capabilities);
157 std::vector<std::string> *
families);
186 afi(afi), safi(safi), flags(flags), time(time) {
199 uint8_t llgr_afi_flags,
200 const std::vector<Address::Family> &llgr_families);
202 const std::vector<Capability *> &capabilities);
204 std::vector<std::string> *
families);
222 virtual const std::string
ToString()
const;
241 return "Message Header Error";
243 return "OPEN Message Error";
245 return "UPDATE Message Error";
247 return "Hold Timer Expired";
249 return "Finite State Machine Error";
254 std::ostringstream oss;
255 oss <<
"Unknown(" << code <<
")";
266 return "Connection Not Synchronized";
268 return "Bad Message Length";
270 return "Bad Message Type";
273 std::ostringstream oss;
274 oss <<
"Unknown(" << sub_code <<
")";
289 return "Unsupported Version Number";
291 return "Bad Peer AS";
293 return "Bad BGP Identifier";
295 return "Unsupported Optional Parameter";
297 return "Authentication Failure";
299 return "Unacceptable Hold Time";
301 return "Unsupported Capability";
304 std::ostringstream oss;
305 oss <<
"Unknown(" << sub_code <<
")";
323 return "Malformed Attribute List";
325 return "Unrecognized Well-known Attribute";
327 return "Missing Well-known Attribute";
329 return "Attribute Flags Error";
331 return "Attribute Length Error";
333 return "Invalid ORIGIN Attribute";
335 return "Invalid NEXT_HOP Attribute";
337 return "Optional Attribute Error";
339 return "Invalid Network Field";
341 return "Malformed AS_PATH";
344 std::ostringstream oss;
345 oss <<
"Unknown(" << sub_code <<
")";
357 return "Unspecified Error";
359 return "Receive Unexpected Message in OpenSent State";
361 return "Receive Unexpected Message in OpenConfirm State";
363 return "Receive Unexpected Message in Established State";
366 std::ostringstream oss;
367 oss <<
"Unknown(" << sub_code <<
")";
386 return "Unspecified Error";
388 return "Received Maximum prefixes from peer";
390 return "Administrator has disabled the peer";
392 return "Administrator has unconfigured the peer";
394 return "Administrator reset the peer";
396 return "Connection is rejected by the peer";
398 return "Peer configuration has changed";
400 return "Connection collision";
402 return "Unable handle peer due to resource limit";
404 return "Received HardReset to skip GR Helper mode";
407 std::ostringstream oss;
408 oss <<
"Unknown(" << sub_code <<
")";
418 virtual const std::string
ToString()
const;
436 std::vector <BgpProtoPrefix *>
nlri;
452 #endif // SRC_BGP_BGP_PROTO_H_
std::vector< Family > families
virtual const std::string ToString() const
static BgpProto::Notification * Decode(const uint8_t *data, size_t size)
int Validate(BgpPeer *peer) const
void STLDeleteValues(Container *container)
static Capability * Encode(uint16_t gr_time, bool restarted, bool notification, const std::vector< uint8_t > &gr_afi_flags, const std::vector< Address::Family > &gr_families)
static std::string UpdateMsgSubCodeToString(UpdateMsgSubCode sub_code)
static void GetFamilies(const LLGR &llgr_params, std::vector< std::string > *families)
bool forwarding_state_preserved() const
static std::string BgpPeerTypeString(BgpPeerType peer_type)
static std::string CapabilityToString(int capability)
std::vector< BgpProtoPrefix * > nlri
virtual const std::string ToString() const
static BgpProto::Keepalive * Decode(const uint8_t *data, size_t size)
static std::string FsmSubcodeToString(FsmSubcode sub_code)
void set_time(uint16_t gr_cap_bytes)
int EncodeCapabilities(OpenMessage *msg, uint8_t *data, size_t size)
static int EncodeData(OpenMessage *msg, uint8_t *data, size_t size)
static bool Decode(GR *gr_params, const std::vector< Capability * > &capabilities)
static int EncodeData(Notification *msg, uint8_t *data, size_t size)
static const int kMinMessageSize
static std::string OpenMsgSubcodeToString(OpenMsgSubCode sub_code)
std::vector< OptParam * > opt_params
int CompareTo(const Update &rhs) const
Family(uint16_t afi, uint8_t safi, uint8_t flags, uint32_t time)
static BgpMessage * Decode(const uint8_t *data, size_t size, ParseErrorContext *ec=NULL, bool as4=false)
std::vector< BgpProtoPrefix * > withdrawn_routes
static int Encode(const BgpMessage *msg, uint8_t *data, size_t size, EncodeOffsets *offsets=NULL, bool as4=false)
std::vector< Family > families
static std::string MsgHdrSubcodeToString(MsgHdrSubCode sub_code)
static void GetFamilies(const GR &gr_params, std::vector< std::string > *families)
bool forwarding_state_preserved() const
std::vector< uint8_t > capability
static Capability * Encode(uint32_t llgr_time, uint8_t llgr_afi_flags, const std::vector< Address::Family > &llgr_families)
Capability(int code, const uint8_t *src, int size)
static int EncodeData(Update *msg, uint8_t *data, size_t size)
static BgpProto::OpenMessage * Decode(const uint8_t *data, size_t size)
virtual const std::string ToString() const
static const int kMaxMessageSize
static BgpProto::Update * Decode(const uint8_t *data, size_t size)
int Validate(const BgpPeer *, std::string *data)
static bool Decode(LLGR *llgr_params, const std::vector< Capability * > &capabilities)
std::vector< Capability * > capabilities
BgpMessage(MessageType type)
int ValidateCapabilities(BgpPeer *peer) const
Family(uint16_t afi, uint8_t safi, uint8_t flags)
static std::string CodeToString(Code code)
static std::string CeaseSubcodeToString(CeaseSubCode sub_code)
bool notification() const
void set_flags(uint16_t gr_cap_bytes)
std::vector< BgpAttribute * > path_attributes
static const std::string toString(Code code, int subcode)