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)
25 #define EVPN_ES_IMPORT_ROUTE_TARGET_AS4 (BGP_RTGT_MIN_ID_AS4 - 1)
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_;
std::pair< NeighborMap::const_iterator, NeighborMap::const_iterator > NeighborMapRange
std::map< std::string, BgpInstanceConfig * > InstanceMap
std::map< std::string, BgpRoutingPolicyConfig * > RoutingPolicyMap
const BgpServer * server()
std::pair< InstanceMap::const_iterator, InstanceMap::const_iterator > InstanceMapRange
std::pair< RoutingPolicyMap::const_iterator, RoutingPolicyMap::const_iterator > RoutingPolicyMapRange
BgpIfmapGlobalQosConfig global_qos_
BgpIfmapInstanceConfig * FindInstance(const std::string &name)
BgpConfigManager::RoutingPolicyMapRange RoutingPolicyMapItems(const std::string &start_name=std::string()) const
IfmapPeeringMap peerings_
BgpConfigManager::RoutingPolicyMap BgpRoutingPolicyMap
BgpIfmapRoutingPolicyConfig * FindRoutingPolicy(const std::string &name)
std::map< std::string, BgpIfmapRoutingPolicyLinkConfig * > IfmapRoutingPolicyLinkMap
BgpConfigManager::InstanceMapRange InstanceMapItems(const std::string &start_name=std::string()) const
BgpInstanceMap instance_config_map_
const BgpIfmapRoutingPolicyLinkConfig * FindRoutingPolicyLink(const std::string &name) const
void DeletePeering(BgpIfmapPeeringConfig *peer)
BgpIfmapRoutingPolicyLinkConfig * FindRoutingPolicyLink(const std::string &name)
const BgpIfmapGlobalSystemConfig * global_config() const
IfmapRoutingPolicyMap routing_policies_
void DeleteInstance(BgpIfmapInstanceConfig *rti)
const BgpIfmapRoutingPolicyConfig * FindRoutingPolicy(const std::string &name) const
BgpIfmapInstanceConfig * LocateInstance(const std::string &name)
BgpIfmapGlobalSystemConfig * global_config()
BgpIfmapPeeringConfig * CreatePeering(BgpIfmapInstanceConfig *rti, IFMapNodeProxy *proxy)
const IfmapPeeringMap & peerings() const
std::map< std::string, BgpIfmapPeeringConfig * > IfmapPeeringMap
BgpIfmapGlobalQosConfig * global_qos()
const BgpIfmapGlobalQosConfig * global_qos() const
const BgpIfmapInstanceConfig * FindInstance(const std::string &name) const
BgpIfmapRoutingPolicyLinkConfig * CreateRoutingPolicyLink(BgpIfmapInstanceConfig *rti, BgpIfmapRoutingPolicyConfig *rtp, IFMapNodeProxy *proxy)
BgpIfmapGlobalSystemConfig global_config_
BgpConfigManager::InstanceMap BgpInstanceMap
BgpIfmapPeeringConfig * FindPeering(const std::string &name)
BgpIfmapRoutingPolicyConfig * LocateRoutingPolicy(const std::string &name)
IndexMap< std::string, BgpIfmapInstanceConfig, BitSet > IfmapInstanceMap
IfmapRoutingPolicyLinkMap ri_rp_links_
DISALLOW_COPY_AND_ASSIGN(BgpIfmapConfigData)
BgpRoutingPolicyMap routing_policy_config_map_
std::map< std::string, BgpIfmapRoutingPolicyConfig * > IfmapRoutingPolicyMap
IfmapInstanceMap instances_
void DeleteRoutingPolicy(BgpIfmapRoutingPolicyConfig *rtp)
void ProcessIdentifierAndASUpdate(BgpIfmapConfigManager *manager, uint32_t new_id, uint32_t old_id, uint32_t new_as, uint32_t old_as)
IfmapInstanceMap & instances()
void DeleteRoutingPolicyLink(BgpIfmapRoutingPolicyLinkConfig *ri_rp_link)
const BgpIfmapPeeringConfig * FindPeering(const std::string &name) const
BgpIfmapConfigData * config()
boost::scoped_ptr< BgpIfmapConfigData > config_
void ProcessBgpProtocol(const BgpConfigDelta &change)
void ProcessGlobalSystemConfig(const BgpConfigDelta &delta)
virtual NeighborMapRange NeighborMapItems(const std::string &instance_name) const
void ProcessRoutingInstance(const BgpConfigDelta &change)
virtual const BgpRoutingPolicyConfig * FindRoutingPolicy(const std::string &name) const
void ProcessBgpRouter(const BgpConfigDelta &change)
void Initialize(DB *db, DBGraph *db_graph, const std::string &localname)
BgpIfmapConfigManager(BgpServer *server)
boost::scoped_ptr< BgpConfigListener > listener_
static const int kConfigTaskInstanceId
virtual const BgpProtocolConfig * GetProtocolConfig(const std::string &instance_name) const
virtual int NeighborCount(const std::string &instance_name) const
friend class BgpConfigListenerTest
void ProcessRoutingPolicy(const BgpConfigDelta &change)
virtual void ResetRoutingInstanceIndexBit(int index)
std::map< std::string, boost::function< void(const BgpConfigDelta &)> > IdentifierMap
DISALLOW_COPY_AND_ASSIGN(BgpIfmapConfigManager)
void ProcessRoutingPolicyLink(const BgpConfigDelta &change)
void ProcessGlobalQosConfig(const BgpConfigDelta &delta)
virtual const std::string & localname() const
virtual RoutingPolicyMapRange RoutingPolicyMapItems(const std::string &start_name=std::string()) const
virtual InstanceMapRange InstanceMapItems(const std::string &start_name=std::string()) const
void DefaultBgpRouterParams(autogen::BgpRouterParams *param)
void ProcessBgpPeering(const BgpConfigDelta &change)
const BgpIfmapConfigData * config() const
void UpdateInstanceConfig(BgpIfmapInstanceConfig *rti, BgpConfigManager::EventType event)
virtual const BgpInstanceConfig * FindInstance(const std::string &name) const
virtual const BgpNeighborConfig * FindNeighbor(const std::string &instance_name, const std::string &name) const
void ProcessChanges(const ChangeList &change_list)
std::vector< BgpConfigDelta > ChangeList
virtual ~BgpIfmapConfigManager()
const BgpGlobalQosConfig * config() const
bool Update(BgpIfmapConfigManager *manager, const autogen::GlobalQosConfig *qos)
BgpGlobalSystemConfig data_
const BgpGlobalSystemConfig * config() const
bool Update(BgpIfmapConfigManager *manager, const autogen::GlobalSystemConfig *system)
std::string GetESRouteTarget(uint32_t as) const
void ProcessASUpdate(uint32_t new_as, uint32_t old_as)
const BgpNeighborConfig * FindNeighbor(const std::string &name) const
void ProcessIdentifierUpdate(uint32_t new_id, uint32_t old_id)
IFMapNodeProxy node_proxy_
const std::string & virtual_network() const
void SetNodeProxy(IFMapNodeProxy *proxy)
std::string GetVitFromId(uint32_t identifier) const
boost::scoped_ptr< BgpIfmapProtocolConfig > protocol_
void DeletePeering(BgpIfmapPeeringConfig *peering)
void set_index(int index)
BgpIfmapInstanceConfig(const std::string &name)
BgpIfmapProtocolConfig * protocol_config_mutable()
const RouteTargetList & import_list() const
std::map< std::string, BgpIfmapRoutingPolicyConfig * > RouitngPolicyMap
const NeighborMap & neighbors() const
BgpIfmapProtocolConfig * LocateProtocol()
void DeleteNeighbor(BgpConfigManager *manager, BgpNeighborConfig *neighbor)
void AddPeering(BgpIfmapPeeringConfig *peering)
void AddRoutingPolicy(BgpIfmapRoutingPolicyConfig *rtp)
std::map< std::string, BgpNeighborConfig * > NeighborMap
~BgpIfmapInstanceConfig()
const BgpInstanceConfig * instance_config() const
void ChangeNeighbor(BgpConfigManager *manager, BgpNeighborConfig *neighbor)
friend class BgpConfigManagerTest
const PeeringMap & peerings() const
BgpConfigManager::NeighborMapRange NeighborMapItems() const
std::map< std::string, BgpIfmapPeeringConfig * > PeeringMap
const RouteTargetList & export_list() const
void AddNeighbor(BgpConfigManager *manager, BgpNeighborConfig *neighbor)
BgpInstanceConfig * instance_config()
bool DeleteIfEmpty(BgpConfigManager *manager)
void Update(BgpIfmapConfigManager *manager, const autogen::RoutingInstance *config)
const std::string & name() const
RouitngPolicyMap routing_policies_
void DeleteRoutingPolicy(BgpIfmapRoutingPolicyConfig *rtp)
DISALLOW_COPY_AND_ASSIGN(BgpIfmapInstanceConfig)
void InsertVitAndESRTargetInImportList(BgpIfmapConfigManager *manager, BgpInstanceConfig::RouteTargetList &import_list)
int virtual_network_index() const
const BgpIfmapProtocolConfig * protocol_config() const
BgpInstanceConfig::RouteTargetList RouteTargetList
BgpIfmapInstanceConfig * instance_
void SetNodeProxy(IFMapNodeProxy *proxy)
const IFMapNode * node() const
void Delete(BgpIfmapConfigManager *manager)
void Update(BgpIfmapConfigManager *manager, const autogen::BgpPeering *peering)
const BgpIfmapInstanceConfig * instance() const
std::map< std::string, BgpNeighborConfig * > NeighborMap
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)
DISALLOW_COPY_AND_ASSIGN(BgpIfmapPeeringConfig)
const autogen::BgpPeering * bgp_peering() const
BgpIfmapPeeringConfig(BgpIfmapInstanceConfig *instance)
static bool GetRouterPair(DBGraph *db_graph, const std::string &localname, IFMapNode *node, std::pair< IFMapNode *, IFMapNode * > *pair)
BgpIfmapInstanceConfig * instance()
IFMapNodeProxy node_proxy_
boost::intrusive_ptr< const autogen::BgpPeering > bgp_peering_
const autogen::BgpRouterParams & router_params() const
const autogen::BgpRouter * bgp_router() const
BgpIfmapProtocolConfig(BgpIfmapInstanceConfig *instance)
BgpIfmapInstanceConfig * instance_
const BgpProtocolConfig * protocol_config() const
IFMapNodeProxy node_proxy_
~BgpIfmapProtocolConfig()
void SetNodeProxy(IFMapNodeProxy *proxy)
void Update(BgpIfmapConfigManager *manager, const autogen::BgpRouter *router)
boost::intrusive_ptr< const autogen::BgpRouter > bgp_router_
DISALLOW_COPY_AND_ASSIGN(BgpIfmapProtocolConfig)
void Delete(BgpIfmapConfigManager *manager)
const BgpIfmapInstanceConfig * instance()
const std::string & InstanceName() const
~BgpIfmapRoutingPolicyConfig()
void AddInstance(BgpIfmapInstanceConfig *rti)
std::map< std::string, BgpIfmapInstanceConfig * > InstanceMap
const BgpRoutingPolicyConfig * routing_policy_config() const
void Delete(BgpConfigManager *manager)
BgpRoutingPolicyConfig * routing_policy_config()
DISALLOW_COPY_AND_ASSIGN(BgpIfmapRoutingPolicyConfig)
BgpRoutingPolicyConfig data_
void SetNodeProxy(IFMapNodeProxy *proxy)
friend class BgpConfigManagerTest
bool DeleteIfEmpty(BgpConfigManager *manager)
const std::string & name() const
void Update(BgpIfmapConfigManager *manager, const autogen::RoutingPolicy *policy)
BgpIfmapRoutingPolicyConfig(const std::string &name)
IFMapNodeProxy node_proxy_
void RemoveInstance(BgpIfmapInstanceConfig *rti)
boost::intrusive_ptr< const autogen::RoutingPolicy > routing_policy_
DISALLOW_COPY_AND_ASSIGN(BgpIfmapRoutingPolicyLinkConfig)
IFMapNodeProxy node_proxy_
BgpIfmapInstanceConfig * instance()
const IFMapNode * node() const
boost::intrusive_ptr< const autogen::RoutingPolicyRoutingInstance > ri_rp_link_
BgpIfmapRoutingPolicyConfig * policy_
const autogen::RoutingPolicyRoutingInstance * routing_policy_link() const
static bool GetInstancePolicyPair(DBGraph *graph, IFMapNode *node, std::pair< IFMapNode *, IFMapNode * > *pair)
void SetNodeProxy(IFMapNodeProxy *proxy)
~BgpIfmapRoutingPolicyLinkConfig()
BgpIfmapInstanceConfig * instance_
BgpIfmapRoutingPolicyConfig * policy()
void Update(BgpIfmapConfigManager *manager, const autogen::RoutingPolicyRoutingInstance *ri_rp)
void Delete(BgpIfmapConfigManager *manager)
BgpIfmapRoutingPolicyLinkConfig(BgpIfmapInstanceConfig *rti, BgpIfmapRoutingPolicyConfig *rtp)
const std::string & virtual_network() const
int virtual_network_index() const
const RouteTargetList & export_list() const
std::set< std::string > RouteTargetList
const RouteTargetList & import_list() const