1ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat#!/bin/sh 2ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat 3ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat# Copyright (c) 2006 Simon Kelley 4ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat# 5ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat# This program is free software; you can redistribute it and/or modify 6ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat# it under the terms of the GNU General Public License as published by 7ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat# the Free Software Foundation; version 2 dated June, 1991. 8ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat# 9ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat# This program is distributed in the hope that it will be useful, 10ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat# but WITHOUT ANY WARRANTY; without even the implied warranty of 11ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat# GNU General Public License for more details. 13ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat 14ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat 15ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat# if $1 is add del or old, this is a dnsmasq-called lease-change 16ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat# script, update the nvram database. if $1 is init, emit a 17ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat# dnsmasq-format lease file to stdout representing the current state of the 18ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat# database, this is called by dnsmasq at startup. 19ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat 20ffd68729961f7383f2e35494a03ccdef20f86c98San MehatNVRAM=/usr/sbin/nvram 21ffd68729961f7383f2e35494a03ccdef20f86c98San MehatPREFIX=dnsmasq_lease_ 22ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat 23ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat# Arguments. 24ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat# $1 is action (add, del, old) 25ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat# $2 is MAC 26ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat# $3 is address 27ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat# $4 is hostname (optional, may be unset) 28ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat 29ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat# env. 30ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat# DNSMASQ_LEASE_LENGTH or DNSMASQ_LEASE_EXPIRES (which depends on HAVE_BROKEN_RTC) 31ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat# DNSMASQ_CLIENT_ID (optional, may be unset) 32ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat 33ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat# File. 34ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat# length|expires MAC addr hostname|* CLID|* 35ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat 36ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat# Primary key is address. 37ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat 38ffd68729961f7383f2e35494a03ccdef20f86c98San Mehatif [ ${1} = init ] ; then 39ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat ${NVRAM} show | sed -n -e "/^${PREFIX}.*/ s/^.*=//p" 40ffd68729961f7383f2e35494a03ccdef20f86c98San Mehatelse 41ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat if [ ${1} = del ] ; then 42ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat ${NVRAM} unset ${PREFIX}${3} 43ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat fi 44ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat 45ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat if [ ${1} = old ] || [ ${1} = add ] ; then 46ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat ${NVRAM} set ${PREFIX}${3}="${DNSMASQ_LEASE_LENGTH:-}${DNSMASQ_LEASE_EXPIRES:-} ${2} ${3} ${4:-*} ${DNSMASQ_CLIENT_ID:-*}" 47ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat fi 48ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat ${NVRAM} commit 49ffd68729961f7383f2e35494a03ccdef20f86c98San Mehatfi 50ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat 51ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat 52ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat 53ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat 54ffd68729961f7383f2e35494a03ccdef20f86c98San Mehat 55