22 uint32_t label = (
prefix[label_offset] << 16 |
23 prefix[label_offset + 1] << 8 |
24 prefix[label_offset + 2]) >> 4;
39 uint32_t tmp = (label << 4 | 0x1);
40 for (
size_t idx = 0; idx <
kLabelSize; ++idx) {
41 int offset = (kLabelSize - (idx + 1)) * 8;
42 prefix[label_offset + idx] = ((tmp >> offset) & 0xff);
58 uint8_t value =
flags;
67 snprintf(repr,
sizeof(repr),
"<code: %d, flags: %02x>",
code,
flags);
68 return std::string(repr);
virtual std::string ToString() const
void WriteLabel(size_t label_offset, uint32_t label, bool is_vni=false)
#define KEY_COMPARE(x, y)
uint32_t ReadLabel(size_t label_offset, bool is_vni=false) const
uint8_t GetEncodeFlags() const
virtual size_t EncodeLength() const
static uint64_t get_value(const uint8_t *data, int size)
virtual int CompareTo(const BgpAttribute &rhs) const
static const size_t kLabelSize
std::vector< uint8_t > prefix
static void put_value(uint8_t *data, int size, uint64_t value)