diff options
author | Richard W.M. Jones <rjones@redhat.com> | 2022-11-17 18:49:34 +0000 |
---|---|---|
committer | Stefano Brivio <sbrivio@redhat.com> | 2022-11-25 01:40:47 +0100 |
commit | 6b4e68383c66bd8a3863d9a708bae583d18dc056 (patch) | |
tree | 1cca0effcbfdc3f38856638d7ba227472ba6acf2 /tap.c | |
parent | 15119dcf6c9d4bac261444a615f868cd58dd5434 (diff) | |
download | passt-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.c | 9 |
1 files changed, 9 insertions, 0 deletions
@@ -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; |