Annotation of embedaddon/dnsmasq/contrib/mactable/macscript, revision 1.1.1.2

1.1       misho       1: #!/bin/bash
                      2: 
                      3: STATUS_FILE="/tmp/dnsmasq-ip-mac.status"
                      4: 
                      5: # Script for dnsmasq lease-change hook.
1.1.1.2 ! misho       6: # Maintains the above file with an IP address/MAC address pairs,
1.1       misho       7: # one lease per line. Works with IPv4 and IPv6 leases, file is
                      8: # atomically updated, so no races for users of the data.
                      9: 
                     10: action="$1"
                     11: mac="$2"   # IPv4
                     12: ip="$3"
                     13: 
                     14: # ensure it always exists.
                     15: 
                     16: if [ ! -f "$STATUS_FILE" ]; then
                     17:   touch "$STATUS_FILE"
                     18: fi
                     19: 
                     20: if [  -n "$DNSMASQ_IAID" ]; then
                     21:     mac="$DNSMASQ_MAC"   # IPv6
                     22: fi
                     23: 
                     24: # worry about an add or old action when the MAC address is not known:
                     25: # leave any old one in place in that case.
                     26: 
                     27: if [ "$action" = "add" -o "$action" = "old" -o "$action" = "del" ]; then
                     28:   if [ -n "$mac" -o "$action" = "del" ]; then
                     29:     sed "/^${ip//./\.} / d" "$STATUS_FILE" > "$STATUS_FILE".new
                     30:   
                     31:     if [ "$action" = "add" -o "$action" = "old" ]; then
                     32:        echo "$ip $mac" >> "$STATUS_FILE".new
                     33:     fi
                     34:     mv  "$STATUS_FILE".new "$STATUS_FILE" # atomic update.
                     35:   fi
                     36: fi

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>