diff --git a/community/vde2/APKBUILD b/community/vde2/APKBUILD
index 4ecf2dc1d45a71a3379fcbe0f987ecd337d8d145..82f0a47bacb7937ab53866f4edc17f6c69157e97 100644
--- a/community/vde2/APKBUILD
+++ b/community/vde2/APKBUILD
@@ -1,47 +1,42 @@
 # Maintainer: Michael Zhou <zhoumichaely@gmail.com>
 pkgname=vde2
-pkgver=2.3.2
-pkgrel=18
+pkgver=2.3.3
+pkgrel=0
 pkgdesc="VDE: Virtual Distributed Ethernet. User mode networking for QEMU, UML, etc."
-url="http://vde.sf.net"
+url="https://github.com/virtualsquare/vde-2"
 arch="all"
 options="!check"  # No test suite.
 license="GPL"
-depends="openssl>3"
 install="vde2.pre-install"
-makedepends="linux-headers openssl-dev>3 libpcap-dev python3-dev"
+makedepends="autoconf automake libtool linux-headers wolfssl-dev libpcap-dev python3-dev"
 subpackages="$pkgname-doc $pkgname-dev $pkgname-libs"
-source="https://downloads.sourceforge.net/project/vde/vde2/$pkgver/vde2-$pkgver.tar.gz
+source="$pkgname-$pkgver.tar.gz::https://github.com/virtualsquare/vde-2/archive/refs/tags/v$pkgver.tar.gz
 	musl-build-fix.patch
-	vde_cryptcab-compile-against-openssl-1.1.0.patch
-	inline.patch
+
 	vde2.pre-up
 	vde2.post-down
 	"
+builddir="$srcdir"/vde-2-$pkgver
 
