[PATCH] ip addr: support change and replace commands
Denys Vlasenko
vda.linux at googlemail.com
Wed Jul 1 16:36:32 UTC 2015
Applied, thanks.
On Tue, Jun 23, 2015 at 6:19 PM, Michael Tokarev <mjt at tls.msk.ru> wrote:
> 23.06.2015 18:44, Bernhard Reutner-Fischer wrote:
>> On June 23, 2015 3:27:54 PM GMT+02:00, Michael Tokarev <mjt at tls.msk.ru> wrote:
>>> Ping?
>>>
>>> 20.05.2015 16:27, Michael Tokarev wrote:
>>>> Signed-off-by: Michael Tokarev <mjt at tls.msk.ru>
>>>> ---
>>>> networking/ip.c | 2 +-
>>>> networking/libiproute/ipaddress.c | 20 ++++++++++++--------
>>>> 2 files changed, 13 insertions(+), 9 deletions(-)
>>>>
>>>> diff --git a/networking/ip.c b/networking/ip.c
>>>> index 98fe621..d35345c 100644
>>>> --- a/networking/ip.c
>>>> +++ b/networking/ip.c
>>>> @@ -33,7 +33,7 @@
>>>> //usage: "{ {add|del} IFADDR dev STRING | {show|flush}\n"
>>>> //usage: " [dev STRING] [to PREFIX] }"
>>>> //usage:#define ipaddr_full_usage "\n\n"
>>>> -//usage: "ipaddr {add|delete} IFADDR dev STRING\n"
>>>> +//usage: "ipaddr {add|change|replace|delete} IFADDR dev STRING\n"
>>>> //usage: "ipaddr {show|flush} [dev STRING] [scope SCOPE-ID]\n"
>>>> //usage: " [to PREFIX] [label PATTERN]\n"
>>>> //usage: " IFADDR := PREFIX | ADDR peer PREFIX\n"
>>>> diff --git a/networking/libiproute/ipaddress.c
>>> b/networking/libiproute/ipaddress.c
>>>> index 4072d06..85f3356 100644
>>>> --- a/networking/libiproute/ipaddress.c
>>>> +++ b/networking/libiproute/ipaddress.c
>>>> @@ -598,7 +598,7 @@ static int default_scope(inet_prefix *lcl)
>>>> }
>>>>
>>>> /* Return value becomes exitcode. It's okay to not return at all */
>>>> -static int ipaddr_modify(int cmd, char **argv)
>>>> +static int ipaddr_modify(int cmd, int flags, char **argv)
>>>> {
>>>> static const char option[] ALIGN1 =
>>>> "peer\0""remote\0""broadcast\0""brd\0"
>>>> @@ -622,7 +622,7 @@ static int ipaddr_modify(int cmd, char **argv)
>>>> memset(&req, 0, sizeof(req));
>>>>
>>>> req.n.nlmsg_len = NLMSG_LENGTH(sizeof(struct ifaddrmsg));
>>>> - req.n.nlmsg_flags = NLM_F_REQUEST;
>>>> + req.n.nlmsg_flags = NLM_F_REQUEST | flags;
>>>> req.n.nlmsg_type = cmd;
>>>> req.ifa.ifa_family = preferred_family;
>>>>
>>>> @@ -749,16 +749,20 @@ static int ipaddr_modify(int cmd, char **argv)
>>>> int FAST_FUNC do_ipaddr(char **argv)
>>>> {
>>>> static const char commands[] ALIGN1 =
>>>> - "add\0""delete\0""list\0""show\0""lst\0""flush\0";
>>>> + /* 0 1 2 3 4 5 6 7
>>> 8 */
>>>>
>>> + "add\0""change\0""chg\0""replace\0""delete\0""list\0""show\0""lst\0""flush\0";
>>>> int cmd = 2;
>>>> if (*argv) {
>>>> cmd = index_in_substrings(commands, *argv);
>>>> if (cmd < 0)
>>>> invarg(*argv, applet_name);
>>>> argv++;
>>>> - if (cmd <= 1)
>>>> - return ipaddr_modify((cmd == 0) ? RTM_NEWADDR : RTM_DELADDR, argv);
>>>> - }
>>>> - /* 2 == list, 3 == show, 4 == lst */
>>>> - return ipaddr_list_or_flush(argv, cmd == 5);
>>>> + if (cmd <= 4)
>>>> + return ipaddr_modify(cmd == 4 ? RTM_DELADDR : RTM_NEWADDR,
>>
>> wrong comma?
>
> Nope, not wrong comma. The first argument is the command, and the second:
>
>>>> + cmd == 0 ? NLM_F_CREATE|NLM_F_EXCL :
>>>> + cmd == 1 || cmd == 2 ? NLM_F_REPLACE :
>>>> + cmd == 3 ? NLM_F_CREATE|NLM_F_REPLACE :
>>>> + 0, argv);
>
> is the flags for the command.
>
>>>> + }
>>>> + return ipaddr_list_or_flush(argv, cmd == 8);
>>
>> bloat-o-meter output, please.
>
> $ make bloatcheck
> function old new delta
> .rodata 6707 6771 +64
> do_ipaddr 90 139 +49
> static.commands 32 51 +19
> ipaddr_modify 1084 1085 +1
> ------------------------------------------------------------------------------
> (add/remove: 0/0 grow/shrink: 4/0 up/down: 133/0) Total: 133 bytes
> text data bss dec hex filename
> 47143 1305 8360 56808 dde8 busybox_old
> 47255 1305 8360 56920 de58 busybox_unstripped
>
> Thanks,
>
> /mjt
>
> _______________________________________________
> busybox mailing list
> busybox at busybox.net
> http://lists.busybox.net/mailman/listinfo/busybox
More information about the busybox
mailing list