Re: minor cleanup in bgpd's process startup

2021-01-04 Thread Denis Fondras
Le Mon, Jan 04, 2021 at 05:04:51PM +0100, Claudio Jeker a écrit :
> bgpd will get a new process for RTR handling. Because of this it makes
> sense to cleanup the startup code a bit and not use flags to indicate
> which process to run but instead use the enum bgpd_process.
> Additionally change the PFD_PIPE_ROUTE to PFD_PIPE_RDE. The latter is less
> confusing since there is also PFD_SOCK_ROUTE.
> 
> OK?

Better readability, OK denis@

> -- 
> :wq Claudio
> 
> Index: bgpd.c
> ===
> RCS file: /cvs/src/usr.sbin/bgpd/bgpd.c,v
> retrieving revision 1.232
> diff -u -p -r1.232 bgpd.c
> --- bgpd.c30 Dec 2020 07:00:54 -  1.232
> +++ bgpd.c4 Jan 2021 16:00:30 -
> @@ -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_processproc = PROC_MAIN;
>   struct rde_rib  *rr;
>   struct peer *p;
>   struct pollfdpfd[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 @@ BROKENif (pledge("stdio rpath wpath cpa
>   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 cpa
>   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 
>  
>   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 
>   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_f

minor cleanup in bgpd's process startup

2021-01-04 Thread Claudio Jeker
bgpd will get a new process for RTR handling. Because of this it makes
sense to cleanup the startup code a bit and not use flags to indicate
which process to run but instead use the enum bgpd_process.
Additionally change the PFD_PIPE_ROUTE to PFD_PIPE_RDE. The latter is less
confusing since there is also PFD_SOCK_ROUTE.

OK?
-- 
:wq Claudio

Index: bgpd.c
===
RCS file: /cvs/src/usr.sbin/bgpd/bgpd.c,v
retrieving revision 1.232
diff -u -p -r1.232 bgpd.c
--- bgpd.c  30 Dec 2020 07:00:54 -  1.232
+++ bgpd.c  4 Jan 2021 16:00:30 -
@@ -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_processproc = PROC_MAIN;
struct rde_rib  *rr;
struct peer *p;
struct pollfdpfd[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 cpa
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 @@ BROKENif (pledge("stdio rpath wpath cpa
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 
 
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 
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 
rv = -1;
break;
case IMSG_KROUTE_FLUSH:
-