Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 28 Jan 2002 21:45:43 +0100
From:      Erik Trulsson <ertr1013@student.uu.se>
To:        Nate Williams <nate@yogotech.com>
Cc:        C J Michaels <cjm2@earthling.net>, charon@seektruth.org, dsyphers@uchicago.edu, imp@village.org, stable@FreeBSD.ORG
Subject:   Re: Firewall config non-intuitiveness
Message-ID:  <20020128204542.GA87400@student.uu.se>
In-Reply-To: <15445.44102.288461.155113@caddis.yogotech.com>
References:  <200201271757.g0RHvTF12944@midway.uchicago.edu> <1617.216.153.202.59.1012240332.squirrel@www1.27in.tv> <20020128192930.GA86720@student.uu.se> <15445.44102.288461.155113@caddis.yogotech.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, Jan 28, 2002 at 12:53:42PM -0700, Nate Williams wrote:
> > Note that "do not enable firewall" (which is implied by firewall_enable="NO") 
> > is *not* equivalent to "disable firewall".
> 
> Maybe we're having an English language question.

Probably.  Natural languages are notoriously ambiguous and easy to
misinterpret.

> 
> If something isn't enabled, doesn't that imply that it's disabled?  Last

Correct so far.

> I checked, enabled/disabled were binary operations.

No, they are binary states. An operation is someting you do.
(Enabled/disabled are states.  Enable/disable are operations.)

> If I enable the clutch in my car, my car moves (assuming it's in gear).
> If I disable it, the power is no longer going to the drive wheels.
> 
> It's either enabled or disabled.  There is no 'in-between' state.
> (Well, unless you're riding the clutch, but that's not considered a
> valid state, since the behavior is undefined, as well as bad for your
> clutch. :)

Never heard about fuzzy logic? :-)


There are four possible functions (or operations) taking a binary value
to another binary value.  (I.e.  a function f(x) from {0,1} -> {0,1})
You can:
1) Map all input values to 1 
2) Map all input values to 0
3) Return the input unchanged
4) Return logical inverse of the input.

Now let us represent 'enabled' by 1 and 'disabled' by 0

Then I would say that "to enable something" corresponds to function 1), i.e.
to move it to the enabled state regardless of what state it was in
previously. Similarily "to disable something" corresponds to function 2)

Now what should "do not enable it" correspond to?
It obviously can't be 1),  and 4) seems quite counter-intuitive and
(when talking about firewalls) not very useful. Remains 2) and 3) where
3) is the current behaviour for firewalls and 2) the proposed one.

To me "do not enable" means that we should not change the state to
'enabled'.  But if we already are in the enabled state then what?
Since letting it remain in the current state does not constitute
*changing* the state to 'enabled' this is a perfectly good interpretation
of "do not enable".

Now, changing the state to 'disabled' also fits the decription "do not
enable", but IMO changing the state unless explicitly asked to do so is
a bad idea.

That is why I (and others before) have said that a tristate variable
(corresponding to functions 1), 2) and 3) above) is probably the best
solution.  (With 3) being the default.)  (Function 4) is fairly useless
for this so we can skip it.)

Another possiblity is changing the name.
For example using "firewall_enabled" instead of "firewall_enable"
To me that means "should the firewall state be in the 'enabled' state"
rather than "should we move the firewall state to 'enabled'"
(I.e. describing the state rather than the operation.)




In either case, changing the meaning of 'firewall_enable="NO"' should
probably not be done in -STABLE to avoid messing things up for people
who depend on the current behaviour.  (Since changing the behaviour as
proposed would, for some configurations, mean a lowered security this
is extra important for this case.)


-- 
<Insert your favourite quote here.>
Erik Trulsson
ertr1013@student.uu.se

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-stable" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020128204542.GA87400>