Line data Source code
1 : /* 2 : * Copyright (c) 2013 Juniper Networks, Inc. All rights reserved. 3 : */ 4 : 5 : #ifndef SRC_BGP_BGP_MESSAGE_BUILDER_H_ 6 : #define SRC_BGP_BGP_MESSAGE_BUILDER_H_ 7 : 8 : #include <string> 9 : 10 : #include "bgp/bgp_proto.h" 11 : #include "bgp/message_builder.h" 12 : 13 : class RibOut; 14 : 15 : class BgpMessage : public Message { 16 : public: 17 : BgpMessage(); 18 : virtual ~BgpMessage(); 19 : virtual bool Start(const RibOut *ribout, bool cache_routes, 20 : const RibOutAttr *roattr, const BgpRoute *route); 21 : virtual bool AddRoute(const BgpRoute *route, const RibOutAttr *roattr); 22 : virtual void Finish(); 23 : virtual const uint8_t *GetData(IPeerUpdate *peer, size_t *lenp, 24 : const std::string **msg_str, 25 : std::string *temp); 26 : 27 : private: 28 : virtual void Reset(); 29 : bool StartReach(const RibOut *ribout, const RibOutAttr *roattr, 30 : const BgpRoute *route); 31 : bool StartUnreach(const BgpRoute *route); 32 : bool UpdateLength(const char *tag, int size, int delta); 33 : 34 : const BgpTable *table_; 35 : EncodeOffsets encode_offsets_; 36 : uint8_t data_[BgpProto::kMaxMessageSize]; 37 : size_t datalen_; 38 : 39 : DISALLOW_COPY_AND_ASSIGN(BgpMessage); 40 : }; 41 : 42 : class BgpMessageBuilder : public MessageBuilder { 43 : public: 44 : BgpMessageBuilder(); 45 : virtual Message *Create() const; 46 0 : virtual ~BgpMessageBuilder(){}; 47 : 48 : private: 49 : DISALLOW_COPY_AND_ASSIGN(BgpMessageBuilder); 50 : }; 51 : 52 : #endif // SRC_BGP_BGP_MESSAGE_BUILDER_H_