net: bridge: add helper to call /sbin/bridge-stp
authorVivien Didelot <vivien.didelot@savoirfairelinux.com>
Thu, 8 Sep 2016 16:50:43 +0000 (12:50 -0400)
committerDavid S. Miller <davem@davemloft.net>
Tue, 13 Sep 2016 15:21:31 +0000 (11:21 -0400)
commit308433155a67cb097142292c8943e0aa8d1a1c79
treee9334e5218ca665c10cf09bdf67f73e1be5db26a
parent4c73195edbe3a5d7e14ea549bb261cf35c29f0cc
net: bridge: add helper to call /sbin/bridge-stp

If /sbin/bridge-stp is available on the system, bridge tries to execute
it instead of the kernel implementation when starting/stopping STP.

If anything goes wrong with /sbin/bridge-stp, bridge silently falls back
to kernel STP, making hard to debug userspace STP.

This patch adds a br_stp_call_user helper to start/stop userspace STP
and debug errors from the program: abnormal exit status is stored in the
lower byte and normal exit status is stored in higher byte.

Below is a simple example on a kernel with dynamic debug enabled:

    # ln -s /bin/false /sbin/bridge-stp
    # brctl stp br0 on
    br0: failed to start userspace STP (256)
    # dmesg
    br0: /sbin/bridge-stp exited with code 1
    br0: failed to start userspace STP (256)
    br0: using kernel STP

Signed-off-by: Vivien Didelot <vivien.didelot@savoirfairelinux.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/bridge/br_stp_if.c