gnunet-svn
[Top][All Lists]
Advanced

[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.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]