#!/bin/bash
STATUS_FILE="/tmp/dnsmasq-ip-mac.status"
# Script for dnsmasq lease-change hook.
# Maintains the above file with an 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"
# ensure it always exists.
if [ ! -f "$STATUS_FILE" ]; then
  touch "$STATUS_FILE"
fi
if [  -n "$DNSMASQ_IAID" ]; then
    mac="$DNSMASQ_MAC"   # IPv6
fi
# worry about an add or old action when the MAC address is not known:
# leave any old one in place in that case.
if [ "$action" = "add" -o "$action" = "old" -o "$action" = "del" ]; then
  if [ -n "$mac" -o "$action" = "del" ]; then
    sed "/^${ip//./\.} / d" "$STATUS_FILE" > "$STATUS_FILE".new
  
    if [ "$action" = "add" -o "$action" = "old" ]; then
       echo "$ip $mac" >> "$STATUS_FILE".new
    fi
    mv  "$STATUS_FILE".new "$STATUS_FILE" # atomic update.
  fi
fi
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>