class ProtoNode

Base class for a protocol node. More...

 
LOGO
 Annotated List  Files  Globals  Hierarchy  Index  Top

Public Methods

Protected Methods


Detailed Description

 ProtoNode (int init_family, xorp_module_id init_module_id, EventLoop& init_eventloop)

ProtoNode

Constructor for a given address family, module ID, and event loop.

Parameters:

init_familythe address family (AF_INET or AF_INET6 for IPv4 and IPv6 respectively).
init_module_idthe module ID XORP_MODULE_* (xorp_module_id).
init_eventloopthe event loop to use.
 ~ProtoNode ()

~ProtoNode

[virtual]

Destructor

inline uint16_t  vif_name2vif_index (const string& vif_name)

vif_name2vif_index

[const]

Map a vif name to a vif index.

Parameters:

vif_namethe vif name to map to a vif index.

Returns: the virtual interface index for vif name vif_name.

inline uint16_t  find_unused_vif_index ()

find_unused_vif_index

[const]

Find an unused vif index.

Returns: the smallest unused vif index if there is one available, otherwise return Vif::VIF_INDEX_INVALID.

inline V * vif_find_by_name (const string& name)

vif_find_by_name

[const]

Find a virtual interface for a given name.

Parameters:

namethe name to search for.

Returns: the virtual interface with name name if found, otherwise NULL.

inline V * vif_find_by_addr (const IPvX& ipaddr_test)

vif_find_by_addr

[const]

Find a virtual interface for a given address.

Parameters:

ipaddr_testthe address to search for.

Returns: the virtual interface with address ipaddr_test if found, otherwise NULL.

inline V * vif_find_by_pif_index (uint16_t pif_index)

vif_find_by_pif_index

[const]

Find a virtual interface for a given physical interface index.

Parameters:

pif_indexthe physical interface index to search for.

Returns: the virtual interface with physical interface index pif_index if found, otherwise NULL.

inline V * vif_find_by_vif_index (uint16_t vif_index)

vif_find_by_vif_index

[const]

Find a virtual interface for a given virtual interface index.

Parameters:

vif_indexthe virtual interface index to search for.

Returns: the vvirtual interface with virtual interface index vif_index if found, otherwise NULL.

inline V * vif_find_same_subnet_or_p2p (const IPvX& ipaddr_test)

vif_find_same_subnet_or_p2p

[const]

Find a virtual interface that belongs to the same subnet or point-to-point link as a given address.

Parameters:

ipaddr_testthe address to search by.

Returns: the virtual interface that belongs to the same subnet or point-to-point link as address ipaddr_test if found, otherwise NULL.

bool  is_my_addr (const IPvX& ipaddr_test)

is_my_addr

[const]

Test if an address belongs to one of my virtual interfaces.

Parameters:

ipaddr_testthe address to test.

Returns: true if ipaddr_test belongs to one of my virtual interfaces, otherwise false.

inline int  add_vif (V *vif)

add_vif

Add a virtual interface.

Parameters:

vifa pointer to the virtual interface to add.

Returns: XORP_OK on success, otherwise XORP_ERROR.

inline int  delete_vif (const V *vif)

delete_vif

Delete a virtual interface.

Note: the vif itself is not deleted, only its place in the array of protocol vifs.

Parameters:

vifa pointer to the virtual interface to delete.

Returns: XORP_OK on success, otherwise XORP_ERROR.

vector<V *>&  proto_vifs ()

proto_vifs

Get the array of pointers to the virtual interfaces.

Returns: the array of pointers to the virtual interfaces.

const vector<V *>&  const_proto_vifs ()

const_proto_vifs

[const]

Get the array of pointers to the virtual interfaces.

Returns: the array of pointers to the virtual interfaces.

uint16_t  maxvifs ()

maxvifs

[const]

Get the maximum number of vifs.

Note: the interfaces that are not configured or are down are also included.

Returns: the maximum number of vifs we can have.

EventLoop&  eventloop ()

eventloop

Get the event loop this node is added to.

Returns: the event loop this node is added to.

bool  is_vif_setup_completed ()

is_vif_setup_completed

[const]

Test if the vif setup is completed.

Returns: true if the vif setup is completed, otherwise false.

void  set_vif_setup_completed (bool v)

set_vif_setup_completed

Set/reset the flag that indicates whether the vif setup is completed.

Parameters:

