[ovs-dev] [PATCH 2/5] system-common-macros: Don't use bash to exec in ns.

Daniele Di Proietto diproiettod at vmware.com
Tue Aug 11 12:25:01 UTC 2015


I'm not an autoconf expert, but having NS_CHECK_EXEC and
NS_CHECK_EXEC_UNQUOTED for this purpose might be confusing, since
there already are AT_CHECK and AT_CHECK_UNQUOTED, and the "UNQUOTED"
refers to comparison text.

How about this?

# NS_EXEC([namespace], [command])
#
# Execute 'command' in 'namespace'
m4_define([NS_EXEC],
    [ip netns exec $1 sh << NS_EXEC_HEREDOC
$2
NS_EXEC_HEREDOC
])



On 10/08/2015 21:17, "Joe Stringer" <joestringer at nicira.com> wrote:

>Hmm. The problem I was having is that if we wrap 'command' in quotes
>here, and 'command' itself includes quotes (eg, command='echo "foo" |
>bar'), then rather than quoting "foo", the command ends up quoting
>everything up to 'foo', then unquoting 'foo', then quoting everything
>after 'foo'. The ICMP related test in the conntrack branch has an
>instance of this.
>
>Maybe the right solution is to have two variants: NS_CHECK_EXEC() and
>NS_CHECK_EXEC_UNQUOTED(). I've seen this other places in OVS
>testsuite.
>
>On 10 August 2015 at 11:40, Daniele Di Proietto <diproiettod at vmware.com>
>wrote:
>> I guess you need this to use quotes("") inside 'command'.
>>
>> One effect of this change is that if 'command' contains a pipe
>> (or &&, or ||) just the first command will be executed inside
>> the namespace.  I'm not sure if it's a big problem.  What do you
>> think?
>>
>> On 08/08/2015 00:28, "Joe Stringer" <joestringer at nicira.com> wrote:
>>
>>>ip netns exec $namespace $command doesn't need to use bash to execute
>>>the command. Remove it.
>>>
>>>Signed-off-by: Joe Stringer <joestringer at nicira.com>
>>>---
>>> tests/system-common-macros.at | 2 +-
>>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>>diff --git a/tests/system-common-macros.at
>>>b/tests/system-common-macros.at
>>>index 1321e58..fdc2bc7 100644
>>>--- a/tests/system-common-macros.at
>>>+++ b/tests/system-common-macros.at
>>>@@ -25,7 +25,7 @@ m4_define([ADD_NAMESPACES],
>>> #
>>> # Execute 'command' in 'namespace'
>>> m4_define([NS_EXEC],
>>>-    [ip netns exec $1 bash -c "$2"]
>>>+    [ip netns exec $1 $2]
>>> )
>>>
>>> # NS_CHECK_EXEC([namespace], [command], other_params...)
>>>--
>>>2.1.4
>>>
>>




More information about the dev mailing list