diff options
author | florian <florian@openbsd.org> | 2020-04-16 05:28:30 +0000 |
---|---|---|
committer | florian <florian@openbsd.org> | 2020-04-16 05:28:30 +0000 |
commit | 4876bc35934c6c03156a81cef10c82887866d2a4 (patch) | |
tree | 35a11a7044414c17899535fde79edd49d66d9ab3 /usr.sbin/slaacctl | |
parent | Don't miss the last line off the screen when writing after resize, from (diff) | |
download | wireguard-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.c | 15 |
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); |