libbgp  0.6
A C++ BGP Library.
Public Member Functions | Static Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | List of all members
libbgp::BgpPathAttrib Class Reference

The BgpPathAttrib class. More...

#include <bgp-path-attrib.h>

Inheritance diagram for libbgp::BgpPathAttrib:
Inheritance graph
[legend]
Collaboration diagram for libbgp::BgpPathAttrib:
Collaboration graph
[legend]

Public Member Functions

 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...
 
ssize_t doPrint (size_t indent, uint8_t **to, size_t *buf_sz) const
 Print implementation. More...
 
virtual ssize_t parse (const uint8_t *from, size_t msg_sz)
 Deserialize a BGP update message path attribute. More...
 
virtual ssize_t write (uint8_t *to, size_t buf_sz) const
 Serialize a BGP update message path attribute. More...
 
virtual ssize_t length () const
 Get size in bytes required to serialize the object. More...
 
BgpPathAttribclone (BgpLogHandler *new_logger) const
 Clone the attribute and replace logger. More...
 
virtual BgpPathAttribclone () const
 Clone the attribute. 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...
 

Static Public Member Functions

static uint8_t GetTypeFromBuffer (const uint8_t *buffer, size_t buffer_sz)
 Get type of attribute from buffer. More...
 

Public Attributes

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.
 

Protected Member Functions

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...
 

Protected Attributes

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
 
BgpLogHandlerlogger
 

Additional Inherited Members

- 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...
 

Detailed Description

The BgpPathAttrib class.

Definition at line 47 of file bgp-path-attrib.h.

Constructor & Destructor Documentation

◆ BgpPathAttrib() [1/2]

libbgp::BgpPathAttrib::BgpPathAttrib ( BgpLogHandler logger)

Construct a new Bgp Path Attrib:: Bgp Path Attrib object.

Parameters
loggerPointer to logger object for error logging.

Definition at line 39 of file bgp-path-attrib.cc.

References extended, optional, partial, and transitive.

Referenced by libbgp::BgpPathAttribCommunity::length().

◆ BgpPathAttrib() [2/2]

libbgp::BgpPathAttrib::BgpPathAttrib ( BgpLogHandler logger,
const uint8_t *  value,
uint16_t  val_len 
)

Construct a new Bgp Path Attrib:: Bgp Path Attrib object.

Parameters
loggerPointer to logger object for error logging.
valuePointer to value buffer of unknow type attribute.
val_lenLength of the value buffer.

Definition at line 51 of file bgp-path-attrib.cc.

References libbgp::BgpLogHandler::log(), and value_len.

Member Function Documentation

◆ clone() [1/2]

BgpPathAttrib * libbgp::BgpPathAttrib::clone ( BgpLogHandler new_logger) const

Clone the attribute and replace logger.

Parameters
new_loggerNew logger to use.
Returns
BgpPathAttrib* Pointer to the cloned attribute.
Exceptions
has_errorThere's error in the attribute and the attribute can not be clone.

Definition at line 69 of file bgp-path-attrib.cc.

References clone(), and libbgp::Serializable::setLogger().

Referenced by libbgp::BgpUpdateMessage::addAttrib().

◆ clone() [2/2]

BgpPathAttrib * libbgp::BgpPathAttrib::clone ( ) const
virtual

◆ doPrint()

ssize_t libbgp::BgpPathAttrib::doPrint ( size_t  indent,
uint8_t **  to,
size_t *  buf_sz 
) const
virtual

Print implementation.

Parameters
indentindent level.
toThe pointer to the pointer to the string buffer.
buf_szThe pointer to the counter of avaliable buffer space.
Returns
ssize_t ssize_t Bytes written.
Return values
-1Failed to print.
>=0 Bytes written.

Implements libbgp::Serializable.

