mirror of
https://github.com/GNS3/gns3-server
synced 2025-01-12 09:00:57 +00:00
Merge branch 'docker-init' of https://github.com/ehlers/gns3-server into ehlers-docker-init
This commit is contained in:
commit
268c61ce80
BIN
gns3server/modules/docker/resources/bin/busybox
Executable file
BIN
gns3server/modules/docker/resources/bin/busybox
Executable file
Binary file not shown.
3
gns3server/modules/docker/resources/bin/udhcpc
Executable file
3
gns3server/modules/docker/resources/bin/udhcpc
Executable file
@ -0,0 +1,3 @@
|
|||||||
|
#!/tmp/gns3/bin/sh
|
||||||
|
|
||||||
|
exec busybox udhcpc -s /gns3/etc/udhcpc/default.script "$@"
|
3
gns3server/modules/docker/resources/bin/udhcpc6
Executable file
3
gns3server/modules/docker/resources/bin/udhcpc6
Executable file
@ -0,0 +1,3 @@
|
|||||||
|
#!/tmp/gns3/bin/sh
|
||||||
|
|
||||||
|
exec busybox udhcpc6 -s /gns3/etc/udhcpc/default.script "$@"
|
138
gns3server/modules/docker/resources/etc/udhcpc/default.script
Executable file
138
gns3server/modules/docker/resources/etc/udhcpc/default.script
Executable file
@ -0,0 +1,138 @@
|
|||||||
|
#!/tmp/gns3/bin/sh
|
||||||
|
|
||||||
|
# script for udhcpc
|
||||||
|
# Copyright (c) 2008 Natanael Copa <natanael.copa@gmail.com>
|
||||||
|
|
||||||
|
UDHCPC="/gns3/etc/udhcpc"
|
||||||
|
UDHCPC_CONF="$UDHCPC/udhcpc.conf"
|
||||||
|
|
||||||
|
RESOLV_CONF="/etc/resolv.conf"
|
||||||
|
[ -f $UDHCPC_CONF ] && . $UDHCPC_CONF
|
||||||
|
|
||||||
|
export broadcast
|
||||||
|
export dns
|
||||||
|
export domain
|
||||||
|
export interface
|
||||||
|
export ip
|
||||||
|
export mask
|
||||||
|
export metric
|
||||||
|
export router
|
||||||
|
export subnet
|
||||||
|
|
||||||
|
#export PATH=/usr/bin:/bin:/usr/sbin:/sbin
|
||||||
|
|
||||||
|
run_scripts() {
|
||||||
|
local dir=$1
|
||||||
|
if [ -d $dir ]; then
|
||||||
|
for i in $dir/*; do
|
||||||
|
[ -f $i ] && $i
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
deconfig() {
|
||||||
|
ip addr flush dev $interface
|
||||||
|
}
|
||||||
|
|
||||||
|
is_wifi() {
|
||||||
|
test -e /sys/class/net/$interface/phy80211
|
||||||
|
}
|
||||||
|
|
||||||
|
if_index() {
|
||||||
|
if [ -e /sys/class/net/$interface/ifindex ]; then
|
||||||
|
cat /sys/class/net/$interface/ifindex
|
||||||
|
else
|
||||||
|
ip link show dev $interface | head -n1 | cut -d: -f1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
calc_metric() {
|
||||||
|
local base=
|
||||||
|
if is_wifi; then
|
||||||
|
base=300
|
||||||
|
else
|
||||||
|
base=200
|
||||||
|
fi
|
||||||
|
echo $(( $base + $(if_index) ))
|
||||||
|
}
|
||||||
|
|
||||||
|
routes() {
|
||||||
|
[ -z "$router" ] && return
|
||||||
|
local gw= num=
|
||||||
|
while ip route del default via dev $interface 2>/dev/null; do
|
||||||
|
:
|
||||||
|
done
|
||||||
|
num=0
|
||||||
|
for gw in $router; do
|
||||||
|
ip route add 0.0.0.0/0 via $gw dev $interface \
|
||||||
|
metric $(( $num + ${IF_METRIC:-$(calc_metric)} ))
|
||||||
|
num=$(( $num + 1 ))
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
resolvconf() {
|
||||||
|
local i
|
||||||
|
[ -n "$IF_PEER_DNS" ] && [ "$IF_PEER_DNS" != "yes" ] && return
|
||||||
|
if [ "$RESOLV_CONF" = "no" ] || [ "$RESOLV_CONF" = "NO" ] \
|
||||||
|
|| [ -z "$RESOLV_CONF" ]; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
echo -n > "$RESOLV_CONF"
|
||||||
|
[ -n "$domain" ] && echo "search $domain" >> "$RESOLV_CONF"
|
||||||
|
for i in $dns; do
|
||||||
|
echo "nameserver $i" >> "$RESOLV_CONF"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
bound() {
|
||||||
|
ip addr add $ip/$mask ${broadcast:+broadcast $broadcast} dev $interface
|
||||||
|
ip link set dev $interface up
|
||||||
|
routes
|
||||||
|
resolvconf
|
||||||
|
}
|
||||||
|
|
||||||
|
renew() {
|
||||||
|
if ! ip addr show dev $interface | grep $ip/$mask; then
|
||||||
|
ip addr flush dev $interface
|
||||||
|
ip addr add $ip/$mask ${broadcast:+broadcast $broadcast} dev $interface
|
||||||
|
fi
|
||||||
|
|
||||||
|
local i
|
||||||
|
for i in $router; do
|
||||||
|
if ! ip route show | grep ^default | grep $i; then
|
||||||
|
routes
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if ! grep "^search $domain"; then
|
||||||
|
resolvconf
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
for i in $dns; do
|
||||||
|
if ! grep "^nameserver $i"; then
|
||||||
|
resolvconf
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
deconfig|renew|bound)
|
||||||
|
run_scripts $UDHCPC/pre-$1
|
||||||
|
$1
|
||||||
|
run_scripts $UDHCPC/post-$1
|
||||||
|
;;
|
||||||
|
leasefail)
|
||||||
|
echo "udhcpc failed to get a DHCP lease" >&2
|
||||||
|
;;
|
||||||
|
nak)
|
||||||
|
echo "udhcpc received DHCP NAK" >&2
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Error: this script should be called from udhcpc" >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
exit 0
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
#!/bin/sh
|
#!/gns3/bin/busybox sh
|
||||||
#
|
#
|
||||||
# Copyright (C) 2016 GNS3 Technologies Inc.
|
# Copyright (C) 2016 GNS3 Technologies Inc.
|
||||||
#
|
#
|
||||||
@ -19,6 +19,16 @@
|
|||||||
# This script is injected into the container and launch before
|
# This script is injected into the container and launch before
|
||||||
# the start command of the container
|
# the start command of the container
|
||||||
#
|
#
|
||||||
|
OLD_PATH="$PATH"
|
||||||
|
PATH=/gns3/bin:/tmp/gns3/bin
|
||||||
|
|
||||||
|
# bootstrap busybox commands
|
||||||
|
if [ ! -d /tmp/gns3/bin ]; then
|
||||||
|
busybox mkdir -p /tmp/gns3/bin
|
||||||
|
/gns3/bin/busybox --install -s /tmp/gns3/bin
|
||||||
|
# remove commands already available in /gns3/bin
|
||||||
|
(cd /tmp/gns3/bin; rm -f `cd /gns3/bin; echo *`)
|
||||||
|
fi
|
||||||
|
|
||||||
# Wait 2 seconds to settle the network interfaces
|
# Wait 2 seconds to settle the network interfaces
|
||||||
sleep 2
|
sleep 2
|
||||||
@ -42,5 +52,13 @@ sed -n 's/^ *\(eth[0-9]*\):.*/\1/p' < /proc/net/dev | while read dev; do
|
|||||||
ip link set dev $dev up
|
ip link set dev $dev up
|
||||||
done
|
done
|
||||||
|
|
||||||
|
if [ -n "$INTERFACES" ]; then
|
||||||
|
mkdir -p /etc/network/if-up.d /etc/network/if-pre-up.d
|
||||||
|
mkdir -p /etc/network/if-down.d /etc/network/if-post-down.d
|
||||||
|
echo -e "$INTERFACES" > /etc/network/interfaces
|
||||||
|
ifup -a -f
|
||||||
|
fi
|
||||||
|
|
||||||
# continue normal docker startup
|
# continue normal docker startup
|
||||||
|
PATH="$OLD_PATH"
|
||||||
exec "$@"
|
exec "$@"
|
||||||
|
Loading…
Reference in New Issue
Block a user