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 350001 : RTargetRoute::RTargetRoute(const RTargetPrefix &prefix) 15 350001 : : prefix_(prefix) { 16 350002 : } 17 : 18 1637908 : int RTargetRoute::CompareTo(const Route &rhs) const { 19 1637908 : const RTargetRoute &rt_rhs = static_cast<const RTargetRoute &>(rhs); 20 1637908 : return prefix_.CompareTo(rt_rhs.prefix_); 21 : } 22 : 23 26536 : string RTargetRoute::ToString() const { 24 26536 : 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 38540 : void RTargetRoute::BuildProtoPrefix(BgpProtoPrefix *prefix, 34 : const BgpAttr *attr, 35 : uint32_t label, 36 : uint32_t l3_label) const { 37 38540 : prefix_.BuildProtoPrefix(prefix); 38 38540 : } 39 : 40 14965 : void RTargetRoute::BuildBgpProtoNextHop(vector<uint8_t> &nh, 41 : IpAddress nexthop) const { 42 14965 : nh.resize(4); 43 14965 : const Ip4Address::bytes_type &addr_bytes = nexthop.to_v4().to_bytes(); 44 14965 : copy(addr_bytes.begin(), addr_bytes.end(), nh.begin()); 45 14965 : } 46 : 47 40292 : DBEntryBase::KeyPtr RTargetRoute::GetDBRequestKey() const { 48 : RTargetTable::RequestKey *key = 49 40292 : new RTargetTable::RequestKey(GetPrefix(), NULL); 50 40292 : return KeyPtr(key); 51 : }