summaryrefslogtreecommitdiffstats
path: root/usr.sbin/slaacctl
diff options
context:
space:
mode:
authorflorian <florian@openbsd.org>2020-04-16 05:28:30 +0000
committerflorian <florian@openbsd.org>2020-04-16 05:28:30 +0000
commit4876bc35934c6c03156a81cef10c82887866d2a4 (patch)
tree35a11a7044414c17899535fde79edd49d66d9ab3 /usr.sbin/slaacctl
parentDon't miss the last line off the screen when writing after resize, from (diff)
downloadwireguard-openbsd-4876bc35934c6c03156a81cef10c82887866d2a4.tar.xz
wireguard-openbsd-4876bc35934c6c03156a81cef10c82887866d2a4.zip
Make the control socket name depend on the routing domain we are in.
That way, when slaacd gets started in a different rdomain with route exec things just work, no need to provide an alternative control socket. Pointed out by claudio Original diff by benno, but I like my bikeshed purple. OK benno, claudio
Diffstat (limited to 'usr.sbin/slaacctl')
-rw-r--r--usr.sbin/slaacctl/slaacctl.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/usr.sbin/slaacctl/slaacctl.c b/usr.sbin/slaacctl/slaacctl.c
index 1aeeb59fd5e..46e3d3d98dd 100644
--- a/usr.sbin/slaacctl/slaacctl.c
+++ b/usr.sbin/slaacctl/slaacctl.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: slaacctl.c,v 1.18 2019/11/11 05:48:46 florian Exp $ */
+/* $OpenBSD: slaacctl.c,v 1.19 2020/04/16 05:28:30 florian Exp $ */
/*
* Copyright (c) 2005 Claudio Jeker <claudio@openbsd.org>
@@ -71,13 +71,13 @@ main(int argc, char *argv[])
int done = 0;
int n, verbose = 0;
int ch;
- char *sockname;
+ char *sockname = NULL;
- sockname = SLAACD_SOCKET;
while ((ch = getopt(argc, argv, "s:")) != -1) {
switch (ch) {
case 's':
- sockname = optarg;
+ if ((sockname = strdup(optarg)) == NULL)
+ err(1, NULL);
break;
default:
usage();
@@ -86,6 +86,12 @@ main(int argc, char *argv[])
argc -= optind;
argv += optind;
+ if (sockname == NULL) {
+ if (asprintf(&sockname, "%s.%d", SLAACD_SOCKET, getrtable()) ==
+ -1)
+ err(1, NULL);
+ }
+
if (pledge("stdio unix", NULL) == -1)
err(1, "pledge");
@@ -100,6 +106,7 @@ main(int argc, char *argv[])
memset(&sun, 0, sizeof(sun));
sun.sun_family = AF_UNIX;
strlcpy(sun.sun_path, sockname, sizeof(sun.sun_path));
+ free(sockname);
if (connect(ctl_sock, (struct sockaddr *)&sun, sizeof(sun)) == -1)
err(1, "connect: %s", sockname);