Skip to content

Commit b780a7d

Browse files
authored
Merge pull request #29 from danielinux/fix_tcp_fast_retransmit
Multiple fixes to TCP fast retransmit + VDE port
2 parents d34f7e3 + aa3812f commit b780a7d

13 files changed

Lines changed: 861 additions & 137 deletions

Makefile

Lines changed: 34 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -55,12 +55,30 @@ ifeq ($(UNAME_S),Darwin)
5555
endif
5656

5757

58-
TAP_SRC:=src/port/posix/tap_$(UNAME_LC).c
59-
ifeq ($(wildcard $(TAP_SRC)),)
60-
TAP_SRC:=src/port/posix/tap_linux.c
58+
# Network device driver selection
59+
# Default to TAP for local examples/tests. Use BUILD_VDE=1 to opt in VDE.
60+
BUILD_VDE ?= 0
61+
ifeq ($(BUILD_VDE),1)
62+
# VDE (Virtual Distributed Ethernet) driver
63+
NETDEV_SRC:=src/port/vde2/vde_device.c
64+
NETDEV_OBJ:=$(patsubst src/%.c,build/%.o,$(NETDEV_SRC))
65+
NETDEV_PIE_OBJ:=$(patsubst src/%.c,build/pie/%.o,$(NETDEV_SRC))
66+
CFLAGS+=-DWOLFIP_USE_VDE=1
67+
LDFLAGS+=-lvdeplug
68+
else
69+
# TAP device driver (default)
70+
TAP_SRC:=src/port/posix/tap_$(UNAME_LC).c
71+
ifeq ($(wildcard $(TAP_SRC)),)
72+
TAP_SRC:=src/port/posix/tap_linux.c
73+
endif
74+
NETDEV_SRC:=$(TAP_SRC)
75+
NETDEV_OBJ:=$(patsubst src/%.c,build/%.o,$(TAP_SRC))
76+
NETDEV_PIE_OBJ:=$(patsubst src/%.c,build/pie/%.o,$(TAP_SRC))
6177
endif
62-
TAP_OBJ:=$(patsubst src/%.c,build/%.o,$(TAP_SRC))
63-
TAP_PIE_OBJ:=$(patsubst src/%.c,build/pie/%.o,$(TAP_SRC))
78+
79+
# Legacy aliases for backward compatibility
80+
TAP_OBJ:=$(NETDEV_OBJ)
81+
TAP_PIE_OBJ:=$(NETDEV_PIE_OBJ)
6482

6583
ifeq ($(UNAME_S),Darwin)
6684
BEGIN_GROUP:=
@@ -146,7 +164,7 @@ libwolfip.so: build/pie/port/posix/bsd_socket.o build/pie/wolfip.o \
146164
$(TAP_PIE_OBJ)
147165
@mkdir -p `dirname $@` || true
148166
@echo "[LD] $@"
149-
@$(CC) $(CFLAGS) $(LDFLAGS) -shared -o $@ $(BEGIN_GROUP) $(^) $(END_GROUP)
167+
@$(CC) $(CFLAGS) -shared -o $@ $(BEGIN_GROUP) $(^) $(LDFLAGS) $(END_GROUP)
150168

151169

152170
clean:
@@ -174,23 +192,23 @@ endif
174192
unit:LDFLAGS+=$(UNIT_LIBS)
175193
build/test-evloop: $(OBJ) build/test/test_eventloop.o
176194
@echo "[LD] $@"
177-
@$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(BEGIN_GROUP) $(^) $(END_GROUP)
195+
@$(CC) $(CFLAGS) -o $@ $(BEGIN_GROUP) $(^) $(LDFLAGS) $(END_GROUP)
178196

179197
build/test-dns: $(OBJ) build/test/test_dhcp_dns.o
180198
@echo "[LD] $@"
181-
@$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(BEGIN_GROUP) $(^) $(END_GROUP)
199+
@$(CC) $(CFLAGS) -o $@ $(BEGIN_GROUP) $(^) $(LDFLAGS) $(END_GROUP)
182200

183201
build/tcpecho: $(OBJ) build/port/posix/bsd_socket.o build/test/tcp_echo.o
184202
@echo "[LD] $@"
185-
@$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(BEGIN_GROUP) $(^) $(END_GROUP)
203+
@$(CC) $(CFLAGS) -o $@ $(BEGIN_GROUP) $(^) $(LDFLAGS) $(END_GROUP)
186204

187205
build/tcp_netcat_poll: $(OBJ) build/port/posix/bsd_socket.o build/test/tcp_netcat_poll.o
188206
@echo "[LD] $@"
189-
@$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(BEGIN_GROUP) $(^) $(END_GROUP)
207+
@$(CC) $(CFLAGS) -o $@ $(BEGIN_GROUP) $(^) $(LDFLAGS) $(END_GROUP)
190208

