From 9f3c9ce503a1f983ee8fffeb6f1eaf571b976ca0 Mon Sep 17 00:00:00 2001
From: Jacek Kowalski <Jacek@jacekk.info>
Date: Fri, 13 Mar 2026 09:19:04 +0000
Subject: [PATCH] Move gw4/gw6 options to network level (with optional overrides)

---
 test_integration.sh |   58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 58 insertions(+), 0 deletions(-)

diff --git a/test_integration.sh b/test_integration.sh
index 9f1744c..e695f08 100755
--- a/test_integration.sh
+++ b/test_integration.sh
@@ -193,3 +193,61 @@
 fi
 
 docker network rm test2
+
+
+###############
+# Test gw4/gw6
+
+docker network create \
+  --internal \
+  --driver "${PLUGIN}" \
+  --opt nogw=1 \
+  --opt gw4=192.168.254.1 \
+  --ipam-driver jacekkow/pyipam:latest \
+  --ipam-opt ptp=1 \
+  --ipv6 \
+  --subnet 192.168.255.0/24 \
+  --subnet 2001:db8::/32 \
+  test2
+
+ADDRESSES=$(docker run --rm --network test2 \
+  alpine \
+  /sbin/ip addr show
+)
+if ! echo "${ADDRESSES}" | grep 192.168.255.0/32; then
+	echo "ERROR: invalid PtP address assigned"
+	exit 1
+fi
+if ! echo "${ADDRESSES}" | grep 2001:db8::/128; then
+	echo "ERROR: invalid PtP address assigned"
+	exit 1
+fi
+
+ROUTES=$(docker run --rm --network test2 \
+  alpine \
+  /sbin/ip route show
+)
+if ! echo "${ROUTES}" | grep "via 192.168.254.1"; then
+	echo "ERROR: IPv4 route not assigned with gw4=..."
+	exit 1
+fi
+
+ROUTES=$(docker run --rm --network test2 \
+  alpine \
+  /sbin/ip -6 route show
+)
+if echo "${ROUTES}" | grep default; then
+	echo "ERROR: IPv6 route assigned with nogw=1"
+	exit 1
+fi
+
+ROUTES=$(docker run --rm --network name=test2,driver-opt=gw6=fe80::1 \
+  alpine \
+  /sbin/ip -6 route show
+)
+if ! echo "${ROUTES}" | grep "via fe80::1"; then
+	echo "ERROR: IPv6 route not assigned with per-container gw6=..."
+	exit 1
+fi
+
+docker network rm test2

--
Gitblit v1.10.0