|
|
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_family | the address family (AF_INET or AF_INET6 for IPv4 and IPv6 respectively). |
init_module_id | the module ID XORP_MODULE_* (xorp_module_id). |
init_eventloop | the event loop to use. |
~ProtoNode ()
| ~ProtoNode |
[virtual]
inline uint16_t vif_name2vif_index (const string& vif_name)
| vif_name2vif_index |
[const]
Map a vif name to a vif index.
Parameters:
vif_name | the 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:
name | the 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_test | the 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_index | the 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_index | the 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_test | the 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_test | the 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:
vif | a 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:
vif | a 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:
v | if 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_name | the module instance name of the module-origin of the message. |
src_module_id | the module ID (xorp_module_id) of the module-origin of the message. |
vif_index | the vif index of the interface used to receive this message. |
src | the source address of the message. |
dst | the destination address of the message. |
ip_ttl | the IP TTL (Time To Live) of the message. If it has a negative value, it should be ignored. |
ip_tos | the IP TOS (Type of Service) of the message. If it has a negative value, it should be ignored. |
router_alert_bool | if true, the Router Alert IP option for the IP packet of the incoming message was set. |
rcvbuf | the data buffer with the received message. |
rcvlen | the 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_name | the module instance name of the module-recepient of the message. |
dst_module_id | the module ID (xorp_module_id) of the module-recepient of the message. |
vif_index | the vif index of the interface to send this message. |
src | the source address of the message. |
dst | the destination address of the message. |
ip_ttl | the IP TTL of the message. If it has a negative value, the TTL will be set by the lower layers. |
ip_tos | the IP TOS of the message. If it has a negative value, the TOS will be set by the lower layers. |
router_alert_bool | if true, set the Router Alert IP option for the IP packet of the outgoung message. |
sndbuf | the data buffer with the outgoing message. |
sndlen | the 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_name | the module instance name of the module-origin of the message. |
src_module_id | the module ID (xorp_module_id) of the module-origin of the message. |
message_type | the message type. The particular values are specific for the origin and recepient of this signal message. |
vif_index | the vif index of the related interface (message-specific relation). |
src | the source address of the message. The exact meaning of this address is message-specific. |
dst | the destination address of the message. The exact meaning of this address is message-specific. |
rcvbuf | the data buffer with the additional information in the message. |
rcvlen | the 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_name | the module instance name of the module-recepient of the message. |
dst_module_id | the module ID (xorp_module_id) of the module-recepient of the message. |
message_type | the message type. The particular values are specific for the origin and recepient of this signal message. |
vif_index | the vif index of the related interface (message-specific relation). |
src | the source address of the message. The exact meaning of this address is message-specific. |
dst | the destination address of the message. The exact meaning of this address is message-specific. |
sndbuf | the data buffer with the outgoing message. |
sndlen | the 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:
v | the 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:
vif | the 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_name | the name of the vif to add. |
vif_index | the 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_name | the 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_name | the name of the vif. |
addr | the address to add. |
subnet | the subnet address to add. |
broadcast | the broadcast address to add. |
peer | the 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_name | the name of the vif. |
addr | the 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_name | the name of the vif. |
pif_index | the 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_name | the name of the vif. |
is_pim_register | true if the vif is a PIM Register interface. |
is_p2p | true if the vif is point-to-point interface. |
is_loopback | true if the vif is a loopback interface. |
is_multicast | true if the vif is multicast capable. |
is_broadcast | true if the vif is broadcast capable. |
is_up | true 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_msg | return-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]