1 // SoftEther VPN Source Code - Developer Edition Master Branch 2 // Cedar Communication Module 3 4 5 // Link.h 6 // Header of Link.c 7 8 #ifndef LINK_H 9 #define LINK_H 10 11 #include "CedarType.h" 12 13 #include "Mayaqua/MayaType.h" 14 15 struct LINK 16 { 17 bool Started; // Running flag 18 volatile bool Halting; // Halting flag 19 bool Offline; // Offline 20 bool NoOnline; // Do not set to online flag 21 REF *ref; // Reference counter 22 LOCK *lock; // Lock 23 CEDAR *Cedar; // Cedar 24 HUB *Hub; // HUB 25 SESSION *ClientSession; // Client session 26 SESSION *ServerSession; // Server session 27 CLIENT_OPTION *Option; // Client Option 28 CLIENT_AUTH *Auth; // Authentication data 29 POLICY *Policy; // Policy 30 QUEUE *SendPacketQueue; // Transmission packet queue 31 UINT CurrentSendPacketQueueSize; // Current send packet queue size 32 UINT LastError; // Last error 33 bool CheckServerCert; // To check the server certificate 34 X *ServerCert; // Server certificate 35 bool LockFlag; // Lock flag 36 bool *StopAllLinkFlag; // Stop all link flag 37 UINT LastServerConnectionReceivedBlocksNum; // Last server connection recv queue num 38 UINT Flag1; 39 }; 40 41 42 PACKET_ADAPTER *LinkGetPacketAdapter(); 43 bool LinkPaInit(SESSION *s); 44 CANCEL *LinkPaGetCancel(SESSION *s); 45 UINT LinkPaGetNextPacket(SESSION *s, void **data); 46 bool LinkPaPutPacket(SESSION *s, void *data, UINT size); 47 void LinkPaFree(SESSION *s); 48 49 void LinkServerSessionThread(THREAD *t, void *param); 50 LINK *NewLink(CEDAR *cedar, HUB *hub, CLIENT_OPTION *option, CLIENT_AUTH *auth, POLICY *policy); 51 void StartLink(LINK *k); 52 void StopLink(LINK *k); 53 void DelLink(HUB *hub, LINK *k); 54 void LockLink(LINK *k); 55 void UnlockLink(LINK *k); 56 void StopAllLink(HUB *h); 57 void StartAllLink(HUB *h); 58 void SetLinkOnline(LINK *k); 59 void SetLinkOffline(LINK *k); 60 void ReleaseLink(LINK *k); 61 void CleanupLink(LINK *k); 62 void ReleaseAllLink(HUB *h); 63 void NormalizeLinkPolicy(POLICY *p); 64 65 #endif // LINK_H 66 67 68 69 70