Files
Cnomicon/src/libnet/uds_server.c
2021-01-22 10:16:20 -05:00

49 lines
891 B
C

//
// Unix Domain Socket (UDS) Server
//
#include "netlib.h"
#include <sys/un.h>
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;
}