mirror of
https://github.com/SoftEtherVPN/SoftEtherVPN.git
synced 2024-11-22 17:39:53 +03:00
src/Cedar: pass client hostname and cipher to Init() function in PROTO_IMPL
The SSTP implementation must be aware of the cipher in order to be able to report it to the server's internals (i.e. IPC).
This commit is contained in:
parent
3090688506
commit
96a2d5a124
@ -220,7 +220,7 @@ PROTO_SESSION *ProtoNewSession(PROTO *proto, PROTO_IMPL *impl, const IP *src_ip,
|
|||||||
session->SockEvent = NewSockEvent();
|
session->SockEvent = NewSockEvent();
|
||||||
session->InterruptManager = NewInterruptManager();
|
session->InterruptManager = NewInterruptManager();
|
||||||
|
|
||||||
if (impl->Init != NULL && impl->Init(&session->Param, proto->Cedar, session->InterruptManager, session->SockEvent) == false)
|
if (impl->Init != NULL && impl->Init(&session->Param, proto->Cedar, session->InterruptManager, session->SockEvent, NULL, NULL) == false)
|
||||||
{
|
{
|
||||||
Debug("ProtoNewSession(): failed to initialize %s\n", impl->Name());
|
Debug("ProtoNewSession(): failed to initialize %s\n", impl->Name());
|
||||||
|
|
||||||
@ -357,7 +357,7 @@ bool ProtoHandleConnection(PROTO *proto, SOCK *sock, const char *protocol)
|
|||||||
im = NewInterruptManager();
|
im = NewInterruptManager();
|
||||||
se = NewSockEvent();
|
se = NewSockEvent();
|
||||||
|
|
||||||
if (impl->Init != NULL && impl->Init(&impl_data, proto->Cedar, im, se) == false)
|
if (impl->Init != NULL && impl->Init(&impl_data, proto->Cedar, im, se, sock->CipherName, sock->RemoteHostname) == false)
|
||||||
{
|
{
|
||||||
Debug("ProtoHandleConnection(): failed to initialize %s\n", impl->Name());
|
Debug("ProtoHandleConnection(): failed to initialize %s\n", impl->Name());
|
||||||
FreeInterruptManager(im);
|
FreeInterruptManager(im);
|
||||||
|
@ -24,7 +24,7 @@ typedef struct PROTO
|
|||||||
|
|
||||||
typedef struct PROTO_IMPL
|
typedef struct PROTO_IMPL
|
||||||
{
|
{
|
||||||
bool (*Init)(void **param, CEDAR *cedar, INTERRUPT_MANAGER *im, SOCK_EVENT *se);
|
bool (*Init)(void **param, CEDAR *cedar, INTERRUPT_MANAGER *im, SOCK_EVENT *se, const char *cipher, const char *hostname);
|
||||||
void (*Free)(void *param);
|
void (*Free)(void *param);
|
||||||
char *(*Name)();
|
char *(*Name)();
|
||||||
bool (*IsPacketForMe)(const PROTO_MODE mode, const UCHAR *data, const UINT size);
|
bool (*IsPacketForMe)(const PROTO_MODE mode, const UCHAR *data, const UINT size);
|
||||||
|
@ -29,13 +29,15 @@ PROTO_IMPL *OvsGetProtoImpl()
|
|||||||
return &impl;
|
return &impl;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool OvsInit(void **param, CEDAR *cedar, INTERRUPT_MANAGER *im, SOCK_EVENT *se)
|
bool OvsInit(void **param, CEDAR *cedar, INTERRUPT_MANAGER *im, SOCK_EVENT *se, const char *cipher, const char *hostname)
|
||||||
{
|
{
|
||||||
if (param == NULL || cedar == NULL || im == NULL || se == NULL)
|
if (param == NULL || cedar == NULL || im == NULL || se == NULL)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Debug("OvsInit(): cipher: %s, hostname: %s\n", cipher, hostname);
|
||||||
|
|
||||||
*param = NewOpenVpnServer(cedar, im, se);
|
*param = NewOpenVpnServer(cedar, im, se);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -209,7 +209,7 @@ struct OPENVPN_SERVER
|
|||||||
|
|
||||||
//// Function prototype
|
//// Function prototype
|
||||||
PROTO_IMPL *OvsGetProtoImpl();
|
PROTO_IMPL *OvsGetProtoImpl();
|
||||||
bool OvsInit(void **param, CEDAR *cedar, INTERRUPT_MANAGER *im, SOCK_EVENT *se);
|
bool OvsInit(void **param, CEDAR *cedar, INTERRUPT_MANAGER *im, SOCK_EVENT *se, const char *cipher, const char *hostname);
|
||||||
void OvsFree(void *param);
|
void OvsFree(void *param);
|
||||||
char *OvsName();
|
char *OvsName();
|
||||||
bool OvsIsPacketForMe(const PROTO_MODE mode, const UCHAR *data, const UINT size);
|
bool OvsIsPacketForMe(const PROTO_MODE mode, const UCHAR *data, const UINT size);
|
||||||
|
Loading…
Reference in New Issue
Block a user