-builddir="$srcdir"/$pkgname-$pkgver
 prepare() {
-	cd "$builddir"
 	default_prepare
 
-	update_config_sub
+	autoreconf -fiv
 }
 
 build() {
-	cd "$builddir"
 	./configure \
 		--build=$CBUILD \
 		--host=$CHOST \
 		--prefix=/usr \
 		--sysconfdir=/etc
 	make -C src/common
-	make -j1 -C src/lib
+	make -C src/lib
 	make
 }
 
 package() {
-	cd "$builddir"
-	make -j1 DESTDIR="$pkgdir" install
+	make DESTDIR="$pkgdir" install
 
 	install -Dm755 "$srcdir"/vde2.pre-up \
 		"$pkgdir"/etc/network/if-pre-up.d/vde2
@@ -55,9 +50,9 @@ libs() {
 	mv "$pkgdir"/usr/lib/lib*.so.* "$subpkgdir"/usr/lib/
 }
 
-sha512sums="b502ceac8eebd30694a25d913c1d321b58ec8ae97dec0b09acc40455f7a97c05040ff395242c144580a9d9d5cb19292055bc94133ea1bde66bfdab40844533a8  vde2-2.3.2.tar.gz
-52d02c3a5a4f5526ed2e653e5720f012501215c0440e26105c585ea0501423da04047f6bad13a71b7378397a9d9274b191007d839876b675e206ed5be0f25372  musl-build-fix.patch
-e24f7728030c1bc89b885c58ecf443d0f7297f6c9f73d87fa37092a691dfac191e65fb07a11ed44b718bbd18011fdb4e034f66ef63a8fbb06dfb06fd51c3826a  vde_cryptcab-compile-against-openssl-1.1.0.patch
-76692aafd60b5c329dd6572a0ef8308f4fcc330f6f8eb4326e11678cf6946e6947bd18a32b0a84cf4cda4a2048e2c73e82c77013368d3335f3145f2121df68d6  inline.patch
+sha512sums="
+d0495aa700984dcc82f85cf7c8125cc10505a8a077fceec45b7fd2bec9c389966381682842e886469fa49239badd9442403d091c2ae5282685085e8262396387  vde2-2.3.3.tar.gz
+f3a8bfd0648d66bf7bce65c67d312774ed2413532700935b06acd9bed851f1e2529194c9a4d748d9cb37327e005cb942feeb964f48a32a0e19e6062a5d374b54  musl-build-fix.patch
 71b29d538bba80b881f239d683215279089c14e8feec05bf27c159ead51094cdfb168281900fa4527f588c624e8f7687df8d3f79377e07d13ad64de613177df3  vde2.pre-up
-d1cf18146145dbe608842c694b05d2906e36553b0ba3fa1ec2e53dbf06027b9e4937ea61aee77c1ccbb73b818f19d55787051eb6d5b09a38c7d18a1dad629190  vde2.post-down"
+d1cf18146145dbe608842c694b05d2906e36553b0ba3fa1ec2e53dbf06027b9e4937ea61aee77c1ccbb73b818f19d55787051eb6d5b09a38c7d18a1dad629190  vde2.post-down
+"
diff --git a/community/vde2/inline.patch b/community/vde2/inline.patch
deleted file mode 100644
index b11840fda45ad462cbcc866250462031838aec13..0000000000000000000000000000000000000000
--- a/community/vde2/inline.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-diff --git a/src/vde_switch/fstp.c b/src/vde_switch/fstp.c
-index ac5e313..26c5a67 100644
---- a/src/vde_switch/fstp.c
-+++ b/src/vde_switch/fstp.c
-@@ -30,14 +30,14 @@ static int numports;
- #ifdef FSTP
- #include <fstp.h>
- /*********************** sending macro used by FSTP & Core ******************/
--void inline ltonstring(unsigned long l,unsigned char *s) {
-+static void ltonstring(unsigned long l,unsigned char *s) {
- 	s[3]=l; l>>=8;
- 	s[2]=l; l>>=8;
- 	s[1]=l; l>>=8;
- 	s[0]=l;
- }
- 
--unsigned long inline nstringtol(unsigned char *s) {
-+static unsigned long nstringtol(unsigned char *s) {
- 	return (s[0]<<24)+(s[1]<<16)+(s[2]<<8)+s[3];
- }
- 
diff --git a/community/vde2/musl-build-fix.patch b/community/vde2/musl-build-fix.patch
index c03459c6e9be38dcc1ad9a4c65da7991d15ef83a..d23e876883c4e614e2b601a8c56f3726f1222aa5 100644
--- a/community/vde2/musl-build-fix.patch
+++ b/community/vde2/musl-build-fix.patch
@@ -1,8 +1,6 @@
-diff --git a/src/vdetaplib/libvdetap.c b/src/vdetaplib/libvdetap.c
-index 00cd401..c70f290 100644
 --- a/src/vdetaplib/libvdetap.c
 +++ b/src/vdetaplib/libvdetap.c
-@@ -121,6 +121,10 @@ int open(const char *path, int flags, ...)
+@@ -121,6 +121,10 @@
  		return native_open(path, flags, data);
  }
  
diff --git a/community/vde2/vde_cryptcab-compile-against-openssl-1.1.0.patch b/community/vde2/vde_cryptcab-compile-against-openssl-1.1.0.patch
deleted file mode 100644
index 227312eabbd399df66c81dfe7869ab7f3ccb63b3..0000000000000000000000000000000000000000
--- a/community/vde2/vde_cryptcab-compile-against-openssl-1.1.0.patch
+++ /dev/null
@@ -1,92 +0,0 @@
---- a/src/vde_cryptcab/cryptcab.c	2011-11-23 16:41:17.000000000 +0000
-+++ b/src/vde_cryptcab/cryptcab.c	2017-03-20 22:54:20.452975075 +0000
-@@ -22,7 +22,7 @@
- 	exit(1);
- }
- 	
--static EVP_CIPHER_CTX ctx;
-+static EVP_CIPHER_CTX *ctx;
- static int ctx_initialized = 0;
- static int encryption_disabled = 0;
- static int nfd;
-@@ -30,6 +30,10 @@
- static struct vde_open_args open_args={.port=0,.group=NULL,.mode=0700};
- static int verbose = 0;
- 
-+#if OPENSSL_VERSION_NUMBER < 0x10100000
-+#define EVP_CIPHER_CTX_reset(x)	EVP_CIPHER_CTX_cleanup(x)
-+#endif
-+
- void vc_printlog(int priority, const char *format, ...)
- {
- 	va_list arg;
-@@ -103,19 +107,21 @@
- 	}
- 
- 	if (!ctx_initialized) {
--		EVP_CIPHER_CTX_init (&ctx);
-+		ctx = EVP_CIPHER_CTX_new ();
-+		if (!ctx)
-+			return -1;
- 		ctx_initialized = 1;
- 	}
- 	
--	EVP_EncryptInit (&ctx, EVP_bf_cbc (), p->key, p->iv);
--	if (EVP_EncryptUpdate (&ctx, dst, &olen, src, len) != 1)
-+	EVP_EncryptInit (ctx, EVP_bf_cbc (), p->key, p->iv);
-+	if (EVP_EncryptUpdate (ctx, dst, &olen, src, len) != 1)
- 	{
- 		fprintf (stderr,"error in encrypt update\n");
- 		olen = -1;
- 		goto cleanup;
- 	}
- 
--	if (EVP_EncryptFinal (&ctx, dst + olen, &tlen) != 1)
-+	if (EVP_EncryptFinal (ctx, dst + olen, &tlen) != 1)
- 	{
- 		fprintf (stderr,"error in encrypt final\n");
- 		olen = -1;
-@@ -124,7 +130,7 @@
- 	olen += tlen;
- 
- cleanup:
--	EVP_CIPHER_CTX_cleanup(&ctx);	
-+	EVP_CIPHER_CTX_reset(ctx);
- 	return olen;
- }
- 
-@@ -138,19 +144,21 @@
- 	}
- 	
- 	if (!ctx_initialized) {
--		EVP_CIPHER_CTX_init (&ctx);
-+		ctx = EVP_CIPHER_CTX_new ();
-+		if (!ctx)
-+			return -1;
- 		ctx_initialized = 1;
- 	}
- 
--	EVP_DecryptInit (&ctx, EVP_bf_cbc (), p->key, p->iv);
--	if (EVP_DecryptUpdate (&ctx, dst, &olen, src, len) != 1)
-+	EVP_DecryptInit (ctx, EVP_bf_cbc (), p->key, p->iv);
-+	if (EVP_DecryptUpdate (ctx, dst, &olen, src, len) != 1)
- 	{
- 		fprintf (stderr,"error in decrypt update\n");
- 		olen = -1;
- 		goto cleanup;
- 	}
- 
--	if (EVP_DecryptFinal (&ctx, dst + olen, &tlen) != 1)
-+	if (EVP_DecryptFinal (ctx, dst + olen, &tlen) != 1)
- 	{
- 		fprintf (stderr,"error in decrypt final\n");
- 		olen = -1;
-@@ -159,7 +167,7 @@
- 	olen += tlen;
- 
- cleanup:
--	EVP_CIPHER_CTX_cleanup(&ctx);	
-+	EVP_CIPHER_CTX_reset (ctx);
- 	return olen;
- }
-