From b06a29603accea41ef699b6224fae80eba9dead4 Mon Sep 17 00:00:00 2001 From: Serhey Popovych Date: Wed, 7 Mar 2018 10:40:38 +0200 Subject: [PATCH] iplink: Follow documented behaviour when "index" is given Both ip-link(8) and error message when "index" parameter is given for set/delete case says that index can only be given during network device creation. Follow this documented behaviour and get rid of ambiguous behaviour in case of both "dev" and "index" specified for ip link delete scenario (actually "index" being ignored in favor to "dev"). Prohibit "index" when configuring/deleting group of network devices. Signed-off-by: Serhey Popovych --- ip/iplink.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/ip/iplink.c b/ip/iplink.c index b4307ab7..6d3ebdee 100644 --- a/ip/iplink.c +++ b/ip/iplink.c @@ -964,6 +964,12 @@ static int iplink_modify(int cmd, unsigned int flags, int argc, char **argv) argc -= ret; argv += ret; + if (!(flags & NLM_F_CREATE) && index) { + fprintf(stderr, + "index can be used only when creating devices.\n"); + exit(-1); + } + if (group != -1) { if (dev) addattr_l(&req.n, sizeof(req), IFLA_GROUP, @@ -994,11 +1000,6 @@ static int iplink_modify(int cmd, unsigned int flags, int argc, char **argv) "Not enough information: \"dev\" argument is required.\n"); exit(-1); } - if (cmd == RTM_NEWLINK && index) { - fprintf(stderr, - "index can be used only when creating devices.\n"); - exit(-1); - } req.i.ifi_index = ll_name_to_index(dev); if (!req.i.ifi_index)