pure-data/src/s_net.c

/* Copyright (c) 2019 Dan Wilcox.
* For information on usage and redistribution, and for a DISCLAIMER OF ALL
* WARRANTIES, see the file, "LICENSE.txt," in this distribution.  */

#include "s_net.h"

#include <stdio.h>
#include <string.h>
#include <errno.h>
#ifndef _WIN32
#include <unistd.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <sys/time.h>
#endif

#ifdef HAVE_SYS_FILIO_H
/* IllumOS defines FIONREAD in sys/filio.h */
#include <sys/filio.h>
#endif

    /* Windows XP winsock doesn't provide inet_ntop */
#ifdef _WIN32
const char* INET_NTOP(int af, const void *src, char *dst, socklen_t size) {
    struct sockaddr_storage addr;
    socklen_t addrlen;
    memset(&addr, 0, sizeof(struct sockaddr_storage));
    addr.ss_family = af;
    if (af == AF_INET6)
    {
        struct sockaddr_in6 *sa6 = (struct sockaddr_in6 *)&addr;
        memcpy(&(sa6->sin6_addr.s6_addr), src, sizeof(sa6->sin6_addr.s6_addr));
        addrlen = sizeof(struct sockaddr_in6);
    }
    else if (af == AF_INET)
    {
        struct sockaddr_in *sa4 = (struct sockaddr_in *)&addr;
        memcpy(&(sa4->sin_addr.s_addr), src, sizeof(sa4->sin_addr.s_addr));
        addrlen = sizeof(struct sockaddr_in);
    }
    else
        return NULL;
    if (WSAAddressToStringA((struct sockaddr *)&addr, addrlen, 0, dst,
        (LPDWORD)&size) != 0)
        return NULL;
    return dst;
}
#else /* _WIN32 */
#define INET_NTOP
#endif

int addrinfo_get_list(struct addrinfo **ailist, const char *hostname,
                             int port, int protocol) {}

int addrinfo_ipv4_first(const struct addrinfo* ai1, const struct addrinfo* ai2)
{}

int addrinfo_ipv6_first(const struct addrinfo* ai1, const struct addrinfo* ai2){}

void addrinfo_sort_list(struct addrinfo **ailist,
    int (*compare)(const struct addrinfo*, const struct addrinfo*))
{}

void addrinfo_print_list(const struct addrinfo *ailist)
{}

const char* sockaddr_get_addrstr(const struct sockaddr *sa, char *addrstr,
    int addrstrlen)
{}

unsigned int sockaddr_get_port(const struct sockaddr *sa)
{}

void sockaddr_set_port(const struct sockaddr *sa, unsigned int port) {}

int sockaddr_is_multicast(const struct sockaddr *sa)
{}

int socket_init(void)
{}

    /* kudos to https://stackoverflow.com/a/46062474/6063908 */
int socket_connect(int socket, const struct sockaddr *addr,
                   socklen_t addrlen, float timeout)
{}

void socket_close(int socket)
{}

unsigned int socket_get_port(int socket)
{}

int socket_set_boolopt(int socket, int level, int option_name, int bool_value)
{}

int socket_set_nonblocking(int socket, int nonblocking)
{}

int socket_bytes_available(int socket)
{}

int socket_join_multicast_group(int socket, const struct sockaddr *sa)
{}

int socket_leave_multicast_group(int socket, const struct sockaddr *sa)
{}

int socket_errno(void)
{}

int socket_errno_udp(void)
{}

void socket_strerror(int err, char *buf, int size)
{}