libcomm Globals


Annotated List
Files
Globals
Hierarchy
Index

comm_api.h

Global member Documentation

extern int  comm_init (void)

comm_init

#include <comm_api.h>

Init stuff. Need to be called only once (during startup).

Returns: XORP_OK on success, otherwise XORP_ERROR.

extern int  comm_open_tcp (int family)

comm_open_tcp

#include <comm_api.h>

Open a TCP socket.

Parameters:
familythe address family.

Returns: the new socket on success, otherwsise XORP_ERROR.

extern int  comm_open_udp (int family)

comm_open_udp

#include <comm_api.h>

Open an UDP socket.

Parameters:
familythe address family.

Returns: the new socket on success, otherwsise XORP_ERROR.

extern int  comm_close (int sock)

comm_close

#include <comm_api.h>

Close a socket.

Parameters:
sockthe socket to close.

Returns: XORP_OK on success, otherwise XORP_ERROR.

extern int  comm_bind_tcp4 (struct in_addr *my_addr, unsigned short my_port)

comm_bind_tcp4

#include <comm_api.h>

Open an IPv4 TCP socket and bind it to a local address and a port.

Parameters:
my_addrthe local IPv4 address to bind to (in network order). If it is NULL, will bind to `any' local address.
my_portthe local port to bind to (in network order).

Returns: the new socket on success, otherwise XORP_ERROR.

extern int  comm_bind_tcp6 (struct in6_addr *my_addr, unsigned short my_port)

comm_bind_tcp6

#include <comm_api.h>

Open an IPv6 TCP socket and bind it to a local address and a port.

Parameters:
my_addrthe local IPv6 address to bind to (in network order). If it is NULL, will bind to `any' local address.
my_portthe local port to bind to (in network order).

Returns: the new socket on success, otherwise XORP_ERROR.

extern int  comm_bind_udp4 (struct in_addr *my_addr, unsigned short my_port)

comm_bind_udp4

#include <comm_api.h>

Open an IPv4 UDP socket and bind it to a local address and a port.

Parameters:
my_addrthe local IPv4 address to bind to (in network order). If it is NULL, will bind to `any' local address.
my_portthe local port to bind to (in network order).

Returns: the new socket on success, otherwise XORP_ERROR.

extern int  comm_bind_udp6 (struct in6_addr *my_addr, unsigned short my_port)

comm_bind_udp6

#include <comm_api.h>

Open an IPv6 UDP socket and bind it to a local address and a port.

Parameters:
my_addrthe local IPv6 address to bind to (in network order). If it is NULL, will bind to `any' local address.
my_portthe local port to bind to (in network order).

Returns: the new socket on success, otherwise XORP_ERROR.

extern int  comm_bind_join_udp4 (struct in_addr *mcast_addr, struct in_addr *join_if_addr, unsigned short my_port, bool reuse_flag)

comm_bind_join_udp4

#include <comm_api.h>

Open an IPv4 UDP socket on an interface, bind it to a multicast address and a port, and join that multicast group.

Parameters:
mcast_addrthe multicast address to bind to and join.
join_if_addrthe local unicast interface address (in network order) to join the multicast group on. If it is NULL, the system will choose the interface each time a datagram is sent.
my_portthe port to bind to (in network order).
reuse_flagif true, allow other sockets to bind to the same multicast address and port, otherwise disallow it.

Returns: the new socket on success, otherwise XORP_ERROR.

extern int  comm_bind_join_udp6 (struct in6_addr *mcast_addr, uint join_if_addr, unsigned short my_port, bool reuse_flag)

comm_bind_join_udp6

#include <comm_api.h>

Open an IPv6 UDP socket on an interface, bind it to a multicast address and a port, and join that multicast group.

Parameters:
mcast_addrthe multicast address to bind to and join.
join_if_addrthe local unicast interface index to join the multicast group on. If it is 0, the system will choose the interface each time a datagram is sent.
my_portthe port to bind to (in network order).
reuse_flagif true, allow other sockets to bind to the same multicast address and port, otherwise disallow it.

Returns: the new socket on success, otherwise XORP_ERROR.

extern int  comm_connect_tcp4 (struct in_addr *remote_addr, unsigned short remote_port)

comm_connect_tcp4

#include <comm_api.h>

Open an IPv4 TCP socket, and connect it to a remote address and port. TODO: XXX: because it may take time to connect on a TCP socket, the return value actually is XORP_OK even though the connect did not complete.

Parameters:
remote_addrthe remote address to connect to.
remote_portthe remote port to connect to.

Returns: the new socket on success, otherwise XORP_ERROR.

extern int  comm_connect_tcp6 (struct in6_addr *remote_addr, unsigned short remote_port)

comm_connect_tcp6

#include <comm_api.h>

Open an IPv6 TCP socket, and connect it to a remote address and port.

TODO: XXX: because it may take time to connect on a TCP socket, the return value actually is XORP_OK even though the connect did not complete.

Parameters:
remote_addrthe remote address to connect to.
remote_portthe remote port to connect to.

