diff options
author | Matthias Schiffer <mschiffer@universe-factory.net> | 2014-04-20 02:16:44 +0200 |
---|---|---|
committer | Matthias Schiffer <mschiffer@universe-factory.net> | 2014-04-20 02:16:44 +0200 |
commit | 8c705b9cd4c7866227f09af2a859744e47602ba4 (patch) | |
tree | 9b75234454e0611c484265698011b5df832d893c /src/poll.c | |
parent | 0bf9268453d3af82bbd1257da547b1dd8f225ba2 (diff) | |
download | fastd-8c705b9cd4c7866227f09af2a859744e47602ba4.tar fastd-8c705b9cd4c7866227f09af2a859744e47602ba4.zip |
Minimize poll interface to simplify implementation of alternative implementations
Diffstat (limited to 'src/poll.c')
-rw-r--r-- | src/poll.c | 17 |
1 files changed, 11 insertions, 6 deletions
@@ -59,16 +59,21 @@ void fastd_poll_free(fastd_context_t *ctx) { } -void fastd_poll_set_fd_tuntap(fastd_context_t *ctx, int fd) { - VECTOR_INDEX(ctx->pollfds, 0).fd = fd; +void fastd_poll_set_fd_tuntap(fastd_context_t *ctx) { + VECTOR_INDEX(ctx->pollfds, 0).fd = ctx->tunfd; } -void fastd_poll_set_fd_sock(fastd_context_t *ctx, int fd, size_t i) { - VECTOR_INDEX(ctx->pollfds, 2+i).fd = fd; +void fastd_poll_set_fd_sock(fastd_context_t *ctx, size_t i) { + VECTOR_INDEX(ctx->pollfds, 2+i).fd = ctx->socks[i].fd; } -void fastd_poll_set_fd_peer(fastd_context_t *ctx, int fd, size_t i) { - VECTOR_INDEX(ctx->pollfds, 2+ctx->n_socks+i).fd = fd; +void fastd_poll_set_fd_peer(fastd_context_t *ctx, size_t i) { + fastd_peer_t *peer = VECTOR_INDEX(ctx->peers, i); + + if (!peer->sock || !fastd_peer_is_socket_dynamic(peer)) + VECTOR_INDEX(ctx->pollfds, 2+ctx->n_socks+i).fd = -1; + else + VECTOR_INDEX(ctx->pollfds, 2+ctx->n_socks+i).fd = peer->sock->fd; } void fastd_poll_add_peer(fastd_context_t *ctx) { |