ctlslot
struct ctlslot *
struct ctlslot *s;
ctlslot_del(struct ctlslot *s)
ctlslot_visible(struct ctlslot *s, struct ctl *c)
ctlslot_lookup(struct ctlslot *s, int addr)
ctlslot_update(struct ctlslot *s)
struct ctlslot *s;
struct ctlslot *s;
struct ctlslot *s;
struct ctlslot ctlslot_array[DEV_NCTLSLOT];
struct ctlslot *c;
extern struct ctlslot ctlslot_array[DEV_NCTLSLOT];
struct ctlslot *ctlslot_new(struct opt *, struct ctlops *, void *);
void ctlslot_del(struct ctlslot *);
int ctlslot_visible(struct ctlslot *, struct ctl *);
struct ctl *ctlslot_lookup(struct ctlslot *, int);
void ctlslot_update(struct ctlslot *);
struct ctlslot *p;
if (f->pstate != SOCK_INIT || f->ctlslot == NULL) {
ctl = f->ctlslot->self;
if (ctlslot_visible(f->ctlslot, c))
if (f->pstate < SOCK_INIT || f->ctlslot == NULL) {
c = ctlslot_lookup(f->ctlslot, ntohs(m->u.ctlset.addr));
if (f->ctlslot && (f->ctlops & SOCK_CTLDESC)) {
mask = f->ctlslot->self;
type = ctlslot_visible(f->ctlslot, c) ?
if (f->ctlslot && (f->ctlops & SOCK_CTLVAL)) {
mask = f->ctlslot->self;
if (!ctlslot_visible(f->ctlslot, c))
if (f->ctlslot->opt == NULL)
if (f->ctlslot && f->ctlsyncpending) {
if (strcmp(c->group, f->ctlslot->opt->name) == 0)
if (strcmp(c->group, f->ctlslot->opt->dev->name) == 0)
if (f->ctlslot) {
ctlslot_del(f->ctlslot);
f->ctlslot = NULL;
f->ctlslot = NULL;
f->ctlslot = ctlslot_new(opt, &sock_ctlops, f);
if (f->ctlslot == NULL) {
struct ctlslot *ctlslot;