vif true, set the flag that the vif setup is completed, otherwise reset it.
int  proto_recv (const string& src_module_instance_name, xorp_module_id src_module_id, uint16_t vif_index, const IPvX& src, const IPvX& dst, int ip_ttl, int ip_tos, bool router_alert_bool, const uint8_t *rcvbuf, size_t rcvlen)

proto_recv

[pure virtual]

Receive a protocol message.

This is a pure virtual function, and it must be implemented by the particular protocol node class that inherits this base class.

Parameters:

src_module_instance_namethe module instance name of the module-origin of the message.
src_module_idthe module ID (xorp_module_id) of the module-origin of the message.
vif_indexthe vif index of the interface used to receive this message.
srcthe source address of the message.
dstthe destination address of the message.
ip_ttlthe IP TTL (Time To Live) of the message. If it has a negative value, it should be ignored.
ip_tosthe IP TOS (Type of Service) of the message. If it has a negative value, it should be ignored.
router_alert_boolif true, the Router Alert IP option for the IP packet of the incoming message was set.
rcvbufthe data buffer with the received message.
rcvlenthe data length in rcvbuf.

Returns: XORP_OK on success, otherwise XORP_ERROR.

int  proto_send (const string& dst_module_instance_name, xorp_module_id dst_module_id, uint16_t vif_index, const IPvX& src, const IPvX& dst, int ip_ttl, int ip_tos, bool router_alert_bool, const uint8_t *sndbuf, size_t sndlen)

proto_send

[pure virtual]

Send a protocol message.

This is a pure virtual function, and it must be implemented by the particular protocol node class that inherits this base class.

Parameters:

dst_module_instance_namethe module instance name of the module-recepient of the message.
dst_module_idthe module ID (xorp_module_id) of the module-recepient of the message.
vif_indexthe vif index of the interface to send this message.
srcthe source address of the message.
dstthe destination address of the message.
ip_ttlthe IP TTL of the message. If it has a negative value, the TTL will be set by the lower layers.
ip_tosthe IP TOS of the message. If it has a negative value, the TOS will be set by the lower layers.
router_alert_boolif true, set the Router Alert IP option for the IP packet of the outgoung message.
sndbufthe data buffer with the outgoing message.
sndlenthe data length in sndbuf.

Returns: XORP_OK on success, otherwise XORP_ERROR.

int  signal_message_recv (const string& src_module_instance_name, xorp_module_id src_module_id, int message_type, uint16_t vif_index, const IPvX& src, const IPvX& dst, const uint8_t *rcvbuf, size_t rcvlen)

signal_message_recv

[pure virtual]

Receive a signal message.

This is a pure virtual function, and it must be implemented by the particular protocol node class that inherits this base class.

Parameters:

src_module_instance_namethe module instance name of the module-origin of the message.
src_module_idthe module ID (xorp_module_id) of the module-origin of the message.
message_typethe message type. The particular values are specific for the origin and recepient of this signal message.
vif_indexthe vif index of the related interface (message-specific relation).
srcthe source address of the message. The exact meaning of this address is message-specific.
dstthe destination address of the message. The exact meaning of this address is message-specific.
rcvbufthe data buffer with the additional information in the message.
rcvlenthe data length in rcvbuf.

Returns: XORP_OK on success, otherwise XORP_ERROR.

int  signal_message_send (const string& dst_module_instance_name, xorp_module_id dst_module_id, int message_type, uint16_t vif_index, const IPvX& src, const IPvX& dst, const uint8_t *sndbuf, size_t sndlen)

signal_message_send

[pure virtual]

Send a signal message.

This is a pure virtual function, and it must be implemented by the particular protocol node class that inherits this base class.

Parameters:

dst_module_instance_namethe module instance name of the module-recepient of the message.
dst_module_idthe module ID (xorp_module_id) of the module-recepient of the message.
message_typethe message type. The particular values are specific for the origin and recepient of this signal message.
vif_indexthe vif index of the related interface (message-specific relation).
srcthe source address of the message. The exact meaning of this address is message-specific.
dstthe destination address of the message. The exact meaning of this address is message-specific.
sndbufthe data buffer with the outgoing message.
sndlenthe data length in sndbuf.

Returns: XORP_OK on success, otherwise XORP_ERROR.

bool  is_done ()

is_done

[const]

Test if the node processing is done.

Returns: true if the node processing is done, otherwise false.

ProcessStatus  node_status ()

node_status

[const]

Get the node status (see ProcessStatus).

Returns: the node status (see ProcessStatus).

