class IoTcpUdpManager

A class that manages I/O TCP/UDP communications. More...

 
LOGO
 Annotated List  Files  Globals  Hierarchy  Index  Top

Public Methods


Detailed Description

 IoTcpUdpManager (FeaNode& fea_node, const IfTree& iftree)

IoTcpUdpManager

Constructor for IoTcpUdpManager.

 ~IoTcpUdpManager ()

~IoTcpUdpManager

[virtual]

Virtual destructor.

int  tcp_open (int family, const string& creator, string& sockid, string& error_msg)

tcp_open

Open a TCP socket.

Parameters:

familythe address family (AF_INET or AF_INET6 for IPv4 and IPv6 respectively).
creatorthe name of the socket creator.
sockidreturn parameter that contains unique socket ID when socket instantiation is successful.
error_msgthe error message (if error).

Returns: XORP_OK on success, otherwise XORP_ERROR.

int  udp_open (int family, const string& creator, string& sockid, string& error_msg)

udp_open

Open an UDP socket.

Parameters:

familythe address family (AF_INET or AF_INET6 for IPv4 and IPv6 respectively).
creatorthe name of the socket creator.
sockidreturn parameter that contains unique socket ID when socket instantiation is successful.
error_msgthe error message (if error).

Returns: XORP_OK on success, otherwise XORP_ERROR.

int  tcp_open_and_bind (int family, const string& creator, const IPvX& local_addr, uint16_t local_port, string& sockid, string& error_msg)

tcp_open_and_bind

Create a bound TCP socket.

Parameters:

familythe address family (AF_INET or AF_INET6 for IPv4 and IPv6 respectively).
creatorthe name of the socket creator.
local_addrthe interface address to bind socket to.
local_portthe port to bind socket to.
sockidreturn parameter that contains unique socket ID when socket instantiation is successful.
error_msgthe error message (if error).

Returns: XORP_OK on success, otherwise XORP_ERROR.

int  udp_open_and_bind (int family, const string& creator, const IPvX& local_addr, uint16_t local_port, string& sockid, string& error_msg)

udp_open_and_bind

Create a bound UDP socket.

Parameters:

familythe address family (AF_INET or AF_INET6 for IPv4 and IPv6 respectively).
creatorthe name of the socket creator.
local_addrthe interface address to bind socket to.
local_portthe port to bind socket to.
sockidreturn parameter that contains unique socket ID when socket instantiation is successful.
error_msgthe error message (if error).

Returns: XORP_OK on success, otherwise XORP_ERROR.

int  udp_open_bind_join (int family, const string& creator, const IPvX& local_addr, uint16_t local_port, const IPvX& mcast_addr, uint8_t ttl, bool reuse, string& sockid, string& error_msg)

udp_open_bind_join

Create a bound UDP multicast socket.

Parameters:

familythe address family (AF_INET or AF_INET6 for IPv4 and IPv6 respectively).
creatorthe name of the socket creator.
local_addrthe interface address to bind socket to.
local_portthe port to bind socket to.
mcast_addrthe multicast group address to join.
ttlthe TTL to use for this multicast socket.
reuseallow other sockets to bind to same multicast group.
sockidreturn parameter that contains unique socket ID when socket instantiation is successful.
error_msgthe error message (if error).

Returns: XORP_OK on success, otherwise XORP_ERROR.

int  tcp_open_bind_connect (int family, const string& creator, const IPvX& local_addr, uint16_t local_port, const IPvX& remote_addr, uint16_t remote_port, string& sockid, string& error_msg)

tcp_open_bind_connect

Create a bound and connected TCP socket.

Parameters:

familythe address family (AF_INET or AF_INET6 for IPv4 and IPv6 respectively).
creatorthe name of the socket creator.
local_addrthe interface address to bind socket to.
local_portthe port to bind socket to.
remote_addrthe address to connect to.
remote_portthe remote port to connect to.
sockidreturn parameter that contains unique socket ID when socket instantiation is successful.
error_msgthe error message (if error).

Returns: XORP_OK on success, otherwise XORP_ERROR.

