Vallo Kallaste wrote:
> On Thu, Dec 19, 2002 at 08:46:44PM -0800, Sam Leffler <[EMAIL PROTECTED]> wrote:
> > > #ifndef PFIL_HOOKS
> > > #error "You must specify PFIL_HOOKS when using ipfilter"
> > > #endif
> > >
> > > Unfortunately there's no way that I know to express this if ipfilter is
> > > loaded as a module.
> >
> > Duh, there'll probably be unresolved symbols if you try to load ipl.ko w/o
> > PFIL_HOOKS defined in the kernel.
> 
> Yes, and this "undefined symbols" message will make no sense from
> user perspective.


Then fix it.  The fix is trivial:

1)      Create accessor/mutator functions which are *not*
        protected by "#ifndef PFIL_HOOKS".

2)      Use the accessor/mutator functions from within the
        ipfilter code to register and deregister use of the
        hooks.

3)      In the case of the "#ifndef PFIL_HOOKS", cause the
        accessor/mutator functions to return errors.

Like so:

#ifdef PFIL_HOOKS
pfil_hook_t     *pfil_hook_func;
#endif

int
pfil_set_hook( pfil_hook_t *func)
{
#ifdef PFIL_HOOKS
        pfil_hook_func = func;
        return( 0);
#else   /* !PFIL_HOOKS */
        return( -1);
#endif  /* !PFIL_HOOKS */
}

...the (in this example) mutator function will always be defined,
and the error in a kernel without "PFIL_HOOKS" defined can be
trapped by the caller during the module registration phase, at
which point a console error can be printed.

-- Terry

To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message

Reply via email to