--- libteam/ifinfo.c | 57 +++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 40 insertions(+), 17 deletions(-)
diff --git a/libteam/ifinfo.c b/libteam/ifinfo.c index 47b342c..9754ffa 100644 --- a/libteam/ifinfo.c +++ b/libteam/ifinfo.c @@ -367,23 +367,46 @@ int get_ifinfo_list(struct team_handle *th) }; int ret;
- ret = nl_send_simple(th->nl_cli.sock, RTM_GETLINK, NLM_F_DUMP, - &rt_hdr, sizeof(rt_hdr)); - if (ret < 0) - return -nl2syserr(ret); - orig_cb = nl_socket_get_cb(th->nl_cli.sock); - cb = nl_cb_clone(orig_cb); - nl_cb_put(orig_cb); - if (!cb) - return -ENOMEM; - - nl_cb_set(cb, NL_CB_VALID, NL_CB_CUSTOM, valid_handler, th); - - ret = nl_recvmsgs(th->nl_cli.sock, cb); - nl_cb_put(cb); - if (ret < 0) - return -nl2syserr(ret); - return check_call_change_handlers(th, TEAM_IFINFO_CHANGE); + int retry = 1; + while (retry) + { + retry = 0; + ret = nl_send_simple(th->nl_cli.sock, RTM_GETLINK, NLM_F_DUMP, + &rt_hdr, sizeof(rt_hdr)); + if (ret < 0) + { + err(th, "get_ifinfo_list: nl_send_simple failed: ret = %d", ret); + return -nl2syserr(ret); + } + orig_cb = nl_socket_get_cb(th->nl_cli.sock); + cb = nl_cb_clone(orig_cb); + nl_cb_put(orig_cb); + if (!cb) + { + err(th, "get_ifinfo_list: nl_cb_clone failed"); + return -ENOMEM; + } + + nl_cb_set(cb, NL_CB_VALID, NL_CB_CUSTOM, valid_handler, th); + + ret = nl_recvmsgs(th->nl_cli.sock, cb); + nl_cb_put(cb); + if (ret < 0) + { + err(th, "get_ifinfo_list: nl_recvmsgs failed: ret = %d", ret); + if (ret != -NLE_DUMP_INTR) + { + return -nl2syserr(ret); + } + retry = 1; + } + } + ret = check_call_change_handlers(th, TEAM_IFINFO_CHANGE); + if (ret < 0) + { + err(th, "get_ifinfo_list: check_call_change_handers failed: ret = %d", ret); + } + return ret; }
int ifinfo_list_init(struct team_handle *th)
Chris, you are kidding, right? Please take 5 minutes and think about what is wrong with this submission. Next time, please do it before you send a patch.
Thanks!
Jiri
Wed, Nov 25, 2015 at 02:56:18PM CET, ctcard@hotmail.com wrote:
libteam/ifinfo.c | 57 +++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 40 insertions(+), 17 deletions(-)
diff --git a/libteam/ifinfo.c b/libteam/ifinfo.c index 47b342c..9754ffa 100644 --- a/libteam/ifinfo.c +++ b/libteam/ifinfo.c @@ -367,23 +367,46 @@ int get_ifinfo_list(struct team_handle *th) }; int ret;
- ret = nl_send_simple(th->nl_cli.sock, RTM_GETLINK, NLM_F_DUMP,
&rt_hdr, sizeof(rt_hdr));
- if (ret < 0)
return -nl2syserr(ret);
- orig_cb = nl_socket_get_cb(th->nl_cli.sock);
- cb = nl_cb_clone(orig_cb);
- nl_cb_put(orig_cb);
- if (!cb)
return -ENOMEM;
- nl_cb_set(cb, NL_CB_VALID, NL_CB_CUSTOM, valid_handler, th);
- ret = nl_recvmsgs(th->nl_cli.sock, cb);
- nl_cb_put(cb);
- if (ret < 0)
return -nl2syserr(ret);
- return check_call_change_handlers(th, TEAM_IFINFO_CHANGE);
- int retry = 1;
- while (retry)
- {
retry = 0;
ret = nl_send_simple(th->nl_cli.sock, RTM_GETLINK, NLM_F_DUMP,
&rt_hdr, sizeof(rt_hdr));
if (ret < 0)
{
err(th, "get_ifinfo_list: nl_send_simple failed: ret = %d", ret);
return -nl2syserr(ret);
}
orig_cb = nl_socket_get_cb(th->nl_cli.sock);
cb = nl_cb_clone(orig_cb);
nl_cb_put(orig_cb);
if (!cb)
{
err(th, "get_ifinfo_list: nl_cb_clone failed");
return -ENOMEM;
}
nl_cb_set(cb, NL_CB_VALID, NL_CB_CUSTOM, valid_handler, th);
ret = nl_recvmsgs(th->nl_cli.sock, cb);
nl_cb_put(cb);
if (ret < 0)
{
err(th, "get_ifinfo_list: nl_recvmsgs failed: ret = %d", ret);
if (ret != -NLE_DUMP_INTR)
{
return -nl2syserr(ret);
}
retry = 1;
}
- }
- ret = check_call_change_handlers(th, TEAM_IFINFO_CHANGE);
- if (ret < 0)
- {
err(th, "get_ifinfo_list: check_call_change_handers failed: ret = %d", ret);
- }
- return ret;
}
int ifinfo_list_init(struct team_handle *th)
1.8.3.1 _______________________________________________ libteam mailing list libteam@lists.fedorahosted.org https://lists.fedorahosted.org/admin/lists/libteam@lists.fedorahosted.org
libteam@lists.fedorahosted.org