~donmcc/ood

f4284efdd9ca59475744d9c57931b345cfb2e003 — Don McCaughey 10 months ago 38cc039
Rename the `sa_address` union to simply `sa`.

Go very short on the name to match the library name.
5 files changed, 79 insertions(+), 79 deletions(-)

M src/libood/ood/inet/socket.c
M src/libood/ood/inet/socket.h
M src/sa/sa.c
M src/sa/sa.h
M src/sa/sa_tests.c
M src/libood/ood/inet/socket.c => src/libood/ood/inet/socket.c +2 -2
@@ 9,7 9,7 @@


static struct ood_inet_socket *
alloc_connection(int socket, union sa_address *address)
alloc_connection(int socket, union sa *address)
{
    assert(socket >= 0);



@@ 37,7 37,7 @@ ood_inet_socket_accept(struct ood_inet_socket *listener, struct ood_inet_socket 
    assert(listener);
    assert(connection_out);

    union sa_address *client_address;
    union sa *client_address;

    errno = 0;
    int fd = sa_accept_alloc(listener->fd, &client_address);

M src/libood/ood/inet/socket.h => src/libood/ood/inet/socket.h +2 -2
@@ 8,7 8,7 @@
#define OOD_INET_SOCKET_FLAGS_LISTENING 0x00000001


union sa_address;
union sa;
struct ood_inet_socket;




@@ 19,7 19,7 @@ typedef void
struct ood_inet_socket {
    int fd;
    uint32_t flags;
    union sa_address *address;
    union sa *address;
    void *data;
    ood_inet_socket_fn *on_error;
    ood_inet_socket_fn *on_read;

M src/sa/sa.c => src/sa/sa.c +24 -24
@@ 6,14 6,14 @@
#include <stdio.h>


union sa_address *
union sa *
sa_alloc(void)
{
    return calloc(1, sizeof(union sa_address));
    return calloc(1, sizeof(union sa));
}


union sa_address *
union sa *
sa_alloc_from_in_addr_and_port(in_addr_t in_addr, in_port_t port)
{
    struct sockaddr_in ipv4_address = {


@@ 25,7 25,7 @@ sa_alloc_from_in_addr_and_port(in_addr_t in_addr, in_port_t port)
}


union sa_address *
union sa *
sa_alloc_from_in6_addr_and_port(struct in6_addr in6_addr, in_port_t port)
{
    struct sockaddr_in6 inet6 = {


@@ 37,7 37,7 @@ sa_alloc_from_in6_addr_and_port(struct in6_addr in6_addr, in_port_t port)
}


union sa_address *
union sa *
sa_alloc_from_ipv4_str_and_port(char const *ipv4_str, in_port_t port)
{
    if (!ipv4_str) return NULL;


@@ 50,7 50,7 @@ sa_alloc_from_ipv4_str_and_port(char const *ipv4_str, in_port_t port)
}


union sa_address *
union sa *
sa_alloc_from_ipv6_str_and_port(char const *ipv6_str, in_port_t port)
{
    if (!ipv6_str) return NULL;


@@ 63,7 63,7 @@ sa_alloc_from_ipv6_str_and_port(char const *ipv6_str, in_port_t port)
}


union sa_address *
union sa *
sa_alloc_from_path(char const *path)
{
    if (!path) return NULL;


@@ 77,7 77,7 @@ sa_alloc_from_path(char const *path)
}


union sa_address *
union sa *
sa_alloc_from_sockaddr(struct sockaddr const *generic_address)
{
    if (!generic_address) return NULL;


@@ 91,12 91,12 @@ sa_alloc_from_sockaddr(struct sockaddr const *generic_address)
}


union sa_address *
union sa *
sa_alloc_from_sockaddr_in(struct sockaddr_in const *ipv4_address)
{
    if (!ipv4_address) return NULL;

    union sa_address *address = calloc(1, sizeof(union sa_address));
    union sa *address = calloc(1, sizeof(union sa));
    if (!address) return NULL;

    address->ipv4 = *ipv4_address;


@@ 117,12 117,12 @@ sa_alloc_from_sockaddr_in(struct sockaddr_in const *ipv4_address)
}


union sa_address *
union sa *
sa_alloc_from_sockaddr_in6(struct sockaddr_in6 const *ipv6_address)
{
    if (!ipv6_address) return NULL;

    union sa_address *address = calloc(1, sizeof(union sa_address));
    union sa *address = calloc(1, sizeof(union sa));
    if (!address) return NULL;

    address->ipv6 = *ipv6_address;


@@ 143,12 143,12 @@ sa_alloc_from_sockaddr_in6(struct sockaddr_in6 const *ipv6_address)
}


union sa_address *
union sa *
sa_alloc_from_sockaddr_un(struct sockaddr_un const *local_address)
{
    if (!local_address) return NULL;

    union sa_address *address = calloc(1, sizeof(union sa_address));
    union sa *address = calloc(1, sizeof(union sa));
    if (!address) return NULL;

    address->local = *local_address;


@@ 158,9 158,9 @@ sa_alloc_from_sockaddr_un(struct sockaddr_un const *local_address)


int
sa_accept_alloc(int socket, union sa_address **address_out)
sa_accept_alloc(int socket, union sa **address_out)
{
    union sa_address *address = sa_alloc();
    union sa *address = sa_alloc();
    if (!address) return -1;

    socklen_t len = sizeof(struct sockaddr_storage);


@@ 174,10 174,10 @@ sa_accept_alloc(int socket, union sa_address **address_out)
}


union sa_address *
union sa *
sa_alloc_getpeername(int socket)
{
    union sa_address *address = sa_alloc();
    union sa *address = sa_alloc();
    if (!address) return NULL;

    socklen_t len = sizeof(struct sockaddr_storage);


@@ 191,10 191,10 @@ sa_alloc_getpeername(int socket)
}


union sa_address *
union sa *
sa_alloc_getsockname(int socket)
{
    union sa_address *address = sa_alloc();
    union sa *address = sa_alloc();
    if (!address) return NULL;

    socklen_t len = sizeof(struct sockaddr_storage);


@@ 209,7 209,7 @@ sa_alloc_getsockname(int socket)


socklen_t
sa_len(union sa_address const *address)
sa_len(union sa const *address)
{
    if (!address) return 0;



@@ 224,7 224,7 @@ sa_len(union sa_address const *address)


char const *
sa_str(union sa_address const *address)
sa_str(union sa const *address)
{
    if (!address) return "(null)";



@@ 239,8 239,8 @@ sa_str(union sa_address const *address)


extern int
sa_bind(int socket, union sa_address const *address);
sa_bind(int socket, union sa const *address);


extern int
sa_connect(int socket, union sa_address const *address);
sa_connect(int socket, union sa const *address);

M src/sa/sa.h => src/sa/sa.h +20 -20
@@ 24,15 24,15 @@
#endif


/* The `sa_address` union holds storage for each of the `sockaddr`
/* The `sa` union holds storage for each of the `sockaddr`
   [type puns](https://en.wikipedia.org/wiki/Type_punning) along with space for
   a string representation.  For the `sockaddr_un` address type, the `sun_path`
   field is used as the string representation.

   Because the symbol `unix` is #defined in some Unix C compilers, `sa_address`
   Because the symbol `unix` is #defined in some Unix C compilers, `sa`
   uses the name `local` to refer to Unix domain sockets, which are sometimes
   referred to as "local" sockets. */
union sa_address {
union sa {
    struct sockaddr generic;
    struct {
        struct sockaddr_in ipv4;


@@ 49,75 49,75 @@ union sa_address {

// # Allocate socket address from components

union sa_address *
union sa *
sa_alloc(void);

// `in_addr` and `port` are in host byte order
union sa_address *
union sa *
sa_alloc_from_in_addr_and_port(in_addr_t in_addr, in_port_t port);

// `port` is in host byte order
union sa_address *
union sa *
sa_alloc_from_in6_addr_and_port(struct in6_addr in6_addr, in_port_t port);

// `port` is in host byte order
union sa_address *
union sa *
sa_alloc_from_ipv4_str_and_port(char const *ipv4_str, in_port_t port);

// `port` is in host byte order
union sa_address *
union sa *
sa_alloc_from_ipv6_str_and_port(char const *ipv6_str, in_port_t port);

union sa_address *
union sa *
sa_alloc_from_path(char const *path);


// # Allocate socket address from a `sockaddr`-type struct

union sa_address *
union sa *
sa_alloc_from_sockaddr(struct sockaddr const *generic_address);

union sa_address *
union sa *
sa_alloc_from_sockaddr_in(struct sockaddr_in const *ipv4_address);

union sa_address *
union sa *
sa_alloc_from_sockaddr_in6(struct sockaddr_in6 const *ipv6_address);

union sa_address *
union sa *
sa_alloc_from_sockaddr_un(struct sockaddr_un const *local_address);


// # Allocate socket address from a socket

int
sa_accept_alloc(int socket, union sa_address **address_out);
sa_accept_alloc(int socket, union sa **address_out);

union sa_address *
union sa *
sa_alloc_getpeername(int socket);

union sa_address *
union sa *
sa_alloc_getsockname(int socket);


// # Get info about a socket address

socklen_t
sa_len(union sa_address const *address);
sa_len(union sa const *address);

char const *
sa_str(union sa_address const *address);
sa_str(union sa const *address);


// # Wrap socket functions that use `sockaddr` structs

inline int
sa_bind(int socket, union sa_address const *address)
sa_bind(int socket, union sa const *address)
{
    return bind(socket, &address->generic, sa_len(address));
}

inline int
sa_connect(int socket, union sa_address const *address)
sa_connect(int socket, union sa const *address)
{
    return connect(socket, &address->generic, sa_len(address));
}

M src/sa/sa_tests.c => src/sa/sa_tests.c +31 -31
@@ 11,7 11,7 @@
static void
test_sa_alloc(void)
{
    union sa_address *address = sa_alloc();
    union sa *address = sa_alloc();

    assert(address);
    assert(AF_UNSPEC == address->generic.sa_family);


@@ 26,7 26,7 @@ test_sa_alloc(void)
static void
test_sa_alloc_from_in_addr_and_port(void)
{
    union sa_address *address = sa_alloc_from_in_addr_and_port(INADDR_LOOPBACK, 8080);
    union sa *address = sa_alloc_from_in_addr_and_port(INADDR_LOOPBACK, 8080);

    assert(address);
    assert(AF_INET == address->generic.sa_family);


@@ 45,7 45,7 @@ test_sa_alloc_from_in_addr_and_port(void)
static void
test_sa_alloc_from_in6_addr_and_port(void)
{
    union sa_address *address = sa_alloc_from_in6_addr_and_port(in6addr_loopback, 8080);
    union sa *address = sa_alloc_from_in6_addr_and_port(in6addr_loopback, 8080);

    assert(address);
    assert(AF_INET6 == address->generic.sa_family);


@@ 64,7 64,7 @@ test_sa_alloc_from_in6_addr_and_port(void)
static void
test_sa_alloc_from_ipv4_str_and_port(void)
{
    union sa_address *address = sa_alloc_from_ipv4_str_and_port("127.0.0.1", 8080);
    union sa *address = sa_alloc_from_ipv4_str_and_port("127.0.0.1", 8080);

    assert(address);
    assert(AF_INET == address->generic.sa_family);


@@ 83,7 83,7 @@ test_sa_alloc_from_ipv4_str_and_port(void)
static void
test_sa_alloc_from_ipv4_str_and_port_when_null(void)
{
    union sa_address *address = sa_alloc_from_ipv4_str_and_port(NULL, 8080);
    union sa *address = sa_alloc_from_ipv4_str_and_port(NULL, 8080);

    assert(!address);
}


@@ 92,7 92,7 @@ test_sa_alloc_from_ipv4_str_and_port_when_null(void)
static void
test_sa_alloc_from_ipv4_str_and_port_when_invalid(void)
{
    union sa_address *address = sa_alloc_from_ipv4_str_and_port("invalid", 8080);
    union sa *address = sa_alloc_from_ipv4_str_and_port("invalid", 8080);

    assert(!address);
}


@@ 101,7 101,7 @@ test_sa_alloc_from_ipv4_str_and_port_when_invalid(void)
static void
test_sa_alloc_from_ipv6_str_and_port(void)
{
    union sa_address *address = sa_alloc_from_ipv6_str_and_port("::1", 8080);
    union sa *address = sa_alloc_from_ipv6_str_and_port("::1", 8080);

    assert(address);
    assert(AF_INET6 == address->generic.sa_family);


@@ 120,7 120,7 @@ test_sa_alloc_from_ipv6_str_and_port(void)
static void
test_sa_alloc_from_ipv6_str_and_port_when_null(void)
{
    union sa_address *address = sa_alloc_from_ipv6_str_and_port(NULL, 8080);
    union sa *address = sa_alloc_from_ipv6_str_and_port(NULL, 8080);

    assert(!address);
}


@@ 129,7 129,7 @@ test_sa_alloc_from_ipv6_str_and_port_when_null(void)
static void
test_sa_alloc_from_ipv6_str_and_port_when_invalid(void)
{
    union sa_address *address = sa_alloc_from_ipv6_str_and_port("invalid", 8080);
    union sa *address = sa_alloc_from_ipv6_str_and_port("invalid", 8080);

    assert(!address);
}


@@ 138,7 138,7 @@ test_sa_alloc_from_ipv6_str_and_port_when_invalid(void)
static void
test_sa_alloc_from_path(void)
{
    union sa_address *address = sa_alloc_from_path("/var/dood/http");
    union sa *address = sa_alloc_from_path("/var/dood/http");

    assert(address);
    assert(AF_UNIX == address->generic.sa_family);


@@ 156,7 156,7 @@ test_sa_alloc_from_path(void)
static void
test_sa_alloc_from_path_when_null(void)
{
    union sa_address *address = sa_alloc_from_path(NULL);
    union sa *address = sa_alloc_from_path(NULL);

    assert(!address);
}


@@ 168,7 168,7 @@ test_sa_alloc_from_path_when_too_long(void)
    char const *too_long = "012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789";
    assert(strlen(too_long) > UNIX_PATH_MAX);

    union sa_address *address = sa_alloc_from_path(too_long);
    union sa *address = sa_alloc_from_path(too_long);

    assert(!address);
}


@@ 181,7 181,7 @@ test_sa_alloc_from_sockaddr_for_unspecified(void)
            .sa_family=AF_UNSPEC,
    };

    union sa_address *address = sa_alloc_from_sockaddr(&generic);
    union sa *address = sa_alloc_from_sockaddr(&generic);

    assert(!address);
}


@@ 199,7 199,7 @@ test_sa_alloc_from_sockaddr_for_ipv4(void)
    };
    struct sockaddr *generic = (struct sockaddr *)&ipv4;

    union sa_address *address = sa_alloc_from_sockaddr(generic);
    union sa *address = sa_alloc_from_sockaddr(generic);

    assert(address);
    assert(AF_INET == address->generic.sa_family);


@@ 225,7 225,7 @@ test_sa_alloc_from_sockaddr_for_ipv6(void)
    };
    struct sockaddr *generic = (struct sockaddr *)&ipv6;

    union sa_address *address = sa_alloc_from_sockaddr(generic);
    union sa *address = sa_alloc_from_sockaddr(generic);

    assert(address);
    assert(AF_INET6 == address->generic.sa_family);


@@ 250,7 250,7 @@ test_sa_alloc_from_sockaddr_for_local(void)
    };
    struct sockaddr *generic = (struct sockaddr *)&local;

    union sa_address *address = sa_alloc_from_sockaddr(generic);
    union sa *address = sa_alloc_from_sockaddr(generic);

    assert(address);
    assert(AF_UNIX == address->generic.sa_family);


@@ 272,7 272,7 @@ test_sa_alloc_from_sockaddr_for_unsupported(void)
            .sa_family=0xff,
    };

    union sa_address *address = sa_alloc_from_sockaddr(&generic);
    union sa *address = sa_alloc_from_sockaddr(&generic);

    assert(!address);
}


@@ 281,7 281,7 @@ test_sa_alloc_from_sockaddr_for_unsupported(void)
static void
test_sa_alloc_from_sockaddr_when_null(void)
{
    union sa_address *address = sa_alloc_from_sockaddr(NULL);
    union sa *address = sa_alloc_from_sockaddr(NULL);

    assert(!address);
}


@@ 298,7 298,7 @@ test_sa_alloc_from_sockaddr_in(void)
            .sin_port=htons(8080),
    };

    union sa_address *address = sa_alloc_from_sockaddr_in(&ipv4);
    union sa *address = sa_alloc_from_sockaddr_in(&ipv4);

    assert(address);
    assert(AF_INET == address->generic.sa_family);


@@ 317,7 317,7 @@ test_sa_alloc_from_sockaddr_in(void)
static void
test_sa_alloc_from_sockaddr_in_when_null(void)
{
    union sa_address *address = sa_alloc_from_sockaddr_in(NULL);
    union sa *address = sa_alloc_from_sockaddr_in(NULL);

    assert(!address);
}


@@ 332,7 332,7 @@ test_sa_alloc_from_sockaddr_in6(void)
            .sin6_port=htons(8080),
    };

    union sa_address *address = sa_alloc_from_sockaddr_in6(&ipv6);
    union sa *address = sa_alloc_from_sockaddr_in6(&ipv6);

    assert(address);
    assert(AF_INET6 == address->generic.sa_family);


@@ 351,7 351,7 @@ test_sa_alloc_from_sockaddr_in6(void)
static void
test_sa_alloc_from_sockaddr_in6_when_null(void)
{
    union sa_address *address = sa_alloc_from_sockaddr_in6(NULL);
    union sa *address = sa_alloc_from_sockaddr_in6(NULL);

    assert(!address);
}


@@ 365,7 365,7 @@ test_sa_alloc_from_sockaddr_un(void)
            .sun_path = "/var/dood/http",
    };

    union sa_address *address = sa_alloc_from_sockaddr_un(&local);
    union sa *address = sa_alloc_from_sockaddr_un(&local);

    assert(address);
    assert(AF_UNIX == address->generic.sa_family);


@@ 383,7 383,7 @@ test_sa_alloc_from_sockaddr_un(void)
static void
test_sa_alloc_from_sockaddr_un_when_null(void)
{
    union sa_address *address = sa_alloc_from_sockaddr_un(NULL);
    union sa *address = sa_alloc_from_sockaddr_un(NULL);

    assert(!address);
}


@@ 392,7 392,7 @@ test_sa_alloc_from_sockaddr_un_when_null(void)
static void
test_sa_len_for_unspecified(void)
{
    union sa_address address = {
    union sa address = {
            .generic = {
                    .sa_family = AF_UNSPEC,
            }


@@ 405,7 405,7 @@ test_sa_len_for_unspecified(void)
static void
test_sa_len_for_ipv4(void)
{
    union sa_address *address = sa_alloc_from_in_addr_and_port(INADDR_LOOPBACK, 8080);
    union sa *address = sa_alloc_from_in_addr_and_port(INADDR_LOOPBACK, 8080);

    assert(sizeof(struct sockaddr_in) == sa_len(address));



@@ 416,7 416,7 @@ test_sa_len_for_ipv4(void)
static void
test_sa_len_for_ipv6(void)
{
    union sa_address *address = sa_alloc_from_in6_addr_and_port(in6addr_loopback, 8080);
    union sa *address = sa_alloc_from_in6_addr_and_port(in6addr_loopback, 8080);

    assert(sizeof(struct sockaddr_in6) == sa_len(address));



@@ 427,7 427,7 @@ test_sa_len_for_ipv6(void)
static void
test_sa_len_for_local(void)
{
    union sa_address *address = sa_alloc_from_path("/var/dood/http");
    union sa *address = sa_alloc_from_path("/var/dood/http");

    assert(sizeof(struct sockaddr_un) == sa_len(address));



@@ 438,7 438,7 @@ test_sa_len_for_local(void)
static void
test_sa_len_for_unsupported(void)
{
    union sa_address address = {
    union sa address = {
            .generic = {
                    .sa_family = 0xff,
            }


@@ 458,7 458,7 @@ test_sa_len_for_null(void)
static void
test_sa_str_for_unspecified(void)
{
    union sa_address address = {
    union sa address = {
            .generic = {
                    .sa_family = AF_UNSPEC,
            }


@@ 471,7 471,7 @@ test_sa_str_for_unspecified(void)
static void
test_sa_str_for_unsupported(void)
{
    union sa_address address = {
    union sa address = {
            .generic = {
                    .sa_family = 0xff,
            }