• Petr Machata's avatar
    selftests: forwarding: lib: Add in_ns() · d0540d17
    Petr Machata authored
    In order to run a certain command inside another network namespace, it's
    possible to use "ip netns exec ns command". However then one can't use
    functions defined in lib.sh or a test suite.
    
    One option is to do "ip netns exec ns bash -c command", provided that
    all functions that one wishes to use (and their dependencies) are
    published using "export -f". That may not be practical.
    
    Therefore, introduce a helper in_ns(), which wraps a given command in a
    boilerplate of "ip netns exec" and "source lib.sh", thus making all
    library functions available. (Custom functions that a script wishes to
    run within a namespace still need to be exported.)
    
    Because quotes in "$@" aren't recognized in heredoc, hand-expand the
    array in an explicit for loop, leveraging printf %q to handle proper
    quoting.
    Signed-off-by: default avatarPetr Machata <petrm@mellanox.com>
    Signed-off-by: default avatarIdo Schimmel <idosch@mellanox.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    d0540d17
lib.sh 18.6 KB