diff --git a/contrib/scripts/nm-in-container.d/data-nm-env-prepare.sh b/contrib/scripts/nm-in-container.d/data-nm-env-prepare.sh index 3996749829..5b536b82c0 100755 --- a/contrib/scripts/nm-in-container.d/data-nm-env-prepare.sh +++ b/contrib/scripts/nm-in-container.d/data-nm-env-prepare.sh @@ -9,32 +9,36 @@ die() { do_cleanup() { local IDX="$1" + local NAME_PREFIX="${2:-net}" + local PEER_PREFIX="${3:-d_}" - pkill -F "/tmp/nm-dnsmasq-d_$IDX.pid" dnsmasq &>/dev/null || : - rm -rf "/tmp/nm-dnsmasq-d_$IDX.pid" + pkill -F "/tmp/nm-dnsmasq-$PEER_PREFIX$IDX.pid" dnsmasq &>/dev/null || : + rm -rf "/tmp/nm-dnsmasq-$PEER_PREFIX$IDX.pid" - pkill -F "/tmp/nm-radvd-d_$IDX.pid" radvd &>/dev/null || : - rm -rf "/tmp/nm-radvd-d_$IDX.pid" + pkill -F "/tmp/nm-radvd-$PEER_PREFIX$IDX.pid" radvd &>/dev/null || : + rm -rf "/tmp/nm-radvd-$PEER_PREFIX$IDX.pid" - rm -rf "/tmp/nm-radvd-d_$IDX.conf" + rm -rf "/tmp/nm-radvd-$PEER_PREFIX$IDX.conf" - ip link del "d_$IDX" &>/dev/null || : + ip link del "$PEER_PREFIX$IDX" &>/dev/null || : } do_setup() { local IDX="$1" + local NAME_PREFIX="${2:-net}" + local PEER_PREFIX="${3:-d_}" do_cleanup "$IDX" - ip link add "net$IDX" type veth peer "d_$IDX" - ip link set "d_$IDX" up + ip link add "$NAME_PREFIX$IDX" type veth peer "$PEER_PREFIX$IDX" + ip link set "$PEER_PREFIX$IDX" up - ip addr add "192.168.$((120 + $IDX)).1/23" dev "d_$IDX" - ip addr add "192:168:$((120 + IDX))::1/64" dev "d_$IDX" + ip addr add "192.168.$((120 + $IDX)).1/23" dev "$PEER_PREFIX$IDX" + ip addr add "192:168:$((120 + IDX))::1/64" dev "$PEER_PREFIX$IDX" dnsmasq \ --conf-file=/dev/null \ - --pid-file="/tmp/nm-dnsmasq-d_$IDX.pid" \ + --pid-file="/tmp/nm-dnsmasq-$PEER_PREFIX$IDX.pid" \ --no-hosts \ --keep-in-foreground \ --bind-interfaces \ @@ -45,8 +49,8 @@ do_setup() { --no-ping \ & - cat < "/tmp/nm-radvd-d_$IDX.conf" -interface d_$IDX + cat < "/tmp/nm-radvd-$PEER_PREFIX$IDX.conf" +interface $PEER_PREFIX$IDX { AdvSendAdvert on; prefix 192:168:$((120 + IDX))::/64 @@ -57,19 +61,21 @@ interface d_$IDX }; EOF radvd \ - --config "/tmp/nm-radvd-d_$IDX.conf" \ - --pidfile "/tmp/nm-radvd-d_$IDX.pid" \ + --config "/tmp/nm-radvd-$PEER_PREFIX$IDX.conf" \ + --pidfile "/tmp/nm-radvd-$PEER_PREFIX$IDX.pid" \ & } do_redo() { - do_cleanup "$1" - do_setup "$1" + do_cleanup "$@" + do_setup "$@" } ############################################################################### IDX=1 +NAME_PREFIX=net +PEER_PREFIX= CMD=redo for (( i=1 ; i<="$#" ; )) ; do c="${@:$i:1}" @@ -78,6 +84,16 @@ for (( i=1 ; i<="$#" ; )) ; do redo|setup|cleanup) CMD="$c" ;; + --prefix|-p) + NAME_PREFIX="${@:$i:1}" + test -n "$NAME_PREFIX" || die "missing argument to --prefix" + i=$((i+1)) + ;; + --peer-prefix) + PEER_PREFIX="${@:$i:1}" + test -n "$PEER_PREFIX" || die "missing argument to --peer-prefix" + i=$((i+1)) + ;; --idx|-i) test $i -le "$#" || die "missing argument to --idx" IDX="${@:$i:1}" @@ -89,4 +105,12 @@ for (( i=1 ; i<="$#" ; )) ; do esac done -do_$CMD "$IDX" +if [ -z "$PEER_PREFIX" ]; then + if [ "$NAME_PREFIX" = net ]; then + PEER_PREFIX=d_ + else + PEER_PREFIX="d_${NAME_PREFIX}_" + fi +fi + +do_$CMD "$IDX" "$NAME_PREFIX" "$PEER_PREFIX" diff --git a/contrib/scripts/nm-in-container.sh b/contrib/scripts/nm-in-container.sh index 83a6124993..cb12991e53 100755 --- a/contrib/scripts/nm-in-container.sh +++ b/contrib/scripts/nm-in-container.sh @@ -126,6 +126,12 @@ Clean() { nm-env-prepare.sh } +Cat-Timestamp() { + while IFS=$'\n' read line; do + printf "[%s]: %s\n" "$(date '+%s.%N')" "$line" + done +} + nm_run_gdb() { systemctl stop NetworkManager.service gdb --args "\${1:-/opt/test/sbin/NetworkManager}" --debug @@ -138,6 +144,7 @@ nm_run_normal() { . /usr/share/git-core/contrib/completion/git-prompt.sh PS1="\[\\033[01;36m\]\u@\h\[\\033[00m\]:\\t:\[\\033[01;34m\]\w\\\$(__git_ps1 \\" \[\\033[01;36m\](%s)\[\\033[00m\]\\")\[\\033[00m\]\$ " +export GIT_PS1_SHOWDIRTYSTATE=1 if test "\$SHOW_MOTD" != 0; then cat /etc/motd @@ -159,18 +166,22 @@ match-device=interface-name:d_*,interface-name:tap* managed=0 [device-managed-1] -match-device=interface-name:net* +match-device=interface-name:net*,interface-name:eth* managed=1 EOF cat <&1 | tee -a /tmp/nm-log.txt @@ -183,7 +194,13 @@ set history filename ~/.gdb_history EOF cat <&1 | tee /tmp/nm-log.txt +EOF + + cat < \\(.*\\) (0x[0-9A-Fa-f]*)$/\1/p' | xargs -n1 readlink -f) -y +RUN pip3 install --user \\ + behave_html_formatter + RUN systemctl enable NetworkManager COPY data-NM-log "/usr/bin/NM-log" @@ -263,6 +288,7 @@ COPY data-90-my.conf /etc/NetworkManager/conf.d/90-my.conf COPY data-bash_history /root/.bash_history COPY data-gdbinit /root/.gdbinit COPY data-gdb_history /root/.gdb_history +COPY data-behaverc /root/.behaverc # Generate a stable machine id. RUN echo "10001000100010001000100010001000" > /etc/machine-id