Message ID | 856d9e01725fdba21b7f6716358f645b19131af2.1734540770.git.petrm@nvidia.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 976d248bd33356eecb958cdc1b0c37622fd5d595 |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | bridge: Handle changes in VLAN_FLAG_BRIDGE_BINDING | expand |
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@nvidia.com> > Reviewed-by: Ido Schimmel <idosch@nvidia.com> > --- > CC: Shuah Khan <shuah@kernel.org> > CC: linux-kselftest@vger.kernel.org > > --- > 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@blackwall.org>
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 "$@" +}