void  set_node_status (ProcessStatus v)

set_node_status

Set the node status (see ProcessStatus).

Parameters:

vthe value to set the node status to.
int  start_config (string& error_msg)

start_config

Start a set of configuration changes.

Note that it may change the node status.

@error_msg: The error message (if error).

Returns: XORP_OK on success, otherwise XORP_ERROR.

int  end_config (string& error_msg)

end_config

End a set of configuration changes.

Note that it may change the node status.

@error_msg: The error message (if error).

Returns: XORP_OK on success, otherwise XORP_ERROR.

inline uint16_t  find_unused_config_vif_index ()

find_unused_config_vif_index

[const]

Find an unused vif index from the set of configured vifs.

Returns: the smallest unused vif index from the set of configured vifs if there is one available, otherwise return Vif::VIF_INDEX_INVALID.

int  add_config_vif (const Vif& vif, string& error_msg)

add_config_vif

Add a configured vif.

Parameters:

vifthe vif with the information to add. @error_msg: The error message (if error).

Returns: XORP_OK on success, otherwise XORP_ERROR.

int  add_config_vif (const string& vif_name, uint16_t vif_index, string& error_msg)

add_config_vif

Add a configured vif.

Parameters:

vif_namethe name of the vif to add.
vif_indexthe vif index of the vif to add. @error_msg: The error message (if error).

Returns: XORP_OK on success, otherwise XORP_ERROR.

int  delete_config_vif (const string& vif_name, string& error_msg)

delete_config_vif

Delete a configured vif.

Parameters:

vif_namethe name of the vif to delete. @error_msg: The error message (if error).

Returns: XORP_OK on success, otherwise XORP_ERROR.

int  add_config_vif_addr (const string& vif_name, const IPvX& addr, const IPvXNet& subnet, const IPvX& broadcast, const IPvX& peer, string& error_msg)

add_config_vif_addr

Add an address to a configured vif.

Parameters:

vif_namethe name of the vif.
addrthe address to add.
subnetthe subnet address to add.
broadcastthe broadcast address to add.
peerthe peer address to add. @error_msg: The error message (if error).

Returns: XORP_OK on success, otherwise XORP_ERROR.

int  delete_config_vif_addr (const string& vif_name, const IPvX& addr, string& error_msg)

delete_config_vif_addr

Delete an address from a configured vif.

Parameters:

vif_namethe name of the vif.
addrthe address to delete. @error_msg: The error message (if error).

Returns: XORP_OK on success, otherwise XORP_ERROR.

int  set_config_pif_index (const string& vif_name, uint16_t pif_index, string& error_msg)

set_config_pif_index

Set the pif_index of a configured vif.

Parameters:

vif_namethe name of the vif.
pif_indexthe physical interface index. @error_msg: The error message (if error).

Returns: XORP_OK on success, otherwise XORP_ERROR.

int  set_config_vif_flags (const string& vif_name, bool is_pim_register, bool is_p2p, bool is_loopback, bool is_multicast, bool is_broadcast, bool is_up, string& error_msg)

set_config_vif_flags

Set the vif flags of a configured vif.

Parameters:

vif_namethe name of the vif.
is_pim_registertrue if the vif is a PIM Register interface.
is_p2ptrue if the vif is point-to-point interface.
is_loopbacktrue if the vif is a loopback interface.
is_multicasttrue if the vif is multicast capable.
is_broadcasttrue if the vif is broadcast capable.
is_uptrue if the underlying vif is UP. @error_msg: The error message (if error).

Returns: XORP_OK on success, otherwise XORP_ERROR.

map<string, Vif>&  configured_vifs ()

configured_vifs

Get the map with configured vifs.

Returns: a reference for the map with configured vifs.

ProcessStatus  node_status (string& reason_msg)

node_status

Get the node status (see ProcessStatus).

Parameters:

reason_msgreturn-by-reference string that contains human-readable information about the status.

Returns: the node status (see ProcessStatus).

void  incr_startup_requests_n ()

incr_startup_requests_n

[protected]

void  decr_startup_requests_n ()

decr_startup_requests_n

[protected]

void  incr_shutdown_requests_n ()

incr_shutdown_requests_n

[protected]

void  decr_shutdown_requests_n ()

decr_shutdown_requests_n

[protected]

void  update_status ()

update_status

[protected]


Generated by: pavlin on possum.icir.org on Thu Jul 8 23:48:13 2004, using kdoc $.