OpenSDN source code
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
bfd_common.cc
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2014 CodiLime, Inc. All rights reserved.
3  */
4 
5 #include "bfd/bfd_common.h"
6 
7 #include <string>
8 #include <boost/bimap.hpp>
9 #include <boost/bimap/unordered_set_of.hpp>
10 #include <boost/optional.hpp>
11 #include <boost/assign/list_of.hpp>
12 
13 namespace BFD {
14 typedef boost::bimap<BFDState, std::string> BFDStateNames;
15 
17  boost::assign::list_of<BFDStateNames::relation>
18  (kAdminDown, std::string("AdminDown"))
19  (kDown, std::string("Down"))
20  (kInit, std::string("Init"))
21  (kUp, std::string("Up"));
22 
23 std::ostream &operator<<(std::ostream &out, BFDState state) {
24  try {
25  out << kBFDStateNames.left.at(state);
26  } catch (std::out_of_range &) {
27  out << "Unknown";
28  }
29 
30  return out;
31 }
32 
33 boost::optional<BFDState> BFDStateFromString(const std::string& str) {
34  try {
35  return boost::optional<BFDState>(kBFDStateNames.right.at(str));
36  } catch (std::out_of_range &) {}
37 
38  return boost::optional<BFDState>();
39 }
40 
41 const int kMinimalPacketLength = 24;
42 const TimeInterval kIdleTxInterval = boost::posix_time::seconds(1);
43 boost::random::taus88 randomGen;
44 } // namespace BFD
static BFDStateNames kBFDStateNames
Definition: bfd_common.cc:16
std::ostream & operator<<(std::ostream &out, BFDState state)
Definition: bfd_common.cc:23
boost::optional< BFDState > BFDStateFromString(const std::string &str)
Definition: bfd_common.cc:33
boost::random::taus88 randomGen
Definition: bfd_common.cc:43
boost::posix_time::time_duration TimeInterval
Definition: bfd_common.h:18
const int kMinimalPacketLength
Definition: bfd_common.cc:41
const TimeInterval kIdleTxInterval
Definition: bfd_common.cc:42
BFDState
Definition: bfd_common.h:21
boost::bimap< BFDState, std::string > BFDStateNames
Definition: bfd_common.cc:14