diff options
| author | 2021-01-04 17:44:14 +0000 | |
|---|---|---|
| committer | 2021-01-04 17:44:14 +0000 | |
| commit | dfda3de3800a9e01411eb156352ec9a44dffc50c (patch) | |
| tree | 661eea801806c8f03d9718c5259d1c0b3734e11d | |
| parent | Keep 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.c | 44 |
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"); |
