Browse Source

swconfig: support sending SWITCH_TYPE_LINK to kernel

Signed-off-by: Rafał Miłecki <[email protected]>

SVN-Revision: 48141
Rafał Miłecki 10 years ago
parent
commit
a09e713299
1 changed files with 28 additions and 0 deletions
  1. 28 0
      package/network/config/swconfig/src/swlib.c

+ 28 - 0
package/network/config/swconfig/src/swlib.c

@@ -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;
 	}