OpenSDN source code
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
bgp_config_yaml.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2015 Juniper Networks, Inc. All rights reserved.
3  */
4 
5 #ifndef BGP_BGP_CONFIG_YAML_H__
6 #define BGP_BGP_CONFIG_YAML_H__
7 
8 #include <istream>
9 
10 /*
11  * BGP YAML configuration manager
12  * Uses yaml-cpp library http://code.google.com/p/yaml-cpp
13  */
14 #include "bgp/bgp_config.h"
15 
17 public:
18  class Configuration;
19  static const int kMaxHoldTime = 60 * 60;
20 
22  virtual ~BgpYamlConfigManager();
23 
24  /*
25  * begin: BgpConfigManager Interface
26  */
27  virtual void Terminate();
28  virtual const std::string &localname() const;
29 
31  const std::string &start_name = std::string()) const;
33  const std::string &instance_name) const;
34 
35  virtual int NeighborCount(const std::string &instance_name) const;
36 
37  virtual const BgpInstanceConfig *FindInstance(
38  const std::string &name) const;
39  virtual const BgpProtocolConfig *GetProtocolConfig(
40  const std::string &instance_name) const;
41  virtual const BgpNeighborConfig *FindNeighbor(
42  const std::string &instance_name, const std::string &name) const;
43  // end: BgpConfigManager
44 
45  bool Parse(std::istream *istream, std::string *error_msg);
46 
47 private:
48  bool Resolve(Configuration *candidate, std::string *error_msg);
49  void Update(Configuration *current, Configuration *next);
50  void UpdateProtocol(Configuration *current, Configuration *next);
51  void UpdateInstances(Configuration *current, Configuration *next);
52  void UpdateNeighbors(Configuration *current, Configuration *next);
53 
54  void AddInstance(InstanceMap::iterator iter);
55  void DeleteInstance(InstanceMap::iterator iter);
56  void UpdateInstance(InstanceMap::iterator iter1,
57  InstanceMap::iterator iter2);
58 
59  void AddNeighbor(NeighborMap::iterator iter);
60  void DeleteNeighbor(NeighborMap::iterator iter);
61  void UpdateNeighbor(NeighborMap::iterator iter1,
62  NeighborMap::iterator iter2);
63 
64  std::unique_ptr<Configuration> data_;
65 };
66 
67 #endif // BGP_BGP_CONFIG_YAML_H__
void Update(Configuration *current, Configuration *next)
void UpdateNeighbor(NeighborMap::iterator iter1, NeighborMap::iterator iter2)
std::pair< InstanceMap::const_iterator, InstanceMap::const_iterator > InstanceMapRange
Definition: bgp_config.h:758
void DeleteInstance(InstanceMap::iterator iter)
void AddNeighbor(NeighborMap::iterator iter)
virtual void Terminate()
void UpdateProtocol(Configuration *current, Configuration *next)
virtual NeighborMapRange NeighborMapItems(const std::string &instance_name) const
static const int kMaxHoldTime
bool Resolve(Configuration *candidate, std::string *error_msg)
virtual const std::string & localname() const
virtual int NeighborCount(const std::string &instance_name) const
void DeleteNeighbor(NeighborMap::iterator iter)
std::pair< NeighborMap::const_iterator, NeighborMap::const_iterator > NeighborMapRange
Definition: bgp_config.h:761
BgpYamlConfigManager(BgpServer *server)
virtual const BgpNeighborConfig * FindNeighbor(const std::string &instance_name, const std::string &name) const
void UpdateNeighbors(Configuration *current, Configuration *next)
void AddInstance(InstanceMap::iterator iter)
void UpdateInstance(InstanceMap::iterator iter1, InstanceMap::iterator iter2)
void UpdateInstances(Configuration *current, Configuration *next)
virtual const BgpProtocolConfig * GetProtocolConfig(const std::string &instance_name) const
std::unique_ptr< Configuration > data_
const BgpServer * server()
Definition: bgp_config.h:800
virtual InstanceMapRange InstanceMapItems(const std::string &start_name=std::string()) const
virtual const BgpInstanceConfig * FindInstance(const std::string &name) const
bool Parse(std::istream *istream, std::string *error_msg)