NETUDP

Name

NETUDP -- A UDP interface for IPv4 and IPv6.

Synopsis


#include <net_udp.h>


            socket_udp;
int         udp_addr_valid                  (const char *addr);
socket_udp* udp_init                        (const char *addr,
                                             uint16_t rx_port,
                                             uint16_t tx_port,
                                             int ttl);
socket_udp* udp_init_if                     (const char *addr,
                                             const char *iface,
                                             uint16_t rx_port,
                                             uint16_t tx_port,
                                             int ttl);
void        udp_exit                        (socket_udp *s);
int         udp_send                        (socket_udp *s,
                                             char *buffer,
                                             int buflen);
int         udp_recv                        (socket_udp *s,
                                             char *buffer,
                                             int buflen);
int         udp_select                      (struct timeval *timeout);
void        udp_fd_zero                     (void);
void        udp_fd_set                      (socket_udp *s);
int         udp_fd_isset                    (socket_udp *s);
const char* udp_host_addr                   (socket_udp *s);
int         udp_fd                          (socket_udp *s);

Description

These functions provide a unified interface for sending are receiving UDP datagrams over IPv4 and IPv6 networks.

For IPv6 addresses to work the common library must be built with IPv6 enabled. On UNIX, the configure script has an option --enable-ip-v6 for this purpose. On Win32, there is a project configuration to use the Microsoft IPv6 stack when installed.

Details

socket_udp

typedef struct _socket_udp socket_udp;

An opaque data structure containing information for a UDP session.


udp_addr_valid ()

int         udp_addr_valid                  (const char *addr);

addr :

string representation of IPv4 or IPv6 network address.

Returns :

TRUE if addr is valid, FALSE otherwise.


udp_init ()

socket_udp* udp_init                        (const char *addr,
                                             uint16_t rx_port,
                                             uint16_t tx_port,
                                             int ttl);

Creates a session for sending and receiving UDP datagrams over IP networks.

addr :

character string containing an IPv4 or IPv6 network address.

rx_port :

receive port.

tx_port :

transmit port.

ttl :

time-to-live value for transmitted packets.

Returns :

a pointer to a valid socket_udp structure on success, NULL otherwise.


udp_init_if ()

socket_udp* udp_init_if                     (const char *addr,
                                             const char *iface,
                                             uint16_t rx_port,
                                             uint16_t tx_port,
                                             int ttl);

Creates a session for sending and receiving UDP datagrams over IP networks. The session uses iface as the interface to send and receive datagrams on.

addr :

character string containing an IPv4 or IPv6 network address.

iface :

character string containing an interface name.

rx_port :

receive port.

tx_port :

transmit port.

ttl :

time-to-live value for transmitted packets.

Returns :

a pointer to a socket_udp structure on success, NULL otherwise.


udp_exit ()

void        udp_exit                        (socket_udp *s);

Closes UDP session.

s :

UDP session to be terminated.


udp_send ()

int         udp_send                        (socket_udp *s,
                                             char *buffer,
                                             int buflen);

Transmits a UDP datagram containing data from buffer.

s :

UDP session.

buffer :

pointer to buffer to be transmitted.

buflen :

length of buffer.

Returns :

0 on success, -1 on failure.


udp_recv ()

int         udp_recv                        (socket_udp *s,
                                             char *buffer,
                                             int buflen);

Reads from datagram queue associated with UDP session.

s :

UDP session.

buffer :

buffer to read data into.

buflen :

length of buffer.

Returns :

number of bytes read, returns 0 if no data is available.


udp_select ()

int         udp_select                      (struct timeval *timeout);

Waits for data to arrive for UDP sessions.

timeout :

maximum period to wait for data to arrive.

Returns :

number of UDP sessions ready for reading.


udp_fd_zero ()

void        udp_fd_zero                     (void);

Clears file descriptor from set associated with UDP sessions (see select(2)).


udp_fd_set ()

void        udp_fd_set                      (socket_udp *s);

Adds file descriptor associated of s to set associated with UDP sessions.

s :

UDP session.


udp_fd_isset ()

int         udp_fd_isset                    (socket_udp *s);

Checks if file descriptor associated with UDP session is ready for reading. This function should be called after udp_select().

s :

UDP session.

Returns :

non-zero if set, zero otherwise.


udp_host_addr ()

const char* udp_host_addr                   (socket_udp *s);

s :

UDP session.

Returns :

character string containing network address associated with session s.


udp_fd ()

int         udp_fd                          (socket_udp *s);

This function allows applications to apply their own socketopt()'s and ioctl()'s to the UDP session.

s :

UDP session.

Returns :

file descriptor of socket used by session s.