int  udp_open_bind_connect (int family, const string& creator, const IPvX& local_addr, uint16_t local_port, const IPvX& remote_addr, uint16_t remote_port, string& sockid, string& error_msg)

udp_open_bind_connect

Create a bound and connected UDP socket.

Parameters:

familythe address family (AF_INET or AF_INET6 for IPv4 and IPv6 respectively).
creatorthe name of the socket creator.
local_addrthe interface address to bind socket to.
local_portthe port to bind socket to.
remote_addrthe address to connect to.
remote_portthe remote port to connect to.
sockidreturn parameter that contains unique socket ID when socket instantiation is successful.
error_msgthe error message (if error).

Returns: XORP_OK on success, otherwise XORP_ERROR.

int  udp_open_bind_broadcast (int family, const string& creator, const string& ifname, const string& vifname, uint16_t local_port, uint16_t remote_port, bool reuse, bool limited, bool connected, string& sockid, string& error_msg)

udp_open_bind_broadcast

Create a bound and connected UDP broadcast socket.

Parameters:

familythe address family (AF_INET or AF_INET6 for IPv4 and IPv6 respectively).
creatorthe name of the socket creator.
ifnamethe interface name to bind socket to.
vifnamethe vif to bind socket to.
local_portthe port to bind socket to.
remote_portthe remote port to connect to.
reuseallow other sockets to bind to same port.
limitedset the socket up for transmission to the limited broadcast address 255.255.255.255.
connectedconnect the socket for use with send() not sendto().
sockidreturn parameter that contains unique socket ID when socket instantiation is successful.
error_msgthe error message (if error).

Returns: XORP_OK on success, otherwise XORP_ERROR.

int  bind (int family, const string& sockid, const IPvX& local_addr, uint16_t local_port, string& error_msg)

bind

Bind a socket.

Parameters:

familythe address family (AF_INET or AF_INET6 for IPv4 and IPv6 respectively).
sockidthe socket ID of the socket to bind.
local_addrthe interface address to bind socket to.
local_portthe port to bind socket to.
error_msgthe error message (if error).

Returns: XORP_OK on success, otherwise XORP_ERROR.

int  udp_join_group (int family, const string& sockid, const IPvX& mcast_addr, const IPvX& join_if_addr, string& error_msg)

udp_join_group

Join multicast group on already bound socket.

Parameters:

familythe address family (AF_INET or AF_INET6 for IPv4 and IPv6 respectively).
sockidunique socket ID.
mcast_addrgroup to join.
join_if_addrinterface address to perform join on.
error_msgthe error message (if error).

Returns: XORP_OK on success, otherwise XORP_ERROR.

int  udp_leave_group (int family, const string& sockid, const IPvX& mcast_addr, const IPvX& leave_if_addr, string& error_msg)

udp_leave_group

Leave multicast group on already bound socket.

Parameters:

familythe address family (AF_INET or AF_INET6 for IPv4 and IPv6 respectively).
sockidunique socket ID.
mcast_addrgroup to leave.
leave_if_addrinterface address to perform leave on.
error_msgthe error message (if error).

Returns: XORP_OK on success, otherwise XORP_ERROR.

int  close (int family, const string& sockid, string& error_msg)

close

Close socket.

Parameters:

familythe address family (AF_INET or AF_INET6 for IPv4 and IPv6 respectively).
sockidunique socket ID of socket to be closed.
error_msgthe error message (if error).

Returns: XORP_OK on success, otherwise XORP_ERROR.

int  tcp_listen (int family, const string& sockid, uint32_t backlog, string& error_msg)

tcp_listen

Listen for inbound connections on socket.

When a connection request is received the socket creator will receive notification.

Parameters:

familythe address family (AF_INET or AF_INET6 for IPv4 and IPv6 respectively).
sockidthe unique socket ID of the socket to perform listen.
backlogthe maximum number of pending connections.
error_msgthe error message (if error).

Returns: XORP_OK on success, otherwise XORP_ERROR.

int  udp_enable_recv (int family, const string& sockid, string& error_msg)

udp_enable_recv

Enable a UDP socket for datagram reception.

Parameters:

