summaryrefslogtreecommitdiff
path: root/usr.sbin/ospfd/control.c
diff options
context:
space:
mode:
authorReyk Floeter <reyk@cvs.openbsd.org>2009-04-07 14:57:34 +0000
committerReyk Floeter <reyk@cvs.openbsd.org>2009-04-07 14:57:34 +0000
commit4414bfbcccd0f412374a68c641a98627511adfb9 (patch)
tree526648596a17d2482219d2be34df7f0b6652efd9 /usr.sbin/ospfd/control.c
parentf8354bc65dd07aa49ae2f37a946696e83a1d82ef (diff)
allow to specify an alternate control socket instead of /var/run/ospfd.sock.
this is required to run multiple instances of ospfd. ok claudio@
Diffstat (limited to 'usr.sbin/ospfd/control.c')
-rw-r--r--usr.sbin/ospfd/control.c22
1 files changed, 11 insertions, 11 deletions
diff --git a/usr.sbin/ospfd/control.c b/usr.sbin/ospfd/control.c
index f3e0d1665e1..d4269f8d518 100644
--- a/usr.sbin/ospfd/control.c
+++ b/usr.sbin/ospfd/control.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: control.c,v 1.22 2009/02/25 17:09:55 claudio Exp $ */
+/* $OpenBSD: control.c,v 1.23 2009/04/07 14:57:33 reyk Exp $ */
/*
* Copyright (c) 2003, 2004 Henning Brauer <henning@openbsd.org>
@@ -41,7 +41,7 @@ struct ctl_conn *control_connbypid(pid_t);
void control_close(int);
int
-control_init(void)
+control_init(char *path)
{
struct sockaddr_un sun;
int fd;
@@ -54,28 +54,28 @@ control_init(void)
bzero(&sun, sizeof(sun));
sun.sun_family = AF_UNIX;
- strlcpy(sun.sun_path, OSPFD_SOCKET, sizeof(sun.sun_path));
+ strlcpy(sun.sun_path, path, sizeof(sun.sun_path));
- if (unlink(OSPFD_SOCKET) == -1)
+ if (unlink(path) == -1)
if (errno != ENOENT) {
- log_warn("control_init: unlink %s", OSPFD_SOCKET);
+ log_warn("control_init: unlink %s", path);
close(fd);
return (-1);
}
old_umask = umask(S_IXUSR|S_IXGRP|S_IWOTH|S_IROTH|S_IXOTH);
if (bind(fd, (struct sockaddr *)&sun, sizeof(sun)) == -1) {
- log_warn("control_init: bind: %s", OSPFD_SOCKET);
+ log_warn("control_init: bind: %s", path);
close(fd);
umask(old_umask);
return (-1);
}
umask(old_umask);
- if (chmod(OSPFD_SOCKET, S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP) == -1) {
+ if (chmod(path, S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP) == -1) {
log_warn("control_init: chmod");
close(fd);
- (void)unlink(OSPFD_SOCKET);
+ (void)unlink(path);
return (-1);
}
@@ -102,10 +102,10 @@ control_listen(void)
}
void
-control_cleanup(void)
+control_cleanup(char *path)
{
-
- unlink(OSPFD_SOCKET);
+ if (path)
+ unlink(path);
}
/* ARGSUSED */