libbgp
0.6
A C++ BGP Library.
|
AS Path attribute. More...
#include <bgp-path-attrib.h>
Public Member Functions | |
BgpPathAttribAsPath (BgpLogHandler *logger, bool is_4b) | |
Construct a new Bgp Path Attrib As Path:: Bgp Path Attrib As Path object. More... | |
BgpPathAttrib * | clone () const |
Clone the attribute. More... | |
bool | prepend (uint32_t asn) |
Prepend an ASN into AS path. More... | |
ssize_t | parse (const uint8_t *buffer, size_t length) |
Deserialize a BGP update message path attribute. More... | |
ssize_t | write (uint8_t *buffer, size_t buffer_sz) const |
Serialize a BGP update message path attribute. More... | |
ssize_t | doPrint (size_t indent, uint8_t **to, size_t *buf_sz) const |
Print implementation. More... | |
ssize_t | length () const |
Get size in bytes required to serialize the object. More... | |
Public Member Functions inherited from libbgp::BgpPathAttrib | |
BgpPathAttrib (BgpLogHandler *logger) | |
Construct a new Bgp Path Attrib:: Bgp Path Attrib object. More... | |
BgpPathAttrib (BgpLogHandler *logger, const uint8_t *value, uint16_t val_len) | |
Construct a new Bgp Path Attrib:: Bgp Path Attrib object. More... | |
BgpPathAttrib * | clone (BgpLogHandler *new_logger) const |
Clone the attribute and replace logger. More... | |
virtual | ~BgpPathAttrib () |
Destroy the Bgp Path Attrib:: Bgp Path Attrib object. | |
Public Member Functions inherited from libbgp::Serializable | |
Serializable (BgpLogHandler *logger) | |
Construct a new Serializable:: Serializable object. More... | |
~Serializable () | |
Destroy the Serializable:: Serializable object. | |
ssize_t | print (uint8_t *to, size_t buf_sz) const |
Print the Serializable object as human readable string. More... | |
ssize_t | print (size_t indent, uint8_t *to, size_t buf_sz) const |
Print the Serializable object as human readable string, with indentation. More... | |
bool | hasError () const |
Check if error information available. More... | |
uint8_t | getErrorCode () const |
uint8_t | getErrorSubCode () const |
const uint8_t * | getError () const |
size_t | getErrorLength () const |
void | setLogger (BgpLogHandler *logger) |
Replace logger for this object. More... | |
Public Attributes | |
std::vector< BgpAsPathSegment > | as_paths |
The AS Path segments. | |
bool | is_4b |
Is ASNs in the attribute four octets? | |
Public Attributes inherited from libbgp::BgpPathAttrib | |
bool | optional |
Attribute flag: Optional. | |
bool | transitive |
Attribute flag: Transitive. | |
bool | partial |
Attribute flag: partial. | |
bool | extended |
Attribute flag: extended. | |
uint8_t | type_code |
Attribute type code. | |
Additional Inherited Members | |
Static Public Member Functions inherited from libbgp::BgpPathAttrib | |
static uint8_t | GetTypeFromBuffer (const uint8_t *buffer, size_t buffer_sz) |
Get type of attribute from buffer. More... | |
Protected Member Functions inherited from libbgp::BgpPathAttrib | |
ssize_t | parseHeader (const uint8_t *buffer, size_t length) |
Utility function to parse attribute header. (Flag, type, length) More... | |
ssize_t | printFlags (size_t indent, uint8_t **to, size_t *buf_sz) const |
Utility function to print flags for attribute. More... | |
ssize_t | writeHeader (uint8_t *buffer, size_t buffer_sz) const |
Write attribute header to buffer. (Flag, Type) More... | |
Protected Member Functions inherited from libbgp::Serializable | |
void | setError (uint8_t err, uint8_t suberr, const uint8_t *data, size_t data_len) |
Set the error information. More... | |
void | forwardParseError (const Serializable &other) |
Forward error information from other Serializable object. More... | |
Static Protected Member Functions inherited from libbgp::Serializable | |
static ssize_t | _print (size_t indent, uint8_t **to, size_t *buf_left, const char *format,...) |
Print helper. More... | |
Protected Attributes inherited from libbgp::BgpPathAttrib | |
uint16_t | value_len |
Attribute length. Length field is only used in deserialization for parseHeader() to pass length field in header to the underlying deserializers. The length field is ignored when serialize. | |
Protected Attributes inherited from libbgp::Serializable | |
uint8_t | err_code |
uint8_t | err_subcode |
size_t | err_len |
uint8_t * | err_data |
BgpLogHandler * | logger |
AS Path attribute.
Definition at line 229 of file bgp-path-attrib.h.
libbgp::BgpPathAttribAsPath::BgpPathAttribAsPath | ( | BgpLogHandler * | logger, |
bool | is_4b | ||
) |
Construct a new Bgp Path Attrib As Path:: Bgp Path Attrib As Path object.
logger | Pointer to logger object for error logging. |
is_4b | Enable four octets ASN support. |
Definition at line 367 of file bgp-path-attrib.cc.
References is_4b, libbgp::BgpPathAttrib::transitive, and libbgp::BgpPathAttrib::type_code.
|
virtual |
Clone the attribute.
has_error | There's error in the attribute and the attribute can not be clone. |
Reimplemented from libbgp::BgpPathAttrib.
Definition at line 408 of file bgp-path-attrib.cc.
References libbgp::Serializable::hasError(), and libbgp::BgpLogHandler::log().
|
virtual |
Print implementation.
indent | indent level. |
to | The pointer to the pointer to the string buffer. |
buf_sz | The pointer to the counter of avaliable buffer space. |
-1 | Failed to print. |
>= | 0 Bytes written. |
Reimplemented from libbgp::BgpPathAttrib.
Definition at line 416 of file bgp-path-attrib.cc.
References libbgp::Serializable::_print(), as_paths, is_4b, and libbgp::BgpPathAttrib::printFlags().
|
virtual |
Get size in bytes required to serialize the object.
-1 | Failed to get size. |
>=0 | Size in btyes. |
Reimplemented from libbgp::BgpPathAttrib.
Definition at line 510 of file bgp-path-attrib.cc.
|
virtual |
Deserialize a BGP update message path attribute.
from | Pointer to message body buffer. |
msg_sz | Size of message. |
-1 | Deserialization error. Error may be logged. |
>=0 | Bytes read. |
bad_parse | Internal deserialization error. |
bad_type | The type of message/field member in buffer does not match the attribute type of container. |
Reimplemented from libbgp::BgpPathAttrib.
Definition at line 448 of file bgp-path-attrib.cc.
References libbgp::BgpPathAttrib::parseHeader(), and libbgp::BgpPathAttrib::type_code.
bool libbgp::BgpPathAttribAsPath::prepend | ( | uint32_t | asn | ) |
Prepend an ASN into AS path.
This method will prepend an ASN to AS_SEQUENCE segment if the segment is the first in path. A new AS_SEQUENCE will be create and append to AS_PATH otherwise. A new AS_SEQUENCE will also be create if the current one is full.
asn | The ASN to append. |
Definition at line 543 of file bgp-path-attrib.cc.
References as_paths, and libbgp::BgpAsPathSegment::type.
|
virtual |
Serialize a BGP update message path attribute.
to | Pointer to destination buffer. |
buf_sz | Max write size. |
-1 | Serialization error. Error may be logged. |
>=0 | Bytes written. |
Reimplemented from libbgp::BgpPathAttrib.
Definition at line 573 of file bgp-path-attrib.cc.
References libbgp::BgpLogHandler::log().