Martin Damgaard Lorensen > Net-BGP-Router-0.04 > Net::BGP::RIBEntry

Download:
Net-BGP-Router-0.04.tar.gz

Dependencies

Annotate this POD

View/Report Bugs
Module Version: 0.04   Source  

NAME ^

Net::BGP::RIBEntry - Class representing an entry in a BGP RIB

SYNOPSIS ^

    use Net::BGP::RIBEntry;

    # Constructor
    $entry = new Net::BGP::RIBEntry(
        Prefix          => '10.0.0.1'
    );

    # Object Copy
    $clone = $entry->clone();

    # Accessor Methods
    $entry->add_peer($peer,$dir);
    $entry->remove_peer($peer,$dir);

    $entry           = $entry->update_in($peer,$nlri);
    $has_changed     = $entry->update_local($policy);
    $changes_hashref = $entry->update_out($policy);

    $has_changed     = $entry->handle_changes($policy)

    $prefix          = $entry->prefix($prefix);

    $nlri            = $entry->local;
    $nlri_hashref    = $entry->in;
    $nlri_hashref    = $entry->out;

    $string          = $entry->asstring;

DESCRIPTION ^

This module implement a class representing an entry in a BGP Routing Information Base. It stores the prefix that the entry represents as well as 3 categories of network layer reachability information (NLRI). Each NLRI is represented as an Net::BGP::NLRI object:

IN - An NLRI object for each peer that has sent an UPDATE regarding this prefix.
Local - The preferred of the policy processed available NLRIs from the IN RIB.
OUT - An NLRI object for each outgoing peer representing the processed Local NLRI.

CONSTRUCTOR ^

new() - create a new Net::BGP::RIBEntry object
    $entry = new Net::BGP::RIBEntry(
        Prefix          => '10.0.0.1'
    );

This is the constructor for Net::BGP::RIBEntry object. It returns a reference to the newly created object. The following named parameter may be passed to the constructor:

Prefix

This parameter corresponds to the prefix the RIB Entry represents.

OBJECT COPY ^

clone() - clone a Net::BGP::RIBEntry object
    $clone = $nlri->clone();

This method creates an exact copy of the Net::BGP::RIBEntry object.

ACCESSOR METHODS ^

add_peer()
remove_peer()

Both add_peer() and remove_peer() takes two arguments: The peer object and the direction of the peer (in or out).

update_in()

This method updates the RIB IN part of the object. The first argument is the peer object that received the BGP UPDATE message and the second argument is an NLRI object corresponding the received UPDATE message.

The method returns the RIBEntry object.

update_local()

This method applies the incoming policy and executes the route selection process of BGP. If no arguments (or a undefined value), no policy will be used. Otherwise the argument should be a Net::BGP::Policy object - or something inherited from that.

After applying the given policy, the selection process updates the Local RIB with the best available NLRI.

The return value is true if the Local RIB is changed, otherwise false.

update_out()

This method applies the outgoing policy to the Local RIB and updates the OUT RIB accordingly. If no arguments (or a undefined value), no policy will be used. Otherwise the argument should be a Net::BGP::Policy object - or something inherited from that.

handle_changes()

This method combines the update_local() and update_out() methods and generates UPDATE messages for each change and sends them to the peers. It takes a optional policy as first argument which are used in the calls to update_local() and update_out().

It returns -1 if no changes has happend. Otherwise it returns the number of changes send.

prefix()

This mothod returns the prefix the RIB Entry represent. It an argument is given, the prefix will be replaced with that value.

local()

This method returns the currently selected NLRI or undefined if no NLRIs are available.

in()
out()

Both the in() and out() method returns a reference to a hash indexed on peers containing Net::BGP::NLRI objects coresponding the the incoming or outgoing UPDATE message data.

asstring()

This method returns a print-friendly string describing the RIB entry.

SEE ALSO ^

Net::BGP, Net::BGP::RIB, Net::BGP::NLRI, Net::BGP::Update, Net::BGP::Policy

AUTHOR ^

Martin Lorensen <bgp@martin.lorensen.dk>

syntax highlighting: