| 
 | 
 | ||||||||||||||||
This class can be used to store an AS number that can be either 16 or 32 bits. Originally, the AS numbers were defined as 16-bit unsigned numbers. Later the "extended" AS numbers were introduced, which are unsigned 32-bit numbers. Conventional terminology refers to the 32-bit version as 4-byte AS numbers rather than 32-bit AS numbers, so we'll try and stick with that where it makes sense.
2-byte numbers are expanded to 32-bits by extending them with 0's in front. 4-byte numbers are represented in a 2-byte AS path, by a special 16-bit value, AS_TRAN, which will be allocated by IANA. Together with any AsPath containing AS_TRAN, we will always see a AS4_PATH attribute which contains the full 32-bit representation of the path. So there is no loss of information.
IANA refers to NEW_AS_PATH, but the latest internet drafts refer to AS4_PATH. They're the same thing, but I the latter is preferred so we'll use that.
The internal representation of an AsNum is 32-bit in host order.
The canonical string form of a 4-byte AS number is <high>.<low>, so decimal 65536 ends up being printed as "1.0".
An AsNum must always be initialized, so the default constructor is never called.
| static const uint16_t AS_INVALID | AS_INVALID | 
| static const uint16_t AS_TRAN | AS_TRAN | 
| explicit  AsNum (const uint32_t value) | AsNum | 
Constructor.
Parameters:
| value | the value to assign to this AS number. | 
| explicit  AsNum (const uint16_t value) | AsNum | 
| explicit  AsNum (int value) | AsNum | 
| explicit  AsNum (const uint8_t *d) | AsNum | 
construct from a 2-byte buffer in memory
| explicit  AsNum (const uint8_t *d, bool fourbyte) | AsNum | 
construct from a 2-byte buffer in memory or a 4 byte buffer (in net byte order).
The 4byte parameter is mostly to distinguish this from the 2-byte constructor above.
| explicit  AsNum (const string& as_str) throw(InvalidString) | AsNum | 
construct from a string, either as a decimal number in the range 1-65535, or as two decimal numbers x.y, where x and y are in the range 0-65535
| uint16_t  as () | as | 
[const]
Get the non-extended AS number value.
Returns: the non-extended AS number value.
| uint32_t  as4 () | as4 | 
[const]
Get the extended AS number value.
Returns: the extended AS number value.
| void  copy_out (uint8_t *d) | copy_out | 
[const]
copy the 16-bit value into a 2-byte memory buffer
| void  copy_out4 (uint8_t *d) | copy_out4 | 
[const]
copy the 32-bit value into a 4-byte network byte order memory buffer
| bool  extended () | extended | 
[const]
Test if this is an extended AS number.
Returns: true if this is an extended AS number.
| bool  operator== (const AsNum& x) | operator== | 
[const]
Equality Operator
Parameters:
| other | the right-hand operand to compare against. | 
Returns: true if the left-hand operand is numerically same as the right-hand operand.
| bool  operator< (const AsNum& x) | operator< | 
[const]
Less-Than Operator
Returns: true if the left-hand operand is numerically smaller than the right-hand operand.
| string  str () | str | 
[const]
Convert this AS number from binary form to presentation format.
Returns: C++ string with the human-readable ASCII representation of the AS number.
| string  short_str () | short_str | 
[const]
| string  fourbyte_str () | fourbyte_str | 
[const]