#!/bin/sh

ps | grep tail | grep /var/log/dhcpd.log | grep -v grep | awk '{print $1}' | xargs kill >/dev/null 2>&1
cp /var/log/dhcpd.log /var/log/dhcpd.log.0
echo >/var/log/dhcpd.log

# e.g.:
# DHCPDISCOVER from 00:1d:72:8c:75:6e via hostlan.10: network 192.168.128.0/30: no free leases

dhcpd $* >> /var/log/dhcpd.log 2>&1 &
tail -f /var/log/dhcpd.log \
    | while read line; do
        if echo $line | egrep -q 'no free leases' ; then
          mac=`echo $line | tr -d \"\' | sed -e 's/.*from \(.*\) via \(.*\): network \(.*\): no free leases/\1/'`
          interface=`echo $line | tr -d \"\' | sed -e 's/.*from \(.*\) via \(.*\): network \(.*\): no free leases/\2/'`
          network=`echo $line | tr -d \"\' | sed -e 's/.*from \(.*\) via \(.*\): network \(.*\): no free leases/\3/'`
          if [ $interface != 'hostlan' ]; then
            vlan_info=`echo $interface | sed -e "s/hostlan\.\([0-9]*\)/ vlan='\1'/"`
          else
            vlan_info=''
          fi
          echo dhcp_no_leases \"network=\'$network\'${vlan_info}\" \"DHCP: no free DHCP leases to give $mac on network $network\" $mac >/click/event_log/add_event
        fi
      done

