|
|
|
@ -336,6 +336,30 @@ nla_put_failure:
|
|
|
|
|
return -1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static int
|
|
|
|
|
send_attr_link(struct nl_msg *msg, struct switch_val *val)
|
|
|
|
|
{
|
|
|
|
|
struct switch_port_link *link = val->value.link;
|
|
|
|
|
struct nlattr *n;
|
|
|
|
|
|
|
|
|
|
n = nla_nest_start(msg, SWITCH_ATTR_OP_VALUE_LINK);
|
|
|
|
|
if (!n)
|
|
|
|
|
goto nla_put_failure;
|
|
|
|
|
|
|
|
|
|
if (link->duplex)
|
|
|
|
|
NLA_PUT_FLAG(msg, SWITCH_LINK_FLAG_DUPLEX);
|
|
|
|
|
if (link->aneg)
|
|
|
|
|
NLA_PUT_FLAG(msg, SWITCH_LINK_FLAG_ANEG);
|
|
|
|
|
NLA_PUT_U32(msg, SWITCH_LINK_SPEED, link->speed);
|
|
|
|
|
|
|
|
|
|
nla_nest_end(msg, n);
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
|
|
nla_put_failure:
|
|
|
|
|
return -1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static int
|
|
|
|
|
send_attr_val(struct nl_msg *msg, void *arg)
|
|
|
|
|
{
|
|
|
|
@ -360,6 +384,10 @@ send_attr_val(struct nl_msg *msg, void *arg)
|
|
|
|
|
if (send_attr_ports(msg, val) < 0)
|
|
|
|
|
goto nla_put_failure;
|
|
|
|
|
break;
|
|
|
|
|
case SWITCH_TYPE_LINK:
|
|
|
|
|
if (send_attr_link(msg, val))
|
|
|
|
|
goto nla_put_failure;
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
goto nla_put_failure;
|
|
|
|
|
}
|
|
|
|
|