5 #ifndef SRC_BGP_BGP_CONFIG_IFMAP_H__
6 #define SRC_BGP_BGP_CONFIG_IFMAP_H__
8 #include <boost/function.hpp>
9 #include <boost/scoped_ptr.hpp>
24 #define EVPN_ES_IMPORT_ROUTE_TARGET_AS2 (BGP_RTGT_MIN_ID_AS2 - 1) // 7999999
25 #define EVPN_ES_IMPORT_ROUTE_TARGET_AS4 (BGP_RTGT_MIN_ID_AS4 - 1) // 7999
41 class RoutingPolicyRoutingInstance;
42 struct BgpRouterParams;
77 typedef std::map<std::string, BgpNeighborConfig *>
NeighborMap;
84 const autogen::BgpPeering *peering);
89 std::pair<IFMapNode *, IFMapNode *> *pair);
102 const autogen::BgpRouter *local_rt_config,
103 const std::string &peername,
104 const autogen::BgpRouter *remote_rt_config,
105 const autogen::BgpPeering *peering,
NeighborMap *map);
135 const autogen::BgpRouter *router);
190 typedef std::map<std::string,
192 typedef std::map<std::string,
194 typedef std::map<std::string,
203 const autogen::RoutingInstance *config);
287 std::pair<IFMapNode *, IFMapNode *> *pair);
292 const autogen::RoutingPolicyRoutingInstance *ri_rp);
300 boost::intrusive_ptr<
308 typedef std::map<std::string, BgpIfmapInstanceConfig *>
InstanceMap;
320 const autogen::RoutingPolicy *policy);
349 const autogen::GlobalSystemConfig *system);
359 const autogen::GlobalQosConfig *qos);
382 typedef std::map<std::string,
384 typedef std::map<std::string,
386 typedef std::map<std::string,
402 const std::string &name)
const;
416 const std::string &name);
418 const std::string &name)
const;
421 const std::string &start_name = std::string())
const;
423 const std::string &start_name = std::string())
const;
436 uint32_t new_id, uint32_t old_id, uint32_t new_as, uint32_t old_as);
483 const std::string &start_name = std::string())
const;
485 const std::string &start_name = std::string())
const;
487 const std::string &instance_name)
const;
489 virtual int NeighborCount(
const std::string &instance_name)
const;
493 const std::string &name)
const;
495 const std::string &name)
const;
497 const std::string &instance_name)
const;
499 const std::string &instance_name,
const std::string &name)
const;
516 typedef std::map<std::string,
543 boost::scoped_ptr<BgpIfmapConfigData>
config_;
548 #endif // SRC_BGP_BGP_CONFIG_IFMAP_H_
virtual const BgpNeighborConfig * FindNeighbor(const std::string &instance_name, const std::string &name) const
void ProcessGlobalSystemConfig(const BgpConfigDelta &delta)
void ProcessRoutingPolicy(const BgpConfigDelta &change)
const std::string & virtual_network() const
BgpIfmapRoutingPolicyConfig * policy_
const RouteTargetList & export_list() const
BgpIfmapPeeringConfig * FindPeering(const std::string &name)
const RouteTargetList & import_list() const
void Update(BgpIfmapConfigManager *manager, const autogen::BgpRouter *router)
const BgpNeighborConfig * FindNeighbor(const std::string &name) const
std::map< std::string, BgpRoutingPolicyConfig * > RoutingPolicyMap
void DeleteRoutingPolicyLink(BgpIfmapRoutingPolicyLinkConfig *ri_rp_link)
const BgpGlobalQosConfig * config() const
void AddPeering(BgpIfmapPeeringConfig *peering)
BgpIfmapInstanceConfig * instance()
IFMapNodeProxy node_proxy_
void AddInstance(BgpIfmapInstanceConfig *rti)
const IFMapNode * node() const
void ProcessBgpPeering(const BgpConfigDelta &change)
boost::intrusive_ptr< const autogen::BgpPeering > bgp_peering_
void Update(BgpIfmapConfigManager *manager, const autogen::RoutingPolicy *policy)
IFMapNodeProxy node_proxy_
BgpConfigManager::RoutingPolicyMapRange RoutingPolicyMapItems(const std::string &start_name=std::string()) const
const RouteTargetList & import_list() const
friend class BgpConfigManagerTest
BgpIfmapPeeringConfig * CreatePeering(BgpIfmapInstanceConfig *rti, IFMapNodeProxy *proxy)
BgpIfmapConfigManager(BgpServer *server)
std::map< std::string, BgpNeighborConfig * > NeighborMap
std::pair< RoutingPolicyMap::const_iterator, RoutingPolicyMap::const_iterator > RoutingPolicyMapRange
const BgpIfmapConfigData * config() const
std::pair< InstanceMap::const_iterator, InstanceMap::const_iterator > InstanceMapRange
void Update(BgpIfmapConfigManager *manager, const autogen::RoutingInstance *config)
void Update(BgpIfmapConfigManager *manager, const autogen::RoutingPolicyRoutingInstance *ri_rp)
BgpIfmapConfigData * config()
bool Update(BgpIfmapConfigManager *manager, const autogen::GlobalSystemConfig *system)
const PeeringMap & peerings() const
DISALLOW_COPY_AND_ASSIGN(BgpIfmapPeeringConfig)
void SetNodeProxy(IFMapNodeProxy *proxy)
void BuildNeighbors(BgpIfmapConfigManager *manager, const autogen::BgpRouter *local_rt_config, const std::string &peername, const autogen::BgpRouter *remote_rt_config, const autogen::BgpPeering *peering, NeighborMap *map)
virtual ~BgpIfmapConfigManager()
BgpIfmapProtocolConfig * protocol_config_mutable()
const BgpIfmapGlobalSystemConfig * global_config() const
DISALLOW_COPY_AND_ASSIGN(BgpIfmapInstanceConfig)
void ProcessIdentifierAndASUpdate(BgpIfmapConfigManager *manager, uint32_t new_id, uint32_t old_id, uint32_t new_as, uint32_t old_as)
BgpGlobalSystemConfig data_
virtual const BgpRoutingPolicyConfig * FindRoutingPolicy(const std::string &name) const
void Delete(BgpIfmapConfigManager *manager)
BgpIfmapRoutingPolicyConfig * LocateRoutingPolicy(const std::string &name)
std::map< std::string, BgpIfmapRoutingPolicyConfig * > RouitngPolicyMap
BgpIfmapRoutingPolicyLinkConfig * CreateRoutingPolicyLink(BgpIfmapInstanceConfig *rti, BgpIfmapRoutingPolicyConfig *rtp, IFMapNodeProxy *proxy)
void set_index(int index)
const autogen::RoutingPolicyRoutingInstance * routing_policy_link() const
std::map< std::string, BgpIfmapInstanceConfig * > InstanceMap
std::set< std::string > RouteTargetList
void DeletePeering(BgpIfmapPeeringConfig *peering)
BgpInstanceMap instance_config_map_
DISALLOW_COPY_AND_ASSIGN(BgpIfmapRoutingPolicyConfig)
const RouteTargetList & export_list() const
BgpIfmapGlobalQosConfig global_qos_
IfmapInstanceMap instances_
const BgpIfmapGlobalQosConfig * global_qos() const
~BgpIfmapProtocolConfig()
void SetNodeProxy(IFMapNodeProxy *proxy)
void AddNeighbor(BgpConfigManager *manager, BgpNeighborConfig *neighbor)
~BgpIfmapRoutingPolicyLinkConfig()
friend class BgpConfigListenerTest
const BgpInstanceConfig * instance_config() const
boost::scoped_ptr< BgpIfmapConfigData > config_
void ProcessBgpProtocol(const BgpConfigDelta &change)
void DeleteNeighbor(BgpConfigManager *manager, BgpNeighborConfig *neighbor)
DISALLOW_COPY_AND_ASSIGN(BgpIfmapProtocolConfig)
void Initialize(DB *db, DBGraph *db_graph, const std::string &localname)
DISALLOW_COPY_AND_ASSIGN(BgpIfmapRoutingPolicyLinkConfig)
void DeletePeering(BgpIfmapPeeringConfig *peer)
BgpRoutingPolicyConfig data_
void Delete(BgpIfmapConfigManager *manager)
virtual const std::string & localname() const
BgpIfmapRoutingPolicyConfig * policy()
bool Update(BgpIfmapConfigManager *manager, const autogen::GlobalQosConfig *qos)
const NeighborMap & neighbors() const
const BgpGlobalSystemConfig * config() const
BgpIfmapRoutingPolicyLinkConfig * FindRoutingPolicyLink(const std::string &name)
IfmapPeeringMap peerings_
boost::intrusive_ptr< const autogen::BgpRouter > bgp_router_
void DeleteRoutingPolicy(BgpIfmapRoutingPolicyConfig *rtp)
static bool GetRouterPair(DBGraph *db_graph, const std::string &localname, IFMapNode *node, std::pair< IFMapNode *, IFMapNode * > *pair)
const autogen::BgpRouterParams & router_params() const
const std::string & name() const
const BgpRoutingPolicyConfig * routing_policy_config() const
BgpInstanceConfig::RouteTargetList RouteTargetList
IfmapRoutingPolicyMap routing_policies_
void InsertVitAndESRTargetInImportList(BgpIfmapConfigManager *manager, BgpInstanceConfig::RouteTargetList &import_list)
virtual int NeighborCount(const std::string &instance_name) const
std::pair< NeighborMap::const_iterator, NeighborMap::const_iterator > NeighborMapRange
BgpIfmapInstanceConfig * instance_
BgpIfmapInstanceConfig * LocateInstance(const std::string &name)
virtual RoutingPolicyMapRange RoutingPolicyMapItems(const std::string &start_name=std::string()) const
IFMapNodeProxy node_proxy_
const std::string & virtual_network() const
BgpIfmapInstanceConfig * instance_
bool DeleteIfEmpty(BgpConfigManager *manager)
void DeleteRoutingPolicy(BgpIfmapRoutingPolicyConfig *rtp)
std::string GetESRouteTarget(uint32_t as) const
virtual const BgpProtocolConfig * GetProtocolConfig(const std::string &instance_name) const
const BgpIfmapInstanceConfig * instance() const
bool DeleteIfEmpty(BgpConfigManager *manager)
RouitngPolicyMap routing_policies_
static const int kConfigTaskInstanceId
void ProcessIdentifierUpdate(uint32_t new_id, uint32_t old_id)
virtual InstanceMapRange InstanceMapItems(const std::string &start_name=std::string()) const
IndexMap< std::string, BgpIfmapInstanceConfig, BitSet > IfmapInstanceMap
void SetNodeProxy(IFMapNodeProxy *proxy)
BgpIfmapInstanceConfig * instance()
void UpdateInstanceConfig(BgpIfmapInstanceConfig *rti, BgpConfigManager::EventType event)
BgpIfmapPeeringConfig(BgpIfmapInstanceConfig *instance)
~BgpIfmapInstanceConfig()
boost::intrusive_ptr< const autogen::RoutingPolicy > routing_policy_
void AddRoutingPolicy(BgpIfmapRoutingPolicyConfig *rtp)
std::map< std::string, BgpInstanceConfig * > InstanceMap
void ProcessASUpdate(uint32_t new_as, uint32_t old_as)
const IfmapPeeringMap & peerings() const
std::map< std::string, BgpIfmapRoutingPolicyLinkConfig * > IfmapRoutingPolicyLinkMap
~BgpIfmapRoutingPolicyConfig()
void ProcessBgpRouter(const BgpConfigDelta &change)
const std::string & InstanceName() const
BgpRoutingPolicyMap routing_policy_config_map_
virtual const BgpInstanceConfig * FindInstance(const std::string &name) const
IfmapRoutingPolicyLinkMap ri_rp_links_
const std::string & name() const
DISALLOW_COPY_AND_ASSIGN(BgpIfmapConfigData)
BgpIfmapProtocolConfig(BgpIfmapInstanceConfig *instance)
BgpIfmapInstanceConfig * instance_
void DeleteInstance(BgpIfmapInstanceConfig *rti)
DISALLOW_COPY_AND_ASSIGN(BgpIfmapConfigManager)
std::string GetVitFromId(uint32_t identifier) const
IFMapNodeProxy node_proxy_
const autogen::BgpPeering * bgp_peering() const
const BgpIfmapProtocolConfig * protocol_config() const
void RemoveInstance(BgpIfmapInstanceConfig *rti)
void Delete(BgpConfigManager *manager)
BgpIfmapGlobalSystemConfig global_config_
BgpIfmapRoutingPolicyConfig(const std::string &name)
friend class BgpConfigManagerTest
void ProcessChanges(const ChangeList &change_list)
IFMapNodeProxy node_proxy_
std::map< std::string, BgpNeighborConfig * > NeighborMap
boost::scoped_ptr< BgpIfmapProtocolConfig > protocol_
void ProcessGlobalQosConfig(const BgpConfigDelta &delta)
void SetNodeProxy(IFMapNodeProxy *proxy)
std::vector< BgpConfigDelta > ChangeList
BgpConfigManager::InstanceMap BgpInstanceMap
void ChangeNeighbor(BgpConfigManager *manager, BgpNeighborConfig *neighbor)
void ProcessRoutingInstance(const BgpConfigDelta &change)
BgpIfmapProtocolConfig * LocateProtocol()
boost::scoped_ptr< BgpConfigListener > listener_
BgpIfmapGlobalQosConfig * global_qos()
void SetNodeProxy(IFMapNodeProxy *proxy)
BgpConfigManager::NeighborMapRange NeighborMapItems() const
void Update(BgpIfmapConfigManager *manager, const autogen::BgpPeering *peering)
std::map< std::string, boost::function< void(const BgpConfigDelta &)> > IdentifierMap
BgpInstanceConfig * instance_config()
void Delete(BgpIfmapConfigManager *manager)
int virtual_network_index() const
BgpIfmapRoutingPolicyLinkConfig(BgpIfmapInstanceConfig *rti, BgpIfmapRoutingPolicyConfig *rtp)
virtual void ResetRoutingInstanceIndexBit(int index)
IfmapInstanceMap & instances()
const BgpIfmapInstanceConfig * instance()
BgpIfmapInstanceConfig * FindInstance(const std::string &name)
BgpIfmapInstanceConfig(const std::string &name)
const BgpServer * server()
BgpConfigManager::InstanceMapRange InstanceMapItems(const std::string &start_name=std::string()) const
const BgpProtocolConfig * protocol_config() const
std::map< std::string, BgpIfmapPeeringConfig * > IfmapPeeringMap
const IFMapNode * node() const
boost::intrusive_ptr< const autogen::RoutingPolicyRoutingInstance > ri_rp_link_
std::map< std::string, BgpIfmapPeeringConfig * > PeeringMap
virtual NeighborMapRange NeighborMapItems(const std::string &instance_name) const
BgpRoutingPolicyConfig * routing_policy_config()
BgpIfmapRoutingPolicyConfig * FindRoutingPolicy(const std::string &name)
const autogen::BgpRouter * bgp_router() const
void DefaultBgpRouterParams(autogen::BgpRouterParams *param)
static bool GetInstancePolicyPair(DBGraph *graph, IFMapNode *node, std::pair< IFMapNode *, IFMapNode * > *pair)
BgpConfigManager::RoutingPolicyMap BgpRoutingPolicyMap
void ProcessRoutingPolicyLink(const BgpConfigDelta &change)
int virtual_network_index() const
std::map< std::string, BgpIfmapRoutingPolicyConfig * > IfmapRoutingPolicyMap
BgpIfmapGlobalSystemConfig * global_config()