change bgpd's control socket from /var/run/bgpd.sock to
authorbenno <benno@openbsd.org>
Mon, 29 May 2017 09:56:33 +0000 (09:56 +0000)
committerbenno <benno@openbsd.org>
Mon, 29 May 2017 09:56:33 +0000 (09:56 +0000)
/var/run/bgpd.sock.<rdomain> in both bgpd and bgpctl. makes life
easier for admins.
ok phessler, claudio, henning, feedback from Job Snijders

usr.sbin/bgpctl/bgpctl.8
usr.sbin/bgpctl/bgpctl.c
usr.sbin/bgpd/bgpd.conf.5
usr.sbin/bgpd/config.c

index c17f4dc..b0f8293 100644 (file)
@@ -1,4 +1,4 @@
-.\" $OpenBSD: bgpctl.8,v 1.73 2017/02/13 14:48:44 phessler Exp $
+.\" $OpenBSD: bgpctl.8,v 1.74 2017/05/29 09:56:33 benno Exp $
 .\"
 .\" Copyright (c) 2003 Henning Brauer <henning@openbsd.org>
 .\"
@@ -14,7 +14,7 @@
 .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 .\"
-.Dd $Mdocdate: February 13 2017 $
+.Dd $Mdocdate: May 29 2017 $
 .Dt BGPCTL 8
 .Os
 .Sh NAME
@@ -44,10 +44,15 @@ Show neighbors' IP addresses instead of their description.
 .It Fl s Ar socket
 Use
 .Ar socket
-instead of the default
-.Pa /var/run/bgpd.sock
 to communicate with
-.Xr bgpd 8 .
+.Xr bgpd 8
+instead of the default
+.Pa /var/run/bgpd.sock.<rdomain>
+where
+.Ar <rdomain>
+is the routing domain
+.Xr bgpctl 8
+is running in.
 .El
 .Pp
 The commands are as follows:
index c1accee..f66be11 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: bgpctl.c,v 1.193 2017/01/23 23:38:51 claudio Exp $ */
+/*     $OpenBSD: bgpctl.c,v 1.194 2017/05/29 09:56:33 benno Exp $ */
 
 /*
  * Copyright (c) 2003 Henning Brauer <henning@openbsd.org>
@@ -20,6 +20,7 @@
 
 #include <sys/types.h>
 #include <sys/socket.h>
+#include <sys/stat.h>
 #include <sys/un.h>
 #include <net/if.h>
 #include <net/if_media.h>
@@ -117,7 +118,7 @@ int
 main(int argc, char *argv[])
 {
        struct sockaddr_un       sun;
-       int                      fd, n, done, ch, nodescr = 0, verbose = 0;
+       int                      fd, n, done, ch, nodescr = 0, verbose = 0, r;
        struct imsg              imsg;
        struct network_config    net;
        struct parse_result     *res;
@@ -126,10 +127,13 @@ main(int argc, char *argv[])
        char                    *sockname;
        enum imsg_type           type;
 
+       r = getrtable();
+       if (asprintf(&sockname, "%s.%d", SOCKET_NAME, r) == -1)
+               err(1, "asprintf");
+
        if (pledge("stdio rpath wpath cpath unix inet dns", NULL) == -1)
                err(1, "pledge");
 
-       sockname = SOCKET_NAME;
        while ((ch = getopt(argc, argv, "ns:")) != -1) {
                switch (ch) {
                case 'n':
index 45bfe63..dfa6600 100644 (file)
@@ -1,4 +1,4 @@
-.\" $OpenBSD: bgpd.conf.5,v 1.157 2017/05/28 16:52:27 jmc Exp $
+.\" $OpenBSD: bgpd.conf.5,v 1.158 2017/05/29 09:56:33 benno Exp $
 .\"
 .\" Copyright (c) 2004 Claudio Jeker <claudio@openbsd.org>
 .\" Copyright (c) 2003, 2004 Henning Brauer <henning@openbsd.org>
@@ -16,7 +16,7 @@
 .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 .\"
-.Dd $Mdocdate: May 28 2017 $
+.Dd $Mdocdate: May 29 2017 $
 .Dt BGPD.CONF 5
 .Os
 .Sh NAME
@@ -417,8 +417,11 @@ If
 .Ic restricted
 is specified a restricted control socket will be created.
 By default
-.Pa /var/run/bgpd.sock
-is used and no restricted socket is created.
+.Pa /var/run/bgpd.sock.<rdomain>
+is used where
+.Ar <rdomain>
+is the routing domain in which bgpd has been started.
+By default, no restricted socket is created.
 .Pp
 .It Xo
 .Ic transparent-as
index 8d0f34e..62781a8 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: config.c,v 1.66 2017/05/28 15:16:33 henning Exp $ */
+/*     $OpenBSD: config.c,v 1.67 2017/05/29 09:56:33 benno Exp $ */
 
 /*
  * Copyright (c) 2003, 2004, 2005 Henning Brauer <henning@openbsd.org>
@@ -28,6 +28,7 @@
 #include <ifaddrs.h>
 #include <netdb.h>
 #include <stdlib.h>
+#include <stdio.h>
 #include <string.h>
 #include <unistd.h>
 
@@ -44,7 +45,7 @@ void          free_rdomains(struct rdomain_head *);
 struct bgpd_config *
 new_config(void)
 {
-       struct bgpd_config *conf;
+       struct bgpd_config      *conf;
 
        if ((conf = calloc(1, sizeof(struct bgpd_config))) == NULL)
                fatal(NULL);
@@ -54,7 +55,8 @@ new_config(void)
        conf->fib_priority = RTP_BGP;
        conf->default_tableid = getrtable();
 
-       if ((conf->csock = strdup(SOCKET_NAME)) == NULL)
+       if (asprintf(&conf->csock, "%s.%d", SOCKET_NAME,
+           conf->default_tableid) == -1)
                fatal(NULL);
 
        if ((conf->filters = calloc(1, sizeof(struct filter_head))) == NULL)