|
|
@ -25,15 +25,15 @@ struct asio_evt_pkt
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
struct win32_tun_io;
|
|
|
|
struct win32_tun_io;
|
|
|
|
|
|
|
|
|
|
|
|
extern "C" DWORD FAR PASCAL
|
|
|
|
extern "C" DWORD FAR PASCAL
|
|
|
|
tun_ev_loop(void* unused);
|
|
|
|
tun_ev_loop(void* unused);
|
|
|
|
|
|
|
|
|
|
|
|
// list of TUN listeners (useful for exits or other nodes with multiple TUNs)
|
|
|
|
// list of TUN listeners (useful for exits or other nodes with multiple TUNs)
|
|
|
|
std::list< win32_tun_io* > tun_listeners;
|
|
|
|
std::list< win32_tun_io* > tun_listeners;
|
|
|
|
|
|
|
|
|
|
|
|
// a single event queue for the TUN interface
|
|
|
|
// a single event queue for the TUN interface
|
|
|
|
HANDLE tun_event_queue =
|
|
|
|
HANDLE tun_event_queue = INVALID_HANDLE_VALUE;
|
|
|
|
INVALID_HANDLE_VALUE; // we pass this to the event loop thread procedure
|
|
|
|
|
|
|
|
// upon setup
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// we hand the kernel our thread handles to process completion events
|
|
|
|
// we hand the kernel our thread handles to process completion events
|
|
|
|
HANDLE* kThreadPool;
|
|
|
|
HANDLE* kThreadPool;
|
|
|
|