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 <mutex>
9 
10 #include <cmn/agent_cmn.h>
11 #include <oper/oper_db.h>
12 #include <bgp_schema_types.h>
13 
14 #define BGP_ROUTER_TYPE "control-node"
15 #define BGP_ROUTER_EXT_TYPE "external-control-node"
16 #define CONTROL_NODE_ZONE_CONFIG_NAME "control-node-zone"
17 
18 class IFMapNode;
19 class BgpRouter;
20 class ControlNodeZone;
21 class BgpRouterConfig;
22 
23 typedef boost::shared_ptr<BgpRouter> BgpRouterPtr;
24 typedef boost::shared_ptr<ControlNodeZone> ControlNodeZonePtr;
25 typedef std::map<std::string, BgpRouterPtr> BgpRouterTree;
26 typedef std::map<std::string, ControlNodeZonePtr> ControlNodeZoneTree;
27 
28 class BgpRouter {
29 public:
30  BgpRouter(const std::string &name,
31  const std::string &ipv4_address,
32  const uint32_t &port, autogen::BgpRouterParams &params);
33  ~BgpRouter();
34 
35  void set_ip_address_port(const std::string &ip_address, const uint32_t &port);
36  void set_control_node_zone_name(const std::string &contol_node_zone_name);
37 
38  const std::string &name() const { return name_; }
39  const Ip4Address &ipv4_address() const { return ipv4_address_; }
40  const uint32_t &port() const { return port_; }
41  const std::string &control_node_zone_name() const {
43  }
44  void set_inet_labeled_af(const autogen::BgpRouterParams params);
47 private:
48  std::string name_;
50  uint32_t port_;
53  autogen::BgpRouterParams params_;
55 };
56 
58 public:
59  ControlNodeZone(const std::string &name, const std::string &display_name,
60  const boost::uuids::uuid &uuid);
62 
63  const std::string &name() const { return name_; }
64  const BgpRouterTree &bgp_router_tree() const {
65  return bgp_router_tree_;
66  }
67 private:
68  friend class BgpRouterConfig;
69  std::string name_;
70  std::string display_name_;
74 };
75 
77 public:
79  virtual ~BgpRouterConfig();
80 
81  std::mutex &mutex() { return mutex_; }
82  uint32_t GetBgpRouterCount() { return bgp_router_tree_.size(); }
83  uint32_t GetBgpRouterCount(const std::string &cnz_name);
85  return control_node_zone_tree_.size();
86  }
87 
88  const BgpRouterTree &bgp_router_tree() const {
89  return bgp_router_tree_;
90  }
91 
94  }
95 
96  BgpRouterPtr GetBgpRouterFromXmppServer(const std::string &xmpp_server);
97  BgpRouterPtr GetBgpRouterFromControlNodeZone(const std::string &cnz_name);
98 
99  void UpdateControlNodeZoneConfig(IFMapNode *bgp_router_node,
100  BgpRouterPtr bgp_router);
101  void DeleteControlNodeZoneConfig(IFMapNode *bgp_router_node,
102  BgpRouterPtr bgp_router);
103 
104  void ConfigDelete(IFMapNode *node);
105  void ConfigAddChange(IFMapNode *node);
106  void ConfigManagerEnqueue(IFMapNode *node);
108  return inet_labeled_af_enabled_; }
109 private:
111  std::mutex mutex_;
116 };
117 
118 #endif
boost::asio::ip::address_v4 Ip4Address
Definition: address.h:14
std::map< std::string, BgpRouterPtr > BgpRouterTree
Definition: bgp_router.h:25
std::map< std::string, ControlNodeZonePtr > ControlNodeZoneTree
Definition: bgp_router.h:26
boost::shared_ptr< ControlNodeZone > ControlNodeZonePtr
Definition: bgp_router.h:24
boost::shared_ptr< BgpRouter > BgpRouterPtr
Definition: bgp_router.h:21
Definition: agent.h:360
uint32_t GetBgpRouterCount()
Definition: bgp_router.h:82
BgpRouterConfig(Agent *agent)
Definition: bgp_router.cc:79
uint32_t GetControlNodeZoneCount()
Definition: bgp_router.h:84
virtual ~BgpRouterConfig()
Definition: bgp_router.cc:293
void ConfigAddChange(IFMapNode *node)
Definition: bgp_router.cc:235
std::mutex & mutex()
Definition: bgp_router.h:81
void ConfigDelete(IFMapNode *node)
Definition: bgp_router.cc:268
bool GetInetLabeledAfEnableStatus()
Definition: bgp_router.h:107
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:113
DISALLOW_COPY_AND_ASSIGN(BgpRouterConfig)
void ConfigManagerEnqueue(IFMapNode *node)
Definition: bgp_router.cc:289
bool inet_labeled_af_enabled_
Definition: bgp_router.h:114
void DeleteControlNodeZoneConfig(IFMapNode *bgp_router_node, BgpRouterPtr bgp_router)
Definition: bgp_router.cc:145
const ControlNodeZoneTree & control_node_zone_tree() const
Definition: bgp_router.h:92
std::mutex mutex_
Definition: bgp_router.h:111
const BgpRouterTree & bgp_router_tree() const
Definition: bgp_router.h:88
BgpRouterTree bgp_router_tree_
Definition: bgp_router.h:112
BgpRouterPtr GetBgpRouterFromControlNodeZone(const std::string &cnz_name)
Definition: bgp_router.cc:115
const std::string & control_node_zone_name() const
Definition: bgp_router.h:41
uint32_t port_
Definition: bgp_router.h:50
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:40
void set_inet_labeled_af(const autogen::BgpRouterParams params)
Definition: bgp_router.cc:62
bool get_inet_labeled_af()
Definition: bgp_router.h:45
std::string name_
Definition: bgp_router.h:48
std::string control_node_zone_name_
Definition: bgp_router.h:52
bool inet_labeled_af_enable_
Definition: bgp_router.h:51
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:39
DISALLOW_COPY_AND_ASSIGN(BgpRouter)
autogen::BgpRouterParams params_
Definition: bgp_router.h:53
const std::string & name() const
Definition: bgp_router.h:38
Ip4Address ipv4_address_
Definition: bgp_router.h:49
DISALLOW_COPY_AND_ASSIGN(ControlNodeZone)
BgpRouterTree bgp_router_tree_
Definition: bgp_router.h:72
const BgpRouterTree & bgp_router_tree() const
Definition: bgp_router.h:64
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:69
const std::string & name() const
Definition: bgp_router.h:63
std::string display_name_
Definition: bgp_router.h:70
boost::uuids::uuid uuid_
Definition: bgp_router.h:71
Agent * agent() const
Definition: oper_db.h:245
boost::uuids::uuid uuid