Re: [PATCH] ip addr: support change and replace commands

2015-06-23 Thread Bernhard Reutner-Fischer
On June 23, 2015 3:27:54 PM GMT+02:00, Michael Tokarev m...@tls.msk.ru wrote:
Ping?

20.05.2015 16:27, Michael Tokarev wrote:
 Signed-off-by: Michael Tokarev m...@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\0remote\0broadcast\0brd\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\0delete\0list\0show\0lst\0flush\0;
 +/* 01 2  3  4 5   6   7 
   
  8 */

+  
add\0change\0chg\0replace\0delete\0list\0show\0lst\0flush\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?

 +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);
 +}
 +return ipaddr_list_or_flush(argv, cmd == 8);

bloat-o-meter output, please.
Thanks,

___
busybox mailing list
busybox@busybox.net
http://lists.busybox.net/mailman/listinfo/busybox


Re: [PATCH] ip addr: support change and replace commands

2015-06-23 Thread Michael Tokarev
Ping?

20.05.2015 16:27, Michael Tokarev wrote:
 Signed-off-by: Michael Tokarev m...@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\0remote\0broadcast\0brd\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\0delete\0list\0show\0lst\0flush\0;
 + /* 01 2  3  4 5   6   7 
  8 */
 + 
 add\0change\0chg\0replace\0delete\0list\0show\0lst\0flush\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,
 + 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);
 + }
 + return ipaddr_list_or_flush(argv, cmd == 8);
  }
 

___
busybox mailing list
busybox@busybox.net
http://lists.busybox.net/mailman/listinfo/busybox


Re: [PATCH] ip addr: support change and replace commands

2015-06-23 Thread Michael Tokarev
23.06.2015 18:44, Bernhard Reutner-Fischer wrote:
 On June 23, 2015 3:27:54 PM GMT+02:00, Michael Tokarev m...@tls.msk.ru 
 wrote:
 Ping?

 20.05.2015 16:27, Michael Tokarev wrote:
 Signed-off-by: Michael Tokarev m...@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\0remote\0broadcast\0brd\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\0delete\0list\0show\0lst\0flush\0;
 +   /* 01 2  3  4 5   6   7 
   
  8 */

 +
 add\0change\0chg\0replace\0delete\0list\0show\0lst\0flush\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 67076771 +64
do_ipaddr 90 139 +49
static.commands   32  51 +19
ipaddr_modify   10841085  +1
--
(add/remove: 0/0 grow/shrink: 4/0 up/down: 133/0) Total: 133 bytes
   textdata bss dec hex filename
  4714313058360   56808dde8 busybox_old
  4725513058360   56920de58 busybox_unstripped

Thanks,

/mjt

___
busybox mailing list
busybox@busybox.net
http://lists.busybox.net/mailman/listinfo/busybox