aboutsummaryrefslogtreecommitdiffstats
path: root/package/swconfig/src/swlib.c
diff options
context:
space:
mode:
authorJonas Gorski <jogo@openwrt.org>2011-07-27 18:00:18 +0000
committerJonas Gorski <jogo@openwrt.org>2011-07-27 18:00:18 +0000
commiteaa935658b7ec77bfd8b99b557ad196425b620f4 (patch)
tree85ae0f6e1bff3c06ac7b12de828d5a6a86194931 /package/swconfig/src/swlib.c
parent8ff7756e829dde4fcf69eeb9cca673cc7c7bd945 (diff)
downloadupstream-eaa935658b7ec77bfd8b99b557ad196425b620f4.tar.gz
upstream-eaa935658b7ec77bfd8b99b557ad196425b620f4.tar.bz2
upstream-eaa935658b7ec77bfd8b99b557ad196425b620f4.zip
swconfig: Add generic switch identifiers
Also make switches available under a generic name "switch<num>" for device name agnostic access. The old device name is used as an alias for backward compatibility. SVN-Revision: 27800
Diffstat (limited to 'package/swconfig/src/swlib.c')
-rw-r--r--package/swconfig/src/swlib.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/package/swconfig/src/swlib.c b/package/swconfig/src/swlib.c
index 20e727eb53..531a23a1ab 100644
--- a/package/swconfig/src/swlib.c
+++ b/package/swconfig/src/swlib.c
@@ -580,6 +580,7 @@ add_switch(struct nl_msg *msg, void *arg)
struct genlmsghdr *gnlh = nlmsg_data(nlmsg_hdr(msg));
struct switch_dev *dev;
const char *name;
+ const char *alias;
if (nla_parse(tb, SWITCH_ATTR_MAX, genlmsg_attrdata(gnlh, 0), genlmsg_attrlen(gnlh, 0), NULL) < 0)
goto done;
@@ -588,14 +589,17 @@ add_switch(struct nl_msg *msg, void *arg)
goto done;
name = nla_get_string(tb[SWITCH_ATTR_DEV_NAME]);
- if (sa->name && (strcmp(name, sa->name) != 0))
+ alias = nla_get_string(tb[SWITCH_ATTR_ALIAS]);
+
+ if (sa->name && (strcmp(name, sa->name) != 0) && (strcmp(alias, sa->name) != 0))
goto done;
dev = swlib_alloc(sizeof(struct switch_dev));
if (!dev)
goto done;
- dev->dev_name = strdup(name);
+ strncpy(dev->dev_name, name, IFNAMSIZ - 1);
+ dev->alias = strdup(alias);
if (tb[SWITCH_ATTR_ID])
dev->id = nla_get_u32(tb[SWITCH_ATTR_ID]);
if (tb[SWITCH_ATTR_NAME])