From 092462dc10d1a429d14fa9c783307e4be8b84910 Mon Sep 17 00:00:00 2001 From: smos Date: Fri, 6 Apr 2012 20:08:09 +0200 Subject: Add a dhcpleases monitor to the DHCPv6 server which will trigger automatic creation of routes into the routing table so that prefix delegation will just work. Redmine ticket #2347 --- usr/local/sbin/prefixes.php | 85 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 usr/local/sbin/prefixes.php (limited to 'usr/local/sbin/prefixes.php') diff --git a/usr/local/sbin/prefixes.php b/usr/local/sbin/prefixes.php new file mode 100644 index 0000000..4a1f7e0 --- /dev/null +++ b/usr/local/sbin/prefixes.php @@ -0,0 +1,85 @@ + "") { + $routes[$entry['ia-na']] = $entry['ia-pd']; + } +} + +// echo "add routes\n"; +foreach ($routes as $address => $prefix) { + echo "/sbin/route change -inet6 {$prefix} {$address}\n"; +} + +/* get clog from dhcpd */ +$dhcpdlogfile = "/var/log/dhcpd.log"; +$clog = array(); +exec("clog $dhcpdlogfile", $clog, $ret); + +if($ret > 0) + $clog = array(); + +$expires = array(); +foreach($clog as $line) { + if(preg_match("/releases[ ]+prefix[ ]+([0-9a-f:]+\/[0-9]+)/i", $line, $expire)) { + if(in_array($expire[1], $routes)) + continue; + $expires[$expire[1]] = $expire[1]; + } + array_shift($clog); +} + +// echo "remove routes\n"; +foreach ($expires as $prefix) { + echo "/sbin/route delete -inet6 {$prefix['prefix']}\n"; +} + +?> -- cgit v1.1