familythe address family (AF_INET or AF_INET6 for IPv4 and IPv6 respectively).
sockidthe unique socket ID of the socket to enable datagram reception for.
error_msgthe error message (if error).

Returns: XORP_OK on success, otherwise XORP_ERROR.

int  send (int family, const string& sockid, const vector<uint8_t>& data, string& error_msg)

send

Send data on socket.

Parameters:

familythe address family (AF_INET or AF_INET6 for IPv4 and IPv6 respectively).
sockidunique socket ID.
datablock of data to be sent.
error_msgthe error message (if error).

Returns: XORP_OK on success, otherwise XORP_ERROR.

int  send_to (int family, const string& sockid, const IPvX& remote_addr, uint16_t remote_port, const vector<uint8_t>& data, string& error_msg)

send_to

Send data on socket to a given destination.

The packet is not routed as the forwarding engine sending the packet may not have access to the full routing table.

Parameters:

familythe address family (AF_INET or AF_INET6 for IPv4 and IPv6 respectively).
sockidunique socket ID.
remote_addrdestination address for data.
remote_portdestination port for data.
datablock of data to be sent.
error_msgthe error message (if error).

Returns: XORP_OK on success, otherwise XORP_ERROR.

int  send_from_multicast_if (int family, const string& sockid, const IPvX& group_addr, uint16_t group_port, const IPvX& ifaddr, const vector<uint8_t>& data, string& error_msg)

send_from_multicast_if

Send data on socket to a given multicast group from a given interface.

Parameters:

familythe address family (AF_INET or AF_INET6 for IPv4 and IPv6 respectively).
sockidunique socket ID.
group_addrdestination address for data.
group_portdestination port for data.
ifaddrinterface address.
error_msgthe error message (if error).

Returns: XORP_OK on success, otherwise XORP_ERROR.

int  set_socket_option (int family, const string& sockid, const string& optname, uint32_t optval, string& error_msg)

set_socket_option

Set a named socket option with an integer value.

Parameters:

familythe address family (AF_INET or AF_INET6 for IPv4 and IPv6 respectively).
sockidunique socket ID.
optnamename of option to be set. Valid values are: "onesbcast" "receive_broadcast" "reuseport" "send_broadcast" "tos" "ttl" "multicast_loopback" "multicast_ttl"
optvalvalue of option to be set. If value is logically boolean then zero represents false and any non-zero value true.
error_msgthe error message (if error).

Returns: XORP_OK on success, otherwise XORP_ERROR.

int  set_socket_option (int family, const string& sockid, const string& optname, const string& optval, string& error_msg)

set_socket_option

Set a named socket option with a string value.

Parameters:

familythe address family (AF_INET or AF_INET6 for IPv4 and IPv6 respectively).
sockidunique socket ID.
optnamename of option to be set. Valid values are: "bindtodevice"
optvalvalue of option to be set.
error_msgthe error message (if error).

Returns: XORP_OK on success, otherwise XORP_ERROR.

int  accept_connection (int family, const string& sockid, bool is_accepted, string& error_msg)

accept_connection

Accept or reject a pending connection.

Parameters:

familythe address family (AF_INET or AF_INET6 for IPv4 and IPv6 respectively).
sockidunique socket ID.
is_acceptedif true, the connection is accepted, otherwise is rejected.
error_msgthe error message (if error).

Returns: XORP_OK on success, otherwise XORP_ERROR.

void  recv_event (const string& receiver_name, const string& sockid, const string& if_name, const string& vif_name, const IPvX& src_host, uint16_t src_port, const vector<uint8_t>& data)

recv_event

Data received event.

Parameters:

receiver_namethe name of the receiver to send the data to.
sockidunique socket ID.
if_namethe interface name the packet arrived on, if known. If unknown, then it is an empty string.
vif_namethe vif name the packet arrived on, if known. If unknown, then it is an empty string.
src_hostthe originating host IP address.
src_portthe originating host port number.
datathe data received.

Reimplemented from IoTcpUdpManagerReceiver.

void  inbound_connect_event (const string& receiver_name, const string& sockid, const IPvX& src_host, uint16_t src_port, const string& new_sockid)

inbound_connect_event

