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