Hi all,

I'm working on openVPN server that is available to me. I have built it and configured it properly.

Actualy, i need to understand how multiple clients handling is done in openVPN server code. i need to ask how it is implemented using threads, fork(), etc.

What is architecture that is implemented in openVPN to handle multiple clients.
I studied flow in its code like :

tunnel_server() calls tunnel_server_tcp()
tunnel_server_tcp() calls multi_tcp_process_io()
multi_tcp_process_io() calls multi_create_instance_tcp()
multi_create_instance_tcp() calls multi_create_instance()
multi_create_instance()calls inherit_context_child()
inherit_context_child() calls init_instance()

but i m not getting proper idea how multiple client's instance are getting created what's going inside code whether threads(getting created ) or new process is created using fork().

I think mutex are used ?

Please guide me to understand flow (internal implementation and functions used) of handling multiple clients.

Thanking you,

Regards,
Tarun.