aboutsummaryrefslogtreecommitdiff
path: root/lib/rtnetlink-link.c
diff options
context:
space:
mode:
authorPravin B Shelar <pshelar@nicira.com>2012-03-09 12:58:10 -0800
committerPravin B Shelar <pshelar@nicira.com>2012-03-09 12:58:10 -0800
commit44445cac40bec2b2f12e8baf7bbb7fcf32fcbb42 (patch)
tree421b70f128ea277ec30d24998ad9cdacaf2c9def /lib/rtnetlink-link.c
parent90a6637d5e7f5f83e3370e05b3716a24fc093fc7 (diff)
netdev-linux: Cache error code from ether-addr ioctl.
Signed-off-by: Pravin B Shelar <pshelar@nicira.com>
Diffstat (limited to 'lib/rtnetlink-link.c')
-rw-r--r--lib/rtnetlink-link.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/lib/rtnetlink-link.c b/lib/rtnetlink-link.c
index d14f0e3c..07350a6c 100644
--- a/lib/rtnetlink-link.c
+++ b/lib/rtnetlink-link.c
@@ -46,6 +46,7 @@ rtnetlink_link_parse(struct ofpbuf *buf,
[IFLA_IFNAME] = { .type = NL_A_STRING, .optional = false },
[IFLA_MASTER] = { .type = NL_A_U32, .optional = true },
[IFLA_MTU] = { .type = NL_A_U32, .optional = true },
+ [IFLA_ADDRESS] = { .type = NL_A_UNSPEC, .optional = true },
};
static struct nlattr *attrs[ARRAY_SIZE(policy)];
@@ -72,6 +73,12 @@ rtnetlink_link_parse(struct ofpbuf *buf,
? nl_attr_get_u32(attrs[IFLA_MTU])
: 0);
+ if (attrs[IFLA_ADDRESS] &&
+ nl_attr_get_size(attrs[IFLA_ADDRESS]) == ETH_ALEN) {
+ memcpy(change->addr, nl_attr_get(attrs[IFLA_ADDRESS]), ETH_ALEN);
+ } else {
+ memset(change->addr, 0, ETH_ALEN);
+ }
}
return parsed;