summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorclaudio <claudio@openbsd.org>2021-01-04 17:44:14 +0000
committerclaudio <claudio@openbsd.org>2021-01-04 17:44:14 +0000
commitdfda3de3800a9e01411eb156352ec9a44dffc50c (patch)
tree661eea801806c8f03d9718c5259d1c0b3734e11d
parentKeep the various free calls of tls13_record_layer_free() in the (diff)
Rename PFD_PIPE_ROUTE to PFD_PIPE_RDE which is a more obvious name.
Also change the startup code to use enum bgpd_process to select which process needs to be run. Makes the code in my opinion easier to understand. OK denis@
-rw-r--r--usr.sbin/bgpd/bgpd.c44
1 files changed, 25 insertions, 19 deletions
diff --git a/usr.sbin/bgpd/bgpd.c b/usr.sbin/bgpd/bgpd.c
index 0d9fdb7463f..63e47689f85 100644
--- a/usr.sbin/bgpd/bgpd.c
+++ b/usr.sbin/bgpd/bgpd.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: bgpd.c,v 1.232 2020/12/30 07:00:54 claudio Exp $ */
+/* $OpenBSD: bgpd.c,v 1.233 2021/01/04 17:44:14 claudio Exp $ */
/*
* Copyright (c) 2003, 2004 Henning Brauer <henning@openbsd.org>
@@ -90,7 +90,7 @@ usage(void)
}
#define PFD_PIPE_SESSION 0
-#define PFD_PIPE_ROUTE 1
+#define PFD_PIPE_RDE 1
#define PFD_SOCK_ROUTE 2
#define PFD_SOCK_PFKEY 3
#define POLL_MAX 4
@@ -102,6 +102,7 @@ int
main(int argc, char *argv[])
{
struct bgpd_config *conf;
+ enum bgpd_process proc = PROC_MAIN;
struct rde_rib *rr;
struct peer *p;
struct pollfd pfd[POLL_MAX];
@@ -110,7 +111,6 @@ main(int argc, char *argv[])
char *conffile;
char *saved_argv0;
int debug = 0;
- int rflag = 0, sflag = 0;
int rfd, keyfd;
int ch, status;
int pipe_m2s[2];
@@ -151,10 +151,10 @@ main(int argc, char *argv[])
cmd_opts |= BGPD_OPT_VERBOSE;
break;
case 'R':
- rflag = 1;
+ proc = PROC_RDE;
break;
case 'S':
- sflag = 1;
+ proc = PROC_SE;
break;
default:
usage();
@@ -164,7 +164,7 @@ main(int argc, char *argv[])
argc -= optind;
argv += optind;
- if (argc > 0 || (sflag && rflag))
+ if (argc > 0)
usage();
if (cmd_opts & BGPD_OPT_NOACTION) {
@@ -184,10 +184,16 @@ main(int argc, char *argv[])
exit(0);
}
- if (rflag)
+ switch (proc) {
+ case PROC_MAIN:
+ break;
+ case PROC_RDE:
rde_main(debug, cmd_opts & BGPD_OPT_VERBOSE);
- else if (sflag)
+ /* NOTREACHED */
+ case PROC_SE:
session_main(debug, cmd_opts & BGPD_OPT_VERBOSE);
+ /* NOTREACHED */
+ }
if (geteuid())
errx(1, "need root privileges");
@@ -278,7 +284,7 @@ BROKEN if (pledge("stdio rpath wpath cpath fattr unix route recvfd sendfd",
pfd[PFD_SOCK_PFKEY].events = POLLIN;
set_pollfd(&pfd[PFD_PIPE_SESSION], ibuf_se);
- set_pollfd(&pfd[PFD_PIPE_ROUTE], ibuf_rde);
+ set_pollfd(&pfd[PFD_PIPE_RDE], ibuf_rde);
if (timeout < 0 || timeout > MAX_TIMEOUT)
timeout = MAX_TIMEOUT;
@@ -300,14 +306,14 @@ BROKEN if (pledge("stdio rpath wpath cpath fattr unix route recvfd sendfd",
quit = 1;
}
- if (handle_pollfd(&pfd[PFD_PIPE_ROUTE], ibuf_rde) == -1) {
+ if (handle_pollfd(&pfd[PFD_PIPE_RDE], ibuf_rde) == -1) {
log_warnx("main: Lost connection to RDE");
msgbuf_clear(&ibuf_rde->w);
free(ibuf_rde);
ibuf_rde = NULL;
quit = 1;
} else {
- if (dispatch_imsg(ibuf_rde, PFD_PIPE_ROUTE, conf) ==
+ if (dispatch_imsg(ibuf_rde, PFD_PIPE_RDE, conf) ==
-1)
quit = 1;
}
@@ -713,7 +719,7 @@ dispatch_imsg(struct imsgbuf *ibuf, int idx, struct bgpd_config *conf)
switch (imsg.hdr.type) {
case IMSG_KROUTE_CHANGE:
- if (idx != PFD_PIPE_ROUTE)
+ if (idx != PFD_PIPE_RDE)
log_warnx("route request not from RDE");
else if (imsg.hdr.len != IMSG_HEADER_SIZE +
sizeof(struct kroute_full))
@@ -723,7 +729,7 @@ dispatch_imsg(struct imsgbuf *ibuf, int idx, struct bgpd_config *conf)
rv = -1;
break;
case IMSG_KROUTE_DELETE:
- if (idx != PFD_PIPE_ROUTE)
+ if (idx != PFD_PIPE_RDE)
log_warnx("route request not from RDE");
else if (imsg.hdr.len != IMSG_HEADER_SIZE +
sizeof(struct kroute_full))
@@ -733,7 +739,7 @@ dispatch_imsg(struct imsgbuf *ibuf, int idx, struct bgpd_config *conf)
rv = -1;
break;
case IMSG_KROUTE_FLUSH:
- if (idx != PFD_PIPE_ROUTE)
+ if (idx != PFD_PIPE_RDE)
log_warnx("route request not from RDE");
else if (imsg.hdr.len != IMSG_HEADER_SIZE)
log_warnx("wrong imsg len");
@@ -741,7 +747,7 @@ dispatch_imsg(struct imsgbuf *ibuf, int idx, struct bgpd_config *conf)
rv = -1;
break;
case IMSG_NEXTHOP_ADD:
- if (idx != PFD_PIPE_ROUTE)
+ if (idx != PFD_PIPE_RDE)
log_warnx("nexthop request not from RDE");
else if (imsg.hdr.len != IMSG_HEADER_SIZE +
sizeof(struct bgpd_addr))
@@ -751,7 +757,7 @@ dispatch_imsg(struct imsgbuf *ibuf, int idx, struct bgpd_config *conf)
rv = -1;
break;
case IMSG_NEXTHOP_REMOVE:
- if (idx != PFD_PIPE_ROUTE)
+ if (idx != PFD_PIPE_RDE)
log_warnx("nexthop request not from RDE");
else if (imsg.hdr.len != IMSG_HEADER_SIZE +
sizeof(struct bgpd_addr))
@@ -761,7 +767,7 @@ dispatch_imsg(struct imsgbuf *ibuf, int idx, struct bgpd_config *conf)
conf);
break;
case IMSG_PFTABLE_ADD:
- if (idx != PFD_PIPE_ROUTE)
+ if (idx != PFD_PIPE_RDE)
log_warnx("pftable request not from RDE");
else
if (imsg.hdr.len != IMSG_HEADER_SIZE +
@@ -771,7 +777,7 @@ dispatch_imsg(struct imsgbuf *ibuf, int idx, struct bgpd_config *conf)
rv = -1;
break;
case IMSG_PFTABLE_REMOVE:
- if (idx != PFD_PIPE_ROUTE)
+ if (idx != PFD_PIPE_RDE)
log_warnx("pftable request not from RDE");
else
if (imsg.hdr.len != IMSG_HEADER_SIZE +
@@ -781,7 +787,7 @@ dispatch_imsg(struct imsgbuf *ibuf, int idx, struct bgpd_config *conf)
rv = -1;
break;
case IMSG_PFTABLE_COMMIT:
- if (idx != PFD_PIPE_ROUTE)
+ if (idx != PFD_PIPE_RDE)
log_warnx("pftable request not from RDE");
else if (imsg.hdr.len != IMSG_HEADER_SIZE)
log_warnx("wrong imsg len");