aboutgitcodebugslistschat
path: root/tap.c
diff options
context:
space:
mode:
authorRichard W.M. Jones <rjones@redhat.com>2022-11-17 18:49:34 +0000
committerStefano Brivio <sbrivio@redhat.com>2022-11-25 01:40:47 +0100
commit6b4e68383c66bd8a3863d9a708bae583d18dc056 (patch)
tree1cca0effcbfdc3f38856638d7ba227472ba6acf2 /tap.c
parent15119dcf6c9d4bac261444a615f868cd58dd5434 (diff)
downloadpasst-6b4e68383c66bd8a3863d9a708bae583d18dc056.tar
passt-6b4e68383c66bd8a3863d9a708bae583d18dc056.tar.gz
passt-6b4e68383c66bd8a3863d9a708bae583d18dc056.tar.bz2
passt-6b4e68383c66bd8a3863d9a708bae583d18dc056.tar.lz
passt-6b4e68383c66bd8a3863d9a708bae583d18dc056.tar.xz
passt-6b4e68383c66bd8a3863d9a708bae583d18dc056.tar.zst
passt-6b4e68383c66bd8a3863d9a708bae583d18dc056.zip
passt, tap: Add --fd option
This passes a fully connected stream socket to passt. Signed-off-by: Richard W.M. Jones <rjones@redhat.com> [sbrivio: reuse fd_tap instead of adding a new descriptor, imply --one-off on --fd, add to optstring and usage()] Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
Diffstat (limited to 'tap.c')
-rw-r--r--tap.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/tap.c b/tap.c
index 5a20b75..2cfd82b 100644
--- a/tap.c
+++ b/tap.c
@@ -1069,6 +1069,15 @@ void tap_sock_init(struct ctx *c)
}
if (c->fd_tap != -1) {
+ if (c->one_off) { /* Passed as --fd */
+ struct epoll_event ev = { 0 };
+
+ ev.data.fd = c->fd_tap;
+ ev.events = EPOLLIN | EPOLLET | EPOLLRDHUP;
+ epoll_ctl(c->epollfd, EPOLL_CTL_ADD, c->fd_tap, &ev);
+ return;
+ }
+
epoll_ctl(c->epollfd, EPOLL_CTL_DEL, c->fd_tap, NULL);
close(c->fd_tap);
c->fd_tap = -1;