mirror of
https://github.com/pi-hole/dnsmasq.git
synced 2025-12-19 10:18:25 +00:00
Add contrib/mactable
This commit is contained in:
30
contrib/mactable/macscript
Executable file
30
contrib/mactable/macscript
Executable file
@@ -0,0 +1,30 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
STATUS_FILE="/tmp/dnsmasq-ip-mac.status"
|
||||||
|
|
||||||
|
# Script for dnsmasq lease-change hook.
|
||||||
|
# Maintains the above file with a IP address/MAC address pairs,
|
||||||
|
# one lease per line. Works with IPv4 and IPv6 leases, file is
|
||||||
|
# atomically updated, so no races for users of the data.
|
||||||
|
|
||||||
|
action="$1"
|
||||||
|
mac="$2" # IPv4
|
||||||
|
ip="$3"
|
||||||
|
|
||||||
|
if [ -n "$DNSMASQ_IAID" ]; then
|
||||||
|
if [ -z "$DNSMASQ_MAC" -a "$action" = "old" ]; then
|
||||||
|
# MAC not known by dnsmasq, probably due to restart.
|
||||||
|
exit 0;
|
||||||
|
fi
|
||||||
|
mac="$DNSMASQ_MAC" # IPv6
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$action" = "add" -o "$action" = "old" -o "$action" = "del" ]; then
|
||||||
|
if [ -f "$STATUS_FILE" ]; then
|
||||||
|
sed "/^${ip//./\.} / d" "$STATUS_FILE" > "$STATUS_FILE".new
|
||||||
|
fi
|
||||||
|
if [ "$action" = "add" -o "$action" = "old" ]; then
|
||||||
|
echo "$ip $mac" >> "$STATUS_FILE".new
|
||||||
|
fi
|
||||||
|
mv "$STATUS_FILE".new "$STATUS_FILE" # atomic update.
|
||||||
|
fi
|
||||||
Reference in New Issue
Block a user