191209
build/tcp_netcat_select: $(OBJ) build/port/posix/bsd_socket.o build/test/tcp_netcat_select.o
192210
@echo "[LD] $@"
193-
@$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(BEGIN_GROUP) $(^) $(END_GROUP)
211+
@$(CC) $(CFLAGS) -o $@ $(BEGIN_GROUP) $(^) $(LDFLAGS) $(END_GROUP)
194212

195213

196214
build/test-wolfssl:CFLAGS+=-Wno-cpp -DWOLFSSL_DEBUG -DWOLFSSL_WOLFIP
@@ -199,11 +217,11 @@ build/test-wolfssl-forwarding:CFLAGS+=-Wno-cpp -DWOLFSSL_DEBUG -DWOLFSSL_WOLFIP
199217

200218
build/test-wolfssl: $(OBJ) build/test/test_native_wolfssl.o build/port/wolfssl_io.o build/certs/server_key.o build/certs/ca_cert.o build/certs/server_cert.o
201219
@echo "[LD] $@"
202-
@$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(BEGIN_GROUP) $(^) -lwolfssl $(END_GROUP)
220+
@$(CC) $(CFLAGS) -o $@ $(BEGIN_GROUP) $(^) $(LDFLAGS) -lwolfssl $(END_GROUP)
203221

204222
build/ipfilter-logger: $(IPFILTER_OBJ) build/test/ipfilter_logger.o build/port/wolfssl_io.o build/certs/server_key.o build/certs/ca_cert.o build/certs/server_cert.o
205223
@echo "[LD] $@"
206-
@$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(BEGIN_GROUP) $(^) -lwolfssl $(END_GROUP)
224+
@$(CC) $(CFLAGS) -o $@ $(BEGIN_GROUP) $(^) $(LDFLAGS) -lwolfssl $(END_GROUP)
207225

208226
build/ipfilter/wolfip.o: src/wolfip.c
209227
@mkdir -p `dirname $@` || true
@@ -214,7 +232,7 @@ build/test/ipfilter_logger.o: CFLAGS+=-DCONFIG_IPFILTER=1
214232

215233
build/test-wolfssl-forwarding: build/test/test_wolfssl_forwarding.o build/test/wolfip_forwarding.o $(TAP_OBJ) build/port/wolfssl_io.o build/certs/server_key.o build/certs/ca_cert.o build/certs/server_cert.o
216234
@echo "[LD] $@"
217-
@$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(BEGIN_GROUP) $(^) -lwolfssl $(END_GROUP)
235+
@$(CC) $(CFLAGS) -o $@ $(BEGIN_GROUP) $(^) $(LDFLAGS) -lwolfssl $(END_GROUP)
218236

219237
build/test/test_wolfssl_forwarding.o: CFLAGS+=-DWOLFIP_MAX_INTERFACES=2 -DWOLFIP_ENABLE_FORWARDING=1
220238

@@ -226,11 +244,11 @@ build/test/wolfip_forwarding.o: src/wolfip.c
226244
build/test/test_ttl_expired.o: CFLAGS+=-DWOLFIP_MAX_INTERFACES=2 -DWOLFIP_ENABLE_FORWARDING=1
227245
build/test-ttl-expired: build/test/test_ttl_expired.o build/test/wolfip_forwarding.o
228246
@echo "[LD] $@"
229-
@$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(BEGIN_GROUP) $(^) $(END_GROUP)
247+
@$(CC) $(CFLAGS) -o $@ $(BEGIN_GROUP) $(^) $(LDFLAGS) $(END_GROUP)
230248

231249
build/test-httpd: $(OBJ) build/test/test_httpd.o build/port/wolfssl_io.o build/certs/server_key.o build/certs/server_cert.o build/http/httpd.o
232250
@echo "[LD] $@"
233-
@$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(BEGIN_GROUP) $(^) -lwolfssl $(END_GROUP)
251+
@$(CC) $(CFLAGS) -o $@ $(BEGIN_GROUP) $(^) $(LDFLAGS) -lwolfssl $(END_GROUP)
234252

235253
build/%.o: src/%.c
236254
@mkdir -p `dirname $@` || true

config.h

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,18 @@
1111
#define MAX_TCPSOCKETS 4
1212
#define MAX_UDPSOCKETS 2
1313
#define MAX_ICMPSOCKETS 2
14-
#define RXBUF_SIZE LINK_MTU * 16
15-
#define TXBUF_SIZE LINK_MTU * 16
14+
#define RXBUF_SIZE (20 * 1024)
15+
#define TXBUF_SIZE (32 * 1024)
1616

1717
#ifndef WOLFIP_POSIX_TCPDUMP
1818
#define WOLFIP_POSIX_TCPDUMP 0
1919
#endif
2020

21+
/* POSIX Network Device Selection */
22+
#ifndef WOLFIP_USE_VDE
23+
#define WOLFIP_USE_VDE 0 /* 0 = TAP device (default), 1 = VDE */
24+
#endif
25+
2126
#define MAX_NEIGHBORS 16
2227

2328
#ifndef WOLFIP_MAX_INTERFACES

0 commit comments

Comments
 (0)