ifconfig: print tpmr(4) members

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

ifconfig: print tpmr(4) members

Klemens Nanni-2
This diff is to be applied on top of my other diff on tech@ with subject
"ifconfig: merge switch_status() into bridge_status()".

It hooks completes the output of tpmr intefaces in what I think is the
simplest and least intrusive way.

tpmr is a trivial bridge and has no specific ioctls, so to distinguish
it from the rest we must rely on the interface name;  assuming that it
is tpmr because neither is_bridge() nor is_switch() return success is
not possible due to the way ifconfig is designed: it runs all *_status()
commands for all interface types.

An alternative approach would be to make ifconfig try all the various
bridge related ioctls on all bridge-like interfaces and quiet down all
failures such output stays clean, but I dislike this shotgun approach
and prefer testing for different drivers where possible.

With this last piece in, I could finally document tpmr under ifconfig(8)
(and move on the next drivers in need of love).

Feedback? OK?


--- brconfig.c.orig Fri Jul 31 08:58:03 2020
+++ brconfig.c Fri Jul 31 09:16:59 2020
@@ -775,15 +775,28 @@
  return (1);
 }
 
+/* no tpmr(4) specific ioctls, name is enough if ifconfig.c:printif() passed */
+int
+is_tpmr(void)
+{
+ return (strncmp(ifname, "tpmr", sizeof("tpmr") - 1) == 0);
+}
+
 void
 bridge_status(void)
 {
  struct ifbrparam bp1, bp2;
- int isswitch = is_switch();
+ int isswitch;
 
+ if (is_tpmr()) {
+ bridge_list("\t");
+ return;
+ }
+
  if (!is_bridge())
  return;
 
+ isswitch = is_switch();
  if (isswitch)
  switch_cfg("\t");
  else

Reply | Threaded
Open this post in threaded view
|

Re: ifconfig: print tpmr(4) members

David Gwynne-5


> On 31 Jul 2020, at 17:17, Klemens Nanni <[hidden email]> wrote:
>
> This diff is to be applied on top of my other diff on tech@ with subject
> "ifconfig: merge switch_status() into bridge_status()".
>
> It hooks completes the output of tpmr intefaces in what I think is the
> simplest and least intrusive way.
>
> tpmr is a trivial bridge and has no specific ioctls, so to distinguish
> it from the rest we must rely on the interface name;  assuming that it
> is tpmr because neither is_bridge() nor is_switch() return success is
> not possible due to the way ifconfig is designed: it runs all *_status()
> commands for all interface types.
>
> An alternative approach would be to make ifconfig try all the various
> bridge related ioctls on all bridge-like interfaces and quiet down all
> failures such output stays clean, but I dislike this shotgun approach
> and prefer testing for different drivers where possible.
>
> With this last piece in, I could finally document tpmr under ifconfig(8)
> (and move on the next drivers in need of love).
>
> Feedback? OK?

let's do it.

>
>
> --- brconfig.c.orig Fri Jul 31 08:58:03 2020
> +++ brconfig.c Fri Jul 31 09:16:59 2020
> @@ -775,15 +775,28 @@
> return (1);
> }
>
> +/* no tpmr(4) specific ioctls, name is enough if ifconfig.c:printif() passed */
> +int
> +is_tpmr(void)
> +{
> + return (strncmp(ifname, "tpmr", sizeof("tpmr") - 1) == 0);
> +}
> +
> void
> bridge_status(void)
> {
> struct ifbrparam bp1, bp2;
> - int isswitch = is_switch();
> + int isswitch;
>
> + if (is_tpmr()) {
> + bridge_list("\t");
> + return;
> + }
> +
> if (!is_bridge())
> return;
>
> + isswitch = is_switch();
> if (isswitch)
> switch_cfg("\t");
> else