diff mbox

[iproute2] ipnetns: fix ip batch mode when using 'netns exec'

Message ID 1377588334-13538-1-git-send-email-nicolas.dichtel@6wind.com
State Superseded, archived
Delegated to: stephen hemminger
Headers show

Commit Message

Nicolas Dichtel Aug. 27, 2013, 7:25 a.m. UTC
Since commit a05f6511f543, ip batch mode is broken when using 'netns exec' cmd.

When WIFEXITED() returns true, it means that the child exited normally, hence
we must not call exit() but just returns the status. If we call exit, the next
commands in the file file are not executed.
If WIFEXITED() returns false, we can call exit() because it means that the
child failed.

This patch partially reverts commit a05f6511f543.

Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
---
 ip/ipnetns.c | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

Comments

Cong Wang Aug. 28, 2013, 8:13 a.m. UTC | #1
On Tue, 27 Aug 2013 at 07:25 GMT, Nicolas Dichtel <nicolas.dichtel@6wind.com> wrote:
>  
> -			/* If child failed, propagate status */
> -			if (WIFEXITED(status))
> -				exit(WEXITSTATUS(status));
> +			if (WIFEXITED(status)) {
> +				/* ip must returns the status of the child,

s/returns/return/

--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Nicolas Dichtel Aug. 29, 2013, 12:26 p.m. UTC | #2
Le 28/08/2013 10:13, Cong Wang a écrit :
> On Tue, 27 Aug 2013 at 07:25 GMT, Nicolas Dichtel <nicolas.dichtel@6wind.com> wrote:
>>
>> -			/* If child failed, propagate status */
>> -			if (WIFEXITED(status))
>> -				exit(WEXITSTATUS(status));
>> +			if (WIFEXITED(status)) {
>> +				/* ip must returns the status of the child,
>
> s/returns/return/

Thank you, but please keep all email addresses in cc next time, at least the author!
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/ip/ipnetns.c b/ip/ipnetns.c
index c8a47920539c..11dd9b89e503 100644
--- a/ip/ipnetns.c
+++ b/ip/ipnetns.c
@@ -205,11 +205,15 @@  static int netns_exec(int argc, char **argv)
 				exit(1);
 			}
 
-			/* If child failed, propagate status */
-			if (WIFEXITED(status))
-				exit(WEXITSTATUS(status));
+			if (WIFEXITED(status)) {
+				/* ip must returns the status of the child,
+				 * but do_cmd() will add a minus to this,
+				 * so let's add another one here to cancel it.
+				 */
+				return -WEXITSTATUS(status);
+			}
 
-			return 0;
+			exit(1);
 		}
 	}