Returns: the new socket on success, otherwise XORP_ERROR.

extern int  comm_connect_udp4 (struct in_addr *remote_addr, unsigned short remote_port)

comm_connect_udp4

#include <comm_api.h>

Open an IPv4 UDP socket, and connect it to a remote address and port.

Parameters:
remote_addrthe remote address to connect to.
remote_portthe remote port to connect to.

Returns: the new socket on success, otherwise XORP_ERROR.

extern int  comm_connect_udp6 (struct in6_addr *remote_addr, unsigned short remote_port)

comm_connect_udp6

#include <comm_api.h>

Open an IPv6 UDP socket, and connect it to a remote address and port.

Parameters:
remote_addrthe remote address to connect to.
remote_portthe remote port to connect to.

Returns: the new socket on success, otherwise XORP_ERROR.

extern int  comm_bind_connect_udp4 (struct in_addr *local_addr, unsigned short local_port, struct in_addr *remote_addr, unsigned short remote_port)

comm_bind_connect_udp4

#include <comm_api.h>

Open an IPv4 UDP socket, bind it to a local address and a port, and connect it to a remote address and port.

Parameters:
local_addrthe local address to bind to. If it is NULL, will bind to `any' local address.
local_portthe local port to bind to.
remote_addrthe remote address to connect to.
remote_portthe remote port to connect to.

Returns: the new socket on success, otherwise XORP_ERROR.

extern int  comm_bind_connect_udp6 (struct in6_addr *local_addr, unsigned short local_port, struct in6_addr *remote_addr, unsigned short remote_port)

comm_bind_connect_udp6

#include <comm_api.h>

Open an IPv6 UDP socket, bind it to a local address and a port, and connect it to a remote address and port.

Parameters:
local_addrthe local address to bind to. If it is NULL, will bind to `any' local address.
local_portthe local port to bind to.
remote_addrthe remote address to connect to.
remote_portthe remote port to connect to.

Returns: the new socket on success, otherwise XORP_ERROR.

extern int  comm_sock_open (int domain, int type, int protocol)

comm_sock_open

#include <comm_api.h>

Open a socket of domain = domain, type = type, and protocol = @protocol.

The sending and receiving buffer size are set, and the socket itself is set to non-blocking, and with TCP_NODELAY (if a TCP socket).

Parameters:
domainthe domain of the socket (e.g., AF_INET, AF_INET6).
typethe type of the socket (e.g., SOCK_STREAM, SOCK_DGRAM).
protocolthe particular protocol to be used with the socket.

Returns: the open socket on success, otherwise XORP_ERROR.

extern int  comm_sock_bind4 (int sock, struct in_addr *my_addr, unsigned short my_port)

comm_sock_bind4

#include <comm_api.h>

Bind an IPv4 socket to an address and a port.

Parameters:
sockthe socket to bind.
my_addrthe address to bind to (in network order). If it is NULL, will bind to `any' local address.
my_portthe port to bind to (in network order).

Returns: XORP_OK on success, otherwise XORP_ERROR.

extern int  comm_sock_bind6 (int sock, struct in6_addr *my_addr, unsigned short my_port)

comm_sock_bind6

#include <comm_api.h>

Bind an IPv6 socket to an address and a port.

Parameters:
sockthe socket to bind.
my_addrthe address to bind to (in network order). If it is NULL, will bind to `any' local address.
my_portthe port to bind to (in network order).

Returns: XORP_OK on success, otherwise XORP_ERROR.

extern int  comm_sock_join4 (int sock, struct in_addr *mcast_addr, struct in_addr *my_addr)

comm_sock_join4

#include <comm_api.h>

Join an IPv4 multicast group on a socket (and an interface).

Parameters:
sockthe socket to join the group.
mcast_addrthe multicast address to join.
my_addrthe local unicast address of an interface to join. If it is NULL, the interface is chosen by the kernel.

Returns: XORP_OK on success, otherwise XORP_ERROR.

extern int  comm_sock_join6 (int sock, struct in6_addr *mcast_addr, unsigned int my_ifindex)

comm_sock_join6

#include <comm_api.h>

Join an IPv6 multicast group on a socket (and an interface).

Parameters:
sockhe socket to join the group.
mcast_addrthe multicast address to join.
my_ifindexthe local unicast interface index to join. If it is 0, the interface is chosen by the kernel.

Returns: XORP_OK on success, otherwise XORP_ERROR.

extern int  comm_sock_connect4 (int sock, struct in_addr *remote_addr, unsigned short remote_port)

comm_sock_connect4

#include <comm_api.h>

Connect to a remote IPv4 address.

XXX: We can use this not only for TCP, but for UDP sockets as well. TODO: XXX: because it may take time to connect on a TCP socket, the return value actually is XORP_OK even though the connect did not complete.

Parameters:
sockthe socket to use to connect.
remote_addrthe remote address to connect to.
remote_portthe remote port to connect to.

Returns: XORP_OK on success, otherwise XORP_ERROR.

extern int  comm_sock_connect6 (int sock, struct in6_addr *remote_addr, unsigned short remote_port)

