summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
author/C=EU/ST=EU/CN=Pablo Neira Ayuso/emailAddress=pablo@netfilter.org </C=EU/ST=EU/CN=Pablo Neira Ayuso/emailAddress=pablo@netfilter.org>2008-01-23 10:30:21 +0000
committer/C=EU/ST=EU/CN=Pablo Neira Ayuso/emailAddress=pablo@netfilter.org </C=EU/ST=EU/CN=Pablo Neira Ayuso/emailAddress=pablo@netfilter.org>2008-01-23 10:30:21 +0000
commita0754a2e4a63642e6fefb7bfbb19b9f5f9295009 (patch)
tree99bdabe7c5db15ac1939eee39faf788743a76775 /src
parent86c4c05681e8e38616fb7b0b575b4cd944ddfa83 (diff)
Max Kellermann <max@duempel.org>:
added struct local_server, several cleanups in local socket infrastructure This patch include minor changes by the comitter
Diffstat (limited to 'src')
-rw-r--r--src/local.c18
-rw-r--r--src/run.c13
2 files changed, 17 insertions, 14 deletions
diff --git a/src/local.c b/src/local.c
index f0aba1c..258605f 100644
--- a/src/local.c
+++ b/src/local.c
@@ -26,7 +26,7 @@
#include <arpa/inet.h>
#include <sys/un.h>
-int local_server_create(struct local_conf *conf)
+int local_server_create(struct local_server *server, struct local_conf *conf)
{
int fd;
int len;
@@ -59,23 +59,27 @@ int local_server_create(struct local_conf *conf)
return -1;
}
- return fd;
+ server->fd = fd;
+ strcpy(server->path, conf->path);
+
+ return 0;
}
-void local_server_destroy(int fd, const char *path)
+void local_server_destroy(struct local_server *server)
{
- unlink(path);
- close(fd);
+ unlink(server->path);
+ close(server->fd);
}
-int do_local_server_step(int fd, void *data,
+int do_local_server_step(struct local_server *server, void *data,
void (*process)(int fd, void *data))
{
int rfd;
struct sockaddr_un local;
socklen_t sin_size = sizeof(struct sockaddr_un);
- if ((rfd = accept(fd, (struct sockaddr *)&local, &sin_size)) == -1)
+ rfd = accept(server->fd, (struct sockaddr *) &local, &sin_size);
+ if (rfd == -1)
return -1;
process(rfd, data);
diff --git a/src/run.c b/src/run.c
index bdf6b0b..876e131 100644
--- a/src/run.c
+++ b/src/run.c
@@ -40,7 +40,7 @@ void killer(int foo)
nfct_close(STATE(dump));
ignore_pool_destroy(STATE(ignore_pool));
- local_server_destroy(STATE(local), CONFIG(local).path);
+ local_server_destroy(&STATE(local));
STATE(mode)->kill();
destroy_alarm_hash();
unlink(CONFIG(lockfile));
@@ -115,8 +115,7 @@ init(void)
}
/* local UNIX socket */
- STATE(local) = local_server_create(&CONFIG(local));
- if (STATE(local) == -1) {
+ if (local_server_create(&STATE(local), &CONFIG(local)) == -1) {
dlog(LOG_ERR, "can't open unix socket!");
return -1;
}
@@ -165,10 +164,10 @@ static void __run(struct timeval *next_alarm)
fd_set readfds;
FD_ZERO(&readfds);
- FD_SET(STATE(local), &readfds);
+ FD_SET(STATE(local).fd, &readfds);
FD_SET(nfct_fd(STATE(event)), &readfds);
- max = MAX(STATE(local), nfct_fd(STATE(event)));
+ max = MAX(STATE(local).fd, nfct_fd(STATE(event)));
if (STATE(mode)->add_fds_to_set)
max = MAX(max, STATE(mode)->add_fds_to_set(&readfds));
@@ -187,8 +186,8 @@ static void __run(struct timeval *next_alarm)
sigprocmask(SIG_BLOCK, &STATE(block), NULL);
/* order received via UNIX socket */
- if (FD_ISSET(STATE(local), &readfds))
- do_local_server_step(STATE(local), NULL, local_handler);
+ if (FD_ISSET(STATE(local).fd, &readfds))
+ do_local_server_step(&STATE(local), NULL, local_handler);
/* conntrack event has happened */
if (FD_ISSET(nfct_fd(STATE(event)), &readfds)) {