Move one peer interface to a foreign namespace while keeping its transport
socket in the original namespace. Verify that its deletion notification
contains the expected target namespace ID.

Signed-off-by: Marco Baffo <[email protected]>
---
Changes in v3:
- Ignore unrelated events when validating
  notification target netns IDs.

Changes in v2:
- This is a new patch.

 tools/testing/selftests/net/ovpn/common.sh |  3 ++-
 tools/testing/selftests/net/ovpn/test.sh   | 25 ++++++++++++++++++++++
 2 files changed, 27 insertions(+), 1 deletion(-)

diff --git a/tools/testing/selftests/net/ovpn/common.sh 
b/tools/testing/selftests/net/ovpn/common.sh
index 4f2510fb6d7f..2b90b7bf8700 100644
--- a/tools/testing/selftests/net/ovpn/common.sh
+++ b/tools/testing/selftests/net/ovpn/common.sh
@@ -21,7 +21,8 @@ export OVPN_ID_OFFSET=$(( 9 * (OVPN_SYMMETRIC_ID == 0) ))
 
 OVPN_JQ_FILTER='map(if type == "array" then .[] else . end) |
        map(select(.msg.peer | has("remote-ipv6") | not)) |
-       map(del(.msg.ifindex)) | sort_by(.msg.peer.id)[]'
+       map(del(.msg.ifindex, .msg["target-netnsid"])) |
+       sort_by(.msg.peer.id)[]'
 OVPN_LAN_IP="11.11.11.11"
 
 declare -A OVPN_TMP_JSONS=()
diff --git a/tools/testing/selftests/net/ovpn/test.sh 
b/tools/testing/selftests/net/ovpn/test.sh
index 468dd7985c8f..52e482641016 100755
--- a/tools/testing/selftests/net/ovpn/test.sh
+++ b/tools/testing/selftests/net/ovpn/test.sh
@@ -270,8 +270,13 @@ ovpn_run_timeouts() {
 
        ovpn_log "Setting timeout to 3s P2P:"
 
+       # The transport socket stays in peer3 when its interface is moved.
+       ovpn_cmd_ok "move peer3 interface to peer0" \
+               ip -n ovpn_peer3 link set tun3 netns ovpn_peer0
+
        for p in $(seq 3 ${OVPN_NUM_PEERS}); do
                peer_ns="ovpn_peer${p}"
+               [ "${p}" -eq 3 ] && peer_ns="ovpn_peer0"
                ovpn_cmd_ok "set peer${p} P2P timeout" \
                        "${OVPN_CLI}" -n "${peer_ns}" set_peer \
                                tun${p} $((p + OVPN_ID_OFFSET)) 3 3
@@ -279,9 +284,29 @@ ovpn_run_timeouts() {
        sleep 5
 }
 
+ovpn_validate_ntf_netnsid() {
+       local peer="$1"
+       local target="$2"
+       local expected_netnsid
+       local received_netnsid
+
+       expected_netnsid=$(ip -n "ovpn_peer${peer}" -j netns list-id |
+               jq -er --arg target "${target}" \
+                       '.[] | select(.name == $target) | .nsid')
+       received_netnsid=$(jq -er \
+               'select(.name == "peer-del-ntf" and
+                       (.msg | has("target-netnsid"))) |
+                .msg["target-netnsid"]' \
+               "${OVPN_TMP_JSONS[$peer]}")
+
+       [ "${received_netnsid}" -eq "${expected_netnsid}" ]
+}
+
 ovpn_run_notifications() {
        local p
 
+       ovpn_cmd_ok "validate peer3 target netns ID" \
+               ovpn_validate_ntf_netnsid 3 ovpn_peer0
        for p in $(seq 0 ${OVPN_NUM_PEERS}); do
                ovpn_cmd_ok "validate listener output for peer ${p}" \
                        ovpn_compare_ntfs "${p}"
-- 
2.43.0



_______________________________________________
Openvpn-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openvpn-devel

Reply via email to