summaryrefslogtreecommitdiffstats
path: root/usr/local/sbin/prefixes.php
diff options
context:
space:
mode:
Diffstat (limited to 'usr/local/sbin/prefixes.php')
-rw-r--r--usr/local/sbin/prefixes.php93
1 files changed, 0 insertions, 93 deletions
diff --git a/usr/local/sbin/prefixes.php b/usr/local/sbin/prefixes.php
deleted file mode 100644
index 118bd9e..0000000
--- a/usr/local/sbin/prefixes.php
+++ /dev/null
@@ -1,93 +0,0 @@
-<?php
-
-$leases_file = "/var/dhcpd/var/db/dhcpd6.leases";
-if (!file_exists($leases_file)) {
- exit(1);
-}
-
-$fd = fopen($leases_file, 'r');
-
-$duid_arr = array();
-while (( $line = fgets($fd, 4096)) !== false) {
- // echo "$line";
- if (preg_match("/^(ia-[np][ad])[ ]+\"(.*?)\"/i", $line, $duidmatch)) {
- $type = $duidmatch[1];
- $duid = $duidmatch[2];
- continue;
- }
-
- /* is it active? otherwise just discard */
- if (preg_match("/binding state active/i", $line, $activematch)) {
- $active = true;
- continue;
- }
-
- if (preg_match("/iaaddr[ ]+([0-9a-f:]+)[ ]+/i", $line, $addressmatch)) {
- $ia_na = $addressmatch[1];
- continue;
- }
-
- if (preg_match("/iaprefix[ ]+([0-9a-f:\/]+)[ ]+/i", $line, $prefixmatch)) {
- $ia_pd = $prefixmatch[1];
- continue;
- }
-
- /* closing bracket */
- if (preg_match("/^}/i", $line)) {
- switch ($type) {
- case "ia-na":
- $duid_arr[$duid][$type] = $ia_na;
- break;
- case "ia-pd":
- $duid_arr[$duid][$type] = $ia_pd;
- break;
- }
- unset($type);
- unset($duid);
- unset($active);
- unset($ia_na);
- unset($ia_pd);
- continue;
- }
-}
-fclose($fd);
-
-$routes = array();
-foreach ($duid_arr as $entry) {
- if (!empty($entry['ia-pd'])) {
- $routes[$entry['ia-na']] = $entry['ia-pd'];
- }
-}
-
-// echo "add routes\n";
-if (count($routes) > 0) {
- foreach ($routes as $address => $prefix) {
- echo "/sbin/route change -inet6 {$prefix} {$address}\n";
- }
-}
-
-/* get clog from dhcpd */
-$dhcpdlogfile = "/var/log/dhcpd.log";
-$expires = array();
-if (file_exists($dhcpdlogfile)) {
- $fd = popen("clog $dhcpdlogfile", 'r');
- while (($line = fgets($fd)) !== false) {
- //echo $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];
- }
- }
- pclose($fd);
-}
-
-// echo "remove routes\n";
-if (count($expires) > 0) {
- foreach ($expires as $prefix) {
- echo "/sbin/route delete -inet6 {$prefix['prefix']}\n";
- }
-}
-
-?>
OpenPOWER on IntegriCloud