diff options
author | Henning Brauer <henning@cvs.openbsd.org> | 2004-01-01 23:51:41 +0000 |
---|---|---|
committer | Henning Brauer <henning@cvs.openbsd.org> | 2004-01-01 23:51:41 +0000 |
commit | efdab222db5dea08b5a0cd4d7121e0167053cf9e (patch) | |
tree | 3cd12ee3b96fc1ea1d23d5d07c42b36ac1931b8f | |
parent | 937921676457b8ecc0838169fc9fca828c32e61b (diff) |
add bgpdctl
right now it only connects to bgpd and prints a list of neighbors and their
status; that will change.
-rw-r--r-- | usr.sbin/bgpd/bgpdctl.8 | 49 | ||||
-rw-r--r-- | usr.sbin/bgpd/bgpdctl.c | 89 | ||||
-rw-r--r-- | usr.sbin/bgpd/bgpdctl.h | 19 | ||||
-rw-r--r-- | usr.sbin/bgpd/bgpdctl/Makefile | 16 |
4 files changed, 173 insertions, 0 deletions
diff --git a/usr.sbin/bgpd/bgpdctl.8 b/usr.sbin/bgpd/bgpdctl.8 new file mode 100644 index 00000000000..99aebb33d7b --- /dev/null +++ b/usr.sbin/bgpd/bgpdctl.8 @@ -0,0 +1,49 @@ +.\" $OpenBSD: bgpdctl.8,v 1.1 2004/01/01 23:51:40 henning Exp $ +.\" +.\" Copyright (c) 2003 Henning Brauer <henning@openbsd.org> +.\" +.\" Permission to use, copy, modify, and distribute this software for any +.\" purpose with or without fee is hereby granted, provided that the above +.\" copyright notice and this permission notice appear in all copies. +.\" +.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +.\" +.Dd December 22, 2003 +.Dt BGPDCTL 8 +.Os +.Sh NAME +.Nm bgpd +.Nd "control the Border Gateway Protocol daemon" +.Sh SYNOPSIS +.Nm bgpdctl +.Bk -words +.Op Fl dnv +.Ek +.Sh DESCRIPTION +The +.Nm +program controls the +.Xr bgpd +daemon. +The options are as follows: +.Bl -tag -width Ds +.El +.Sh SEE ALSO +.Xr bgpd 8 +.Sh FILES +.Bl -tag -width "/etc/bgpd.conf" -compact +.It Pa /etc/bgpd.conf +.Nm +configuration file. +.El +.Sh HISTORY +The +.Nm +program first appeared in +.Ox 3.5 . diff --git a/usr.sbin/bgpd/bgpdctl.c b/usr.sbin/bgpd/bgpdctl.c new file mode 100644 index 00000000000..91e4aed8f36 --- /dev/null +++ b/usr.sbin/bgpd/bgpdctl.c @@ -0,0 +1,89 @@ +/* $OpenBSD: bgpdctl.c,v 1.1 2004/01/01 23:51:40 henning Exp $ */ + +/* + * Copyright (c) 2003 Henning Brauer <henning@openbsd.org> + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include <sys/types.h> +#include <sys/socket.h> +#include <sys/un.h> +#include <err.h> +#include <stdio.h> +#include <string.h> +#include <unistd.h> + +#include "bgpd.h" +#include "bgpdctl.h" + +int main(int, char *[]); + +struct imsgbuf ibuf; + +static const char *statenames[] = { + "None", + "Idle", + "Connect", + "Active", + "OpenSent", + "OpenConfirm", + "Established" +}; + +int +main(int argc, char *argv[]) +{ + struct sockaddr_un sun; + int fd, n; + struct imsg imsg; + struct peer *p; + + if ((fd = socket(AF_UNIX, SOCK_STREAM, 0)) == -1) { + err(1, "control_init: socket"); + exit(1); + } + + bzero(&sun, sizeof(sun)); + sun.sun_family = AF_UNIX; + strlcpy(sun.sun_path, SOCKET_NAME, sizeof(sun.sun_path)); + if (connect(fd, (struct sockaddr *)&sun, sizeof(sun)) == -1) { + err(1, "connect: %s", SOCKET_NAME); + exit(1); + } + + imsg_init(&ibuf, fd); + imsg_compose(&ibuf, IMSG_CTL_SHOW_NEIGHBOR, 0, NULL, 0); + imsg_read(&ibuf); + + for (;;) { + if ((n = imsg_get(&ibuf, &imsg)) == -1) + errx(1, "imsg_get error"); + + if (n == 0) + break; + + switch (imsg.hdr.type) { + case IMSG_CTL_SHOW_NEIGHBOR: + p = imsg.data; + printf("%s: %s\n", + inet_ntoa(p->conf.remote_addr.sin_addr), + statenames[p->state]); + break; + default: + break; + } + } + + close(fd); +} diff --git a/usr.sbin/bgpd/bgpdctl.h b/usr.sbin/bgpd/bgpdctl.h new file mode 100644 index 00000000000..b4a5b984b49 --- /dev/null +++ b/usr.sbin/bgpd/bgpdctl.h @@ -0,0 +1,19 @@ +/* $OpenBSD: bgpdctl.h,v 1.1 2004/01/01 23:51:40 henning Exp $ */ + +/* + * Copyright (c) 2003 Henning Brauer <henning@openbsd.org> + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#define SOCKET_NAME "/var/run/bgpd.sock" diff --git a/usr.sbin/bgpd/bgpdctl/Makefile b/usr.sbin/bgpd/bgpdctl/Makefile new file mode 100644 index 00000000000..a237c195312 --- /dev/null +++ b/usr.sbin/bgpd/bgpdctl/Makefile @@ -0,0 +1,16 @@ +# $OpenBSD: Makefile,v 1.1 2004/01/01 23:51:40 henning Exp $ + +.PATH: ${.CURDIR}/.. + +PROG= bgpdctl +BINDIR= /usr/sbin +SRCS= bgpdctl.c buffer.c imsg.c log.c +CFLAGS+= -Wall +CFLAGS+= -Wstrict-prototypes -Wmissing-prototypes +CLFAGS+= -Wmissing-declarations -Wredundant-decls +CFLAGS+= -Wshadow -Wpointer-arith -Wcast-qual +CFLAGS+= -Wsign-compare +YFLAGS= +MAN= bgpdctl.8 + +.include <bsd.prog.mk> |