22 copy(data.begin(), data.end(),
data_.begin());
57 snprintf(temp,
sizeof(temp),
"source-as:%u:%u", asn, num);
62 snprintf(temp,
sizeof(temp),
"source-as:%u:%u", asn, num);
69 boost::system::error_code *errorp) {
74 size_t pos = str.find(
':');
75 if (pos == string::npos) {
77 *errorp = make_error_code(boost::system::errc::invalid_argument);
82 string first(str.substr(0, pos));
83 if (first !=
"source-as") {
85 *errorp = make_error_code(boost::system::errc::invalid_argument);
90 string rest(str.substr(pos+1));
93 if (pos == string::npos) {
95 *errorp = make_error_code(boost::system::errc::invalid_argument);
100 boost::system::error_code ec;
101 string second(rest.substr(0, pos));
105 int64_t asn = strtol(second.c_str(), &endptr, 10);
106 if (asn == 0 || asn > 0xffffffff || *endptr !=
'\0') {
107 if (errorp != NULL) {
108 *errorp = make_error_code(boost::system::errc::invalid_argument);
113 string third(rest.substr(pos+1));
114 uint64_t value = strtol(third.c_str(), &endptr, 10);
115 if (*endptr !=
'\0') {
116 if (errorp != NULL) {
117 *errorp = make_error_code(boost::system::errc::invalid_argument);
123 if ((asn >
AS2_MAX && value > 0xFFFF) || value > 0xFFFFFFFF) {
124 if (errorp != NULL) {
125 *errorp = make_error_code(boost::system::errc::invalid_argument);
boost::array< uint8_t, kSize > bytes_type
static uint64_t get_value(const uint8_t *data, int size)
std::string ToString() const
static SourceAs FromString(const std::string &str, boost::system::error_code *error=NULL)
static void put_value(uint8_t *data, int size, uint64_t value)