This might not be the fix we want in the long run, but it surely prevents frustration when making a typo in the interface name.
As reported by Sebastien Marie and claudio@. OK? diff --git sys/net/pf_ioctl.c sys/net/pf_ioctl.c index 43cccdb2efa..c563a439c45 100644 --- sys/net/pf_ioctl.c +++ sys/net/pf_ioctl.c @@ -582,11 +582,11 @@ pf_ifp2q(struct pf_queue_if *list, struct ifnet *ifp) int pf_create_queues(void) { struct pf_queuespec *q; struct ifnet *ifp; - struct pf_queue_if *list = NULL, *qif; + struct pf_queue_if *list = NULL, *qif; int error; /* * Find root queues and allocate traffic conditioner * private data for these interfaces @@ -1128,20 +1128,19 @@ pfioctl(dev_t dev, u_long cmd, caddr_t addr, int flags, struct proc *p) bcopy(&q->queue, qs, sizeof(*qs)); qs->qid = pf_qname2qid(qs->qname, 1); if (qs->parent[0] && (qs->parent_qid = pf_qname2qid(qs->parent, 0)) == 0) { pool_put(&pf_queue_pl, qs); - error = ESRCH; + error = EINVAL; break; } qs->kif = pfi_kif_get(qs->ifname); - if (qs->kif == NULL) { + if (qs->kif == NULL || qs->kif->pfik_ifp == NULL) { pool_put(&pf_queue_pl, qs); - error = ESRCH; + error = EINVAL; break; } - /* XXX resolve bw percentage specs */ pfi_kif_ref(qs->kif, PFI_KIF_REF_RULE); TAILQ_INSERT_TAIL(pf_queues_inactive, qs, entries); break;