On Thu, May 25, 2017 at 14:54 +0200, Sebastien Marie wrote:
> On Thu, May 25, 2017 at 01:14:54PM +0200, Mike Belopuhov wrote:
> > > 
> > > Sorry I didn't test it: I had understood that due the problem was due to
> > > my (unsupported) use of fq on pppoe0, so I just skipped it (the
> > > backtrace of the panic passed by sppp_ functions).
> > >
> > 
> > We still need to solve the issue and commit the fix so please run with
> > it and report if something goes bad.  I've been running with this diff
> > for about a week and haven't had any issues.
> > 
> 
> I ran with it now.
>

Thanks.

> > > 
> > > # pfctl -sq
> > > pfctl: DIOCGETQSTATS: Bad file descriptor
> > > 
> > > (and same error with systat queue).
> > > 
> > 
> > Yes, this is a side effect of using pf kifs in the queueing code.
> > This issue has been there since the beginning.  Claudio has recently
> > pointed out that we should probably resolve it.  The problem here is
> > that you have specified a nonexistent interface name for your queue.
> > For instance you have loaded a pf ruleset with "queue foo on pppoe0"
> > before creating pppoe0 itself.  This will result in a successful
> > application of the ruleset but queues won't be created.
> > 
> > So please make sure that your "ifconfig" output corresponds to the
> > pf.conf and you *don't* get a 'DIOCGETQSTATS: Bad file descriptor'.
> > This is an indictaion that your queues are not created or some of
> > them are not created.
> 
> I had a typo in my interface name... once corrected it works better :)
> sorry for the noise.
> 
> > Claudio has also suggested aborting when a queue is to be created
> > on a non-exitent interface
> 
> the diff works as expected: I couldn't create anymore a queue for a
> non-existing interface.
> 
> note it is still possible to make the system enter in inconsistent state
> (and getting DIOCGETQSTATS error) by creating the queue, and next
> removing the interface (ifconfig pppoe0 destroy).
>

Good point, but unless someone steps in and adds proper support for
this we're unable to protect users from running into this situation.
FYI, sys/net/pf_if.c is the code handling dynamic interfaces for pf.

> Thanks.
> -- 
> Sebastien Marie

Reply via email to