// // Unix Domain Socket (UDS) Server // #include "netlib.h" #include int uds_server( const char *file ) { unsigned int s; struct sockaddr_un local; int len; // socket s = socket(AF_UNIX, SOCK_STREAM, 0); if (s < 0) { log_error("uds_server"); return -1; } // bind local.sun_family = AF_UNIX; /* local is declared before socket() ^ */ strcpy(local.sun_path, file); unlink(local.sun_path); len = strlen(local.sun_path) + sizeof(local.sun_family); if (bind(s, (struct sockaddr *)&local, len) < 0) { close(s); log_error("uds_server"); return -1; } // listen if (listen(s, 10) < 0) { close(s); log_error("uds_server"); } return s; } int uds_accept( const int s ) { struct sockaddr_un remote; socklen_t len = sizeof(struct sockaddr_un); int s2 = accept(s, (struct sockaddr *)&remote, &len); return s2; }