comm_sock_connect6

#include <comm_api.h>

Connect to a remote IPv6 address.

XXX: We can use this not only for TCP, but for UDP sockets as well. TODO: XXX: because it may take time to connect on a TCP socket, the return value actually is XORP_OK even though the connect did not complete.

Parameters:
sockthe socket to use to connect.
remote_addrthe remote address to connect to.
remote_portthe remote port to connect to.

Returns: XORP_OK on success, otherwise XORP_ERROR.

extern int  comm_sock_accept (int sock)

comm_sock_accept

#include <comm_api.h>

Accept a connection on a listening socket.

Parameters:
sockthe listening socket to accept on.

Returns: the accepted socket on success, otherwise XORP_ERROR.

extern int  comm_sock_close (int sock)

comm_sock_close

#include <comm_api.h>

Close a socket.

Parameters:
sockthe socket to close.

Returns: XORP_OK on success, otherwise XORP_ERROR.

extern int  comm_set_nodelay (int sock, int val)

comm_set_nodelay

#include <comm_api.h>

Set/reset the TCP_NODELAY option on a TCP socket.

Parameters:
sockthe socket whose option we want to set/reset.
valif non-zero, the option will be set, otherwise will be reset.

Returns: XORP_OK on success, otherwise XORP_ERROR.

extern int  comm_set_reuseaddr (int sock, int val)

comm_set_reuseaddr

#include <comm_api.h>

Set/reset the SO_REUSEADDR option on a socket.

XXX: if the OS doesn't support this option, XORP_ERROR is returned.

Parameters:
sockthe socket whose option we want to set/reset.
valif non-zero, the option will be set, otherwise will be reset.

Returns: XORP_OK on success, otherwise XORP_ERROR.

extern int  comm_set_reuseport (int sock, int val)

comm_set_reuseport

#include <comm_api.h>

Set/reset the SO_REUSEPORT option on a socket.

XXX: if the OS doesn't support this option, XORP_ERROR is returned.

Parameters:
sockthe socket whose option we want to set/reset.
valif non-zero, the option will be set, otherwise will be reset.

Returns: XORP_OK on success, otherwise XORP_ERROR.

extern int  comm_set_loopback (int sock, int val)

comm_set_loopback

#include <comm_api.h>

Set/reset the multicast loopback option on a socket.

Parameters:
sockthe socket whose option we want to set/reset.
valif non-zero, the option will be set, otherwise will be reset.

Returns: XORP_OK on success, otherwise XORP_ERROR.

extern int  comm_set_ttl (int sock, int val)

comm_set_ttl

#include <comm_api.h>

Set the TTL of the outgoing multicast packets on a socket.

Parameters:
sockthe socket whose TTL we want to set.
valthe TTL of the outgoing multicast packets.

Returns: XORP_OK on success, otherwise XORP_ERROR.

extern int  comm_set_iface4 (int sock, struct in_addr *in_addr)

comm_set_iface4

#include <comm_api.h>

Set default interface for IPv4 outgoing multicast on a socket.

Parameters:
sockthe socket whose default multicast interface to set.
in_addrthe IPv4 address of the default interface to set. If in_addr is NULL, the system will choose the interface each time a datagram is sent.

Returns: XORP_OK on success, otherwise XORP_ERROR.

extern int  comm_set_iface6 (int sock, u_int ifindex)

comm_set_iface6

#include <comm_api.h>

Set default interface for IPv6 outgoing multicast on a socket.

Parameters:
sockthe socket whose default multicast interface to set.
ifindexthe IPv6 interface index of the default interface to set. If ifindex is 0, the system will choose the interface each time a datagram is sent.

Returns: XORP_OK on success, otherwise XORP_ERROR.

extern int  comm_sock_set_sndbuf (int sock, int desired_bufsize, int min_bufsize)

comm_sock_set_sndbuf

#include <comm_api.h>

Set the sending buffer size of a socket.

Parameters:
sockthe socket whose sending buffer size to set.
desired_bufsizethe preferred buffer size.
min_bufsizethe smallest acceptable buffer size.

Returns: the successfully set buffer size on success, otherwise XORP_ERROR.

extern int  comm_sock_set_rcvbuf (int sock, int desired_bufsize, int min_bufsize)

comm_sock_set_rcvbuf

#include <comm_api.h>

Set the receiving buffer size of a socket.

Parameters:
sockthe socket whose receiving buffer size to set.
desired_bufsizethe preferred buffer size.
min_bufsizethe smallest acceptable buffer size.

Returns: the successfully set buffer size on success, otherwise XORP_ERROR.

extern int  socket2family (int sock)

socket2family

#include <comm_api.h>

Get the address family of a socket.

XXX: idea taken from W. Stevens' UNPv1, 2e (pp 109)

Parameters:
sockthe socket whose address family we need to get.

Returns: the address family on success, otherwise XORP_ERROR.


Generated by: pavlin on possum.icir.org on Wed Dec 11 16:50:43 2002, using kdoc 2.0a54+XORP.