[Patch v3 1/5] link: call rtnl_link_set_type() in link_msg_parser()

Cong Wang xiyou.wangcong at gmail.com
Tue Apr 1 21:03:29 EDT 2014


We need to call link-specific ->io_alloc() to alloc
addtional structures.

Acked-by: Thomas Graf <tgraf at suug.ch>
Signed-off-by: Cong Wang <xiyou.wangcong at gmail.com>
---
 lib/route/link.c | 10 +++-------
 1 file changed, 3 insertions(+), 7 deletions(-)

diff --git a/lib/route/link.c b/lib/route/link.c
index 3263096..65e42ec 100644
--- a/lib/route/link.c
+++ b/lib/route/link.c
@@ -541,16 +541,12 @@ static int link_msg_parser(struct nl_cache_ops *ops, struct sockaddr_nl *who,
 
 		if (li[IFLA_INFO_KIND]) {
 			struct rtnl_link_info_ops *ops;
-			char *kind;
+			char *kind = nla_get_string(li[IFLA_INFO_KIND]);
 			int af;
 
-			kind = nla_strdup(li[IFLA_INFO_KIND]);
-			if (kind == NULL) {
-				err = -NLE_NOMEM;
+			err = rtnl_link_set_type(link, kind);
+			if (err < 0)
 				goto errout;
-			}
-			link->l_info_kind = kind;
-			link->ce_mask |= LINK_ATTR_LINKINFO;
 
 			if ((af = nl_str2af(kind)) >= 0 &&
 				!af_ops && (af_ops = af_lookup_and_alloc(link, af))) {
-- 
1.7.11.7




More information about the libnl mailing list