mirror of
https://passt.top/passt
synced 2025-06-14 19:35:35 +02:00
pasta: By default, quit if filesystem-bound net namespace goes away
This should be convenient for users managing filesystem-bound network namespaces: monitor the base directory of the namespace and exit if the namespace given as PATH or NAME target is deleted. We can't add an inotify watch directly on the namespace directory, that won't work with nsfs. Add an option to disable this behaviour, --no-netns-quit. Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
This commit is contained in:
parent
6c93111864
commit
745a9ba428
7 changed files with 107 additions and 12 deletions
7
passt.c
7
passt.c
|
@ -301,7 +301,7 @@ void exit_handler(int signal)
|
|||
*/
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
int nfds, i, devnull_fd = -1, pidfile_fd = -1;
|
||||
int nfds, i, devnull_fd = -1, pidfile_fd = -1, quit_fd;
|
||||
struct epoll_event events[EPOLL_EVENTS];
|
||||
struct ctx c = { 0 };
|
||||
struct rlimit limit;
|
||||
|
@ -357,6 +357,8 @@ int main(int argc, char **argv)
|
|||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
quit_fd = pasta_netns_quit_init(&c);
|
||||
|
||||
if (getrlimit(RLIMIT_NOFILE, &limit)) {
|
||||
perror("getrlimit");
|
||||
exit(EXIT_FAILURE);
|
||||
|
@ -416,6 +418,7 @@ int main(int argc, char **argv)
|
|||
seccomp(&c);
|
||||
|
||||
timer_init(&c, &now);
|
||||
|
||||
loop:
|
||||
nfds = epoll_wait(c.epollfd, events, EPOLL_EVENTS, TIMER_INTERVAL);
|
||||
if (nfds == -1 && errno != EINTR) {
|
||||
|
@ -431,6 +434,8 @@ loop:
|
|||
|
||||
if (fd == c.fd_tap || fd == c.fd_tap_listen)
|
||||
tap_handler(&c, fd, events[i].events, &now);
|
||||
else if (fd == quit_fd)
|
||||
pasta_netns_quit_handler(&c, fd);
|
||||
else
|
||||
sock_handler(&c, ref, events[i].events, &now);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue