-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy pathdnsmasq
More file actions
executable file
·65 lines (56 loc) · 1.65 KB
/
dnsmasq
File metadata and controls
executable file
·65 lines (56 loc) · 1.65 KB
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
#!/usr/bin/env bash
dnsmasq_conf=/etc/dnsmasq.conf
FILE_DNSMASQ_CONFIG=${FILE_DNSMASQ_CONFIG:-/etc/dnsmasq.d/pixieboot.conf}
CMD_RELOAD_DNSMASQ=${CMD_RELOAD_DNSMASQ:-"service dnsmasq restart"}
function die(){ warn $*; exit 1; }
function warn(){ echo $* >&2; }
checksum(){
sha1sum $* 2>/dev/null
}
checksum_old=$(checksum $FILE_DNSMASQ_CONFIG)
checksum_old_dnsmasq=$(checksum $dnsmasq_conf)
# enable config-dir option in dnsmasq.d
if ! grep -q "^\\s*conf-dir=$(dirname $FILE_DNSMASQ_CONFIG)" $dnsmasq_conf; then
echo "conf-dir=$(dirname $FILE_DNSMASQ_CONFIG)" >> $dnsmasq_conf
fi
mkdir -p $(dirname $FILE_DNSMASQ_CONFIG)
cat > $FILE_DNSMASQ_CONFIG <<-END
# PXE Boot for dnsmasq
interface=*
dhcp-range=$NFSHOST,proxy
log-dhcp
enable-tftp
tftp-root=$NFSPREFIX
$(
if [ "$IPXE_ENABLED" != 0 ]; then
echo "# tag all requests with 175 (iPXE) option"
echo "dhcp-match=set:ipxe,175"
echo "dhcp-option=175,8:1:1"
else
echo "dhcp-boot=$NFSPREFIX/pxelinux.0"
fi
)
dhcp-option=17,$NFSPREFIX/nfs
dhcp-option=vendor:PXEClient,6,2b
dhcp-no-override
$(
if [ "$IPXE_ENABLED" != 0 ]; then
echo "pxe-service=tag:!ipxe,X86PC, "Network Boot", /undionly.kpxe"
echo "pxe-service=tag:ipxe,X86PC, "Network Boot", /bootstrap.ipxe"
else
echo "pxe-service=X86PC, "Network Boot Menu", /pxelinux"
fi
)
# neccessary to not break DNS on the host
port=53
no-resolv
server=8.8.8.8
server=8.8.4.4
END
checksum_new=$(checksum $FILE_DNSMASQ_CONFIG)
checksum_new_dnsmasq=$(checksum $dnsmasq_conf)
# Reload dnsmasq if neccessary
if [ "$checksum_old" != "$checksum_new" -o "$checksum_old_dnsmasq" != "$checksum_new_dnsmasq" ]; then
echo "dnsmasq's configuration changed. Reloading."
$CMD_RELOAD_DNSMASQ
fi