Reimplemented in libbgp::BgpPathAttribMpUnreachNlriUnknow, libbgp::BgpPathAttribMpUnreachNlriIpv6, libbgp::BgpPathAttribMpReachNlriUnknow, libbgp::BgpPathAttribMpReachNlriIpv6, libbgp::BgpPathAttribCommunity, libbgp::BgpPathAttribAs4Aggregator, libbgp::BgpPathAttribAs4Path, libbgp::BgpPathAttribAggregator, libbgp::BgpPathAttribAtomicAggregate, libbgp::BgpPathAttribLocalPref, libbgp::BgpPathAttribMed, libbgp::BgpPathAttribNexthop, libbgp::BgpPathAttribAsPath, and libbgp::BgpPathAttribOrigin.

Definition at line 116 of file bgp-path-attrib.cc.

References libbgp::Serializable::_print(), printFlags(), and type_code.

◆ GetTypeFromBuffer()

uint8_t libbgp::BgpPathAttrib::GetTypeFromBuffer ( const uint8_t *  from,
size_t  buffer_sz 
)
static

Get type of attribute from buffer.

Parameters
fromPointer to buffer.
buffer_szSize of buffre.
Returns
int8_t Attribute type.
Return values
0Failed to get attribute type.
>0Attribute type.

Definition at line 29 of file bgp-path-attrib.cc.

◆ length()

ssize_t libbgp::BgpPathAttrib::length ( ) const
virtual

◆ parse()

ssize_t libbgp::BgpPathAttrib::parse ( const uint8_t *  from,
size_t  msg_sz 
)
virtual

Deserialize a BGP update message path attribute.

Parameters
fromPointer to message body buffer.
msg_szSize of message.
Returns
ssize_t Bytes read.
Return values
-1Deserialization error. Error may be logged.
>=0Bytes read.
Exceptions
bad_parseInternal deserialization error.
bad_typeThe type of message/field member in buffer does not match the attribute type of container.

Implements libbgp::Serializable.

Reimplemented in libbgp::BgpPathAttribMpUnreachNlriUnknow, libbgp::BgpPathAttribMpUnreachNlriIpv6, libbgp::BgpPathAttribMpReachNlriUnknow, libbgp::BgpPathAttribMpReachNlriIpv6, libbgp::BgpPathAttribCommunity, libbgp::BgpPathAttribAs4Aggregator, libbgp::BgpPathAttribAs4Path, libbgp::BgpPathAttribAggregator, libbgp::BgpPathAttribAtomicAggregate, libbgp::BgpPathAttribLocalPref, libbgp::BgpPathAttribMed, libbgp::BgpPathAttribNexthop, libbgp::BgpPathAttribAsPath, and libbgp::BgpPathAttribOrigin.

Definition at line 129 of file bgp-path-attrib.cc.

References optional, parseHeader(), libbgp::Serializable::setError(), and transitive.

◆ parseHeader()

ssize_t libbgp::BgpPathAttrib::parseHeader ( const uint8_t *  from,
size_t  buffer_sz 
)
protected

◆ printFlags()

ssize_t libbgp::BgpPathAttrib::printFlags ( size_t  indent,
uint8_t **  to,
size_t *  buf_sz 
) const
protected

◆ write()

ssize_t libbgp::BgpPathAttrib::write ( uint8_t *  to,
size_t  buf_sz 
) const
virtual

◆ writeHeader()

ssize_t libbgp::BgpPathAttrib::writeHeader ( uint8_t *  to,
size_t  buffer_sz 
) const
protected

Write attribute header to buffer. (Flag, Type)

Write attribute header to buffer. Notice that only attribute flags and type will be written to buffer. You need to write attribute length yourself.

Parameters
toDestnation buiffer.
buffer_szMax write size.
Returns
ssize_t Bytes written.
Return values
-1Failed to write buffer. error may be written to stderr with log handler.
>=0Bytes written.

Definition at line 251 of file bgp-path-attrib.cc.

References extended, and libbgp::BgpLogHandler::log().

Referenced by libbgp::BgpPathAttribMpReachNlriIpv6::write().


The documentation for this class was generated from the following files: