1 // SoftEther VPN Source Code - Stable Edition Repository
2 // Cedar Communication Module
3 //
4 // SoftEther VPN Server, Client and Bridge are free software under the Apache License, Version 2.0.
5 //
6 // Copyright (c) Daiyuu Nobori.
7 // Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
8 // Copyright (c) SoftEther Corporation.
9 // Copyright (c) all contributors on SoftEther VPN project in GitHub.
10 //
11 // All Rights Reserved.
12 //
13 // http://www.softether.org/
14 //
15 // This stable branch is officially managed by Daiyuu Nobori, the owner of SoftEther VPN Project.
16 // Pull requests should be sent to the Developer Edition Master Repository on https://github.com/SoftEtherVPN/SoftEtherVPN
17 //
18 // License: The Apache License, Version 2.0
19 // https://www.apache.org/licenses/LICENSE-2.0
20 //
21 // DISCLAIMER
22 // ==========
23 //
24 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
25 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
26 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
27 // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
28 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
29 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
30 // SOFTWARE.
31 //
32 // THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN, UNDER
33 // JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY, MERGE, PUBLISH,
34 // DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS SOFTWARE, THAT ANY
35 // JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS SOFTWARE OR ITS CONTENTS,
36 // AGAINST US (SOFTETHER PROJECT, SOFTETHER CORPORATION, DAIYUU NOBORI OR OTHER
37 // SUPPLIERS), OR ANY JURIDICAL DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND
38 // OF USING, COPYING, MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING,
39 // AND/OR SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
40 // CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO EXCLUSIVE
41 // JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO, JAPAN. YOU MUST WAIVE
42 // ALL DEFENSES OF LACK OF PERSONAL JURISDICTION AND FORUM NON CONVENIENS.
43 // PROCESS MAY BE SERVED ON EITHER PARTY IN THE MANNER AUTHORIZED BY APPLICABLE
44 // LAW OR COURT RULE.
45 //
46 // USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS YOU HAVE
47 // A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY CRIMINAL LAWS OR CIVIL
48 // RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS SOFTWARE IN OTHER COUNTRIES IS
49 // COMPLETELY AT YOUR OWN RISK. THE SOFTETHER VPN PROJECT HAS DEVELOPED AND
50 // DISTRIBUTED THIS SOFTWARE TO COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING
51 // CIVIL RIGHTS INCLUDING PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER
52 // COUNTRIES' LAWS OR CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES.
53 // WE HAVE NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
54 // INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+ COUNTRIES
55 // AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE WORLD, WITH
56 // DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY COUNTRIES' LAWS, REGULATIONS
57 // AND CIVIL RIGHTS TO MAKE THE SOFTWARE COMPLY WITH ALL COUNTRIES' LAWS BY THE
58 // PROJECT. EVEN IF YOU WILL BE SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A
59 // PUBLIC SERVANT IN YOUR COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE
60 // LIABLE TO RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
61 // RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT JUST A
62 // STATEMENT FOR WARNING AND DISCLAIMER.
63 //
64 // READ AND UNDERSTAND THE 'WARNING.TXT' FILE BEFORE USING THIS SOFTWARE.
65 // SOME SOFTWARE PROGRAMS FROM THIRD PARTIES ARE INCLUDED ON THIS SOFTWARE WITH
66 // LICENSE CONDITIONS WHICH ARE DESCRIBED ON THE 'THIRD_PARTY.TXT' FILE.
67 //
68 //
69 // SOURCE CODE CONTRIBUTION
70 // ------------------------
71 //
72 // Your contribution to SoftEther VPN Project is much appreciated.
73 // Please send patches to us through GitHub.
74 // Read the SoftEther VPN Patch Acceptance Policy in advance:
75 // http://www.softether.org/5-download/src/9.patch
76 //
77 //
78 // DEAR SECURITY EXPERTS
79 // ---------------------
80 //
81 // If you find a bug or a security vulnerability please kindly inform us
82 // about the problem immediately so that we can fix the security problem
83 // to protect a lot of users around the world as soon as possible.
84 //
85 // Our e-mail address for security reports is:
86 // softether-vpn-security [at] softether.org
87 //
88 // Please note that the above e-mail address is not a technical support
89 // inquiry address. If you need technical assistance, please visit
90 // http://www.softether.org/ and ask your question on the users forum.
91 //
92 // Thank you for your cooperation.
93 //
94 //
95 // NO MEMORY OR RESOURCE LEAKS
96 // ---------------------------
97 //
98 // The memory-leaks and resource-leaks verification under the stress
99 // test has been passed before release this source code.
100 
101 
102 // Command.h
103 // Header of Command.c
104 
105 #ifndef	COMMAND_H
106 #define	COMMAND_H
107 
108 // Constants
109 #define	TRAFFIC_DEFAULT_PORT		9821
110 #define	TRAFFIC_NUMTCP_MAX			32
111 #define	TRAFFIC_NUMTCP_DEFAULT		32
112 #define	TRAFFIC_SPAN_DEFAULT		15
113 #define	TRAFFIC_TYPE_DOWNLOAD		1
114 #define	TRAFFIC_TYPE_UPLOAD			2
115 #define	TRAFFIC_TYPE_FULL			0
116 #define	TRAFFIC_BUF_SIZE			65535
117 #define	TRAFFIC_VER_STR_SIZE		16
118 #define	TRAFFIC_VER_STR				"TrafficServer\r\n"
119 
120 // Constants for Win32
121 #define	VPNCMD_BOOTSTRAP_REG_KEYNAME	"Software\\" GC_REG_COMPANY_NAME "\\VPN Command Line Utility"
122 #define	VPNCMD_BOOTSTRAP_REG_VALUENAME_VER	"InstalledVersion"
123 #define	VPNCMD_BOOTSTRAP_REG_VALUENAME_PATH	"InstalledPath"
124 #define	VPNCMD_BOOTSTRAP_FILENAME		"|vpncmdsys.exe"
125 #define	VPNCMD_BOOTSTRAP_FILENAME_X64	"|vpncmdsys_x64.exe"
126 #define	VPNCMD_BOOTSTRAP_FILENAME_IA64	"|vpncmdsys_ia64.exe"
127 
128 
129 // Traffic test results
130 struct TT_RESULT
131 {
132 	bool Raw;					// Whether raw data
133 	bool Double;				// Whether it is doubled
134 	UINT64 NumBytesUpload;		// Uploaded size
135 	UINT64 NumBytesDownload;	// Downloaded size
136 	UINT64 NumBytesTotal;		// Total size
137 	UINT64 Span;				// Period (in milliseconds)
138 	UINT64 BpsUpload;			// Upload throughput
139 	UINT64 BpsDownload;			// Download throughput
140 	UINT64 BpsTotal;			// Total throughput
141 };
142 
143 // Text display function
144 typedef void (TT_PRINT_PROC)(void *param, wchar_t *str);
145 
146 // Client side socket
147 struct TTC_SOCK
148 {
149 	SOCK *Sock;				// Socket
150 	UINT State;				// State
151 	UINT64 NumBytes;		// Transmitted bytes
152 	bool Download;			// Download socket
153 	bool ServerUploadReportReceived;	// Complete to receive the report of upload amount from the server
154 	UINT64 NextSendRequestReportTick;	// Time to request a next report
155 	UINT Id;
156 	bool HideErrMsg;
157 };
158 
159 // Traffic test Client
160 struct TTC
161 {
162 	TT_PRINT_PROC *Print;	// Text display function
163 	void *Param;			// Any parameters
164 	bool Double;			// Double mode
165 	bool Raw;				// Raw data mode
166 	UINT Port;				// Port number
167 	char Host[MAX_HOST_NAME_LEN + 1];	// Host name
168 	UINT NumTcp;			// Number of TCP connections
169 	UINT Type;				// Type
170 	UINT64 Span;			// Period
171 	UINT64 RealSpan;		// The actual span
172 	THREAD *Thread;			// Thread
173 	volatile bool Halt;		// Halting flag
174 	bool *Cancel;			// Halting flag 2
175 	LIST *ItcSockList;		// Client socket list
176 	TT_RESULT Result;		// Result
177 	UINT ErrorCode;			// Error code
178 	bool AbnormalTerminated;	// Abnormal termination
179 	EVENT *StartEvent;		// Start event
180 	EVENT *InitedEvent;		// Initialize completion notification event
181 	LIST *WorkerThreadList;	// List of worker threads
182 
183 	UINT flag1, flag2;
184 
185 	UINT64 session_id;
186 	UINT64 end_tick;
187 	UINT64 start_tick;
188 };
189 
190 // Traffic test worker thread
191 struct TTC_WORKER
192 {
193 	THREAD *WorkerThread;
194 	TTC *Ttc;
195 	LIST *SockList;			// Client socket list
196 	SOCK_EVENT *SockEvent;	// Socket event
197 	EVENT *StartEvent;		// Start event
198 	bool Ok;				// The result
199 };
200 
201 // Server side socket
202 struct TTS_SOCK
203 {
204 	SOCK *Sock;				// Socket
205 	UINT State;				// State
206 	UINT64 NumBytes;		// Transmitted bytes
207 	bool SockJoined;		// Whether it has been added to the event
208 	UINT Id;				// ID
209 	UINT64 LastWaitTick;	// Retry waiting time to notify the size information to the client
210 	UINT64 SessionId;		// Session ID
211 	bool NoMoreSendData;	// Flag not to send more data
212 	UINT64 FirstRecvTick;	// Time which the data has been received last
213 	UINT64 FirstSendTick;	// Time which the data has been sent last
214 	UINT64 Span;			// Period
215 	UINT64 GiveupSpan;
216 	UINT64 LastCommTime;
217 };
218 
219 // Traffic test server
220 struct TTS
221 {
222 	TT_PRINT_PROC *Print;	// Text display function
223 	void *Param;			// Any parameters
224 	volatile bool Halt;		// Halting flag
225 	UINT Port;				// Port number
226 	THREAD *Thread;			// Thread
227 	THREAD *IPv6AcceptThread;	// IPv6 Accept thread
228 	SOCK *ListenSocket;		// Socket to wait
229 	SOCK *ListenSocketV6;	// Socket to wait (IPv6)
230 	UINT ErrorCode;			// Error code
231 	UINT IdSeed;			// ID value
232 	LIST *WorkerList;		// Worker threads list
233 };
234 
235 // Traffic test worker thread
236 struct TTS_WORKER
237 {
238 	TTS *Tts;				// TTS
239 	THREAD *WorkThread;		// Worker thread
240 	SOCK_EVENT *SockEvent;	// Socket event
241 	LIST *TtsSockList;		// Server socket list
242 	bool NewSocketArrived;	// New socket has arrived
243 };
244 
245 // VPN Tools context
246 struct PT
247 {
248 	CONSOLE *Console;	// Console
249 	UINT LastError;		// Last error
250 	wchar_t *CmdLine;	// Command line to execute
251 };
252 
253 // Server management context
254 struct PS
255 {
256 	bool ConsoleForServer;	// Console for the server (always true)
257 	CONSOLE *Console;	// Console
258 	RPC *Rpc;			// RPC
259 	char *ServerName;	// Server name
260 	UINT ServerPort;	// Port number
261 	char *HubName;		// Virtual HUB name in the currently managed
262 	UINT LastError;		// Last error
263 	char *AdminHub;		// Virtual HUB to be managed by default
264 	wchar_t *CmdLine;	// Command line to execute
265 	CAPSLIST *CapsList;	// Caps list
266 };
267 
268 // Client management context
269 struct PC
270 {
271 	bool ConsoleForServer;	// Console for the server (always false)
272 	CONSOLE *Console;	// Console
273 	REMOTE_CLIENT *RemoteClient;	// Remote client
274 	char *ServerName;	// Server name
275 	UINT LastError;		// Last error
276 	wchar_t *CmdLine;	// Command line
277 };
278 
279 // A column of the table
280 struct CTC
281 {
282 	wchar_t *String;	// String
283 	bool Right;			// Right justification
284 };
285 
286 // A row of the table
287 struct CTR
288 {
289 	wchar_t **Strings;	// String list
290 };
291 
292 // Table for console
293 struct CT
294 {
295 	LIST *Columns;		// Column list
296 	LIST *Rows;			// Row list
297 };
298 
299 UINT CommandMain(wchar_t *command_line);
300 UINT VpnCmdProc(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
301 bool ParseHostPort(char *src, char **host, UINT *port, UINT default_port);
302 bool ParseHostPortAtmark(char *src, char **host, UINT *port, UINT default_port);
303 CT *CtNew();
304 void CtFree(CT *ct, CONSOLE *c);
305 void CtFreeEx(CT *ct, CONSOLE *c, bool standard_view);
306 void CtInsertColumn(CT *ct, wchar_t *str, bool right);
307 CT *CtNewStandard();
308 CT *CtNewStandardEx();
309 void CtInsert(CT *ct, ...);
310 void CtPrint(CT *ct, CONSOLE *c);
311 void CtPrintStandard(CT *ct, CONSOLE *c);
312 void CtPrintRow(CONSOLE *c, UINT num, UINT *widths, wchar_t **strings, bool *rights, char separate_char);
313 void VpnCmdInitBootPath();
314 void OutRpcTtResult(PACK *p, TT_RESULT *t);
315 void InRpcTtResult(PACK *p, TT_RESULT *t);
316 
317 void CmdPrintError(CONSOLE *c, UINT err);
318 void CmdPrintAbout(CONSOLE *c);
319 void CmdPrintRow(CONSOLE *c, wchar_t *title, wchar_t *tag, ...);
320 wchar_t *CmdPromptPort(CONSOLE *c, void *param);
321 wchar_t *CmdPromptChoosePassword(CONSOLE *c, void *param);
322 bool CmdEvalPort(CONSOLE *c, wchar_t *str, void *param);
323 void CmdInsertTrafficInfo(CT *ct, TRAFFIC *t);
324 wchar_t *GetHubTypeStr(UINT type);
325 wchar_t *GetServerTypeStr(UINT type);
326 char *CmdPasswordPrompt(CONSOLE *c);
327 bool CmdEvalIp(CONSOLE *c, wchar_t *str, void *param);
328 wchar_t *PsClusterSettingMemberPromptIp(CONSOLE *c, void *param);
329 bool CmdEvalHostAndPort(CONSOLE *c, wchar_t *str, void *param);
330 LIST *StrToPortList(char *str);
331 bool CmdEvalPortList(CONSOLE *c, wchar_t *str, void *param);
332 wchar_t *PsClusterSettingMemberPromptPorts(CONSOLE *c, void *param);
333 K *CmdLoadKey(CONSOLE *c, wchar_t *filename);
334 bool CmdLoadCertAndKey(CONSOLE *c, X **xx, K **kk, wchar_t *cert_filename, wchar_t *key_filename);
335 bool CmdEvalTcpOrUdp(CONSOLE *c, wchar_t *str, void *param);
336 wchar_t *GetConnectionTypeStr(UINT type);
337 bool CmdEvalHostAndSubnetMask4(CONSOLE *c, wchar_t *str, void *param);
338 bool CmdEvalNetworkAndSubnetMask4(CONSOLE *c, wchar_t *str, void *param);
339 bool CmdEvalNetworkAndSubnetMask6(CONSOLE *c, wchar_t *str, void *param);
340 bool CmdEvalNetworkAndSubnetMask46(CONSOLE *c, wchar_t *str, void *param);
341 bool CmdEvalIpAndMask4(CONSOLE *c, wchar_t *str, void *param);
342 bool CmdEvalIpAndMask6(CONSOLE *c, wchar_t *str, void *param);
343 bool CmdEvalIpAndMask46(CONSOLE *c, wchar_t *str, void *param);
344 wchar_t *GetLogSwitchStr(UINT i);
345 wchar_t *GetPacketLogNameStr(UINT i);
346 UINT StrToLogSwitchType(char *str);
347 UINT StrToPacketLogType(char *str);
348 UINT StrToPacketLogSaveInfoType(char *str);
349 wchar_t *GetProxyTypeStr(UINT i);
350 wchar_t *GetClientAuthTypeStr(UINT i);
351 void PrintPolicyList(CONSOLE *c, char *name);
352 void PrintPolicy(CONSOLE *c, POLICY *pol, bool cascade_mode);
353 bool EditPolicy(CONSOLE *c, POLICY *pol, char *name, char *value, bool cascade_mode);
354 void CmdPrintStatusToListView(CT *ct, RPC_CLIENT_GET_CONNECTION_STATUS *s);
355 void CmdPrintStatusToListViewEx(CT *ct, RPC_CLIENT_GET_CONNECTION_STATUS *s, bool server_mode);
356 bool CmdEvalPassOrDiscard(CONSOLE *c, wchar_t *str, void *param);
357 bool StrToPassOrDiscard(char *str);
358 bool CmdEvalProtocol(CONSOLE *c, wchar_t *str, void *param);
359 UINT StrToProtocol(char *str);
360 bool CmdEvalPortRange(CONSOLE *c, wchar_t *str, void *param);
361 bool ParsePortRange(char *str, UINT *start, UINT *end);
362 wchar_t *GetAuthTypeStr(UINT id);
363 UINT64 StrToDateTime64(char *str);
364 bool CmdEvalDateTime(CONSOLE *c, wchar_t *str, void *param);
365 void CmdPrintNodeInfo(CT *ct, NODE_INFO *info);
366 wchar_t *GetProtocolName(UINT n);
367 void CmdGenerateImportName(REMOTE_CLIENT *r, wchar_t *name, UINT size, wchar_t *old_name);
368 bool CmdIsAccountName(REMOTE_CLIENT *r, wchar_t *name);
369 wchar_t *GetSyslogSettingName(UINT n);
370 
371 
372 void TtPrint(void *param, TT_PRINT_PROC *print_proc, wchar_t *str);
373 void TtGenerateRandomData(UCHAR **buf, UINT *size);
374 void TtsWorkerThread(THREAD *thread, void *param);
375 void TtsListenThread(THREAD *thread, void *param);
376 void TtsAcceptProc(TTS *tts, SOCK *listen_socket);
377 void TtsIPv6AcceptThread(THREAD *thread, void *param);
378 wchar_t *GetTtcTypeStr(UINT type);
379 void TtcPrintSummary(TTC *ttc);
380 void StopTtc(TTC *ttc);
381 void TtcGenerateResult(TTC *ttc);
382 void TtcThread(THREAD *thread, void *param);
383 TTC *NewTtcEx(char *host, UINT port, UINT numtcp, UINT type, UINT64 span, bool dbl, bool raw, TT_PRINT_PROC *print_proc, void *param, EVENT *start_event, bool *cancel);
384 TTC *NewTtc(char *host, UINT port, UINT numtcp, UINT type, UINT64 span, bool dbl, bool raw, TT_PRINT_PROC *print_proc, void *param);
385 UINT FreeTtc(TTC *ttc, TT_RESULT *result);
386 TTS *NewTts(UINT port, void *param, TT_PRINT_PROC *print_proc);
387 UINT FreeTts(TTS *tts);
388 void PtTrafficPrintProc(void *param, wchar_t *str);
389 void TtcPrintResult(CONSOLE *c, TT_RESULT *res);
390 
391 
392 bool SystemCheck();
393 bool CheckKernel();
394 bool CheckMemory();
395 bool CheckStrings();
396 bool CheckFileSystem();
397 bool CheckThread();
398 bool CheckNetwork();
399 void InputToNull(void *p);
400 UINT RetZero();
401 
402 void Win32CmdDebug(bool is_uac);
403 
404 
405 UINT PtConnect(CONSOLE *c, wchar_t *cmdline);
406 PT *NewPt(CONSOLE *c, wchar_t *cmdline);
407 void FreePt(PT *pt);
408 void PtMain(PT *pt);
409 UINT PtMakeCert(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
410 UINT PtMakeCert2048(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
411 UINT PtTrafficClient(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
412 UINT PtTrafficServer(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
413 UINT PtCheck(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
414 
415 
416 UINT PcConnect(CONSOLE *c, char *target, wchar_t *cmdline, char *password);
417 PC *NewPc(CONSOLE *c, REMOTE_CLIENT *remote_client, char *servername, wchar_t *cmdline);
418 void FreePc(PC *pc);
419 void PcMain(PC *pc);
420 UINT PcAbout(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
421 UINT PcVersionGet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
422 UINT PcPasswordSet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
423 UINT PcPasswordGet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
424 UINT PcCertList(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
425 UINT PcCertAdd(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
426 UINT PcCertDelete(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
427 UINT PcCertGet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
428 UINT PcSecureList(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
429 UINT PcSecureSelect(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
430 UINT PcSecureGet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
431 UINT PcNicCreate(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
432 UINT PcNicDelete(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
433 UINT PcNicUpgrade(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
434 UINT PcNicGetSetting(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
435 UINT PcNicSetSetting(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
436 UINT PcNicEnable(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
437 UINT PcNicDisable(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
438 UINT PcNicList(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
439 UINT PcAccountList(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
440 UINT PcAccountCreate(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
441 UINT PcAccountSet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
442 UINT PcAccountGet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
443 UINT PcAccountDelete(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
444 UINT PcAccountUsernameSet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
445 UINT PcAccountAnonymousSet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
446 UINT PcAccountPasswordSet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
447 UINT PcAccountCertSet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
448 UINT PcAccountCertGet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
449 UINT PcAccountEncryptDisable(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
450 UINT PcAccountEncryptEnable(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
451 UINT PcAccountCompressEnable(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
452 UINT PcAccountCompressDisable(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
453 UINT PcAccountProxyNone(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
454 UINT PcAccountProxyHttp(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
455 UINT PcAccountProxySocks(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
456 UINT PcAccountServerCertEnable(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
457 UINT PcAccountServerCertDisable(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
458 UINT PcAccountServerCertSet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
459 UINT PcAccountServerCertDelete(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
460 UINT PcAccountServerCertGet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
461 UINT PcAccountDetailSet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
462 UINT PcAccountRename(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
463 UINT PcAccountConnect(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
464 UINT PcAccountDisconnect(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
465 UINT PcAccountStatusGet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
466 UINT PcAccountNicSet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
467 UINT PcAccountStatusShow(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
468 UINT PcAccountStatusHide(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
469 UINT PcAccountSecureCertSet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
470 UINT PcAccountRetrySet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
471 UINT PcAccountStartupSet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
472 UINT PcAccountStartupRemove(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
473 UINT PcAccountExport(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
474 UINT PcAccountImport(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
475 UINT PcRemoteEnable(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
476 UINT PcRemoteDisable(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
477 UINT PcKeepEnable(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
478 UINT PcKeepDisable(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
479 UINT PcKeepSet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
480 UINT PcKeepGet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
481 
482 
483 PS *NewPs(CONSOLE *c, RPC *rpc, char *servername, UINT serverport, char *hubname, char *adminhub, wchar_t *cmdline);
484 void FreePs(PS *ps);
485 UINT PsConnect(CONSOLE *c, char *host, UINT port, char *hub, char *adminhub, wchar_t *cmdline, char *password);
486 void PsMain(PS *ps);
487 UINT PsAbout(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
488 UINT PsServerInfoGet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
489 UINT PsServerStatusGet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
490 UINT PsListenerCreate(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
491 UINT PsListenerDelete(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
492 UINT PsListenerList(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
493 UINT PsListenerEnable(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
494 UINT PsListenerDisable(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
495 UINT PsServerPasswordSet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
496 UINT PsClusterSettingGet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
497 UINT PsClusterSettingStandalone(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
498 UINT PsClusterSettingController(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
499 UINT PsClusterSettingMember(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
500 UINT PsClusterMemberList(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
501 UINT PsClusterMemberInfoGet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
502 UINT PsClusterMemberCertGet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
503 UINT PsClusterConnectionStatusGet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
504 UINT PsCrash(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
505 UINT PsFlush(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
506 UINT PsDebug(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
507 UINT PsServerCertGet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
508 UINT PsServerKeyGet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
509 UINT PsServerCertSet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
510 UINT PsServerCipherGet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
511 UINT PsServerCipherSet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
512 UINT PsKeepEnable(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
513 UINT PsKeepDisable(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
514 UINT PsKeepSet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
515 UINT PsKeepGet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
516 UINT PsSyslogGet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
517 UINT PsSyslogDisable(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
518 UINT PsSyslogEnable(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
519 UINT PsConnectionList(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
520 UINT PsConnectionGet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
521 UINT PsConnectionDisconnect(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
522 UINT PsBridgeDeviceList(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
523 UINT PsBridgeList(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
524 UINT PsBridgeCreate(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
525 UINT PsBridgeDelete(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
526 UINT PsCaps(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
527 UINT PsReboot(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
528 UINT PsConfigGet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
529 UINT PsConfigSet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
530 UINT PsRouterList(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
531 UINT PsRouterAdd(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
532 UINT PsRouterDelete(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
533 UINT PsRouterStart(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
534 UINT PsRouterStop(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
535 UINT PsRouterIfList(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
536 UINT PsRouterIfAdd(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
537 UINT PsRouterIfDel(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
538 UINT PsRouterTableList(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
539 UINT PsRouterTableAdd(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
540 UINT PsRouterTableDel(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
541 UINT PsLogFileList(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
542 UINT PsLogFileGet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
543 UINT PsHubCreate(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
544 UINT PsHubCreateDynamic(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
545 UINT PsHubCreateStatic(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
546 UINT PsHubDelete(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
547 UINT PsHubSetStatic(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
548 UINT PsHubSetDynamic(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
549 UINT PsHubList(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
550 UINT PsHub(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
551 UINT PsOnline(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
552 UINT PsOffline(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
553 UINT PsSetMaxSession(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
554 UINT PsSetHubPassword(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
555 UINT PsSetEnumAllow(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
556 UINT PsSetEnumDeny(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
557 UINT PsOptionsGet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
558 UINT PsRadiusServerSet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
559 UINT PsRadiusServerDelete(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
560 UINT PsRadiusServerGet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
561 UINT PsStatusGet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
562 UINT PsLogGet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
563 UINT PsLogEnable(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
564 UINT PsLogDisable(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
565 UINT PsLogSwitchSet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
566 UINT PsLogPacketSaveType(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
567 UINT PsCAList(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
568 UINT PsCAAdd(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
569 UINT PsCADelete(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
570 UINT PsCAGet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
571 UINT PsCascadeList(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
572 UINT PsCascadeCreate(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
573 UINT PsCascadeSet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
574 UINT PsCascadeGet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
575 UINT PsCascadeDelete(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
576 UINT PsCascadeUsernameSet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
577 UINT PsCascadeAnonymousSet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
578 UINT PsCascadePasswordSet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
579 UINT PsCascadeCertSet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
580 UINT PsCascadeCertGet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
581 UINT PsCascadeEncryptEnable(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
582 UINT PsCascadeEncryptDisable(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
583 UINT PsCascadeCompressEnable(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
584 UINT PsCascadeCompressDisable(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
585 UINT PsCascadeProxyNone(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
586 UINT PsCascadeProxyHttp(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
587 UINT PsCascadeProxySocks(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
588 UINT PsCascadeServerCertEnable(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
589 UINT PsCascadeServerCertDisable(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
590 UINT PsCascadeServerCertSet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
591 UINT PsCascadeServerCertDelete(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
592 UINT PsCascadeServerCertGet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
593 UINT PsCascadeDetailSet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
594 UINT PsCascadePolicyRemove(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
595 UINT PsCascadePolicySet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
596 UINT PsPolicyList(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
597 UINT PsCascadeStatusGet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
598 UINT PsCascadeRename(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
599 UINT PsCascadeOnline(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
600 UINT PsCascadeOffline(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
601 UINT PsAccessAdd(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
602 UINT PsAccessAddEx(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
603 UINT PsAccessAdd6(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
604 UINT PsAccessAddEx6(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
605 UINT PsAccessList(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
606 UINT PsAccessDelete(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
607 UINT PsAccessEnable(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
608 UINT PsAccessDisable(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
609 UINT PsUserList(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
610 UINT PsUserCreate(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
611 UINT PsUserSet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
612 UINT PsUserDelete(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
613 UINT PsUserGet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
614 UINT PsUserAnonymousSet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
615 UINT PsUserPasswordSet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
616 UINT PsUserCertSet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
617 UINT PsUserCertGet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
618 UINT PsUserSignedSet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
619 UINT PsUserRadiusSet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
620 UINT PsUserNTLMSet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
621 UINT PsUserPolicyRemove(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
622 UINT PsUserPolicySet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
623 UINT PsUserExpiresSet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
624 UINT PsGroupList(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
625 UINT PsGroupCreate(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
626 UINT PsGroupSet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
627 UINT PsGroupDelete(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
628 UINT PsGroupGet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
629 UINT PsGroupJoin(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
630 UINT PsGroupUnjoin(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
631 UINT PsGroupPolicyRemove(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
632 UINT PsGroupPolicySet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
633 UINT PsSessionList(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
634 UINT PsSessionGet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
635 UINT PsSessionDisconnect(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
636 UINT PsMacTable(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
637 UINT PsMacDelete(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
638 UINT PsIpTable(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
639 UINT PsIpDelete(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
640 UINT PsSecureNatEnable(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
641 UINT PsSecureNatDisable(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
642 UINT PsSecureNatStatusGet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
643 UINT PsSecureNatHostGet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
644 UINT PsSecureNatHostSet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
645 UINT PsNatGet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
646 UINT PsNatEnable(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
647 UINT PsNatDisable(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
648 UINT PsNatSet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
649 UINT PsNatTable(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
650 UINT PsDhcpGet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
651 UINT PsDhcpEnable(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
652 UINT PsDhcpDisable(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
653 UINT PsDhcpSet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
654 UINT PsDhcpTable(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
655 UINT PsAdminOptionList(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
656 UINT PsAdminOptionSet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
657 UINT PsExtOptionList(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
658 UINT PsExtOptionSet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
659 UINT PsCrlList(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
660 UINT PsCrlAdd(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
661 UINT PsCrlDel(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
662 UINT PsCrlGet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
663 UINT PsAcList(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
664 UINT PsAcAdd(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
665 UINT PsAcAdd6(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
666 UINT PsAcGet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
667 UINT PsAcDel(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
668 UINT PsLicenseAdd(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
669 UINT PsLicenseDel(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
670 UINT PsLicenseList(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
671 UINT PsLicenseStatus(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
672 UINT PsIPsecEnable(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
673 UINT PsIPsecGet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
674 UINT PsEtherIpClientAdd(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
675 UINT PsEtherIpClientDelete(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
676 UINT PsEtherIpClientList(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
677 UINT PsOpenVpnEnable(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
678 UINT PsOpenVpnGet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
679 UINT PsOpenVpnMakeConfig(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
680 UINT PsSstpEnable(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
681 UINT PsSstpGet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
682 UINT PsServerCertRegenerate(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
683 UINT PsVpnOverIcmpDnsEnable(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
684 UINT PsVpnOverIcmpDnsGet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
685 UINT PsDynamicDnsGetStatus(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
686 UINT PsDynamicDnsSetHostname(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
687 UINT PsVpnAzureSetEnable(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
688 UINT PsVpnAzureGetStatus(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
689 
690 
691 #endif	// COMMAND_H
692 
693 
694