#include #include #include #include #include #include #include "network.h" int net_listen4(uint32_t ip, uint16_t port, int backlog) { struct sockaddr_in addr_in = { 0 }; int sock = 0; int temp = 1; if (ip != 0) { return -ENOSYS; } if (port == 0) { return -EINVAL; } addr_in.sin_port = htons(port); sock = socket(AF_INET, SOCK_STREAM, 0); if (errno != 0) { perror("socket(3)"); return -errno; } temp = 1; setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &temp, sizeof(temp)); if (errno != 0) { perror("setsockopt(3)"); close(sock); return -errno; } bind(sock, (struct sockaddr *)&addr_in, sizeof(addr_in)); if (errno != 0) { perror("bind(3)"); close(sock); return -errno; } listen(sock, backlog); if (errno != 0) { perror("listen(3)"); close(sock); return -errno; } return sock; }