Initial commit of files
This commit is contained in:
48
src/libnet/uds_server.c
Normal file
48
src/libnet/uds_server.c
Normal file
@ -0,0 +1,48 @@
|
||||
//
|
||||
// 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;
|
||||
}
|
||||
Reference in New Issue
Block a user