diff options
-rw-r--r-- | etc/inc/services.inc | 21 | ||||
-rw-r--r-- | usr/local/pkg/olsrd.xml | 14 | ||||
-rwxr-xr-x | usr/local/www/services_dhcp.php | 21 |
3 files changed, 54 insertions, 2 deletions
diff --git a/etc/inc/services.inc b/etc/inc/services.inc index b4be112..f2ee8e1 100644 --- a/etc/inc/services.inc +++ b/etc/inc/services.inc @@ -39,6 +39,12 @@ function services_dhcpd_configure() { echo "services_dhcpd_configure($if) being called $mt\n"; } + /* if OLSRD is enabled, allow WAN to house DHCP. */ + if($config['installedpackages']['olsrd']) + foreach($config['installedpackages']['olsrd']['config'] as $olsrd) + if($olsrd['enable']) + $is_olsr_enabled = true; + /* configure DHCPD chroot */ $fd = fopen("/tmp/dhcpd.sh","w"); $status = `mount | grep "{$g['dhcpd_chroot_path']}/dev"`; @@ -176,6 +182,10 @@ EOPP; $subnet = gen_subnet($ifcfg['ipaddr'], $ifcfg['subnet']); $subnetmask = gen_subnet_mask($ifcfg['subnet']); + if($is_olsr_enabled == true) + if($dhcpifconf['netmask']) + $subnetmask = $dhcpifconf['netmask']; + $dnscfg = ""; if ($dhcpifconf['domain']) { @@ -889,6 +899,15 @@ function setup_wireless_olsr() { if($olsr_enable <> "on") return; $fd = fopen("{$g['varetc_path']}/olsr.conf", "w"); + + if($olsrd['enableannounce'] == "on") + $enableannounce = "0.0.0.0 0.0.0.0"; + else + $enableannounce = ""; + + if($olsrd['announcedynamicroute'] == "on") + $enableannounce .= "\n{$olsrd['announcedynamicroute']}"; + $olsr .= <<<EODA # # olsr.org OLSR daemon config file @@ -918,7 +937,7 @@ ClearScreen yes Hna4 { - 0.0.0.0 0.0.0.0 + {$enableannounce} } # Should olsrd keep on running even if there are diff --git a/usr/local/pkg/olsrd.xml b/usr/local/pkg/olsrd.xml index 14cfc74..b8957e8 100644 --- a/usr/local/pkg/olsrd.xml +++ b/usr/local/pkg/olsrd.xml @@ -43,9 +43,9 @@ <type>select</type> <size>1</size> <options> + <option><value>2</value><name>2</name></option> <option><value>0</value><name>0</name></option> <option><value>1</value><name>1</name></option> - <option><value>2</value><name>2</name></option> </options> </field> <field> @@ -88,6 +88,18 @@ <type>checkbox</type> </field> <field> + <fielddescr>Announce self as Dynamic Gateway</fielddescr> + <fieldname>enableannounce</fieldname> + <description>Enables the OLSR Dynamic Gateways Announcing feature</description> + <type>checkbox</type> + </field> + <field> + <fielddescr>Announce Dynamic local route</fielddescr> + <fieldname>announcedynamicroute</fieldname> + <description>Enter the IP/Netmask</description> + <type>input</type> + </field> + <field> <fielddescr>Ping</fielddescr> <fieldname>ping</fieldname> <description>Pings this host to ensure connectivity</description> diff --git a/usr/local/www/services_dhcp.php b/usr/local/www/services_dhcp.php index ddada48..c6cc43b 100755 --- a/usr/local/www/services_dhcp.php +++ b/usr/local/www/services_dhcp.php @@ -40,6 +40,7 @@ if($config['installedpackages']['olsrd']) { foreach($config['installedpackages']['olsrd']['config'] as $olsrd) { if($olsrd['enable']) { $iflist = array("lan" => "LAN", "wan" => "WAN"); + $is_olsr_enabled = true; break; } } @@ -70,6 +71,7 @@ $pconfig['enable'] = isset($config['dhcpd'][$if]['enable']); $pconfig['denyunknown'] = isset($config['dhcpd'][$if]['denyunknown']); $pconfig['staticarp'] = isset($config['dhcpd'][$if]['staticarp']); $pconfig['failover_peerip'] = $config['dhcpd'][$if]['failover_peerip']; +$pconfig['netmask'] = $config['dhcpd'][$if]['netmask']; $ifcfg = $config['interfaces'][$if]; @@ -151,6 +153,7 @@ if ($_POST) { $config['dhcpd'][$if]['range']['to'] = $_POST['range_to']; $config['dhcpd'][$if]['defaultleasetime'] = $_POST['deftime']; $config['dhcpd'][$if]['maxleasetime'] = $_POST['maxtime']; + $config['dhcpd'][$if]['netmask'] = $_POST['netmask']; $previous = $config['dhcpd'][$if]['failover_peerip']; if($previous <> $_POST['failover_peerip']) { mwexec("rm -rf /var/dhcpd/var/db/*"); @@ -303,6 +306,24 @@ function enable_change(enable_over) { <?=long2ip(ip2long($ifcfg['ipaddr']) | (~gen_subnet_mask_long($ifcfg['subnet']))); ?> </td> </tr> + <?php if($is_olsr_enabled): ?> + <tr> + <td width="22%" valign="top" class="vncellreq">Subnet Mask</td> + <td width="78%" class="vtable"> + <select name="netmask" class="formfld" id="netmask"> + <?php + for ($i = 32; $i > 0; $i--) { + if($i <> 31) { + echo "<option value=\"{$i}\" "; + if ($i == $pconfig['subnet']) echo "selected"; + echo ">" . $i . "</option>"; + } + } + ?> + </select> + </td> + </tr> + <?php endif; ?> <tr> <td width="22%" valign="top" class="vncellreq">Range</td> <td width="78%" class="vtable"> |