Inbound connection request received event.

It applies only to TCP sockets.

Parameters:

receiver_namethe name of the receiver to send the event to.
sockidunique socket ID.
src_hostthe originating host IP address.
src_portthe originating host port number.
new_sockidthe new socket ID.

Reimplemented from IoTcpUdpManagerReceiver.

void  outgoing_connect_event (int family, const string& receiver_name, const string& sockid)

outgoing_connect_event

Outgoing connection request completed event.

It applies only to TCP sockets.

Parameters:

familythe address family (AF_INET or AF_INET6 for IPv4 and IPv6 respectively).
receiver_namethe name of the receiver to send the event to.
sockidunique socket ID.

Reimplemented from IoTcpUdpManagerReceiver.

void  error_event (int family, const string& receiver_name, const string& sockid, const string& error, bool fatal)

error_event

Error occured event.

Parameters:

familythe address family (AF_INET or AF_INET6 for IPv4 and IPv6 respectively).
receiver_namethe name of the receiver to send the event to.
sockidunique socket ID.
errora textual description of the error.
fatalindication of whether socket is shutdown because of error.

Reimplemented from IoTcpUdpManagerReceiver.

void  disconnect_event (int family, const string& receiver_name, const string& sockid)

disconnect_event

Connection closed by peer event.

It applies only to TCP sockets. This method is not called if the socket is gracefully closed through close().

Parameters:

familythe address family (AF_INET or AF_INET6 for IPv4 and IPv6 respectively).
receiver_namethe name of the receiver to send the event to.
sockidunique socket ID.

Reimplemented from IoTcpUdpManagerReceiver.

void  instance_birth (const string& instance_name)

instance_birth

Inform the watcher that a component instance is alive.

Parameters:

instance_namethe name of the instance that is alive.

Reimplemented from InstanceWatcher.

void  instance_death (const string& instance_name)

instance_death

Inform the watcher that a component instance is dead.

Parameters:

instance_namethe name of the instance that is dead.

Reimplemented from InstanceWatcher.

void  set_io_tcpudp_manager_receiver (IoTcpUdpManagerReceiver* v)

set_io_tcpudp_manager_receiver

Set the instance that is responsible for sending IP packets to a receiver.

const IfTree&  iftree ()

iftree

[const]

Get a reference to the interface tree.

Returns: a reference to the interface tree (IfTree).

int  register_data_plane_manager (FeaDataPlaneManager* fea_data_plane_manager, bool is_exclusive)

register_data_plane_manager

Register FeaDataPlaneManager data plane manager.

Parameters:

fea_data_plane_managerthe data plane manager to register.
is_exclusiveif true, the manager is registered as the exclusive manager, otherwise is added to the list of managers.

Returns: XORP_OK on success, otherwise XORP_ERROR.

int  unregister_data_plane_manager (FeaDataPlaneManager* fea_data_plane_manager)

unregister_data_plane_manager

Unregister FeaDataPlaneManager data plane manager.

Parameters:

fea_data_plane_managerthe data plane manager to unregister.

Returns: XORP_OK on success, otherwise XORP_ERROR.

list<FeaDataPlaneManager*>&  fea_data_plane_managers ()

fea_data_plane_managers

Get the list of registered data plane managers.

Returns: the list of registered data plane managers.

IoTcpUdpComm*  connect_io_tcpudp_comm (int family, bool is_tcp, const string& creator, const string& listener_sockid, const IPvX& peer_host, uint16_t peer_port, IoTcpUdp* new_io_tcpudp)

connect_io_tcpudp_comm

Connect IoTcpUdpComm entry to a new plugin.

Parameters:

familythe address family.
is_tcpif true this is TCP entry, otherwise UDP.
creatorthe name of the creator.
listener_sockidthe socket ID of the listener socket.
peer_hostthe peer host IP address.
peer_portthe peer host port number.
new_io_tcpudpthe handler for the new connection.

Returns: an entry (IoTcpUdpComm) to handle the connection from the new plugin.


Generated by: pavlin on kobe.xorp.net on Wed Jan 7 19:10:56 2009, using kdoc 2.0a54+XORP.