Line data Source code
1 : /* 2 : * Copyright (c) 2013 Juniper Networks, Inc. All rights reserved. 3 : */ 4 : 5 : #include "bgp/rtarget/rtarget_route.h" 6 : #include "bgp/rtarget/rtarget_table.h" 7 : 8 : #include <algorithm> 9 : 10 : using std::copy; 11 : using std::string; 12 : using std::vector; 13 : 14 347491 : RTargetRoute::RTargetRoute(const RTargetPrefix &prefix) 15 347491 : : prefix_(prefix) { 16 347491 : } 17 : 18 1629960 : int RTargetRoute::CompareTo(const Route &rhs) const { 19 1629960 : const RTargetRoute &rt_rhs = static_cast<const RTargetRoute &>(rhs); 20 1629960 : return prefix_.CompareTo(rt_rhs.prefix_); 21 : } 22 : 23 26499 : string RTargetRoute::ToString() const { 24 26499 : return prefix_.ToString(); 25 : } 26 : 27 2 : void RTargetRoute::SetKey(const DBRequestKey *reqkey) { 28 2 : const RTargetTable::RequestKey *key = 29 : static_cast<const RTargetTable::RequestKey *>(reqkey); 30 2 : prefix_ = key->prefix; 31 2 : } 32 : 33 37690 : void RTargetRoute::BuildProtoPrefix(BgpProtoPrefix *prefix, 34 : const BgpAttr *attr, 35 : uint32_t label, 36 : uint32_t l3_label) const { 37 37690 : prefix_.BuildProtoPrefix(prefix); 38 37690 : } 39 : 40 14158 : void RTargetRoute::BuildBgpProtoNextHop(vector<uint8_t> &nh, 41 : IpAddress nexthop) const { 42 14158 : nh.resize(4); 43 14158 : const Ip4Address::bytes_type &addr_bytes = nexthop.to_v4().to_bytes(); 44 14158 : copy(addr_bytes.begin(), addr_bytes.end(), nh.begin()); 45 14158 : } 46 : 47 38118 : DBEntryBase::KeyPtr RTargetRoute::GetDBRequestKey() const { 48 : RTargetTable::RequestKey *key = 49 38118 : new RTargetTable::RequestKey(GetPrefix(), NULL); 50 38118 : return KeyPtr(key); 51 : }