version 1.39, 2021/01/29 11:31:28 |
version 1.40, 2021/01/29 11:36:44 |
|
|
} |
} |
return 0; |
return 0; |
} |
} |
f->ctlslot = ctlslot_new(d, &sock_ctlops, f); |
opt = opt_byname(d, p->opt); |
|
if (opt == NULL) |
|
return 0; |
|
f->ctlslot = ctlslot_new(opt, &sock_ctlops, f); |
if (f->ctlslot == NULL) { |
if (f->ctlslot == NULL) { |
if (log_level >= 2) { |
if (log_level >= 2) { |
sock_log(f); |
sock_log(f); |
|
|
if (m->u.ctlsub.desc) { |
if (m->u.ctlsub.desc) { |
if (!(f->ctlops & SOCK_CTLDESC)) { |
if (!(f->ctlops & SOCK_CTLDESC)) { |
ctl = f->ctlslot->self; |
ctl = f->ctlslot->self; |
c = f->ctlslot->dev->ctl_list; |
c = f->ctlslot->opt->dev->ctl_list; |
while (c != NULL) { |
while (c != NULL) { |
c->desc_mask |= ctl; |
c->desc_mask |= ctl; |
c = c->next; |
c = c->next; |
|
|
sock_close(f); |
sock_close(f); |
return 0; |
return 0; |
} |
} |
if (!dev_setctl(f->ctlslot->dev, |
if (!dev_setctl(f->ctlslot->opt->dev, |
ntohs(m->u.ctlset.addr), |
ntohs(m->u.ctlset.addr), |
ntohs(m->u.ctlset.val))) { |
ntohs(m->u.ctlset.val))) { |
#ifdef DEBUG |
#ifdef DEBUG |
|
|
desc = f->ctldesc; |
desc = f->ctldesc; |
mask = f->ctlslot->self; |
mask = f->ctlslot->self; |
size = 0; |
size = 0; |
pc = &f->ctlslot->dev->ctl_list; |
pc = &f->ctlslot->opt->dev->ctl_list; |
while ((c = *pc) != NULL) { |
while ((c = *pc) != NULL) { |
if ((c->desc_mask & mask) == 0 || |
if ((c->desc_mask & mask) == 0 || |
(c->refs_mask & mask) == 0) { |
(c->refs_mask & mask) == 0) { |
|
|
} |
} |
if (f->ctlslot && (f->ctlops & SOCK_CTLVAL)) { |
if (f->ctlslot && (f->ctlops & SOCK_CTLVAL)) { |
mask = f->ctlslot->self; |
mask = f->ctlslot->self; |
for (c = f->ctlslot->dev->ctl_list; c != NULL; c = c->next) { |
for (c = f->ctlslot->opt->dev->ctl_list; c != NULL; c = c->next) { |
if ((c->val_mask & mask) == 0) |
if ((c->val_mask & mask) == 0) |
continue; |
continue; |
c->val_mask &= ~mask; |
c->val_mask &= ~mask; |