> On 31 Jul 2020, at 17:17, Klemens Nanni <[email protected]> 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