Re: ifconfig: merge switch_status() into bridge_status()

2020-08-04 Thread David Gwynne



> On 31 Jul 2020, at 16:36, Klemens Nanni  wrote:
> 
> On Wed, Jul 29, 2020 at 02:21:42PM +0200, Klemens Nanni wrote:
>> This is to reduce duplicate code and pave the way for a single
>> bridge_status() that covers all bridge like interfaces: bridge(4),
>> switch(4) and tpmr(4).
> A duplicate bridge_cfg() call snuck in, fixed diff below.
> 
> Feedback? OK?

ok.

> 
>> +if (isswitch)
>> +switch_cfg("\t");
>> +else
>> +bridge_cfg("\t");
>> +
>>  bridge_cfg("\t");
>> 
>>  bridge_list("\t");
> 
> 
> Index: brconfig.c
> ===
> RCS file: /cvs/src/sbin/ifconfig/brconfig.c,v
> retrieving revision 1.26
> diff -u -p -r1.26 brconfig.c
> --- brconfig.c29 Jul 2020 12:13:28 -  1.26
> +++ brconfig.c31 Jul 2020 06:32:54 -
> @@ -54,6 +54,7 @@ void bridge_ifclrflag(const char *, u_in
> 
> void bridge_list(char *);
> void bridge_cfg(const char *);
> +void switch_cfg(const char *);
> void bridge_badrule(int, char **, int);
> void bridge_showrule(struct ifbrlreq *);
> int is_switch(void);
> @@ -778,17 +779,24 @@ void
> bridge_status(void)
> {
>   struct ifbrparam bp1, bp2;
> + int isswitch = is_switch();
> 
> - if (!is_bridge() || is_switch())
> + if (!is_bridge())
>   return;
> 
> - bridge_cfg("\t");
> + if (isswitch)
> + switch_cfg("\t");
> + else
> + bridge_cfg("\t");
> 
>   bridge_list("\t");
> 
>   if (aflag && !ifaliases)
>   return;
> 
> + if (isswitch)
> + return;
> +
>   strlcpy(bp1.ifbrp_name, ifname, sizeof(bp1.ifbrp_name));
>   if (ioctl(sock, SIOCBRDGGCACHE, (caddr_t)) == -1)
>   return;
> @@ -1146,8 +1154,8 @@ is_switch()
>   return (1);
> }
> 
> -static void
> -switch_cfg(char *delim)
> +void
> +switch_cfg(const char *delim)
> {
>   struct ifbrparam bp;
> 
> @@ -1168,20 +1176,6 @@ switch_cfg(char *delim)
>   err(1, "%s", ifname);
> 
>   printf(" maxgroup %d\n", bp.ifbrp_maxgroup);
> -}
> -
> -void
> -switch_status(void)
> -{
> - if (!is_switch())
> - return;
> -
> - switch_cfg("\t");
> -
> - bridge_list("\t");
> -
> - if (aflag && !ifaliases)
> - return;
> }
> 
> void
> Index: ifconfig.c
> ===
> RCS file: /cvs/src/sbin/ifconfig/ifconfig.c,v
> retrieving revision 1.424
> diff -u -p -r1.424 ifconfig.c
> --- ifconfig.c3 Jul 2020 17:42:50 -   1.424
> +++ ifconfig.c31 Jul 2020 06:24:17 -
> @@ -3507,7 +3507,6 @@ status(int link, struct sockaddr_dl *sdl
>   phys_status(0);
> #ifndef SMALL
>   bridge_status();
> - switch_status();
> #endif
> }
> 
> Index: ifconfig.h
> ===
> RCS file: /cvs/src/sbin/ifconfig/ifconfig.h,v
> retrieving revision 1.2
> diff -u -p -r1.2 ifconfig.h
> --- ifconfig.h24 Oct 2019 18:54:10 -  1.2
> +++ ifconfig.h31 Jul 2020 06:24:18 -
> @@ -69,7 +69,6 @@ void bridge_flushrule(const char *, int)
> int is_bridge(void);
> void bridge_status(void);
> int bridge_rule(int, char **, int);
> -void switch_status(void);
> void switch_datapathid(const char *, int);
> void switch_portno(const char *, const char *);
> 



Re: ifconfig: merge switch_status() into bridge_status()

2020-07-31 Thread Klemens Nanni
On Wed, Jul 29, 2020 at 02:21:42PM +0200, Klemens Nanni wrote:
> This is to reduce duplicate code and pave the way for a single
> bridge_status() that covers all bridge like interfaces: bridge(4),
> switch(4) and tpmr(4).
A duplicate bridge_cfg() call snuck in, fixed diff below.

Feedback? OK?

> + if (isswitch)
> + switch_cfg("\t");
> + else
> + bridge_cfg("\t");
> +
>   bridge_cfg("\t");
>  
>   bridge_list("\t");


Index: brconfig.c
===
RCS file: /cvs/src/sbin/ifconfig/brconfig.c,v
retrieving revision 1.26
diff -u -p -r1.26 brconfig.c
--- brconfig.c  29 Jul 2020 12:13:28 -  1.26
+++ brconfig.c  31 Jul 2020 06:32:54 -
@@ -54,6 +54,7 @@ void bridge_ifclrflag(const char *, u_in
 
 void bridge_list(char *);
 void bridge_cfg(const char *);
+void switch_cfg(const char *);
 void bridge_badrule(int, char **, int);
 void bridge_showrule(struct ifbrlreq *);
 int is_switch(void);
@@ -778,17 +779,24 @@ void
 bridge_status(void)
 {
struct ifbrparam bp1, bp2;
+   int isswitch = is_switch();
 
-   if (!is_bridge() || is_switch())
+   if (!is_bridge())
return;
 
-   bridge_cfg("\t");
+   if (isswitch)
+   switch_cfg("\t");
+   else
+   bridge_cfg("\t");
 
bridge_list("\t");
 
if (aflag && !ifaliases)
return;
 
+   if (isswitch)
+   return;
+
strlcpy(bp1.ifbrp_name, ifname, sizeof(bp1.ifbrp_name));
if (ioctl(sock, SIOCBRDGGCACHE, (caddr_t)) == -1)
return;
@@ -1146,8 +1154,8 @@ is_switch()
return (1);
 }
 
-static void
-switch_cfg(char *delim)
+void
+switch_cfg(const char *delim)
 {
struct ifbrparam bp;
 
@@ -1168,20 +1176,6 @@ switch_cfg(char *delim)
err(1, "%s", ifname);
 
printf(" maxgroup %d\n", bp.ifbrp_maxgroup);
-}
-
-void
-switch_status(void)
-{
-   if (!is_switch())
-   return;
-
-   switch_cfg("\t");
-
-   bridge_list("\t");
-
-   if (aflag && !ifaliases)
-   return;
 }
 
 void
Index: ifconfig.c
===
RCS file: /cvs/src/sbin/ifconfig/ifconfig.c,v
retrieving revision 1.424
diff -u -p -r1.424 ifconfig.c
--- ifconfig.c  3 Jul 2020 17:42:50 -   1.424
+++ ifconfig.c  31 Jul 2020 06:24:17 -
@@ -3507,7 +3507,6 @@ status(int link, struct sockaddr_dl *sdl
phys_status(0);
 #ifndef SMALL
bridge_status();
-   switch_status();
 #endif
 }
 
Index: ifconfig.h
===
RCS file: /cvs/src/sbin/ifconfig/ifconfig.h,v
retrieving revision 1.2
diff -u -p -r1.2 ifconfig.h
--- ifconfig.h  24 Oct 2019 18:54:10 -  1.2
+++ ifconfig.h  31 Jul 2020 06:24:18 -
@@ -69,7 +69,6 @@ void bridge_flushrule(const char *, int)
 int is_bridge(void);
 void bridge_status(void);
 int bridge_rule(int, char **, int);
-void switch_status(void);
 void switch_datapathid(const char *, int);
 void switch_portno(const char *, const char *);
 



ifconfig: merge switch_status() into bridge_status()

2020-07-29 Thread Klemens Nanni
This is to reduce duplicate code and pave the way for a single
bridge_status() that covers all bridge like interfaces: bridge(4),
switch(4) and tpmr(4).

Feedback? OK?

Index: brconfig.c
===
RCS file: /cvs/src/sbin/ifconfig/brconfig.c,v
retrieving revision 1.26
diff -u -p -r1.26 brconfig.c
--- brconfig.c  29 Jul 2020 12:13:28 -  1.26
+++ brconfig.c  29 Jul 2020 12:17:04 -
@@ -54,6 +54,7 @@ void bridge_ifclrflag(const char *, u_in
 
 void bridge_list(char *);
 void bridge_cfg(const char *);
+void switch_cfg(const char *);
 void bridge_badrule(int, char **, int);
 void bridge_showrule(struct ifbrlreq *);
 int is_switch(void);
@@ -778,10 +779,16 @@ void
 bridge_status(void)
 {
struct ifbrparam bp1, bp2;
+   int isswitch = is_switch();
 
-   if (!is_bridge() || is_switch())
+   if (!is_bridge())
return;
 
+   if (isswitch)
+   switch_cfg("\t");
+   else
+   bridge_cfg("\t");
+
bridge_cfg("\t");
 
bridge_list("\t");
@@ -789,6 +796,9 @@ bridge_status(void)
if (aflag && !ifaliases)
return;
 
+   if (isswitch)
+   return;
+
strlcpy(bp1.ifbrp_name, ifname, sizeof(bp1.ifbrp_name));
if (ioctl(sock, SIOCBRDGGCACHE, (caddr_t)) == -1)
return;
@@ -1146,8 +1156,8 @@ is_switch()
return (1);
 }
 
-static void
-switch_cfg(char *delim)
+void
+switch_cfg(const char *delim)
 {
struct ifbrparam bp;
 
@@ -1168,20 +1178,6 @@ switch_cfg(char *delim)
err(1, "%s", ifname);
 
printf(" maxgroup %d\n", bp.ifbrp_maxgroup);
-}
-
-void
-switch_status(void)
-{
-   if (!is_switch())
-   return;
-
-   switch_cfg("\t");
-
-   bridge_list("\t");
-
-   if (aflag && !ifaliases)
-   return;
 }
 
 void
Index: ifconfig.c
===
RCS file: /cvs/src/sbin/ifconfig/ifconfig.c,v
retrieving revision 1.424
diff -u -p -r1.424 ifconfig.c
--- ifconfig.c  3 Jul 2020 17:42:50 -   1.424
+++ ifconfig.c  29 Jul 2020 12:17:06 -
@@ -3507,7 +3507,6 @@ status(int link, struct sockaddr_dl *sdl
phys_status(0);
 #ifndef SMALL
bridge_status();
-   switch_status();
 #endif
 }
 
Index: ifconfig.h
===
RCS file: /cvs/src/sbin/ifconfig/ifconfig.h,v
retrieving revision 1.2
diff -u -p -r1.2 ifconfig.h
--- ifconfig.h  24 Oct 2019 18:54:10 -  1.2
+++ ifconfig.h  29 Jul 2020 12:17:06 -
@@ -69,7 +69,6 @@ void bridge_flushrule(const char *, int)
 int is_bridge(void);
 void bridge_status(void);
 int bridge_rule(int, char **, int);
-void switch_status(void);
 void switch_datapathid(const char *, int);
 void switch_portno(const char *, const char *);