OpenSDN source code
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
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;
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
BgpRouterPtr GetBgpRouterFromControlNodeZone(const std::string &cnz_name)
Definition: bgp_router.cc:115
bool inet_labeled_af_enabled_
Definition: bgp_router.h:112
void UpdateBgpRouterConfigAf()
Definition: bgp_router.cc:213
const std::string & control_node_zone_name() const
Definition: bgp_router.h:39
void set_control_node_zone_name(const std::string &contol_node_zone_name)
Definition: bgp_router.cc:57
boost::uuids::uuid uuid_
Definition: bgp_router.h:69
Agent * agent() const
Definition: oper_db.h:245
ControlNodeZone(const std::string &name, const std::string &display_name, const boost::uuids::uuid &uuid)
Definition: bgp_router.cc:17
tbb::mutex mutex_
Definition: bgp_router.h:109
ControlNodeZoneTree control_node_zone_tree_
Definition: bgp_router.h:111
void UpdateControlNodeZoneConfig(IFMapNode *bgp_router_node, BgpRouterPtr bgp_router)
Definition: bgp_router.cc:162
const ControlNodeZoneTree & control_node_zone_tree() const
Definition: bgp_router.h:90
boost::shared_ptr< BgpRouter > BgpRouterPtr
Definition: bgp_router.h:19
boost::uuids::uuid uuid
const Ip4Address & ipv4_address() const
Definition: bgp_router.h:37
BgpRouterTree bgp_router_tree_
Definition: bgp_router.h:70
tbb::mutex & mutex()
Definition: bgp_router.h:79
uint32_t port_
Definition: bgp_router.h:48
virtual ~BgpRouterConfig()
Definition: bgp_router.cc:293
bool get_inet_labeled_af()
Definition: bgp_router.h:43
void ConfigManagerEnqueue(IFMapNode *node)
Definition: bgp_router.cc:289
uint32_t GetBgpRouterCount()
Definition: bgp_router.h:80
void ConfigAddChange(IFMapNode *node)
Definition: bgp_router.cc:235
uint32_t GetControlNodeZoneCount()
Definition: bgp_router.h:82
const BgpRouterTree & bgp_router_tree() const
Definition: bgp_router.h:62
DISALLOW_COPY_AND_ASSIGN(ControlNodeZone)
std::string name_
Definition: bgp_router.h:46
Definition: agent.h:358
bool GetInetLabeledAfEnableStatus()
Definition: bgp_router.h:105
BgpRouterPtr GetBgpRouterFromXmppServer(const std::string &xmpp_server)
Definition: bgp_router.cc:83
BgpRouterConfig(Agent *agent)
Definition: bgp_router.cc:79
const BgpRouterTree & bgp_router_tree() const
Definition: bgp_router.h:86
BgpRouter(const std::string &name, const std::string &ipv4_address, const uint32_t &port, autogen::BgpRouterParams &params)
Definition: bgp_router.cc:29
std::string control_node_zone_name_
Definition: bgp_router.h:50
boost::asio::ip::address_v4 Ip4Address
Definition: address.h:14
const std::string & name() const
Definition: bgp_router.h:36
void ConfigDelete(IFMapNode *node)
Definition: bgp_router.cc:268
BgpRouterTree bgp_router_tree_
Definition: bgp_router.h:110
void DeleteControlNodeZoneConfig(IFMapNode *bgp_router_node, BgpRouterPtr bgp_router)
Definition: bgp_router.cc:145
autogen::BgpRouterParams params_
Definition: bgp_router.h:51
std::map< std::string, BgpRouterPtr > BgpRouterTree
Definition: bgp_router.h:23
boost::shared_ptr< ControlNodeZone > ControlNodeZonePtr
Definition: bgp_router.h:22
bool inet_labeled_af_enable_
Definition: bgp_router.h:49
DISALLOW_COPY_AND_ASSIGN(BgpRouter)
DISALLOW_COPY_AND_ASSIGN(BgpRouterConfig)
const std::string & name() const
Definition: bgp_router.h:61
void set_inet_labeled_af(const autogen::BgpRouterParams params)
Definition: bgp_router.cc:62
std::string display_name_
Definition: bgp_router.h:68
Ip4Address ipv4_address_
Definition: bgp_router.h:47
std::string name_
Definition: bgp_router.h:67
void set_ip_address_port(const std::string &ip_address, const uint32_t &port)
Definition: bgp_router.cc:47
std::map< std::string, ControlNodeZonePtr > ControlNodeZoneTree
Definition: bgp_router.h:24
const uint32_t & port() const
Definition: bgp_router.h:38