OpenSDN source code
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
router_mac.cc
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2016 Juniper Networks, Inc. All rights reserved.
3  */
4 
6 
7 #include <algorithm>
8 #include <string>
9 
10 using std::copy;
11 using std::string;
12 
13 RouterMac::RouterMac(const MacAddress &mac_addr) {
16  copy(mac_addr.GetData(), mac_addr.GetData() + 6, data_.begin() + 2);
17 }
18 
20  copy(data.begin(), data.end(), data_.begin());
21 }
22 
24  uint8_t data[RouterMac::kSize];
25  copy(data_.begin(), data_.end(), &data[0]);
26  if (data[0] == BgpExtendedCommunityType::Evpn &&
28  return MacAddress(&data[2]);
29  }
30  return MacAddress::kZeroMac;
31 }
32 
34  return string("rtrmac:") + mac_address().ToString();
35 }
RouterMac(const MacAddress &mac_addr)
Definition: router_mac.cc:13
static const int kSize
Definition: router_mac.h:19
boost::array< uint8_t, kSize > bytes_type
Definition: router_mac.h:20
static const MacAddress kZeroMac
Definition: mac_address.h:149
std::string ToString() const
Definition: mac_address.cc:53
MacAddress mac_address() const
Definition: router_mac.cc:23
bytes_type data_
Definition: router_mac.h:35
std::string ToString()
Definition: router_mac.cc:33
const uint8_t * GetData() const
Definition: mac_address.h:143