--- libnl-1.1/lib/route/link.c.BAD 2010-02-27 08:43:45.671957250 -0600 +++ libnl-1.1/lib/route/link.c 2010-02-28 10:23:42.732957755 -0600 @@ -364,14 +364,9 @@ link->ce_mask |= LINK_ATTR_QDISC; } - if (tb[IFLA_MAP]) { - struct rtnl_link_ifmap *map = nla_data(tb[IFLA_MAP]); - link->l_map.lm_mem_start = map->mem_start; - link->l_map.lm_mem_end = map->mem_end; - link->l_map.lm_base_addr = map->base_addr; - link->l_map.lm_irq = map->irq; - link->l_map.lm_dma = map->dma; - link->l_map.lm_port = map->port; + if (tb[IFLA_MAP]) { + nla_memcpy(&link->l_map, tb[IFLA_MAP], + sizeof(struct rtnl_link_ifmap)); link->ce_mask |= LINK_ATTR_MAP; }