iankelling.org
/
git
/
newns
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (from parent 1:
4c177e4
)
start more idempotent, not finished yet
author
Ian Kelling
<iank@fsf.org>
Fri, 5 Apr 2024 01:07:30 +0000
(21:07 -0400)
committer
Ian Kelling
<iank@fsf.org>
Fri, 5 Apr 2024 17:26:06 +0000
(13:26 -0400)
newns
patch
|
blob
|
history
diff --git
a/newns
b/newns
index 34e4ca5da3454a8f4c4460e80f7a8fdef8917546..313440730cd67b08406122dd5d2d727a12bbfa91 100755
(executable)
--- a/
newns
+++ b/
newns
@@
-220,6
+220,18
@@
find-network() {
fi
}
fi
}
+# ip add idempotent (if it doesn't exist already)
+ip-add() {
+ local cmd net dev
+ cmd=$1
+ net=$2
+ dev=$3
+ if ! $cmd addr show dev $dev | sed 's/^ *//;s/ *$//' | grep -xF "inet $net scope global $dev"; then
+ $cmd addr add $net dev $dev
+ fi
+
+}
+
start() {
find-network
start() {
find-network
@@
-257,7
+269,9
@@
start() {
if $create; then
if $create; then
- ip netns add $nn
+ if ! ip netns | grep -xF $nn &>/dev/null; then
+ ip netns add $nn
+ fi
ip -n $nn link set dev lo up
fi
ip -n $nn link set dev lo up
fi
@@
-271,10
+285,10
@@
start() {
err-cleanup() { stop; }
ipnn link add $v0 type veth peer name $v1
ipnn link set $v0 netns default
err-cleanup() { stop; }
ipnn link add $v0 type veth peer name $v1
ipnn link set $v0 netns default
- ip
d addr add $network.1/24 dev
$v0
+ ip
-add ipd $network.1/24
$v0
ipd link set $v0 up
nat -C &>/dev/null || nat -A
ipd link set $v0 up
nat -C &>/dev/null || nat -A
- ip
nn addr add $network.2/24 dev $v1
+ ip
-add ipnn $network.1/24 $v0
ipnn link set $v1 up
cmd="ipnn route add default via $network.1"
$cmd
ipnn link set $v1 up
cmd="ipnn route add default via $network.1"
$cmd