Line data Source code
1 : /* 2 : * Copyright (c) 2013 Juniper Networks, Inc. All rights reserved. 3 : */ 4 : 5 : #include "bgp/extended-community/local_sequence_number.h" 6 : 7 : #include <stdio.h> 8 : 9 : #include <algorithm> 10 : #include <string> 11 : 12 : 13 : using std::copy; 14 : using std::string; 15 : 16 0 : LocalSequenceNumber::LocalSequenceNumber(uint32_t seq) { 17 0 : data_[0] = BgpExtendedCommunityType::ExperimentalNonTransitive; 18 0 : data_[1] = BgpExtendedCommunityExperimentalNonTransitiveSubType::LocalSequenceNumber; 19 0 : put_value(&data_[2], 4, seq); 20 0 : } 21 : 22 0 : LocalSequenceNumber::LocalSequenceNumber(const bytes_type &data) { 23 0 : copy(data.begin(), data.end(), data_.begin()); 24 0 : } 25 : 26 0 : uint32_t LocalSequenceNumber::local_sequence_number() const { 27 : uint8_t data[LocalSequenceNumber::kSize]; 28 0 : copy(data_.begin(), data_.end(), &data[0]); 29 0 : if (data[0] == BgpExtendedCommunityType::ExperimentalNonTransitive && 30 0 : data[1] == BgpExtendedCommunityExperimentalNonTransitiveSubType::LocalSequenceNumber) { 31 0 : uint32_t num = get_value(data + 2, 4); 32 0 : return num; 33 : } 34 0 : return 0; 35 : } 36 : 37 0 : std::string LocalSequenceNumber::ToString() { 38 : char temp[50]; 39 0 : snprintf(temp, sizeof(temp), "local_sequence_number:%u", 40 : local_sequence_number()); 41 0 : return string(temp); 42 : }