Lines Matching defs:val

153 	struct switch_val *val = arg;
154 struct switch_attr *attr = val->attr;
160 NLA_PUT_U32(msg, SWITCH_ATTR_OP_PORT, val->port_vlan);
163 NLA_PUT_U32(msg, SWITCH_ATTR_OP_VLAN, val->port_vlan);
176 store_port_val(struct nl_msg *msg, struct nlattr *nla, struct switch_val *val)
179 int ports = val->attr->dev->ports;
183 if (!val->value.ports)
184 val->value.ports = malloc(sizeof(struct switch_port) * ports);
190 if (val->len >= ports)
200 port = &val->value.ports[val->len];
206 val->len++;
214 store_link_val(struct nl_msg *msg, struct nlattr *nla, struct switch_val *val)
220 if (!val->value.link)
221 val->value.link = malloc(sizeof(struct switch_port_link));
227 link = val->value.link;
248 struct switch_val *val = arg;
250 if (!val)
259 val->value.i = nla_get_u32(tb[SWITCH_ATTR_OP_VALUE_INT]);
261 val->value.s = strdup(nla_get_string(tb[SWITCH_ATTR_OP_VALUE_STR]));
263 val->err = store_port_val(msg, tb[SWITCH_ATTR_OP_VALUE_PORTS], val);
265 val->err = store_link_val(msg, tb[SWITCH_ATTR_OP_VALUE_LINK], val);
267 val->err = 0;
275 swlib_get_attr(struct switch_dev *dev, struct switch_attr *attr, struct switch_val *val)
294 memset(&val->value, 0, sizeof(val->value));
295 val->len = 0;
296 val->attr = attr;
297 val->err = -EINVAL;
298 err = swlib_call(cmd, store_val, send_attr, val);
300 err = val->err;
306 send_attr_ports(struct nl_msg *msg, struct switch_val *val)
312 if (val->len == 0)
317 for (i = 0; i < val->len; i++) {
318 struct switch_port *port = &val->value.ports[i];
340 send_attr_link(struct nl_msg *msg, struct switch_val *val)
342 struct switch_port_link *link = val->value.link;
366 struct switch_val *val = arg;
367 struct switch_attr *attr = val->attr;
376 NLA_PUT_U32(msg, SWITCH_ATTR_OP_VALUE_INT, val->value.i);
379 if (!val->value.s)
381 NLA_PUT_STRING(msg, SWITCH_ATTR_OP_VALUE_STR, val->value.s);
384 if (send_attr_ports(msg, val) < 0)
388 if (send_attr_link(msg, val))
401 swlib_set_attr(struct switch_dev *dev, struct switch_attr *attr, struct switch_val *val)
419 val->attr = attr;
420 return swlib_call(cmd, NULL, send_attr_val, val);
434 struct switch_val val;
438 memset(&val, 0, sizeof(val));
439 val.port_vlan = port_vlan;
442 val.value.i = atoi(str);
445 val.value.s = (char *)str;
450 val.len = 0;
463 if (val.len >= dev->ports)
466 ports[val.len].flags = 0;
467 ports[val.len].id = strtoul(ptr, &ptr, 10);
470 ports[val.len].flags |= SWLIB_PORT_FLAG_TAGGED;
478 val.len++;
480 val.value.ports = ports;
522 val.value.link = link;
532 return swlib_set_attr(dev, a, &val);