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 -0000 1.26
+++ brconfig.c 29 Jul 2020 12:17:04 -0000
@@ -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)&bp1) == -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 -0000 1.424
+++ ifconfig.c 29 Jul 2020 12:17:06 -0000
@@ -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 -0000 1.2
+++ ifconfig.h 29 Jul 2020 12:17:06 -0000
@@ -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 *);