OpenSDN source code
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
rd.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2013 Juniper Networks, Inc. All rights reserved.
3  */
4 
5 #ifndef ctrlplane_rd_h
6 #define ctrlplane_rd_h
7 
8 #include <boost/system/error_code.hpp>
9 #include "base/util.h"
10 
12 public:
13  static const size_t kSize = 8;
15 
16  enum RDType {
20  };
21 
23 
24  explicit RouteDistinguisher(const uint8_t *data);
25  RouteDistinguisher(uint32_t address, uint16_t vrf_id);
26  RouteDistinguisher(uint16_t cluster_seed, uint32_t address,
27  uint16_t vrf_id);
28  RouteDistinguisher(bool is_bgpaas, uint32_t asn, uint16_t vmi_index);
30  memcpy(data_, rhs.data_, kSize);
31  }
32 
33  std::string ToString() const;
35  const std::string &str,
36  boost::system::error_code *error = NULL);
37 
39  memcpy(data_, rhs.data_, kSize);
40  return *this;
41  }
42 
43  bool IsZero() const { return CompareTo(RouteDistinguisher::kZeroRd) == 0; }
44  uint16_t Type() const;
45  uint32_t GetAddress() const;
46  uint16_t GetVrfId() const;
47 
48  int CompareTo(const RouteDistinguisher &rhs) const;
49  bool operator==(const RouteDistinguisher &rhs) const {
50  return CompareTo(rhs) == 0;
51  }
52  bool operator<(const RouteDistinguisher &rhs) const {
53  return CompareTo(rhs) < 0;
54  }
55  bool operator>(const RouteDistinguisher &rhs) const {
56  return CompareTo(rhs) > 0;
57  }
58 
59  const uint8_t *GetData() const { return data_; }
60 
61 private:
62  uint8_t data_[kSize];
63 };
64 
65 #endif
RouteDistinguisher & operator=(const RouteDistinguisher &rhs)
Definition: rd.h:38
static RouteDistinguisher FromString(const std::string &str, boost::system::error_code *error=NULL)
Definition: rd.cc:83
uint16_t Type() const
Definition: rd.cc:44
bool operator==(const RouteDistinguisher &rhs) const
Definition: rd.h:49
int CompareTo(const RouteDistinguisher &rhs) const
Definition: rd.cc:157
static const size_t kSize
Definition: rd.h:13
bool operator>(const RouteDistinguisher &rhs) const
Definition: rd.h:55
uint16_t GetVrfId() const
Definition: rd.cc:52
static RouteDistinguisher kZeroRd
Definition: rd.h:14
uint32_t GetAddress() const
Definition: rd.cc:48
uint8_t data_[kSize]
Definition: rd.h:62
std::string ToString() const
Definition: rd.cc:56
RouteDistinguisher(const RouteDistinguisher &rhs)
Definition: rd.h:29
RouteDistinguisher()
Definition: rd.cc:16
const uint8_t * GetData() const
Definition: rd.h:59
bool operator<(const RouteDistinguisher &rhs) const
Definition: rd.h:52
bool IsZero() const
Definition: rd.h:43