int priq_add_queue(struct priq_if *pif, int priority, u_int32_t qlimit, int flags, u_int32_t qid, struct priq_class **clp) { struct priq_class *cl; IFCQ_LOCK_ASSERT_HELD(pif->pif_ifq); /* check parameters */ if (priority >= PRIQ_MAXPRI) return (EINVAL); if (pif->pif_classes[priority] != NULL) return (EBUSY); if (priq_clh_to_clp(pif, qid) != NULL) return (EBUSY); cl = priq_class_create(pif, priority, qlimit, flags, qid); if (cl == NULL) return (ENOMEM); if (clp != NULL) *clp = cl; return (0); }
int priq_add_queue(struct pf_altq *a) { struct priq_if *pif; struct priq_class *cl; if ((pif = a->altq_disc) == NULL) return (EINVAL); /* check parameters */ if (a->priority >= PRIQ_MAXPRI) return (EINVAL); if (a->qid == 0) return (EINVAL); if (pif->pif_classes[a->priority] != NULL) return (EBUSY); if (clh_to_clp(pif, a->qid) != NULL) return (EBUSY); cl = priq_class_create(pif, a->priority, a->qlimit, a->pq_u.priq_opts.flags, a->qid); if (cl == NULL) return (ENOMEM); return (0); }
static int priq_add_queue_locked(struct pf_altq *a, struct priq_if *pif) { struct priq_class *cl; KKASSERT(a->priority < PRIQ_MAXPRI); KKASSERT(a->qid != 0); if (pif->pif_classes[a->priority] != NULL) return (EBUSY); if (clh_to_clp(pif, a->qid) != NULL) return (EBUSY); cl = priq_class_create(pif, a->priority, a->qlimit, a->pq_u.priq_opts.flags, a->qid); if (cl == NULL) return (ENOMEM); return (0); }