@@ -55,12 +55,30 @@ ifeq ($(UNAME_S),Darwin)
5555endif
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 ) )
6177endif
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
6583ifeq ($(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
152170clean :
@@ -174,23 +192,23 @@ endif
174192unit:LDFLAGS+ =$(UNIT_LIBS )
175193build/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
179197build/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
183201build/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
187205build/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
191209build/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
196214build/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
200218build/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
204222build/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
208226build/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
215233build/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
219237build/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
226244build/test/test_ttl_expired.o : CFLAGS+=-DWOLFIP_MAX_INTERFACES=2 -DWOLFIP_ENABLE_FORWARDING=1
227245build/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
231249build/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
235253build/% .o : src/% .c
236254 @mkdir -p ` dirname $@ ` || true
0 commit comments