usock-udp (Unix Socket UDP)

Header: udo/usock-udp.h

Table of contents (click to go)

Macros

Enums

Unions

Structs

  1. udo_usock_udp

  2. udo_usock_udp_server_create_info

  3. udo_usock_udp_client_create_info

Functions

  1. udo_usock_udp_server_create()

  2. udo_usock_udp_server_recv_data()

  3. udo_usock_udp_client_create()

  4. udo_usock_udp_client_send_data()

  5. udo_usock_udp_get_fd()

  6. udo_usock_udp_get_unix_path()

  7. udo_usock_udp_destroy()

  8. udo_usock_udp_get_sizeof()

  9. udo_usock_udp_recv_data()

  10. udo_usock_udp_send_data()

API Documentation

udo_usock_udp (private)

Structure defining UDO Unix Socket UDP context.
struct udo_usock_udp
struct udo_log_error_struct err;
bool free;
int fd;
struct sockaddr_un addr;
struct sockaddr_un saddr;
err
Stores information about the error that occured
for the given context and may later be retrieved
by caller.
free
If structure allocated with calloc(3) member will be
set to true so that, we know to call free(3) when
destroying the context.
fd
File descriptor to the open UDP socket
addr
Stores byte information about the UDP unix domain
socket context. Is used for client and server bind(2).
saddr
Stores byte information about the UDP unix domain
socket context. Is used for client connect(2).

udo_usock_udp_server_create_info

Structure passed to udo_usock_udp_server_create()
used to define how to create the server.
struct udo_usock_udp_server_create_info
const char *unix_path;
unix_path
Absolute path to unix domain socket
to recvfrom(2) data with.

udo_usock_udp_server_create

struct udo_usock_udp *udo_usock_udp_server_create(struct udo_usock_udp *usock, const void *usock_info);
Creates a socket that may be utilized for server socket operations.

Param

Decription

usock

May be NULL or a pointer to a struct udo_usock_udp.
If NULL memory will be allocated and return to
caller. If not NULL address passed will be used
to store the newly created struct udo_usock_udp
context.

usock_info

Implementation uses a pointer to a
Returns:
on success: Pointer to a struct udo_usock_udp
on failure: NULL

udo_usock_udp_server_recv_data

ssize_t udo_usock_udp_server_recv_data(struct udo_usock_udp *usock, void *data, const size_t size, struct sockaddr_un *addr, const void *usock_info);
Receive data from server socket file descriptor.

Param

Decription

usock

Pointer to a struct udo_usock_udp context.

data

Pointer to buffer to store data received from a socket.

size

Size of data to receive from a socket.

addr

Pointer to struct sockaddr_un which stores the
address information of the socket that data
was received from.

usock_info

Reserved for future usage. For now used
to set the flag argument of recvfrom(2).
Returns:
on success: Amount of bytes received
on failure: # < 0

udo_usock_udp_client_create_info

Structure passed to udo_usock_udp_client_create()
used to define how to create the client.
struct udo_usock_udp_client_create_info
const char *srv_unix_path;
const char *cli_unix_path;
srv_unix_path
Absolute path to unix domain socket to write to.
cli_unix_path
Absolute path to unix domain socket to read with.
Largely so the srv_unix_path knows the path to
the client when leveraging the recvfrom(2) call.

udo_usock_udp_client_create

struct udo_usock_udp *udo_usock_udp_client_create(struct udo_usock_udp *usock, const void *usock_info);
Creates a socket that may be utilized for client socket operations.
Fliters client socket to allow sending data without passing a

NOTE: Due to filtering approach caller must first create
the server via udo_usock_udp_server_create(). So, that
the connect(2) call doesn’t fail.

Param

Decription

usock

May be NULL or a pointer to a struct udo_usock_udp.
If NULL memory will be allocated and return to
caller. If not NULL address passed will be used
to store the newly created struct udo_usock_udp
context.

usock_info

Implementation uses a pointer to a
Returns:
on success: Pointer to a struct udo_usock_udp
on failure: NULL

udo_usock_udp_client_send_data

ssize_t udo_usock_udp_client_send_data(struct udo_usock_udp *usock, const void *data, const size_t size, const void *usock_info);
Send data to client socket address provided via

Param

Must pass a pointer to a struct udo_usock_udp.

data

Pointer to buffer to send through socket.

size

Size of data to send through socket.

usock_info

Reserved for future usage. For now used
to set the flag argument of sendto(2).
Returns:
on success: Amount of bytes sent
on failure: # < 0

udo_usock_udp_get_fd

int udo_usock_udp_get_fd(struct udo_usock_udp *usock);
Acquire socket file descriptor associated with
struct udo_usock_udp context.

Param

Decription

usock

Must pass a pointer to a struct udo_usock_udp.
Returns:
on success: Unix domain socket file descriptor
on failure: -1

udo_usock_udp_get_unix_path

const char *udo_usock_udp_get_unix_path(struct udo_usock_udp *usock);
Acquire textual path to unix domain socket file in string
format associated with struct udo_usock_udp context.

Param

Decription

usock

Must pass a pointer to a struct udo_usock_udp.
Returns:
on success: Textual path to unix domain socket
on failure: NULL

udo_usock_udp_destroy

void udo_usock_udp_destroy(struct udo_usock_udp *usock);
Frees any allocated memory and closes FD’s (if open) created after

Param

Decription

usock

Pointer to a valid struct udo_usock_udp.

udo_usock_udp_get_sizeof

int udo_usock_udp_get_sizeof(void);
Returns size of the internal structure. So,
if caller decides to allocate memory outside
of API interface they know the exact amount
of bytes.
Returns:
on success: sizeof(struct udo_usock_udp)
on failure: sizeof(struct udo_usock_udp)

udo_usock_udp_recv_data

ssize_t udo_usock_udp_recv_data(const int sock_fd, void *data, const size_t size, struct sockaddr_un *addr, const void *usock_info);
Receive data from socket file descriptor.

Param

Decription

sock_fd

Socket file descriptor to receive data from.

data

Pointer to buffer to store data received from a socket.

size

Size of data to receive from a socket.

addr

Pointer to struct sockaddr_un which stores the
address information of the socket that data
was received from.

usock_info

Reserved for future usage. For now used
to set the flag argument of recvfrom(2).
Returns:
on success: Amount of bytes received
on failure: # < 0

udo_usock_udp_send_data

ssize_t udo_usock_udp_send_data(const int sock_fd, const void *data, const size_t size, const struct sockaddr_un *addr, const void *usock_info);
Send data to socket file descriptor.

Param

Decription

sock_fd

Socket file descriptor to send data to.

data

Pointer to buffer to send through socket.

size

Size of data to send through socket.

addr

Pointer to struct sockaddr_un which stores the
address information of a socket that data
will be sent to.

usock_info

Reserved for future usage. For now used
to set the flag argument of sendto(2).
Returns:
on success: Amount of bytes sent
on failure: # < 0