blob: c98d2766a1ec40f7744b284dcbfad199a7579638 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
#!/bin/bash
set -e
die() {
printf '%s\n' "$*"
exit 1
}
cleanup() {
local IDX="$1"
pkill -F "/tmp/nm-dnsmasq-d_$IDX.pid" dnsmasq &>/dev/null || :
: > "/tmp/nm-dnsmasq-d_$IDX.pid"
ip link del "d_$IDX" &>/dev/null || :
}
setup() {
local IDX="$1"
cleanup "$IDX"
ip link add "net$IDX" type veth peer "d_$IDX"
ip link set "d_$IDX" up
ip addr add "192.168.$((120 + $IDX)).1/23" dev "d_$IDX"
dnsmasq \
--conf-file=/dev/null \
--pid-file="/tmp/nm-dnsmasq-d_$IDX.pid" \
--no-hosts \
--keep-in-foreground \
--bind-interfaces \
--except-interface=lo \
--clear-on-reload \
--listen-address="192.168.$((120 + $IDX)).1" \
--dhcp-range="192.168.$((120 + $IDX)).100,192.168.$((120 + $IDX)).150" \
--no-ping \
&
}
IDX=1
CMD=
for (( i=1 ; i<="$#" ; )) ; do
c="${@:$i:1}"
i=$((i+1))
case "$c" in
setup|cleanup)
CMD="$c"
;;
--idx|-i)
test $i -le "$#" || die "missing argument to --idx"
IDX="${@:$i:1}"
i=$((i+1))
;;
*)
die "invalid argument"
;;
esac
done
test "$CMD" != "" || die "missing command (setup|cleanup)"
$CMD "$IDX"
|