diff options
author | Ermal Luçi <eri@pfsense.org> | 2014-02-19 10:23:28 +0100 |
---|---|---|
committer | Ermal Luçi <eri@pfsense.org> | 2014-02-19 10:23:28 +0100 |
commit | a94907305151b382a65096d42cc6be0c68b16f75 (patch) | |
tree | 3123fcbec47fbfbcecab498134e4e6286b6d4206 /config | |
parent | 264f50db69f448739f7cbce8a15dd1a9af718837 (diff) | |
parent | a519779703195b8f16b86295ca047b01c8c8eebb (diff) | |
download | pfsense-packages-a94907305151b382a65096d42cc6be0c68b16f75.tar.gz pfsense-packages-a94907305151b382a65096d42cc6be0c68b16f75.tar.bz2 pfsense-packages-a94907305151b382a65096d42cc6be0c68b16f75.zip |
Merge pull request #584 from mbfgit/staticmap-reverse
Update reverse zone for dhcp static map
Diffstat (limited to 'config')
-rw-r--r-- | config/bind/bind.inc | 27 |
1 files changed, 24 insertions, 3 deletions
diff --git a/config/bind/bind.inc b/config/bind/bind.inc index ff3728fb..40d626db 100644 --- a/config/bind/bind.inc +++ b/config/bind/bind.inc @@ -438,12 +438,33 @@ EOD; $zone_conf .= "$hostname \t IN $hosttype $hostvalue \t$hostdst\n"; } - if (($zone[regdhcpstatic] == 'on') && is_array($config['dhcpd'])) { - foreach ($config['dhcpd'] as $dhcpif => $dhcpifconf) + if (($zone[regdhcpstatic] == 'on') && is_array($config['dhcpd'])) { + foreach ($config['dhcpd'] as $dhcpif => $dhcpifconf) if(is_array($dhcpifconf['staticmap']) && isset($dhcpifconf['enable'])) foreach ($dhcpifconf['staticmap'] as $host) if ($host['ipaddr'] && $host['hostname']) { - $zone_conf .= "{$host['hostname']}\tIN A\t{$host['ipaddr']}\n"; + if($zonereverso == "on") { + $hostdomain = $dhcpifconf['domain']; + if(strlen($hostdomain) == 0) { + $hostdomain = $config['system']['domain']; + } + if(strlen($hostdomain) != 0) { + $hostdomain .= '.'; + } + $zoneparts = array_reverse(explode('.',$zonename)); + $addressparts = explode('.',$host['ipaddr']); + $addressstart = 0; + while($addressstart < count($zoneparts) && $addressstart < count($addressparts) && $zoneparts[$addressstart] == $addressparts[$addressstart]) { + $addressstart++; + } + $shortaddress=''; + for($addresspointer = count($addressparts)-1; $addresspointer >= $addressstart; $addresspointer--) { + $shortaddress .= (strlen($shortaddress) > 0 ? '.' : '') . $addressparts[$addresspointer]; + } + $zone_conf .= "{$shortaddress}\tIN PTR\t{$host['hostname']}.{$hostdomain}\n"; + } else { + $zone_conf .= "{$host['hostname']}\tIN A\t{$host['ipaddr']}\n"; + } } } if ($zone['customzonerecords']!=""){ |