diff options
author | Dimitri Staessens <dimitri@ouroboros.rocks> | 2020-01-25 12:38:38 +0100 |
---|---|---|
committer | Sander Vrijders <sander@ouroboros.rocks> | 2020-01-25 16:02:21 +0100 |
commit | 524445d9c625b05334818e2d900cf79d1ced5aba (patch) | |
tree | 5f71ebb4a2f9c984a5bf07c5b592528a55464460 /src/ipcpd/local/main.c | |
parent | a3e14d1c76d15cf150db4442c3d2fecc604d5e8e (diff) | |
download | ouroboros-524445d9c625b05334818e2d900cf79d1ced5aba.tar.gz ouroboros-524445d9c625b05334818e2d900cf79d1ced5aba.zip |
ipcpd: Filter fqueue events in packet handlers
The eth, udp and local IPCPs were not filtering out the event types
from the flow, causing some reads when there are no packets in the
queue. The types are now also organized as flags so they can be
filtered more quickly if needed.
Signed-off-by: Dimitri Staessens <dimitri@ouroboros.rocks>
Signed-off-by: Sander Vrijders <sander@ouroboros.rocks>
Diffstat (limited to 'src/ipcpd/local/main.c')
-rw-r--r-- | src/ipcpd/local/main.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/ipcpd/local/main.c b/src/ipcpd/local/main.c index 28a7c32b..009a3fde 100644 --- a/src/ipcpd/local/main.c +++ b/src/ipcpd/local/main.c @@ -110,6 +110,9 @@ static void * ipcp_local_packet_loop(void * o) fevent(local_data.flows, local_data.fq, NULL); while ((fd = fqueue_next(local_data.fq)) >= 0) { + if (fqueue_type(local_data.fq) != FLOW_PKT) + continue; + idx = local_flow_read(fd); if (idx < 0) continue; |