packages feed

systemd-0.1.0.1: System/Systemd/socket_info.c

#include <sys/socket.h>

int socket_family(int fd) {
    struct sockaddr sockaddr = {};
    socklen_t len = sizeof(sockaddr);
 
    if (getsockname(fd, &sockaddr, &len) < 0)
        return -1;
 
    if (len < sizeof(sa_family_t))
        return -1;
 
    return sockaddr.sa_family;
}

int socket_type(int fd) {
    int type = 0;
    socklen_t len = sizeof(type);
 
    if (getsockopt(fd, SOL_SOCKET, SO_TYPE, &type, &len) < 0)
        return -1;
 
    return type;
}

int socket_listening(int fd) {
    int accepting = 0;
    socklen_t len = sizeof(accepting);
 
    if (getsockopt(fd, SOL_SOCKET, SO_ACCEPTCONN, &accepting, &len) < 0)
        return -1;

    return accepting;
}