ok, try this diff out then:

Index: services_dhcp.php
===================================================================
RCS file: /cvsroot/pfSense/usr/local/www/services_dhcp.php,v
retrieving revision 1.38.2.9
diff -u -r1.38.2.9 services_dhcp.php
--- services_dhcp.php   20 Feb 2006 21:02:12 -0000      1.38.2.9
+++ services_dhcp.php   25 Feb 2006 04:25:22 -0000
@@ -181,8 +181,7 @@
                write_config();

                /* static arp configuration */
-                if (isset($config['dhcpd'][$if]['staticarp']))
-                       interfaces_staticarp_configure($if);
+               interfaces_staticarp_configure($if);

                $retval = 0;
                config_lock();


Let me know if it works properly and I'll commit it.

--Bill

On 2/24/06, Wesley K. Joyce <[EMAIL PROTECTED]> wrote:
>
>
> Okay, I think I found it.  The problem is with services_dhcp.php -
>
>   if($_POST['staticarp'] == "yes")
>    $config['dhcpd'][$if]['staticarp'] = true;
>   else
>    unset($config['dhcpd'][$if]['staticarp']);
>   write_config();
>   /* static arp configuration */
>                 if
> (isset($config['dhcpd'][$if]['staticarp']))
>                     interfaces_staticarp_configure($if);
>
> The if statement in bold will always be false if staticarp is off (not
> checked), in otherwords unset via
> 'unset($config['dhcpd'][$if]['staticarp']);".  So this
> means that 'interfaces_staticarp_configure($if);' is never
> executed when you turn off static arp, so the function
> interfaces_staticarp_configure($if) is never called, so
> it's else statement is never executed.
>
> So I would think the fix to be applied is either this
> 1.
>   /* static arp configuration */
>                 /* if
> (isset($config['dhcpd'][$if]['staticarp'])) */
>    interfaces_staticarp_configure($if);
>
> or this
> 2.
>   /* static arp configuration */
>                 if
> (isset($config['dhcpd'][$if]['staticarp']))
>                       interfaces_staticarp_configure($if);
>                 else
>                       interfaces_staticarp_configure($if);
>
> I am hoping this will be corrected.  Thanks.
>
> Let me know if I am posting this bug / resolution in the wrong place.
>
>  ________________________________
>
> From: Wesley K. Joyce [mailto:[EMAIL PROTECTED]
> Sent: Fri 2/24/2006 11:53 PM
> To: support@pfsense.com
> Subject: [pfSense Support] BUG : DHCP - Static ARP
>
>
>
> When I turn on the static arp feature, it executes the code in red.  When I
> turn off the feature, it does not execute the code in blue.  This appears to
> be why turning this off is broken, so my question is why?  I don't know how
> to debug php, but the if statement looks logical.
>
> TESTING-SNAPSHOT-02-19-06
>
> /etc/inc/services.inc
>
> function interfaces_staticarp_configure($if) {
>  global $config, $g;
>  if(isset($config['system']['developerspew'])) {
>   $mt = microtime();
>   echo "interfaces_staticarp_configure($if) being called
> $mt\n";
>  }
>
>         $ifcfg = $config['interfaces'][$if];
>         /* Enable staticarp, if enabled */
>         if(isset($config['dhcpd'][$if]['staticarp'])) {
>                 mwexec("/sbin/ifconfig " . escapeshellarg($ifcfg['if']) . "
> staticarp " );
>                 mwexec("/usr/sbin/arp -ad > /dev/null 2>&1 ");
>                 if
> (is_array($config['dhcpd'][$if]['staticmap'])) {
>                         foreach
> ($config['dhcpd'][$if]['staticmap'] as $arpent) {
>                                 mwexec("/usr/sbin/arp -s " .
> escapeshellarg($arpent['ipaddr']) . " " .
> escapeshellarg($arpent['mac']));
>                         }
>
>                 }
>         } else {
>                 mwexec("/sbin/ifconfig " . escapeshellarg($ifcfg['if']) . "
> -staticarp " );
>                 mwexec("/usr/sbin/arp -ad > /dev/null 2>&1 ");
>         }
>         return 0;
> }

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to