/** \file net.c Networking-related helper functions. */
-/*
- * Since glibc 2.8, the _GNU_SOURCE feature test macro must be defined in order
- * to obtain the definition of the ucred structure.
- */
-#define _GNU_SOURCE
+#include "para.h"
#include <netinet/in.h>
#include <arpa/inet.h>
#include <regex.h>
-#include "para.h"
#include "error.h"
#include "net.h"
#include "string.h"
}
if (*o == ':')
- if (para_atoi32(++o, port) < 0 ||
- *port < 0 || *port > 0xffff)
+ if (para_atoi32(++o, port) < 0 || *port < 0 || *port > 0xffff)
goto failed;
if (host_string_ok(host))
return host;
/**
* Stringify port number, resolve into service name where defined.
+ *
* \param port 2-byte port number, in host-byte-order.
* \param transport Transport protocol name (e.g. "udp", "tcp"), or NULL.
* \return Pointer to static result buffer.
struct addrinfo *addr = NULL, hints;
*result = NULL;
- sprintf(port, "%u", port_number & 0xffff);
+ sprintf(port, "%d", port_number & 0xffff);
/* Set up address hint structure */
memset(&hints, 0, sizeof(hints));
hints.ai_family = AF_UNSPEC;
*/
int generic_max_transport_msg_size(int sockfd)
{
- struct sockaddr_storage ss;
+ struct sockaddr_storage ss = {0};
socklen_t sslen = sizeof(ss);
int af_type = AF_INET;
*/
char *remote_name(int fd)
{
- struct sockaddr_storage ss;
+ struct sockaddr_storage ss = {0};
const struct sockaddr *sa;
socklen_t sslen = sizeof(ss);
char hbuf[NI_MAXHOST], sbuf[NI_MAXSERV];
*/
int recv_cred_buffer(int fd, char *buf, size_t size)
{
- char control[255];
+ char control[255] __a_aligned(8);
struct msghdr msg;
struct cmsghdr *cmsg;
struct iovec iov;