Hello sir, There are 5 patces in this series. 2 pathces for updating README.md file, 1 patch for refactor mutex helpers, 2 patches for fixing config template. Please review! Signed-off-by: Alviro Iskandar Setiawan <alviro.iskandar@gmail.com> --- Alviro Iskandar Setiawan (5): README: Remove RELEASE_MODE var README: Add instruction to build with GUI mutex: Refactor mutex helpers config/client: Fix data_dir for client config template config/{client,server}: Update interface name to teavpn2 README.md | 8 +++- config/client.ini | 4 +- config/server.ini | 2 +- src/teavpn2/mutex.h | 89 +++++++++++++++++---------------------------- 4 files changed, 44 insertions(+), 59 deletions(-) base-commit: 5c844c03662094948fa0c50b38ac299ad4ff85e5 -- 2.32.0
Since we use the configure script, we always do -O2 for all builds and RELEASE_MODE variable is no longer used. Remove it from the build instruction in README file. Signed-off-by: Alviro Iskandar Setiawan <alviro.iskandar@gmail.com> --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8f15aed..c0a650f 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ welcomed). ``` git clone https://github.com/TeaInside/teavpn2; cd teavpn2; -make -j$(nproc) RELEASE_MODE=1; +make -j$(nproc); ``` # Issues -- 2.32.0
Since we're now supporting GUI, add the instruction to build with GUI support. Signed-off-by: Alviro Iskandar Setiawan <alviro.iskandar@gmail.com> --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index c0a650f..e8e16bc 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,12 @@ cd teavpn2; make -j$(nproc); ``` +For build with GUI support: +``` +./configure --gui; +make -j$(nproc); +``` + # Issues We welcome bug reports, feature requests and questions through GitHub repository https://github.com/TeaInside/teavpn2 (kindly to open an issue). -- 2.32.0
Refactor mutex helpers, make it simpler. The old code was too verbose and harder to read. Signed-off-by: Alviro Iskandar Setiawan <alviro.iskandar@gmail.com> --- src/teavpn2/mutex.h | 89 +++++++++++++++++---------------------------- 1 file changed, 34 insertions(+), 55 deletions(-) diff --git a/src/teavpn2/mutex.h b/src/teavpn2/mutex.h index cd86779..96abc0d 100644 --- a/src/teavpn2/mutex.h +++ b/src/teavpn2/mutex.h @@ -10,99 +10,78 @@ #include <pthread.h> #include <teavpn2/common.h> -#define MUTEX_LEAK_ASSERT 0 -#define MUTEX_LOCK_ASSERT 0 +#ifndef __MUTEX_LEAK_ASSERT +#define __MUTEX_LEAK_ASSERT 0 +#endif + struct tmutex { pthread_mutex_t mutex; -#if MUTEX_LEAK_ASSERT + +#if __MUTEX_LEAK_ASSERT union { void *__leak_assert; - uint64_t need_destroy; + uintptr_t need_destroy; }; #else bool need_destroy; -#endif /* #if MUTEX_LEAK_ASSERT */ +#endif }; -static __always_inline void mutex_init_mark(struct tmutex *m) -{ -#if MUTEX_LEAK_ASSERT - m->__leak_assert = malloc(1); - if (unlikely(!m->__leak_assert)) - panic("Cannot initialize __leak_assert for mutex_init_mark"); -#else - m->need_destroy = 1; -#endif /* #if MUTEX_LEAK_ASSERT */ +#define MUTEX_INITIALIZER \ +{ \ + .mutex = PTHREAD_MUTEX_INITIALIZER \ } +#define DEFINE_MUTEX(V) struct tmutex V = MUTEX_INITIALIZER -static __cold __always_inline int mutex_init(struct tmutex *m, - const pthread_mutexattr_t *attr) + +static __always_inline int mutex_init(struct tmutex *m, + const pthread_mutexattr_t *attr) { int ret; - memset(m, 0, sizeof(*m)); ret = pthread_mutex_init(&m->mutex, attr); if (unlikely(ret)) { - ret = errno; pr_err("pthread_mutex_init(): " PRERF, PREAR(ret)); return -ret; } - mutex_init_mark(m); - return ret; -} - -static __hot __always_inline int mutex_lock(struct tmutex *m) -{ - int ret; - __asm__ volatile("":"+r"(m)::"memory"); - ret = pthread_mutex_lock(&m->mutex); -#if MUTEX_LOCK_ASSERT - BUG_ON(ret != 0); +#if __MUTEX_LEAK_ASSERT + m->__leak_assert = malloc(1); + BUG_ON(!m->__leak_assert); +#else + m->need_destroy = true; #endif + return ret; } - -static __hot __always_inline int mutex_unlock(struct tmutex *m) +static __always_inline int mutex_lock(struct tmutex *m) { - int ret; - __asm__ volatile("":"+r"(m)::"memory"); - ret = pthread_mutex_unlock(&m->mutex); -#if MUTEX_LOCK_ASSERT - BUG_ON(ret != 0); -#endif - return ret; + return pthread_mutex_lock(&m->mutex); } +static __always_inline int mutex_unlock(struct tmutex *m) +{ + return pthread_mutex_unlock(&m->mutex); +} static __always_inline int mutex_trylock(struct tmutex *m) { - __asm__ volatile("":"+r"(m)::"memory"); return pthread_mutex_trylock(&m->mutex); } - -static __cold inline int mutex_destroy(struct tmutex *m) +static __always_inline int mutex_destroy(struct tmutex *m) { - if (m->need_destroy) { - int ret = pthread_mutex_destroy(&m->mutex); - if (unlikely(ret)) { - pr_err("pthread_mutex_destroy(): " PRERF, PREAR(ret)); - return -ret; - } - -#if MUTEX_LEAK_ASSERT - free(m->__leak_assert); - m->__leak_assert = NULL; -#else - m->need_destroy = 0; + BUG_ON(!m->need_destroy); + +#if __MUTEX_LEAK_ASSERT + free(m->__leak_assert); #endif - } - return 0; + + return pthread_mutex_destroy(&m->mutex); } #endif /* #ifndef TEAVPN2__MUTEX_H */ -- 2.32.0
The data_dir was data/server, that's wrong because it's client config. The client doesn't use data/server directory. Change the data_dir to data/client. Signed-off-by: Alviro Iskandar Setiawan <alviro.iskandar@gmail.com> --- config/client.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/client.ini b/config/client.ini index e180ccf..9495e62 100644 --- a/config/client.ini +++ b/config/client.ini @@ -5,7 +5,7 @@ [sys] thread = 4 verbose_level = 2 -data_dir = data/server +data_dir = data/client [socket] use_encryption = 0 -- 2.32.0
Change the default interface name to teavpn2-server-001 for server and teavpn2-client-001 for client. The purpose is for better readability and the ease of debugging. Signed-off-by: Alviro Iskandar Setiawan <alviro.iskandar@gmail.com> --- config/client.ini | 2 +- config/server.ini | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/config/client.ini b/config/client.ini index 9495e62..fb82aaf 100644 --- a/config/client.ini +++ b/config/client.ini @@ -15,7 +15,7 @@ server_addr = 127.0.0.1 server_port = 44444 [iface] -dev = tvpnc0 +dev = teavpn2-client-001 ; ; Set override_default to 1 if you want to use VPN as diff --git a/config/server.ini b/config/server.ini index 0afafff..f75ad2d 100644 --- a/config/server.ini +++ b/config/server.ini @@ -18,7 +18,7 @@ ssl_cert = data/server/default_cert.pem ssl_priv_key = data/server/default_key.pem [iface] -dev = tvpns0 +dev = teavpn2-server-001 mtu = 1450 ipv4 = 10.5.5.1 ipv4_netmask = 255.255.255.0 -- 2.32.0
On Sat, Jan 22, 2022 at 12:06 PM Alviro Iskandar Setiawan wrote:
>
> Hello sir,
> There are 5 patces in this series. 2 pathces for updating README.md file,
> 1 patch for refactor mutex helpers, 2 patches for fixing config template.
>
Applied, thanks!
--
Ammar Faizi
On 1/22/22 12:14 PM, Ammar Faizi wrote:
> On Sat, Jan 22, 2022 at 12:06 PM Alviro Iskandar Setiawan wrote:
>>
>> Hello sir,
>> There are 5 patces in this series. 2 pathces for updating README.md file,
>> 1 patch for refactor mutex helpers, 2 patches for fixing config template.
>>
>
> Applied, thanks!
>
BTW Viro, regarding the GUI support. Who will continue it? Are you still
progressing on this one?
--
Ammar Faizi
On Sat, Jan 22, 2022 at 12:41 PM Ammar Faizi <ammarfaizi2@gmail.com> wrote: > On 1/22/22 12:14 PM, Ammar Faizi wrote: > > On Sat, Jan 22, 2022 at 12:06 PM Alviro Iskandar Setiawan wrote: > >> > >> Hello sir, > >> There are 5 patces in this series. 2 pathces for updating README.md file, > >> 1 patch for refactor mutex helpers, 2 patches for fixing config template. > >> > > > > Applied, thanks! > > > > BTW Viro, regarding the GUI support. Who will continue it? Are you still > progressing on this one? i'm not sure sir, but khaerul was working on the config editor https://t.me/TeaInside/48193
On 1/22/22 12:44 PM, Alviro Iskandar Setiawan wrote:
> On Sat, Jan 22, 2022 at 12:41 PM Ammar Faizi <ammarfaizi2@gmail.com> wrote:
>> On 1/22/22 12:14 PM, Ammar Faizi wrote:
>>> On Sat, Jan 22, 2022 at 12:06 PM Alviro Iskandar Setiawan wrote:
>>>>
>>>> Hello sir,
>>>> There are 5 patces in this series. 2 pathces for updating README.md file,
>>>> 1 patch for refactor mutex helpers, 2 patches for fixing config template.
>>>>
>>>
>>> Applied, thanks!
>>>
>>
>> BTW Viro, regarding the GUI support. Who will continue it? Are you still
>> progressing on this one?
>
> i'm not sure sir, but khaerul was working on the config editor
> https://t.me/TeaInside/48193
OK, let's see how it will go.
--
Ammar Faizi