On 12/18/24 19:15, Petr Machata wrote: > Alongside the helper ip_link_set_up(), one to set the link down will be > useful as well. Add a helper to determine the link state as well, > ip_link_is_up(), and use it to short-circuit any changes if the state is > already the desired one. > > Furthermore, add a helper bridge_vlan_add(). > > Signed-off-by: Petr Machata <petrm@xxxxxxxxxx> > Reviewed-by: Ido Schimmel <idosch@xxxxxxxxxx> > --- > CC: Shuah Khan <shuah@xxxxxxxxxx> > CC: linux-kselftest@xxxxxxxxxxxxxxx > > --- > tools/testing/selftests/net/lib.sh | 31 ++++++++++++++++++++++++++++-- > 1 file changed, 29 insertions(+), 2 deletions(-) > > diff --git a/tools/testing/selftests/net/lib.sh b/tools/testing/selftests/net/lib.sh > index 2cd5c743b2d9..0bd9a038a1f0 100644 > --- a/tools/testing/selftests/net/lib.sh > +++ b/tools/testing/selftests/net/lib.sh > @@ -477,12 +477,33 @@ ip_link_set_addr() > defer ip link set dev "$name" address "$old_addr" > } > > +ip_link_is_up() > +{ > + local name=$1; shift > + > + local state=$(ip -j link show "$name" | > + jq -r '(.[].flags[] | select(. == "UP")) // "DOWN"') > + [[ $state == "UP" ]] > +} > + > ip_link_set_up() > { > local name=$1; shift > > - ip link set dev "$name" up > - defer ip link set dev "$name" down > + if ! ip_link_is_up "$name"; then > + ip link set dev "$name" up > + defer ip link set dev "$name" down > + fi > +} > + > +ip_link_set_down() > +{ > + local name=$1; shift > + > + if ip_link_is_up "$name"; then > + ip link set dev "$name" down > + defer ip link set dev "$name" up > + fi > } > > ip_addr_add() > @@ -498,3 +519,9 @@ ip_route_add() > ip route add "$@" > defer ip route del "$@" > } > + > +bridge_vlan_add() > +{ > + bridge vlan add "$@" > + defer bridge vlan del "$@" > +} Acked-by: Nikolay Aleksandrov <razor@xxxxxxxxxxxxx>