> 
> In addition to Zhijun's email, I hope the description above
> has answered this?
> 
> Darren
> 

Let me replay Zhijun's summary before replying to this:

> "ipf" is responsible for checking whether pfil is plumbed on NICs, and 
> restart pfild.
> It is the basic service which all other services depend on.
> "ipfconf" is responsible for flushing the filter rules and loading rules 
> from ipf.conf
> "ipfnat" is responsible for flushing NAT rules and loading rules from 
> ipnat.conf
> "ippool" is responsible for flushing ippool and loading rules from 
> ippool.conf
> "ipmon" is responsible for managing ipmon daemon
> and "ipfilter", is to be made a milestone

I think it's important to understand that the purpose of having separate
service instances is really to achieve two objectives:

- To create appropriate failure boundaries in the system (i.e. if a s/w
  or h/w error occurs in a process, what is the boundary for restart or
  what is the boundary containing the thing which is broken).

- To give administrators and system integrators discrete control over
  an object which more closely resembles their semantic intent (e.g.
  "disable NFS server functionality" as opposed to "I know that NFS
  server functionality current includes two daemons statd and lockd").

Service FMRI are not the 1:1 with processes, nor are they the same as discrete
functional subcomponents of a service.  In other words, if in order to start
service S1 I need to complete steps A, B, and C, where B depends on A and
A depends on B, that doesn't mean that A B and C should be distinct FMRIs.
In particular because doing so may contradict one or both principles above.

I'm not an ipfilter expert, but it appears to me that some of what you
propose above is exporting a bunch of bootstrapping steps as separate
services.  For example, what does it mean for ipfconf and ipfnat to fail
independently of one another?  Isn't that just part of starting this thing?
Are these things which need to be discretely disabled by the administrator
as actual services or failure boundaries?  i.e. what does it mean for someone
to individually disable each of these things?  Remember that you can also
offer properties or the presence/absence of configuration files to determine
the behavior of something (e.g. if I have a NAT rule set then load it).

Again, I'm not the expert on your thing, but if you want more input think
about what you're proposing from this perspective and write it down (you'll
need this for ARC anyway) and send it out.  At first glance, it looks to me
like you're exporting way too much of your internal machinery as opposed to
the administrative concepts of "I have not asked for IP filtering" or
"I want IP filtering with the following configuration options" or 
"IP filtering failed to be be configured and now needs to be fixed".

-Mike

-- 
Mike Shapiro, Solaris Kernel Development. blogs.sun.com/mws/

Reply via email to