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