OpenSDN source code
bgp_router.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2018 Juniper Networks, Inc. All rights reserved.
3  */
4 
5 #ifndef __AGENT_OPER_BGP_ROUTER_H
6 #define __AGENT_OPER_BGP_ROUTER_H
7 
8 #include <cmn/agent_cmn.h>
9 #include <oper/oper_db.h>
10 #include <bgp_schema_types.h>
11 
12 #define BGP_ROUTER_TYPE "control-node"
13 #define BGP_ROUTER_EXT_TYPE "external-control-node"
14 #define CONTROL_NODE_ZONE_CONFIG_NAME "control-node-zone"
15 
16 class IFMapNode;
17 class BgpRouter;
18 class ControlNodeZone;
19 class BgpRouterConfig;
20 
21 typedef boost::shared_ptr<BgpRouter> BgpRouterPtr;
22 typedef boost::shared_ptr<ControlNodeZone> ControlNodeZonePtr;
23 typedef std::map<std::string, BgpRouterPtr> BgpRouterTree;
24 typedef std::map<std::string, ControlNodeZonePtr> ControlNodeZoneTree;
25 
26 class BgpRouter {
27 public:
28  BgpRouter(const std::string &name,
29  const std::string &ipv4_address,
30  const uint32_t &port, autogen::BgpRouterParams &params);
31  ~BgpRouter();
32 
33  void set_ip_address_port(const std::string &ip_address, const uint32_t &port);
34  void set_control_node_zone_name(const std::string &contol_node_zone_name);
35 
36  const std::string &name() const { return name_; }
37  const Ip4Address &ipv4_address() const { return ipv4_address_; }
38  const uint32_t &port() const { return port_; }
39  const std::string &control_node_zone_name() const {
41  }
42  void set_inet_labeled_af(const autogen::BgpRouterParams params);
45 private:
46  std::string name_;
48  uint32_t port_;
51  autogen::BgpRouterParams params_;
53 };
54 
56 public:
57  ControlNodeZone(const std::string &name, const std::string &display_name,
58  const boost::uuids::uuid &uuid);
60 
61  const std::string &name() const { return name_; }
62  const BgpRouterTree &bgp_router_tree() const {
63  return bgp_router_tree_;
64  }
65 private:
66  friend class BgpRouterConfig;
67  std::string name_;
68  std::string display_name_;
72 };
73 
75 public:
77  virtual ~BgpRouterConfig();
78 
79  tbb::mutex &mutex() { return mutex_; }
80  uint32_t GetBgpRouterCount() { return bgp_router_tree_.size(); }
81  uint32_t GetBgpRouterCount(const std::string &cnz_name);
83  return control_node_zone_tree_.size();
84  }
85 
86  const BgpRouterTree &bgp_router_tree() const {
87  return bgp_router_tree_;
88  }
89 
92  }
93 
94  BgpRouterPtr GetBgpRouterFromXmppServer(const std::string &xmpp_server);
95  BgpRouterPtr GetBgpRouterFromControlNodeZone(const std::string &cnz_name);
96 
97  void UpdateControlNodeZoneConfig(IFMapNode *bgp_router_node,
98  BgpRouterPtr bgp_router);
99  void DeleteControlNodeZoneConfig(IFMapNode *bgp_router_node,
100  BgpRouterPtr bgp_router);
101 
102  void ConfigDelete(IFMapNode *node);
103  void ConfigAddChange(IFMapNode *node);
104  void ConfigManagerEnqueue(IFMapNode *node);
106  return inet_labeled_af_enabled_; }
107 private:
109  tbb::mutex mutex_;
114 };
115 
116 #endif
boost::asio::ip::address_v4 Ip4Address
Definition: address.h:14
std::map< std::string, BgpRouterPtr > BgpRouterTree
Definition: bgp_router.h:23
std::map< std::string, ControlNodeZonePtr > ControlNodeZoneTree
Definition: bgp_router.h:24
boost::shared_ptr< ControlNodeZone > ControlNodeZonePtr
Definition: bgp_router.h:22
boost::shared_ptr< BgpRouter > BgpRouterPtr
Definition: bgp_router.h:19
Definition: agent.h:360
uint32_t GetBgpRouterCount()
Definition: bgp_router.h:80
BgpRouterConfig(Agent *agent)
Definition: bgp_router.cc:79
uint32_t GetControlNodeZoneCount()
Definition: bgp_router.h:82
virtual ~BgpRouterConfig()
Definition: bgp_router.cc:293
void ConfigAddChange(IFMapNode *node)
Definition: bgp_router.cc:235
tbb::mutex mutex_
Definition: bgp_router.h:109
void ConfigDelete(IFMapNode *node)
Definition: bgp_router.cc:268
bool GetInetLabeledAfEnableStatus()
Definition: bgp_router.h:105
void UpdateControlNodeZoneConfig(IFMapNode *bgp_router_node, BgpRouterPtr bgp_router)
Definition: bgp_router.cc:162
void UpdateBgpRouterConfigAf()
Definition: bgp_router.cc:213
BgpRouterPtr GetBgpRouterFromXmppServer(const std::string &xmpp_server)
Definition: bgp_router.cc:83
ControlNodeZoneTree control_node_zone_tree_
Definition: bgp_router.h:111
DISALLOW_COPY_AND_ASSIGN(BgpRouterConfig)
void ConfigManagerEnqueue(IFMapNode *node)
Definition: bgp_router.cc:289
bool inet_labeled_af_enabled_
Definition: bgp_router.h:112
void DeleteControlNodeZoneConfig(IFMapNode *bgp_router_node, BgpRouterPtr bgp_router)
Definition: bgp_router.cc:145
tbb::mutex & mutex()
Definition: bgp_router.h:79
const ControlNodeZoneTree & control_node_zone_tree() const
Definition: bgp_router.h:90
const BgpRouterTree & bgp_router_tree() const
Definition: bgp_router.h:86
BgpRouterTree bgp_router_tree_
Definition: bgp_router.h:110
BgpRouterPtr GetBgpRouterFromControlNodeZone(const std::string &cnz_name)
Definition: bgp_router.cc:115
const std::string & control_node_zone_name() const
Definition: bgp_router.h:39
uint32_t port_
Definition: bgp_router.h:48
void set_ip_address_port(const std::string &ip_address, const uint32_t &port)
Definition: bgp_router.cc:47
void set_control_node_zone_name(const std::string &contol_node_zone_name)
Definition: bgp_router.cc:57
const uint32_t & port() const
Definition: bgp_router.h:38
void set_inet_labeled_af(const autogen::BgpRouterParams params)
Definition: bgp_router.cc:62
bool get_inet_labeled_af()
Definition: bgp_router.h:43
std::string name_
Definition: bgp_router.h:46
std::string control_node_zone_name_
Definition: bgp_router.h:50
bool inet_labeled_af_enable_
Definition: bgp_router.h:49
BgpRouter(const std::string &name, const std::string &ipv4_address, const uint32_t &port, autogen::BgpRouterParams &params)
Definition: bgp_router.cc:29
const Ip4Address & ipv4_address() const
Definition: bgp_router.h:37
DISALLOW_COPY_AND_ASSIGN(BgpRouter)
autogen::BgpRouterParams params_
Definition: bgp_router.h:51
const std::string & name() const
Definition: bgp_router.h:36
Ip4Address ipv4_address_
Definition: bgp_router.h:47
DISALLOW_COPY_AND_ASSIGN(ControlNodeZone)
BgpRouterTree bgp_router_tree_
Definition: bgp_router.h:70
const BgpRouterTree & bgp_router_tree() const
Definition: bgp_router.h:62
ControlNodeZone(const std::string &name, const std::string &display_name, const boost::uuids::uuid &uuid)
Definition: bgp_router.cc:17
std::string name_
Definition: bgp_router.h:67
const std::string & name() const
Definition: bgp_router.h:61
std::string display_name_
Definition: bgp_router.h:68
boost::uuids::uuid uuid_
Definition: bgp_router.h:69
Agent * agent() const
Definition: oper_db.h:245
boost::uuids::uuid uuid