tap: Remove unnecessary global tun_ns_fd
tap_ns_tun(), which runs in an ephemeral thread puts the fd it opens into the global variable tun_ns_fd to communicate it back to the main thread in tap_sock_tun_init(). However, the only thing tap_sock_tun_init() does with it is copies it to c->fd_tap and everything else uses it from there. tap_ns_tun() already has access to the context structure, so we might as well store the value directly in there rather than having a global as an intermediate. Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
This commit is contained in:
parent
7bc9b66fc2
commit
0cf7bf31f6
1 changed files with 3 additions and 7 deletions
10
tap.c
10
tap.c
|
@ -1165,8 +1165,6 @@ static void tap_sock_unix_new(struct ctx *c)
|
||||||
epoll_ctl(c->epollfd, EPOLL_CTL_ADD, c->fd_tap, &ev);
|
epoll_ctl(c->epollfd, EPOLL_CTL_ADD, c->fd_tap, &ev);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int tun_ns_fd = -1;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* tap_ns_tun() - Get tuntap fd in namespace
|
* tap_ns_tun() - Get tuntap fd in namespace
|
||||||
* @c: Execution context
|
* @c: Execution context
|
||||||
|
@ -1182,7 +1180,7 @@ static int tap_ns_tun(void *arg)
|
||||||
struct ctx *c = (struct ctx *)arg;
|
struct ctx *c = (struct ctx *)arg;
|
||||||
int fd, rc;
|
int fd, rc;
|
||||||
|
|
||||||
tun_ns_fd = -1;
|
c->fd_tap = -1;
|
||||||
memcpy(ifr.ifr_name, c->pasta_ifn, IFNAMSIZ);
|
memcpy(ifr.ifr_name, c->pasta_ifn, IFNAMSIZ);
|
||||||
ns_enter(c);
|
ns_enter(c);
|
||||||
|
|
||||||
|
@ -1197,7 +1195,7 @@ static int tap_ns_tun(void *arg)
|
||||||
if (!(c->pasta_ifi = if_nametoindex(c->pasta_ifn)))
|
if (!(c->pasta_ifi = if_nametoindex(c->pasta_ifn)))
|
||||||
die("Tap device opened but no network interface found");
|
die("Tap device opened but no network interface found");
|
||||||
|
|
||||||
tun_ns_fd = fd;
|
c->fd_tap = fd;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -1211,13 +1209,11 @@ static void tap_sock_tun_init(struct ctx *c)
|
||||||
struct epoll_event ev = { 0 };
|
struct epoll_event ev = { 0 };
|
||||||
|
|
||||||
NS_CALL(tap_ns_tun, c);
|
NS_CALL(tap_ns_tun, c);
|
||||||
if (tun_ns_fd == -1)
|
if (c->fd_tap == -1)
|
||||||
die("Failed to set up tap device in namespace");
|
die("Failed to set up tap device in namespace");
|
||||||
|
|
||||||
pasta_ns_conf(c);
|
pasta_ns_conf(c);
|
||||||
|
|
||||||
c->fd_tap = tun_ns_fd;
|
|
||||||
|
|
||||||
ev.data.fd = c->fd_tap;
|
ev.data.fd = c->fd_tap;
|
||||||
ev.events = EPOLLIN | EPOLLRDHUP;
|
ev.events = EPOLLIN | EPOLLRDHUP;
|
||||||
epoll_ctl(c->epollfd, EPOLL_CTL_ADD, c->fd_tap, &ev);
|
epoll_ctl(c->epollfd, EPOLL_CTL_ADD, c->fd_tap, &ev);
|
||||||
|
|
Loading…
Reference in a new issue