18 #include "ifmap/ifmap_log_types.h"
21 #include "schema/vnc_cfg_types.h"
73 AddNodesToWhitelist();
108 assert(
dynamic_cast<IFMapNode *
>(lnode));
109 assert(
dynamic_cast<IFMapNode *
>(rnode));
111 assert(!
dynamic_cast<IFMapLink *
>(lnode));
112 assert(!
dynamic_cast<IFMapLink *
>(rnode));
136 rnode = link->
right();
217 rm_mask.
set(client_index);
228 ninterest |= state->
nmask();
230 if (state->
interest() == ninterest) {
239 iter != state->
end(); ++iter) {
241 table->
Change(iter.operator->());
256 while (iter != end_iter) {
267 assert(state == nstate);
283 for (
Rns_citer iter = rnset->begin(); iter != rnset->end(); ++iter) {
289 assert(state == nstate);
330 rnset->insert(state);
345 "physical-router-virtual-router",
346 "virtual-router-virtual-machine",
347 "virtual-router-network-ipam",
348 "global-system-config-virtual-router",
349 "provider-attachment-virtual-router",
350 "virtual-router-virtual-machine-interface",
351 "virtual-router-sub-cluster",
353 {
"virtual-router-network-ipam", {
354 "virtual-router-network-ipam",
356 {
"virtual-machine", {
357 "virtual-machine-service-instance",
358 "virtual-machine-interface-virtual-machine",
359 "virtual-machine-tag",
361 {
"control-node-zone", {}},
363 "bgp-router-sub-cluster",
366 "instance-bgp-router",
367 "physical-router-bgp-router",
368 "bgp-router-control-node-zone",
370 {
"bgp-as-a-service", {
372 "bgpaas-health-check",
373 "bgpaas-control-node-zone",
375 {
"bgpaas-control-node-zone", {
376 "bgpaas-control-node-zone",
378 {
"global-system-config", {
379 "global-system-config-global-vrouter-config",
380 "global-system-config-global-qos-config",
381 "global-system-config-bgp-router",
382 "qos-config-global-system-config",
384 {
"provider-attachment", {}},
385 {
"service-instance", {
386 "service-instance-service-template",
387 "service-instance-port-tuple",
389 {
"global-vrouter-config", {
390 "application-policy-set-global-vrouter-config",
391 "global-vrouter-config-security-logging-object",
393 {
"virtual-machine-interface", {
394 "virtual-machine-virtual-machine-interface",
395 "virtual-machine-interface-sub-interface",
396 "instance-ip-virtual-machine-interface",
397 "virtual-machine-interface-virtual-network",
398 "virtual-machine-interface-security-group",
399 "floating-ip-virtual-machine-interface",
400 "alias-ip-virtual-machine-interface",
401 "customer-attachment-virtual-machine-interface",
402 "virtual-machine-interface-routing-instance",
403 "virtual-machine-interface-route-table",
404 "subnet-virtual-machine-interface",
405 "service-port-health-check",
406 "bgpaas-virtual-machine-interface",
407 "virtual-machine-interface-qos-config",
408 "virtual-machine-interface-bridge-domain",
409 "virtual-machine-interface-security-logging-object",
410 "project-virtual-machine-interface",
411 "port-tuple-interface",
412 "virtual-machine-interface-tag",
413 "virtual-machine-interface-bgp-router",
415 {
"virtual-machine-interface-bridge-domain", {
416 "virtual-machine-interface-bridge-domain",
419 "security-group-access-control-list",
421 {
"physical-router", {
422 "physical-router-physical-interface",
423 "physical-router-logical-interface",
424 "physical-router-virtual-network",
426 {
"service-template", {
427 "domain-service-template",
430 "instance-ip-virtual-network",
432 {
"virtual-network", {
433 "virtual-network-floating-ip-pool",
434 "virtual-network-alias-ip-pool",
435 "virtual-network-network-ipam",
436 "virtual-network-access-control-list",
437 "virtual-network-routing-instance",
438 "virtual-network-qos-config",
439 "virtual-network-bridge-domain",
440 "virtual-network-security-logging-object",
441 "virtual-network-tag",
442 "virtual-network-provider-network",
443 "virtual-network-multicast-policy",
445 "host-based-service-virtual-network",
446 "logical-router-virtual-network",
449 "floating-ip-pool-floating-ip",
450 "instance-ip-floating-ip",
453 "alias-ip-pool-alias-ip",
455 {
"customer-attachment", {}},
456 {
"virtual-machine-interface-routing-instance", {
457 "virtual-machine-interface-routing-instance",
459 {
"physical-interface", {
460 "physical-interface-logical-interface",
461 "virtual-port-group-physical-interface",
463 {
"virtual-port-group-physical-interface", {
464 "virtual-port-group-physical-interface",
466 {
"virtual-port-group", {
467 "virtual-port-group-virtual-machine-interface",
468 "virtual-port-group-physical-interface",
472 "domain-virtual-DNS",
474 {
"floating-ip-pool", {
475 "virtual-network-floating-ip-pool",
478 "virtual-network-alias-ip-pool",
480 {
"logical-interface", {
481 "logical-interface-virtual-machine-interface",
483 {
"logical-router-virtual-network", {
484 "logical-router-virtual-network",
487 "logical-router-virtual-network",
488 "logical-router-interface",
490 {
"virtual-network-network-ipam", {
491 "virtual-network-network-ipam",
493 {
"access-control-list", {}},
494 {
"routing-instance", {}},
497 "virtual-DNS-virtual-DNS-record",
500 "network-ipam-virtual-DNS",
502 {
"virtual-DNS-record", {}},
503 {
"interface-route-table", {}},
505 {
"service-health-check", {}},
508 {
"forwarding-class", {
509 "forwarding-class-qos-queue",
511 {
"global-qos-config", {
512 "global-qos-config-forwarding-class",
513 "global-qos-config-qos-queue",
514 "global-qos-config-qos-config",
516 {
"bridge-domain", {}},
517 {
"security-logging-object", {
518 "virtual-network-security-logging-object",
519 "virtual-machine-interface-security-logging-object",
520 "global-vrouter-config-security-logging-object",
521 "security-logging-object-network-policy",
522 "security-logging-object-security-group",
525 "application-policy-set-tag",
527 {
"application-policy-set", {
528 "application-policy-set-firewall-policy",
529 "policy-management-application-policy-set",
531 {
"application-policy-set-firewall-policy", {
532 "application-policy-set-firewall-policy",
534 {
"firewall-policy", {
535 "firewall-policy-firewall-rule",
536 "firewall-policy-security-logging-object",
538 {
"firewall-policy-firewall-rule", {
539 "firewall-policy-firewall-rule",
541 {
"firewall-policy-security-logging-object", {
542 "firewall-policy-security-logging-object",
546 "firewall-rule-service-group",
547 "firewall-rule-address-group",
548 "firewall-rule-security-logging-object",
550 {
"firewall-rule-security-logging-object", {
551 "firewall-rule-security-logging-object",
553 {
"service-group", {}},
557 {
"host-based-service", {
558 "host-based-service-virtual-network",
560 {
"host-based-service-virtual-network", {
565 "project-logical-router",
566 "project-host-based-service",
569 "service-instance-port-tuple",
570 "port-tuple-interface",
572 {
"policy-management", {}},
573 {
"multicast-policy", {
574 "virtual-network-multicast-policy",
void Set(const BitSet &rhs)
size_t find_first() const
void BuildComplement(const BitSet &lhs, const BitSet &rhs)
void Reset(const BitSet &rhs)
size_t find_next(size_t pos) const
bool Contains(const BitSet &rhs) const
bool test(size_t pos) const
std::string ToString() const
DBState * GetState(DBTableBase *tbl_base, ListenerId listener) const
virtual std::string ToString() const =0
void Visit(DBGraphVertex *start, VertexVisitor vertex_visit_fn, EdgeVisitor edge_visit_fn)
virtual void Change(DBEntryBase *entry)
DBGraph::VisitorFilter::AllowedEdgeRetVal AllowedEdges(const DBGraphVertex *vertex) const
bool EdgeFilter(const DBGraphVertex *source, const DBGraphVertex *target, const DBGraphEdge *edge) const
GraphPropagateFilter(IFMapExporter *exporter, const IFMapTypenameWhiteList *type_filter, const BitSet &bitset)
bool VertexFilter(const DBGraphVertex *vertex) const
const IFMapNodeState * NodeStateLookup(const IFMapNode *node) const
const IFMapTypenameWhiteList * type_filter_
IFMapExporter * exporter_
virtual const std::string & identifier() const =0
Cs_citer ClientConfigTrackerEnd(TrackerType tracker_type, int index) const
void StateInterestOr(IFMapState *state, const BitSet &interest_bits)
Cs_citer ClientConfigTrackerBegin(TrackerType tracker_type, int index) const
void StateInterestSet(IFMapState *state, const BitSet &interest_bits)
ConfigSet::const_iterator Cs_citer
DBTable::ListenerId TableListenerId(const DBTable *table) const
IFMapNodeState * NodeStateLookup(IFMapNode *node)
IFMapNodeState * NodeStateLocate(IFMapNode *node)
std::set< IFMapState * > ReachableNodesSet
void JoinVertex(DBGraphVertex *vertex, const BitSet &bset)
void AddNodesToWhitelist()
void OrLinkDeleteClients(const BitSet &bset)
void UpdateNewReachableNodesTracker(int client_index, IFMapState *state)
const IFMapTypenameWhiteList & get_traversal_white_list() const
void LinkAdd(IFMapLink *link, IFMapNode *lnode, const BitSet &lhs, IFMapNode *rnode, const BitSet &rhs)
void NotifyEdge(DBGraphEdge *edge, const BitSet &bset)
ReachableNodesTracker new_reachable_nodes_tracker_
void LinkDeleteWalkBatchEnd(const BitSet &done_set)
ReachableNodesSet::const_iterator Rns_citer
IFMapGraphWalker(DBGraph *graph, IFMapExporter *exporter)
size_t walk_client_index_
boost::scoped_ptr< TaskTrigger > link_delete_walk_trigger_
IFMapExporter * exporter_
void NewReachableNodesCleanupInterest(int client_index)
void OldReachableNodesCleanupInterest(int client_index)
void LinkRemove(const BitSet &bset)
static const int kMaxLinkDeleteWalks
void ProcessLinkAdd(IFMapNode *lnode, IFMapNode *rnode, const BitSet &bset)
bool FilterNeighbor(IFMapNode *lnode, IFMapLink *link)
void DeleteNewReachableNodesTracker(int client_index)
void CleanupInterest(int client_index, IFMapNode *node, IFMapNodeState *state)
void AddNewReachableNodesTracker(int client_index)
BitSet link_delete_clients_
void ResetLinkDeleteClients(const BitSet &bset)
void RecomputeInterest(DBGraphVertex *vertex, int bit)
std::unique_ptr< IFMapTypenameWhiteList > traversal_white_list_
const BitSet & nmask() const
virtual std::string ToString() const
IFMapClient * GetClient(int index)
const BitSet & interest() const
IFMapNode * GetIFMapNode() const
static IFMapTable * FindTable(DB *db, const std::string &element_type)
IFMapNode * FindNode(const std::string &name)
int GetTaskId(const std::string &name)
static TaskScheduler * GetInstance()
#define IFMAP_DEBUG(obj,...)
std::pair< bool, AllowedEdgeSet > AllowedEdgeRetVal
virtual AllowedEdgeRetVal AllowedEdges(const DBGraphVertex *source) const
virtual bool VertexFilter(const DBGraphVertex *vertex) const