[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[gnunet] branch master updated: -added ppid prefix to netjail netns and
From: |
gnunet |
Subject: |
[gnunet] branch master updated: -added ppid prefix to netjail netns and interfaces |
Date: |
Sat, 28 Aug 2021 20:40:10 +0200 |
This is an automated email from the git hooks/post-receive script.
thejackimonster pushed a commit to branch master
in repository gnunet.
The following commit(s) were added to refs/heads/master by this push:
new 7a4c1fb72 -added ppid prefix to netjail netns and interfaces
7a4c1fb72 is described below
commit 7a4c1fb72a78a19e6d7775472266dba3a4b23356
Author: TheJackiMonster <thejackimonster@gmail.com>
AuthorDate: Sat Aug 28 20:36:20 2021 +0200
-added ppid prefix to netjail netns and interfaces
Signed-off-by: TheJackiMonster <thejackimonster@gmail.com>
---
contrib/scripts/netjail/netjail_core.sh | 47 +++++++++---
contrib/scripts/netjail/netjail_setup_internet.sh | 92 ++++++++++-------------
2 files changed, 73 insertions(+), 66 deletions(-)
diff --git a/contrib/scripts/netjail/netjail_core.sh
b/contrib/scripts/netjail/netjail_core.sh
index 1bfc365e7..c93f26dc9 100755
--- a/contrib/scripts/netjail/netjail_core.sh
+++ b/contrib/scripts/netjail/netjail_core.sh
@@ -2,6 +2,7 @@
#
JAILOR=${SUDO_USER:?must run in sudo}
+PREFIX=${PPID:?must run from a parent process}
# running with `sudo` is required to be
# able running the actual commands as the
@@ -9,6 +10,24 @@ JAILOR=${SUDO_USER:?must run in sudo}
export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
+# initialize the numbering to ensure unique names
+
+NAMESPACE_NUM=${NAMESPACE_FD:?must have a file for ids}
+INTERFACE_NUM=${INTERFACE_FD:?must have a file for ids}
+
+netjail_read_inc() {
+ local FD=$1
+ local NUM=$(cat $FD)
+ NUM=${NUM:-0}
+
+ local RES=$NUM
+ NUM=$(($NUM + 1))
+
+ echo $NUM > $FD
+
+ printf "$RES"
+}
+
netjail_opt() {
local OPT=$1
shift 1
@@ -73,15 +92,14 @@ netjail_check_bin() {
fi
}
-netjail_print_name() {
- printf "%s%02x%02x" $1 $2 ${3:-0}
-}
-
netjail_bridge() {
- local BRIDGE=$1
+ local NUM=$(netjail_read_inc $INTERFACE_NUM)
+ local BRIDGE=$(printf "%06x-%08x" $PREFIX $NUM)
ip link add $BRIDGE type bridge
ip link set dev $BRIDGE up
+
+ printf "%s" $BRIDGE
}
netjail_bridge_clear() {
@@ -91,9 +109,12 @@ netjail_bridge_clear() {
}
netjail_node() {
- local NODE=$1
+ local NUM=$(netjail_read_inc $NAMESPACE_NUM)
+ local NODE=$(printf "%06x-%08x" $PREFIX $NUM)
ip netns add $NODE
+
+ printf "%s" $NODE
}
netjail_node_clear() {
@@ -108,8 +129,11 @@ netjail_node_link_bridge() {
local ADDRESS=$3
local MASK=$4
- local LINK_IF="$NODE-$BRIDGE-0"
- local LINK_BR="$NODE-$BRIDGE-1"
+ local NUM_IF=$(netjail_read_inc $INTERFACE_NUM)
+ local NUM_BR=$(netjail_read_inc $INTERFACE_NUM)
+
+ local LINK_IF=$(printf "%06x-%08x" $PREFIX $NUM_IF)
+ local LINK_BR=$(printf "%06x-%08x" $PREFIX $NUM_BR)
ip link add $LINK_IF type veth peer name $LINK_BR
ip link set $LINK_IF netns $NODE
@@ -120,13 +144,12 @@ netjail_node_link_bridge() {
ip -n $NODE link set up dev lo
ip link set $LINK_BR up
+
+ printf "%s" $LINK_BR
}
netjail_node_unlink_bridge() {
- local NODE=$1
- local BRIDGE=$2
-
- local LINK_BR="$NODE-$BRIDGE-1"
+ local LINK_BR=$1
ip link delete $LINK_BR
}
diff --git a/contrib/scripts/netjail/netjail_setup_internet.sh
b/contrib/scripts/netjail/netjail_setup_internet.sh
index 6ae047274..c9a6fd6d8 100755
--- a/contrib/scripts/netjail/netjail_setup_internet.sh
+++ b/contrib/scripts/netjail/netjail_setup_internet.sh
@@ -1,4 +1,10 @@
#!/bin/sh
+
+NAMESPACE_FD=$(mktemp)
+INTERFACE_FD=$(mktemp)
+
+trap "rm -f $NAMESPACE_FD $INTERFACE_FD; exit" ERR EXIT
+
. "./netjail_core.sh"
set -eu
@@ -6,6 +12,7 @@ set -x
export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
+PREFIX=$PPID
LOCAL_M=$1
GLOBAL_N=$2
@@ -32,8 +39,6 @@ if [ $STUN -gt 0 ]; then
netjail_check_bin stunserver
shift 1
-
- STUN_NODE=$(netjail_print_name "S" 254)
fi
netjail_check_bin $1
@@ -45,43 +50,33 @@ KNOWN_GROUP="92.68.151"
CLEANUP=0
echo "Start [local: $LOCAL_GROUP.0/24, global: $GLOBAL_GROUP.0/16, stun:
$STUN]"
-NETWORK_NET=$(netjail_print_name "n" $GLOBAL_N $LOCAL_M)
-
-netjail_bridge $NETWORK_NET
+NETWORK_NET=$(netjail_bridge)
for X in $(seq $KNOWN); do
- KNOWN_NODE=$(netjail_print_name "K" $X)
-
- netjail_node $KNOWN_NODE
- netjail_node_link_bridge $KNOWN_NODE $NETWORK_NET "$KNOWN_GROUP.$X" 16
+ KNOWN_NODES[$X]=$(netjail_node)
+ KNOWN_LINKS[$X]=$(netjail_node_link_bridge ${KNOWN_NODES[$X]}
$NETWORK_NET "$KNOWN_GROUP.$X" 16)
done
-for N in $(seq $GLOBAL_N); do
- ROUTER=$(netjail_print_name "R" $N)
-
- netjail_node $ROUTER
- netjail_node_link_bridge $ROUTER $NETWORK_NET "$GLOBAL_GROUP.$N" 16
-
- ROUTER_NET=$(netjail_print_name "r" $N)
+declare -A NODES
+declare -A NODE_LINKS
- netjail_bridge $ROUTER_NET
+for N in $(seq $GLOBAL_N); do
+ ROUTERS[$N]=$(netjail_node)
+ NETWORK_LINKS[$N]=$(netjail_node_link_bridge ${ROUTERS[$N]}
$NETWORK_NET "$GLOBAL_GROUP.$N" 16)
+ ROUTER_NETS[$N]=$(netjail_bridge)
for M in $(seq $LOCAL_M); do
- NODE=$(netjail_print_name "N" $N $M)
-
- netjail_node $NODE
- netjail_node_link_bridge $NODE $ROUTER_NET "$LOCAL_GROUP.$M" 24
+ NODES[$N,$M]=$(netjail_node)
+ NODE_LINKS[$N,$M]=$(netjail_node_link_bridge ${NODES[$N,$M]}
${ROUTER_NETS[$N]} "$LOCAL_GROUP.$M" 24)
done
ROUTER_ADDR="$LOCAL_GROUP.$(($LOCAL_M+1))"
-
- netjail_node_link_bridge $ROUTER $ROUTER_NET $ROUTER_ADDR 24
- netjail_node_add_nat $ROUTER $ROUTER_ADDR 24
+ ROUTER_LINKS[$N]=$(netjail_node_link_bridge ${ROUTERS[$N]}
${ROUTER_NETS[$N]} $ROUTER_ADDR 24)
+
+ netjail_node_add_nat ${ROUTERS[$N]} $ROUTER_ADDR 24
for M in $(seq $LOCAL_M); do
- NODE=$(netjail_print_name "N" $N $M)
-
- netjail_node_add_default $NODE $ROUTER_ADDR
+ netjail_node_add_default ${NODES[$N,$M]} $ROUTER_ADDR
done
done
@@ -89,67 +84,56 @@ WAITING=""
KILLING=""
if [ $STUN -gt 0 ]; then
- netjail_node $STUN_NODE
- netjail_node_link_bridge $STUN_NODE $NETWORK_NET "$GLOBAL_GROUP.254" 16
+ STUN_NODE=$(netjail_node)
+ STUN_LINK=$(netjail_node_link_bridge $STUN_NODE $NETWORK_NET
"$GLOBAL_GROUP.254" 16)
netjail_node_exec $STUN_NODE 0 1 stunserver &
KILLING="$!"
fi
for X in $(seq $KNOWN); do
- KNOWN_NODE=$(netjail_print_name "K" $X)
INDEX=$(($X - 1))
-
+
FD_X=$(($INDEX * 2 + 3 + 0))
FD_Y=$(($INDEX * 2 + 3 + 1))
- netjail_node_exec $KNOWN_NODE $FD_X $FD_Y $@ &
+ netjail_node_exec ${KNOWN_NODES[$X]} $FD_X $FD_Y $@ &
WAITING="$! $WAITING"
done
for N in $(seq $GLOBAL_N); do
for M in $(seq $LOCAL_M); do
- NODE=$(netjail_print_name "N" $N $M)
INDEX=$(($LOCAL_M * ($N - 1) + $M - 1 + $KNOWN))
-
+
FD_X=$(($INDEX * 2 + 3 + 0))
FD_Y=$(($INDEX * 2 + 3 + 1))
- netjail_node_exec $NODE $FD_X $FD_Y $@ &
+ netjail_node_exec ${NODES[$N,$M]} $FD_X $FD_Y $@ &
WAITING="$! $WAITING"
done
done
cleanup() {
if [ $STUN -gt 0 ]; then
- STUN_NODE=$(netjail_print_name "S" 254)
-
- netjail_node_unlink_bridge $STUN_NODE $NETWORK_NET
+ netjail_node_unlink_bridge $STUN_LINK
netjail_node_clear $STUN_NODE
fi
for X in $(seq $KNOWN); do
- KNOWN_NODE=$(netjail_print_name "K" $X)
-
- netjail_node_unlink_bridge $KNOWN_NODE $NETWORK_NET
- netjail_node_clear $KNOWN_NODE
+ netjail_node_unlink_bridge ${KNOWN_LINKS[$X]}
+ netjail_node_clear ${KNOWN_NODES[$X]}
done
for N in $(seq $GLOBAL_N); do
- ROUTER_NET=$(netjail_print_name "r" $N)
-
for M in $(seq $LOCAL_M); do
- NODE=$(netjail_print_name "N" $N $M)
-
- netjail_node_unlink_bridge $NODE $ROUTER_NET
- netjail_node_clear $NODE
+ netjail_node_unlink_bridge ${NODE_LINKS[$N,$M]}
+ netjail_node_clear ${NODES[$N,$M]}
done
- ROUTER=$(netjail_print_name "R" $N)
-
- netjail_bridge_clear $ROUTER_NET
- netjail_node_unlink_bridge $ROUTER $NETWORK_NET
- netjail_node_clear $ROUTER
+ netjail_node_unlink_bridge ${ROUTER_LINKS[$N]}
+ netjail_bridge_clear ${ROUTER_NETS[$N]}
+ netjail_node_unlink_bridge ${NETWORK_LINKS[$N]}
+ netjail_node_clear ${ROUTERS[$N]}
done
netjail_bridge_clear $NETWORK_NET
@@ -162,7 +146,7 @@ trapped_cleanup() {
cleanup
}
-trap 'trapped_cleanup' 2
+trap 'trapped_cleanup' ERR
netjail_waitall $WAITING
netjail_killall $KILLING
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [gnunet] branch master updated: -added ppid prefix to netjail netns and interfaces,
gnunet <=