diff options
author | David Gibson <david@gibson.dropbear.id.au> | 2023-08-02 13:15:40 +1000 |
---|---|---|
committer | Stefano Brivio <sbrivio@redhat.com> | 2023-08-04 01:18:02 +0200 |
commit | 6920adda0dce8cc9fb585da658dd983833c2a928 (patch) | |
tree | 3edc7bf9b3ca068da5276249a93e6d0a9a3a70ea /tap.c | |
parent | b15ce5b6ceb0ba0cbb91d460c5a745a14c2050df (diff) | |
download | passt-6920adda0dce8cc9fb585da658dd983833c2a928.tar passt-6920adda0dce8cc9fb585da658dd983833c2a928.tar.gz passt-6920adda0dce8cc9fb585da658dd983833c2a928.tar.bz2 passt-6920adda0dce8cc9fb585da658dd983833c2a928.tar.lz passt-6920adda0dce8cc9fb585da658dd983833c2a928.tar.xz passt-6920adda0dce8cc9fb585da658dd983833c2a928.tar.zst passt-6920adda0dce8cc9fb585da658dd983833c2a928.zip |
util: Make ns_enter() a void function and report setns() errors
ns_enter() returns an integer... but it's always zero. If we actually fail
the function doesn't return. Therefore it makes more sense for this to be
a function returning void, and we can remove the cases where we pointlessly
checked its return value.
In addition ns_enter() is usually called from an ephemeral thread created
by NS_CALL(). That means that the exit(EXIT_FAILURE) there usually won't
be reported (since NS_CALL() doesn't wait() for the thread). So, use die()
instead to print out some information in the unlikely event that our
setns() here does fail.
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
Diffstat (limited to 'tap.c')
-rw-r--r-- | tap.c | 4 |
1 files changed, 2 insertions, 2 deletions
@@ -1182,9 +1182,9 @@ static int tap_ns_tun(void *arg) struct ctx *c = (struct ctx *)arg; memcpy(ifr.ifr_name, c->pasta_ifn, IFNAMSIZ); + ns_enter(c); - if (ns_enter(c) || - (tun_ns_fd = open("/dev/net/tun", flags)) < 0 || + if ((tun_ns_fd = open("/dev/net/tun", flags)) < 0 || ioctl(tun_ns_fd, TUNSETIFF, &ifr) || !(c->pasta_ifi = if_nametoindex(c->pasta_ifn))) { if (tun_ns_fd != -1) |