Admin.h 55 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518
  1. // SoftEther VPN Source Code - Developer Edition Master Branch
  2. // Cedar Communication Module
  3. // Admin.h
  4. // Header of Admin.c
  5. #ifndef ADMIN_H
  6. #define ADMIN_H
  7. #include "Account.h"
  8. #include "Cedar.h"
  9. #include "Client.h"
  10. #include "Hub.h"
  11. #include "Logging.h"
  12. #include "Mayaqua/Kernel.h"
  13. // Windows version
  14. struct RPC_WINVER
  15. {
  16. bool IsWindows;
  17. bool IsNT;
  18. bool IsServer;
  19. bool IsBeta;
  20. UINT VerMajor;
  21. UINT VerMinor;
  22. UINT Build;
  23. UINT ServicePack;
  24. char Title[128];
  25. };
  26. // Server-side structure
  27. struct ADMIN
  28. {
  29. SERVER *Server; // Server
  30. bool ServerAdmin; // Server Administrator
  31. char *HubName; // HUB name that can be managed
  32. RPC *Rpc; // RPC
  33. LIST *LogFileList; // Accessible log file list
  34. UINT ClientBuild; // Build number of the client
  35. RPC_WINVER ClientWinVer; // Windows version of client
  36. UINT MaxJsonRpcRecvSize; // Max JSON-RPC Receive Size
  37. char dummy1[MAX_HUBNAME_LEN + 1]; // hubname buffer (dummy)
  38. };
  39. // Test
  40. struct RPC_TEST
  41. {
  42. UINT IntValue;
  43. UINT64 Int64Value;
  44. char StrValue[1024];
  45. wchar_t UniStrValue[1024];
  46. };
  47. // Server Information *
  48. struct RPC_SERVER_INFO
  49. {
  50. char ServerProductName[128]; // Server product name
  51. char ServerVersionString[128]; // Server version string
  52. char ServerBuildInfoString[128]; // Server build information string
  53. UINT ServerVerInt; // Server version integer value
  54. UINT ServerBuildInt; // Server build number integer value
  55. char ServerHostName[MAX_HOST_NAME_LEN + 1]; // Server host name
  56. UINT ServerType; // Type of server
  57. UINT64 ServerBuildDate; // Build date and time of the server
  58. char ServerFamilyName[128]; // Family name
  59. OS_INFO OsInfo; // OS information
  60. };
  61. // Server status
  62. struct RPC_SERVER_STATUS
  63. {
  64. UINT ServerType; // Type of server
  65. UINT NumTcpConnections; // Total number of TCP connections
  66. UINT NumTcpConnectionsLocal; // Number of Local TCP connections
  67. UINT NumTcpConnectionsRemote; // Number of remote TCP connections
  68. UINT NumHubTotal; // Total number of HUBs
  69. UINT NumHubStandalone; // Number of stand-alone HUB
  70. UINT NumHubStatic; // Number of static HUBs
  71. UINT NumHubDynamic; // Number of Dynamic HUBs
  72. UINT NumSessionsTotal; // Total number of sessions
  73. UINT NumSessionsLocal; // Number of Local sessions (only controller)
  74. UINT NumSessionsRemote; // The number of remote sessions (other than the controller)
  75. UINT NumMacTables; // Number of MAC table entries
  76. UINT NumIpTables; // Number of IP table entries
  77. UINT NumUsers; // Number of users
  78. UINT NumGroups; // Number of groups
  79. UINT AssignedBridgeLicenses; // Number of assigned bridge licenses
  80. UINT AssignedClientLicenses; // Number of assigned client licenses
  81. UINT AssignedBridgeLicensesTotal; // Number of Assigned bridge license (cluster-wide)
  82. UINT AssignedClientLicensesTotal; // Number of assigned client licenses (cluster-wide)
  83. TRAFFIC Traffic; // Traffic information
  84. UINT64 CurrentTime; // Current time
  85. UINT64 CurrentTick; // Current tick
  86. UINT64 StartTime; // Start-up time
  87. MEMINFO MemInfo; // Memory information
  88. };
  89. // Listener
  90. struct RPC_LISTENER
  91. {
  92. UINT Port; // Port number
  93. bool Enable; // Active state
  94. };
  95. // List of listeners *
  96. struct RPC_LISTENER_LIST
  97. {
  98. UINT NumPort; // Number of ports
  99. UINT *Ports; // Port List
  100. bool *Enables; // Effective state
  101. bool *Errors; // An error occurred
  102. };
  103. // List of ports
  104. struct RPC_PORTS
  105. {
  106. UINT Num; // Number of ports
  107. UINT *Ports; // Ports
  108. };
  109. // String *
  110. struct RPC_STR
  111. {
  112. char *String; // String
  113. };
  114. // Integer
  115. struct RPC_INT
  116. {
  117. UINT IntValue; // Integer
  118. };
  119. // Proto options
  120. struct RPC_PROTO_OPTIONS
  121. {
  122. char *Protocol; // Protocol name
  123. UINT Num; // Number of options
  124. PROTO_OPTION *Options; // Options
  125. };
  126. // Set Password
  127. struct RPC_SET_PASSWORD
  128. {
  129. UCHAR HashedPassword[SHA1_SIZE]; // Hashed password (for traditional RPC)
  130. char PlainTextPassword[MAX_SIZE]; // Plaintext password (for JSON-RPC)
  131. };
  132. // Server farm configuration *
  133. struct RPC_FARM
  134. {
  135. UINT ServerType; // Type of server
  136. UINT NumPort; // Number of public ports
  137. UINT *Ports; // Public port list
  138. UINT PublicIp; // Public IP
  139. char ControllerName[MAX_HOST_NAME_LEN + 1]; // Controller name
  140. UINT ControllerPort; // Controller port
  141. UCHAR MemberPassword[SHA1_SIZE]; // Member password
  142. char MemberPasswordPlaintext[MAX_SIZE]; // Member password (plaintext)
  143. UINT Weight; // Performance ratio
  144. bool ControllerOnly; // Only controller function
  145. };
  146. // HUB item of each farm member
  147. struct RPC_FARM_HUB
  148. {
  149. char HubName[MAX_HUBNAME_LEN + 1]; // HUB Name
  150. bool DynamicHub; // Dynamic HUB
  151. };
  152. // Server farm member information acquisition *
  153. struct RPC_FARM_INFO
  154. {
  155. UINT Id; // ID
  156. bool Controller; // Controller
  157. UINT64 ConnectedTime; // Connection time
  158. UINT Ip; // IP address
  159. char Hostname[MAX_HOST_NAME_LEN + 1]; // Host name
  160. UINT Point; // Point
  161. UINT NumPort; // Number of ports
  162. UINT *Ports; // Port
  163. X *ServerCert; // Server certificate
  164. UINT NumFarmHub; // Number of farm HUB
  165. RPC_FARM_HUB *FarmHubs; // Farm HUB
  166. UINT NumSessions; // Number of sessions
  167. UINT NumTcpConnections; // Number of TCP connections
  168. UINT Weight; // Performance ratio
  169. };
  170. // Server farm members enumeration items
  171. struct RPC_ENUM_FARM_ITEM
  172. {
  173. UINT Id; // ID
  174. bool Controller; // Controller
  175. UINT64 ConnectedTime; // Connection time
  176. UINT Ip; // IP address
  177. char Hostname[MAX_HOST_NAME_LEN + 1]; // Host name
  178. UINT Point; // Point
  179. UINT NumSessions; // Number of sessions
  180. UINT NumTcpConnections; // Number of TCP connections
  181. UINT NumHubs; // Number of HUBs
  182. UINT AssignedClientLicense; // Number of assigned client licenses
  183. UINT AssignedBridgeLicense; // Number of assigned bridge licenses
  184. };
  185. // Server farm member enumeration *
  186. struct RPC_ENUM_FARM
  187. {
  188. UINT NumFarm; // Number of farm members
  189. RPC_ENUM_FARM_ITEM *Farms; // Farm member list
  190. };
  191. // Connection state to the controller
  192. struct RPC_FARM_CONNECTION_STATUS
  193. {
  194. UINT Ip; // IP address
  195. UINT Port; // Port number
  196. bool Online; // Online state
  197. UINT LastError; // Last error
  198. UINT64 StartedTime; // Connection start time
  199. UINT64 FirstConnectedTime; // First connection time
  200. UINT64 CurrentConnectedTime; // Connection time of this time
  201. UINT NumTry; // Number of trials
  202. UINT NumConnected; // Number of connection count
  203. UINT NumFailed; // Connection failure count
  204. };
  205. // Key pair
  206. struct RPC_KEY_PAIR
  207. {
  208. X *Cert; // Certificate
  209. K *Key; // Secret key
  210. UINT Flag1; // Flag1
  211. };
  212. // WireGuard keys
  213. struct RPC_WGK
  214. {
  215. UINT Num; // Number of keys
  216. WGK *Wgks; // Keys
  217. };
  218. // HUB option
  219. struct RPC_HUB_OPTION
  220. {
  221. UINT DefaultGateway; // Default gateway address
  222. UINT DefaultSubnet; // Default subnet mask
  223. UINT MaxSession; // Maximum number of sessions
  224. bool NoEnum; // Not listed
  225. };
  226. // Radius server options
  227. struct RPC_RADIUS
  228. {
  229. char HubName[MAX_HUBNAME_LEN + 1]; // HUB Name
  230. char RadiusServerName[MAX_HOST_NAME_LEN + 1]; // Radius server name
  231. UINT RadiusPort; // Radius port number
  232. char RadiusSecret[MAX_PASSWORD_LEN + 1]; // Secret key
  233. UINT RadiusRetryInterval; // Radius retry interval
  234. };
  235. // Specify the HUB
  236. struct RPC_HUB
  237. {
  238. char HubName[MAX_HUBNAME_LEN + 1]; // HUB Name
  239. };
  240. // Create a HUB
  241. struct RPC_CREATE_HUB
  242. {
  243. char HubName[MAX_HUBNAME_LEN + 1]; // HUB Name
  244. UCHAR HashedPassword[SHA1_SIZE]; // Administrative password
  245. UCHAR SecurePassword[SHA1_SIZE]; // Administrator password
  246. char AdminPasswordPlainText[MAX_SIZE]; // Password (plaintext)
  247. bool Online; // Online flag
  248. RPC_HUB_OPTION HubOption; // HUB options
  249. UINT HubType; // Type of HUB
  250. };
  251. // Enumeration items of HUB
  252. struct RPC_ENUM_HUB_ITEM
  253. {
  254. char HubName[MAX_HUBNAME_LEN + 1]; // HUB Name
  255. bool Online; // Online
  256. UINT HubType; // Type of HUB
  257. UINT NumUsers; // Number of users
  258. UINT NumGroups; // Number of groups
  259. UINT NumSessions; // Number of sessions
  260. UINT NumMacTables; // Number of MAC table entries
  261. UINT NumIpTables; // Number of IP table entries
  262. UINT64 LastCommTime; // Last communication date and time
  263. UINT64 LastLoginTime; // Last login date and time
  264. UINT64 CreatedTime; // Creation date and time
  265. UINT NumLogin; // Number of logins
  266. bool IsTrafficFilled; // Whether the traffic information exists
  267. TRAFFIC Traffic; // Traffic
  268. };
  269. // Enumeration of HUB
  270. struct RPC_ENUM_HUB
  271. {
  272. UINT NumHub; // Number of HUBs
  273. RPC_ENUM_HUB_ITEM *Hubs; // HUB
  274. };
  275. // Delete the HUB
  276. struct RPC_DELETE_HUB
  277. {
  278. char HubName[MAX_HUBNAME_LEN + 1]; // HUB Name
  279. };
  280. // Connection enumeration items
  281. struct RPC_ENUM_CONNECTION_ITEM
  282. {
  283. char Name[MAX_SIZE]; // Connection name
  284. char Hostname[MAX_SIZE]; // Host name
  285. UINT Ip; // IP address
  286. UINT Port; // Port number
  287. UINT64 ConnectedTime; // Connected time
  288. UINT Type; // Type
  289. };
  290. // Connection enumeration
  291. struct RPC_ENUM_CONNECTION
  292. {
  293. UINT NumConnection; // Number of connections
  294. RPC_ENUM_CONNECTION_ITEM *Connections; // Connection list
  295. };
  296. // Disconnection
  297. struct RPC_DISCONNECT_CONNECTION
  298. {
  299. char Name[MAX_SIZE]; // Connection name
  300. };
  301. // Connection information
  302. struct RPC_CONNECTION_INFO
  303. {
  304. char Name[MAX_SIZE]; // Connection name
  305. UINT Type; // Type
  306. char Hostname[MAX_SIZE]; // Host name
  307. UINT Ip; // IP address
  308. UINT Port; // Port number
  309. UINT64 ConnectedTime; // Connected time
  310. char ServerStr[MAX_SERVER_STR_LEN + 1]; // Server string
  311. UINT ServerVer; // Server version
  312. UINT ServerBuild; // Server build number
  313. char ClientStr[MAX_CLIENT_STR_LEN + 1]; // Client string
  314. UINT ClientVer; // Client version
  315. UINT ClientBuild; // Client build number
  316. };
  317. // Online or offline the HUB
  318. struct RPC_SET_HUB_ONLINE
  319. {
  320. char HubName[MAX_HUBNAME_LEN + 1]; // HUB Name
  321. bool Online; // Online / offline flag
  322. };
  323. // Get the state HUB
  324. struct RPC_HUB_STATUS
  325. {
  326. char HubName[MAX_HUBNAME_LEN + 1]; // HUB Name
  327. bool Online; // Online
  328. UINT HubType; // Type of HUB
  329. UINT NumSessions; // Number of sessions
  330. UINT NumSessionsClient; // Number of sessions (client)
  331. UINT NumSessionsBridge; // Number of sessions (bridge)
  332. UINT NumAccessLists; // Number of Access list entries
  333. UINT NumUsers; // Number of users
  334. UINT NumGroups; // Number of groups
  335. UINT NumMacTables; // Number of MAC table entries
  336. UINT NumIpTables; // Number of IP table entries
  337. TRAFFIC Traffic; // Traffic
  338. bool SecureNATEnabled; // Whether SecureNAT is enabled
  339. UINT64 LastCommTime; // Last communication date and time
  340. UINT64 LastLoginTime; // Last login date and time
  341. UINT64 CreatedTime; // Creation date and time
  342. UINT NumLogin; // Number of logins
  343. };
  344. // HUB log settings
  345. struct RPC_HUB_LOG
  346. {
  347. char HubName[MAX_HUBNAME_LEN + 1]; // HUB Name
  348. HUB_LOG LogSetting; // Log Settings
  349. };
  350. // Add CA to HUB *
  351. struct RPC_HUB_ADD_CA
  352. {
  353. char HubName[MAX_HUBNAME_LEN + 1]; // HUB Name
  354. X *Cert; // Certificate
  355. };
  356. // CA enumeration items of HUB
  357. struct RPC_HUB_ENUM_CA_ITEM
  358. {
  359. UINT Key; // Certificate key
  360. wchar_t SubjectName[MAX_SIZE]; // Issued to
  361. wchar_t IssuerName[MAX_SIZE]; // Issuer
  362. UINT64 Expires; // Expiration date
  363. };
  364. // CA enumeration of HUB *
  365. struct RPC_HUB_ENUM_CA
  366. {
  367. char HubName[MAX_HUBNAME_LEN + 1]; // HUB Name
  368. UINT NumCa; // CA number
  369. RPC_HUB_ENUM_CA_ITEM *Ca; // CA
  370. };
  371. // Get the CA of HUB *
  372. struct RPC_HUB_GET_CA
  373. {
  374. char HubName[MAX_HUBNAME_LEN + 1]; // HUB Name
  375. UINT Key; // Certificate key
  376. X *Cert; // Certificate
  377. };
  378. // Delete the CA of HUB
  379. struct RPC_HUB_DELETE_CA
  380. {
  381. char HubName[MAX_HUBNAME_LEN + 1]; // HUB Name
  382. UINT Key; // Certificate key to be deleted
  383. };
  384. // Create and set of link *
  385. struct RPC_CREATE_LINK
  386. {
  387. char HubName[MAX_HUBNAME_LEN + 1]; // HUB Name
  388. bool Online; // Online flag
  389. CLIENT_OPTION *ClientOption; // Client Option
  390. CLIENT_AUTH *ClientAuth; // Client authentication data
  391. POLICY Policy; // Policy
  392. bool CheckServerCert; // Validate the server certificate
  393. X *ServerCert; // Server certificate
  394. };
  395. // Enumeration items of link
  396. struct RPC_ENUM_LINK_ITEM
  397. {
  398. wchar_t AccountName[MAX_ACCOUNT_NAME_LEN + 1]; // Account name
  399. bool Online; // Online flag
  400. bool Connected; // Connection completion flag
  401. UINT LastError; // The error that last occurred
  402. UINT64 ConnectedTime; // Connection completion time
  403. char Hostname[MAX_HOST_NAME_LEN + 1]; // Host name
  404. char HubName[MAX_HUBNAME_LEN + 1]; // HUB Name
  405. };
  406. // Enumeration of the link *
  407. struct RPC_ENUM_LINK
  408. {
  409. char HubName[MAX_HUBNAME_LEN + 1]; // HUB Name
  410. UINT NumLink; // Number of links
  411. RPC_ENUM_LINK_ITEM *Links; // Link List
  412. };
  413. // Get the link state *
  414. struct RPC_LINK_STATUS
  415. {
  416. char HubName[MAX_HUBNAME_LEN + 1]; // HUB Name
  417. wchar_t AccountName[MAX_ACCOUNT_NAME_LEN + 1]; // Account name
  418. RPC_CLIENT_GET_CONNECTION_STATUS Status; // Status
  419. };
  420. // Specify the Link
  421. struct RPC_LINK
  422. {
  423. char HubName[MAX_HUBNAME_LEN + 1]; // HUB Name
  424. wchar_t AccountName[MAX_ACCOUNT_NAME_LEN + 1]; // Account name
  425. };
  426. // Rename link
  427. struct RPC_RENAME_LINK
  428. {
  429. char HubName[MAX_HUBNAME_LEN + 1]; // HUB Name
  430. wchar_t OldAccountName[MAX_ACCOUNT_NAME_LEN + 1]; // Old account name
  431. wchar_t NewAccountName[MAX_ACCOUNT_NAME_LEN + 1]; // New account name
  432. };
  433. // Enumeration of the access list *
  434. struct RPC_ENUM_ACCESS_LIST
  435. {
  436. char HubName[MAX_HUBNAME_LEN + 1]; // HUB Name
  437. UINT NumAccess; // Number of Access list entries
  438. ACCESS *Accesses; // Access list
  439. };
  440. // Add to Access List
  441. struct RPC_ADD_ACCESS
  442. {
  443. char HubName[MAX_HUBNAME_LEN + 1]; // HUB Name
  444. ACCESS Access; // Access list
  445. };
  446. // Delete the access list
  447. struct RPC_DELETE_ACCESS
  448. {
  449. char HubName[MAX_HUBNAME_LEN + 1]; // HUB Name
  450. UINT Id; // ID
  451. };
  452. // Create, configure, and get the user *
  453. struct RPC_SET_USER
  454. {
  455. char HubName[MAX_HUBNAME_LEN + 1]; // HUB Name
  456. char Name[MAX_USERNAME_LEN + 1]; // User name
  457. char GroupName[MAX_USERNAME_LEN + 1]; // Group name
  458. wchar_t Realname[MAX_SIZE]; // Real name
  459. wchar_t Note[MAX_SIZE]; // Note
  460. UINT64 CreatedTime; // Creation date and time
  461. UINT64 UpdatedTime; // Updating date
  462. UINT64 ExpireTime; // Expiration date
  463. UINT AuthType; // Authentication method
  464. void *AuthData; // Authentication data
  465. UINT NumLogin; // Number of logins
  466. TRAFFIC Traffic; // Traffic data
  467. POLICY *Policy; // Policy
  468. };
  469. // Enumeration item of user
  470. struct RPC_ENUM_USER_ITEM
  471. {
  472. char Name[MAX_USERNAME_LEN + 1]; // User name
  473. char GroupName[MAX_USERNAME_LEN + 1]; // Group name
  474. wchar_t Realname[MAX_SIZE]; // Real name
  475. wchar_t Note[MAX_SIZE]; // Note
  476. UINT AuthType; // Authentication method
  477. UINT NumLogin; // Number of logins
  478. UINT64 LastLoginTime; // Last login date and time
  479. bool DenyAccess; // Access denied
  480. bool IsTrafficFilled; // Flag of whether the traffic variable is set
  481. TRAFFIC Traffic; // Traffic
  482. bool IsExpiresFilled; // Flag of whether expiration date variable is set
  483. UINT64 Expires; // Expiration date
  484. };
  485. // Enumeration of user
  486. struct RPC_ENUM_USER
  487. {
  488. char HubName[MAX_HUBNAME_LEN + 1]; // HUB Name
  489. UINT NumUser; // Number of users
  490. RPC_ENUM_USER_ITEM *Users; // User
  491. };
  492. // Create, configure, and get the group *
  493. struct RPC_SET_GROUP
  494. {
  495. char HubName[MAX_HUBNAME_LEN + 1]; // HUB Name
  496. char Name[MAX_USERNAME_LEN + 1]; // User name
  497. wchar_t Realname[MAX_SIZE]; // Real name
  498. wchar_t Note[MAX_SIZE]; // Note
  499. TRAFFIC Traffic; // Traffic data
  500. POLICY *Policy; // Policy
  501. };
  502. // Enumeration items in the group
  503. struct RPC_ENUM_GROUP_ITEM
  504. {
  505. char Name[MAX_USERNAME_LEN + 1]; // User name
  506. wchar_t Realname[MAX_SIZE]; // Real name
  507. wchar_t Note[MAX_SIZE]; // Note
  508. UINT NumUsers; // Number of users
  509. bool DenyAccess; // Access denied
  510. };
  511. // Group enumeration
  512. struct RPC_ENUM_GROUP
  513. {
  514. char HubName[MAX_HUBNAME_LEN + 1]; // HUB Name
  515. UINT NumGroup; // Number of groups
  516. RPC_ENUM_GROUP_ITEM *Groups; // Group
  517. };
  518. // Deleting a user or group
  519. struct RPC_DELETE_USER
  520. {
  521. char HubName[MAX_HUBNAME_LEN + 1]; // HUB Name
  522. char Name[MAX_USERNAME_LEN + 1]; // User or group name
  523. };
  524. // Enumeration items of session
  525. struct RPC_ENUM_SESSION_ITEM
  526. {
  527. char Name[MAX_SESSION_NAME_LEN + 1]; // Session name
  528. bool RemoteSession; // Remote session
  529. char RemoteHostname[MAX_HOST_NAME_LEN + 1]; // Remote server name
  530. char Username[MAX_USERNAME_LEN + 1]; // User name
  531. UINT Ip; // IP address (IPv4)
  532. IP ClientIP; // IP address (IPv4 / IPv6)
  533. char Hostname[MAX_HOST_NAME_LEN + 1]; // Host name
  534. UINT MaxNumTcp; // Maximum number of TCP connections
  535. UINT CurrentNumTcp; // Number of currentl TCP connections
  536. UINT64 PacketSize; // Packet size
  537. UINT64 PacketNum; // Number of packets
  538. bool LinkMode; // Link mode
  539. bool SecureNATMode; // SecureNAT mode
  540. bool BridgeMode; // Bridge mode
  541. bool Layer3Mode; // Layer 3 mode
  542. bool Client_BridgeMode; // Client is bridge mode
  543. bool Client_MonitorMode; // Client is monitoring mode
  544. UINT VLanId; // VLAN ID
  545. UCHAR UniqueId[16]; // Unique ID
  546. bool IsDormantEnabled; // Is the dormant state enabled
  547. bool IsDormant; // Is in the dormant state
  548. UINT64 LastCommDormant; // Last comm interval in the dormant state
  549. UINT64 CreatedTime; // Creation date and time
  550. UINT64 LastCommTime; // Last communication date and time
  551. };
  552. // Disconnect the session
  553. struct RPC_DELETE_SESSION
  554. {
  555. char HubName[MAX_HUBNAME_LEN + 1]; // HUB Name
  556. char Name[MAX_SESSION_NAME_LEN + 1]; // Session name
  557. };
  558. // Enumeration items of the MAC table
  559. struct RPC_ENUM_MAC_TABLE_ITEM
  560. {
  561. UINT Key; // Key
  562. char SessionName[MAX_SESSION_NAME_LEN + 1]; // Session name
  563. UCHAR MacAddress[6]; // MAC address
  564. UCHAR Padding[2];
  565. UINT64 CreatedTime; // Creation date and time
  566. UINT64 UpdatedTime; // Updating date
  567. bool RemoteItem; // Remote items
  568. char RemoteHostname[MAX_HOST_NAME_LEN + 1]; // Remote host name
  569. UINT VlanId; // VLAN ID
  570. };
  571. // Enumeration of the MAC table
  572. struct RPC_ENUM_MAC_TABLE
  573. {
  574. char HubName[MAX_HUBNAME_LEN + 1]; // HUB Name
  575. UINT NumMacTable; // Number of tables
  576. RPC_ENUM_MAC_TABLE_ITEM *MacTables; // MAC table
  577. };
  578. // Enumeration items of IP table
  579. struct RPC_ENUM_IP_TABLE_ITEM
  580. {
  581. UINT Key; // Key
  582. char SessionName[MAX_SESSION_NAME_LEN + 1]; // Session name
  583. UINT Ip; // IPv4 address
  584. IP IpV6; // IPv6 address
  585. IP IpAddress; // IPv4 / IPv6 Address
  586. bool DhcpAllocated; // Assigned by the DHCP
  587. UINT64 CreatedTime; // Creation date and time
  588. UINT64 UpdatedTime; // Updating date
  589. bool RemoteItem; // Remote items
  590. char RemoteHostname[MAX_HOST_NAME_LEN + 1]; // Remote host name
  591. };
  592. // Enumeration of IP table
  593. struct RPC_ENUM_IP_TABLE
  594. {
  595. char HubName[MAX_HUBNAME_LEN + 1]; // HUB Name
  596. UINT NumIpTable; // Number of tables
  597. RPC_ENUM_IP_TABLE_ITEM *IpTables; // MAC table
  598. };
  599. // Delete the table
  600. struct RPC_DELETE_TABLE
  601. {
  602. char HubName[MAX_HUBNAME_LEN + 1]; // HUB Name
  603. UINT Key; // Key
  604. };
  605. // KEEP setting
  606. struct RPC_KEEP
  607. {
  608. bool UseKeepConnect; // Keep connected to the Internet
  609. char KeepConnectHost[MAX_HOST_NAME_LEN + 1]; // Host name
  610. UINT KeepConnectPort; // Port number
  611. UINT KeepConnectProtocol; // Protocol
  612. UINT KeepConnectInterval; // Interval
  613. };
  614. // Ethernet enumeration item
  615. struct RPC_ENUM_ETH_ITEM
  616. {
  617. char DeviceName[MAX_SIZE]; // Device name
  618. wchar_t NetworkConnectionName[MAX_SIZE];// Network connection name
  619. };
  620. // Ethernet enumeration
  621. struct RPC_ENUM_ETH
  622. {
  623. UINT NumItem; // Number of items
  624. RPC_ENUM_ETH_ITEM *Items; // Item
  625. };
  626. // Bridge item
  627. struct RPC_LOCALBRIDGE
  628. {
  629. char DeviceName[MAX_SIZE]; // Device name
  630. char HubName[MAX_HUBNAME_LEN + 1]; // HUB Name
  631. bool Online; // Online flag
  632. bool Active; // Running flag
  633. bool TapMode; // Tap mode
  634. };
  635. // Bridge enumeration
  636. struct RPC_ENUM_LOCALBRIDGE
  637. {
  638. UINT NumItem; // Number of items
  639. RPC_LOCALBRIDGE *Items; // Item
  640. };
  641. // Bridge support information
  642. struct RPC_BRIDGE_SUPPORT
  643. {
  644. bool IsBridgeSupportedOs; // Whether the OS supports the bridge
  645. bool IsWinPcapNeeded; // Whether WinPcap is necessary
  646. };
  647. // Config operation
  648. struct RPC_CONFIG
  649. {
  650. char FileName[MAX_PATH]; // File name
  651. char *FileData; // File data
  652. };
  653. // Administration options list
  654. struct RPC_ADMIN_OPTION
  655. {
  656. char HubName[MAX_HUBNAME_LEN + 1]; // Virtual HUB name
  657. UINT NumItem; // Count
  658. ADMIN_OPTION *Items; // Data
  659. };
  660. // Layer-3 switch
  661. struct RPC_L3SW
  662. {
  663. char Name[MAX_HUBNAME_LEN + 1]; // L3 switch name
  664. };
  665. // Layer-3 switch enumeration
  666. struct RPC_ENUM_L3SW_ITEM
  667. {
  668. char Name[MAX_HUBNAME_LEN + 1]; // Name
  669. UINT NumInterfaces; // Number of interfaces
  670. UINT NumTables; // Routing table number
  671. bool Active; // In operation
  672. bool Online; // Online
  673. };
  674. struct RPC_ENUM_L3SW
  675. {
  676. UINT NumItem;
  677. RPC_ENUM_L3SW_ITEM *Items;
  678. };
  679. // Layer-3 interface
  680. struct RPC_L3IF
  681. {
  682. char Name[MAX_HUBNAME_LEN + 1]; // L3 switch name
  683. char HubName[MAX_HUBNAME_LEN + 1]; // Virtual HUB name
  684. UINT IpAddress; // IP address
  685. UINT SubnetMask; // Subnet mask
  686. };
  687. // Layer-3 interface enumeration
  688. struct RPC_ENUM_L3IF
  689. {
  690. char Name[MAX_HUBNAME_LEN + 1]; // L3 switch name
  691. UINT NumItem;
  692. RPC_L3IF *Items;
  693. };
  694. // Routing table
  695. struct RPC_L3TABLE
  696. {
  697. char Name[MAX_HUBNAME_LEN + 1]; // L3 switch name
  698. UINT NetworkAddress; // Network address
  699. UINT SubnetMask; // Subnet mask
  700. UINT GatewayAddress; // Gateway address
  701. UINT Metric; // Metric
  702. };
  703. // Routing table enumeration
  704. struct RPC_ENUM_L3TABLE
  705. {
  706. char Name[MAX_HUBNAME_LEN + 1]; // L3 switch name
  707. UINT NumItem;
  708. RPC_L3TABLE *Items;
  709. };
  710. // CRL entry
  711. struct RPC_CRL
  712. {
  713. char HubName[MAX_HUBNAME_LEN + 1]; // HUB Name
  714. UINT Key; // Key
  715. CRL *Crl; // CRL body
  716. };
  717. // CRL enumeration
  718. struct RPC_ENUM_CRL_ITEM
  719. {
  720. UINT Key; // Key
  721. wchar_t CrlInfo[MAX_SIZE]; // Information
  722. };
  723. struct RPC_ENUM_CRL
  724. {
  725. char HubName[MAX_HUBNAME_LEN + 1]; // HUB Name
  726. UINT NumItem; // Number of items
  727. RPC_ENUM_CRL_ITEM *Items; // List
  728. };
  729. // AC list
  730. struct RPC_AC_LIST
  731. {
  732. char HubName[MAX_HUBNAME_LEN + 1]; // HUB Name
  733. LIST *o; // List body
  734. bool InternalFlag1;
  735. };
  736. // Log file enumeration
  737. struct RPC_ENUM_LOG_FILE_ITEM
  738. {
  739. char ServerName[MAX_HOST_NAME_LEN + 1]; // Server name
  740. char FilePath[MAX_PATH]; // File Path
  741. UINT FileSize; // File size
  742. UINT64 UpdatedTime; // Updating date
  743. };
  744. struct RPC_ENUM_LOG_FILE
  745. {
  746. UINT NumItem; // Number of items
  747. RPC_ENUM_LOG_FILE_ITEM *Items; // List
  748. };
  749. // Read a Log file
  750. struct RPC_READ_LOG_FILE
  751. {
  752. char ServerName[MAX_HOST_NAME_LEN + 1]; // Server name
  753. char FilePath[MAX_PATH]; // File Path
  754. UINT Offset; // Offset
  755. BUF *Buffer; // Buffer
  756. };
  757. // Download information
  758. struct DOWNLOAD_PROGRESS
  759. {
  760. void *Param; // User define data
  761. UINT TotalSize; // The total file size
  762. UINT CurrentSize; // Size which has loaded
  763. UINT ProgressPercent; // Percent Complete
  764. };
  765. // Enumerate the license keys
  766. struct RPC_ENUM_LICENSE_KEY_ITEM
  767. {
  768. UINT Id; // ID
  769. char LicenseKey[LICENSE_KEYSTR_LEN + 1]; // License key
  770. char LicenseId[LICENSE_LICENSEID_STR_LEN + 1]; // License ID
  771. char LicenseName[LICENSE_MAX_PRODUCT_NAME_LEN + 1]; // License name
  772. UINT64 Expires; // Expiration date
  773. UINT Status; // Situation
  774. UINT ProductId; // Product ID
  775. UINT64 SystemId; // System ID
  776. UINT SerialId; // Serial ID
  777. };
  778. struct RPC_ENUM_LICENSE_KEY
  779. {
  780. UINT NumItem; // Number of items
  781. RPC_ENUM_LICENSE_KEY_ITEM *Items; // List
  782. };
  783. // License status of the server
  784. struct RPC_LICENSE_STATUS
  785. {
  786. UINT EditionId; // Edition ID
  787. char EditionStr[LICENSE_MAX_PRODUCT_NAME_LEN + 1]; // Edition name
  788. UINT64 SystemId; // System ID
  789. UINT64 SystemExpires; // System expiration date
  790. UINT NumClientConnectLicense; // Maximum number of concurrent client connections
  791. UINT NumBridgeConnectLicense; // Available number of concurrent bridge connections
  792. // v3.0
  793. bool NeedSubscription; // Subscription system is enabled
  794. UINT64 SubscriptionExpires; // Subscription expiration date
  795. bool IsSubscriptionExpired; // Whether the subscription is expired
  796. UINT NumUserCreationLicense; // Maximum number of users
  797. bool AllowEnterpriseFunction; // Operation of the enterprise function
  798. UINT64 ReleaseDate; // Release date
  799. };
  800. // Enumeration of VLAN support status of physical LAN card
  801. struct RPC_ENUM_ETH_VLAN_ITEM
  802. {
  803. char DeviceName[MAX_SIZE]; // Device name
  804. char Guid[MAX_SIZE]; // GUID
  805. char DeviceInstanceId[MAX_SIZE]; // Device Instance ID
  806. char DriverName[MAX_SIZE]; // Driver file name
  807. char DriverType[MAX_SIZE]; // Type of driver
  808. bool Support; // Check whether it is supported
  809. bool Enabled; // Whether it is enabled
  810. };
  811. struct RPC_ENUM_ETH_VLAN
  812. {
  813. UINT NumItem; // Number of items
  814. RPC_ENUM_ETH_VLAN_ITEM *Items; // List
  815. };
  816. // Message
  817. struct RPC_MSG
  818. {
  819. char HubName[MAX_HUBNAME_LEN + 1]; // HUB Name
  820. wchar_t *Msg; // Message
  821. };
  822. // EtherIP setting list
  823. struct RPC_ENUM_ETHERIP_ID
  824. {
  825. UINT NumItem;
  826. ETHERIP_ID *IdList;
  827. };
  828. // Set the special listener
  829. struct RPC_SPECIAL_LISTENER
  830. {
  831. bool VpnOverIcmpListener; // VPN over ICMP
  832. bool VpnOverDnsListener; // VPN over DNS
  833. };
  834. // Get / Set the Azure state
  835. struct RPC_AZURE_STATUS
  836. {
  837. bool IsEnabled; // Whether enabled
  838. bool IsConnected; // Whether it's connected
  839. };
  840. // Constants
  841. #define ADMIN_RPC_MAX_POST_SIZE_BY_SERVER_ADMIN MAX_PACK_SIZE
  842. #define ADMIN_RPC_MAX_POST_SIZE_BY_HUB_ADMIN (8 * 1024 * 1024)
  843. // Function prototype
  844. UINT AdminAccept(CONNECTION *c, PACK *p);
  845. void HashAdminPassword(void *hash, char *password);
  846. SESSION *AdminConnectMain(CEDAR *cedar, CLIENT_OPTION *o, char *hubname, void *hashed_password, UINT *err, char *client_name, void *hWnd, bool *empty_password);
  847. RPC *AdminConnectEx(CEDAR *cedar, CLIENT_OPTION *o, char *hubname, void *hashed_password, UINT *err, char *client_name);
  848. RPC *AdminConnectEx2(CEDAR *cedar, CLIENT_OPTION *o, char *hubname, void *hashed_password, UINT *err, char *client_name, void *hWnd);
  849. void AdminDisconnect(RPC *rpc);
  850. UINT AdminReconnect(RPC *rpc);
  851. UINT AdminCheckPassword(CEDAR *c, void *random, void *secure_password, char *hubname, bool accept_empty_password, bool *is_password_empty);
  852. PACK *AdminDispatch(RPC *rpc, char *name, PACK *p);
  853. PACK *AdminCall(RPC *rpc, char *function_name, PACK *p);
  854. void SiEnumLocalSession(SERVER *s, char *hubname, RPC_ENUM_SESSION *t);
  855. void CopyOsInfo(OS_INFO *dst, OS_INFO *info);
  856. CAPSLIST *ScGetCapsEx(RPC *rpc);
  857. UINT SiEnumMacTable(SERVER *s, char *hubname, RPC_ENUM_MAC_TABLE *t);
  858. UINT SiEnumIpTable(SERVER *s, char *hubname, RPC_ENUM_IP_TABLE *t);
  859. void SiEnumLocalLogFileList(SERVER *s, char *hubname, RPC_ENUM_LOG_FILE *t);
  860. void SiReadLocalLogFile(SERVER *s, char *filepath, UINT offset, RPC_READ_LOG_FILE *t);
  861. typedef bool (DOWNLOAD_PROC)(DOWNLOAD_PROGRESS *progress);
  862. BUF *DownloadFileFromServer(RPC *r, char *server_name, char *filepath, UINT total_size, DOWNLOAD_PROC *proc, void *param);
  863. bool CheckAdminSourceAddress(SOCK *sock, char *hubname);
  864. void SiEnumSessionMain(SERVER *s, RPC_ENUM_SESSION *t);
  865. bool SiIsEmptyPassword(void *hash_password);
  866. void JsonRpcProcPost(CONNECTION *c, SOCK *s, HTTP_HEADER *h, UINT post_data_size);
  867. void JsonRpcProcGet(CONNECTION *c, SOCK *s, HTTP_HEADER *h, char *url_target);
  868. void JsonRpcProcOptions(CONNECTION *c, SOCK *s, HTTP_HEADER *h, char *url_target);
  869. JSON_VALUE *JsonRpcProcRequestObject(ADMIN *admin, CONNECTION *c, SOCK *s, JSON_VALUE *json_req, char *method_name);
  870. JSON_VALUE *JsonRpcNewError(int code, wchar_t *message);
  871. JSON_VALUE *JsonRpcNewResponse(PACK *p);
  872. bool HttpParseBasicAuthHeader(HTTP_HEADER *h, char *username, UINT username_size, char *password, UINT password_size);
  873. ADMIN *JsonRpcAuthLogin(CEDAR *c, SOCK *sock, HTTP_HEADER *h);
  874. JSON_VALUE *QueryStringToJsonListValue(char *qs);
  875. JSON_VALUE *ConstructDummyJsonRpcRequest(char *method_name, JSON_VALUE *p);
  876. void AdminWebProcPost(CONNECTION *c, SOCK *s, HTTP_HEADER *h, UINT post_data_size, char *url_target);
  877. void AdminWebProcGet(CONNECTION *c, SOCK *s, HTTP_HEADER *h, char *url_target);
  878. bool AdminWebHandleFileRequest(ADMIN *a, CONNECTION *c, SOCK *s, HTTP_HEADER *h, char *url_src, char *query_string, char *virtual_root_dir, char *physical_root_dir);
  879. BUF *AdminWebProcessServerSideInclude(BUF *src_txt, char *filename, UINT depth);
  880. bool AdminWebSendBody(SOCK *s, UINT status_code, char *status_string, UCHAR *data, UINT data_size, char *content_type, char *add_header_name, char *add_header_value, HTTP_HEADER *request_headers);
  881. bool AdminWebSend404Error(SOCK *s, HTTP_HEADER *request_headers);
  882. bool AdminWebSend302Redirect(SOCK *s, char *url, char *query_string, HTTP_HEADER *request_headers);
  883. BUF *AdminWebTryFindAndReadFile(char *vroot, char *proot, char *url, char *ret_filename, UINT ret_filename_size, bool *is_index_html);
  884. BUF *AdminWebTryOneFile(char *filename, char *ret_filename, UINT ret_filename_size);
  885. bool AdminWebSendUnauthorized(SOCK *s, HTTP_HEADER *http_request_headers);
  886. UINT StTest(ADMIN *a, RPC_TEST *t);
  887. UINT StGetServerInfo(ADMIN *a, RPC_SERVER_INFO *t);
  888. UINT StGetServerStatus(ADMIN *a, RPC_SERVER_STATUS *t);
  889. UINT StCreateListener(ADMIN *a, RPC_LISTENER *t);
  890. UINT StEnumListener(ADMIN *a, RPC_LISTENER_LIST *t);
  891. UINT StDeleteListener(ADMIN *a, RPC_LISTENER *t);
  892. UINT StEnableListener(ADMIN *a, RPC_LISTENER *t);
  893. UINT StSetPortsUDP(ADMIN *a, RPC_PORTS *t);
  894. UINT StGetPortsUDP(ADMIN *a, RPC_PORTS *t);
  895. UINT StGetProtoOptions(ADMIN *a, RPC_PROTO_OPTIONS *t);
  896. UINT StSetProtoOptions(ADMIN *a, RPC_PROTO_OPTIONS *t);
  897. UINT StSetServerPassword(ADMIN *a, RPC_SET_PASSWORD *t);
  898. UINT StSetFarmSetting(ADMIN *a, RPC_FARM *t);
  899. UINT StGetFarmSetting(ADMIN *a, RPC_FARM *t);
  900. UINT StGetFarmInfo(ADMIN *a, RPC_FARM_INFO *t);
  901. UINT StEnumFarmMember(ADMIN *a, RPC_ENUM_FARM *t);
  902. UINT StGetFarmConnectionStatus(ADMIN *a, RPC_FARM_CONNECTION_STATUS *t);
  903. UINT StSetServerCert(ADMIN *a, RPC_KEY_PAIR *t);
  904. UINT StGetServerCert(ADMIN *a, RPC_KEY_PAIR *t);
  905. UINT StGetServerCipherList(ADMIN *a, RPC_STR *t);
  906. UINT StGetServerCipher(ADMIN *a, RPC_STR *t);
  907. UINT StSetServerCipher(ADMIN *a, RPC_STR *t);
  908. UINT StAddWgk(ADMIN *a, RPC_WGK *t);
  909. UINT StDeleteWgk(ADMIN *a, RPC_WGK *t);
  910. UINT StEnumWgk(ADMIN *a, RPC_WGK *t);
  911. UINT StCreateHub(ADMIN *a, RPC_CREATE_HUB *t);
  912. UINT StSetHub(ADMIN *a, RPC_CREATE_HUB *t);
  913. UINT StGetHub(ADMIN *a, RPC_CREATE_HUB *t);
  914. UINT StEnumHub(ADMIN *a, RPC_ENUM_HUB *t);
  915. UINT StDeleteHub(ADMIN *a, RPC_DELETE_HUB *t);
  916. UINT StGetHubRadius(ADMIN *a, RPC_RADIUS *t);
  917. UINT StSetHubRadius(ADMIN *a, RPC_RADIUS *t);
  918. UINT StEnumConnection(ADMIN *a, RPC_ENUM_CONNECTION *t);
  919. UINT StDisconnectConnection(ADMIN *a, RPC_DISCONNECT_CONNECTION *t);
  920. UINT StGetConnectionInfo(ADMIN *a, RPC_CONNECTION_INFO *t);
  921. UINT StSetHubOnline(ADMIN *a, RPC_SET_HUB_ONLINE *t);
  922. UINT StGetHubStatus(ADMIN *a, RPC_HUB_STATUS *t);
  923. UINT StSetHubLog(ADMIN *a, RPC_HUB_LOG *t);
  924. UINT StGetHubLog(ADMIN *a, RPC_HUB_LOG *t);
  925. UINT StAddCa(ADMIN *a, RPC_HUB_ADD_CA *t);
  926. UINT StEnumCa(ADMIN *a, RPC_HUB_ENUM_CA *t);
  927. UINT StGetCa(ADMIN *a, RPC_HUB_GET_CA *t);
  928. UINT StDeleteCa(ADMIN *a, RPC_HUB_DELETE_CA *t);
  929. UINT StCreateLink(ADMIN *a, RPC_CREATE_LINK *t);
  930. UINT StEnumLink(ADMIN *a, RPC_ENUM_LINK *t);
  931. UINT StGetLinkStatus(ADMIN *a, RPC_LINK_STATUS *t);
  932. UINT StSetLinkOnline(ADMIN *a, RPC_LINK *t);
  933. UINT StSetLinkOffline(ADMIN *a, RPC_LINK *t);
  934. UINT StDeleteLink(ADMIN *a, RPC_LINK *t);
  935. UINT StRenameLink(ADMIN *a, RPC_RENAME_LINK *t);
  936. UINT StAddAccess(ADMIN *a, RPC_ADD_ACCESS *t);
  937. UINT StDeleteAccess(ADMIN *a, RPC_DELETE_ACCESS *t);
  938. UINT StEnumAccess(ADMIN *a, RPC_ENUM_ACCESS_LIST *t);
  939. UINT StCreateUser(ADMIN *a, RPC_SET_USER *t);
  940. UINT StSetUser(ADMIN *a, RPC_SET_USER *t);
  941. UINT StGetUser(ADMIN *a, RPC_SET_USER *t);
  942. UINT StDeleteUser(ADMIN *a, RPC_DELETE_USER *t);
  943. UINT StEnumUser(ADMIN *a, RPC_ENUM_USER *t);
  944. UINT StCreateGroup(ADMIN *a, RPC_SET_GROUP *t);
  945. UINT StSetGroup(ADMIN *a, RPC_SET_GROUP *t);
  946. UINT StGetGroup(ADMIN *a, RPC_SET_GROUP *t);
  947. UINT StDeleteGroup(ADMIN *a, RPC_DELETE_USER *t);
  948. UINT StEnumGroup(ADMIN *a, RPC_ENUM_GROUP *t);
  949. UINT StEnumSession(ADMIN *a, RPC_ENUM_SESSION *t);
  950. UINT StGetSessionStatus(ADMIN *a, RPC_SESSION_STATUS *t);
  951. UINT StDeleteSession(ADMIN *a, RPC_DELETE_SESSION *t);
  952. UINT StEnumMacTable(ADMIN *a, RPC_ENUM_MAC_TABLE *t);
  953. UINT StDeleteMacTable(ADMIN *a, RPC_DELETE_TABLE *t);
  954. UINT StEnumIpTable(ADMIN *a, RPC_ENUM_IP_TABLE *t);
  955. UINT StDeleteIpTable(ADMIN *a, RPC_DELETE_TABLE *t);
  956. UINT StGetLink(ADMIN *a, RPC_CREATE_LINK *t);
  957. UINT StSetLink(ADMIN *a, RPC_CREATE_LINK *t);
  958. UINT StSetAccessList(ADMIN *a, RPC_ENUM_ACCESS_LIST *t);
  959. UINT StSetKeep(ADMIN *a, RPC_KEEP *t);
  960. UINT StGetKeep(ADMIN *a, RPC_KEEP *t);
  961. UINT StEnableSecureNAT(ADMIN *a, RPC_HUB *t);
  962. UINT StDisableSecureNAT(ADMIN *a, RPC_HUB *t);
  963. UINT StSetSecureNATOption(ADMIN *a, VH_OPTION *t);
  964. UINT StGetSecureNATOption(ADMIN *a, VH_OPTION *t);
  965. UINT StEnumNAT(ADMIN *a, RPC_ENUM_NAT *t);
  966. UINT StEnumDHCP(ADMIN *a, RPC_ENUM_DHCP *t);
  967. UINT StGetSecureNATStatus(ADMIN *a, RPC_NAT_STATUS *t);
  968. UINT StEnumEthernet(ADMIN *a, RPC_ENUM_ETH *t);
  969. UINT StAddLocalBridge(ADMIN *a, RPC_LOCALBRIDGE *t);
  970. UINT StDeleteLocalBridge(ADMIN *a, RPC_LOCALBRIDGE *t);
  971. UINT StEnumLocalBridge(ADMIN *a, RPC_ENUM_LOCALBRIDGE *t);
  972. UINT StGetBridgeSupport(ADMIN *a, RPC_BRIDGE_SUPPORT *t);
  973. UINT StRebootServer(ADMIN *a, RPC_TEST *t);
  974. UINT StGetCaps(ADMIN *a, CAPSLIST *t);
  975. UINT StGetConfig(ADMIN *a, RPC_CONFIG *t);
  976. UINT StSetConfig(ADMIN *a, RPC_CONFIG *t);
  977. UINT StGetDefaultHubAdminOptions(ADMIN *a, RPC_ADMIN_OPTION *t);
  978. UINT StGetHubAdminOptions(ADMIN *a, RPC_ADMIN_OPTION *t);
  979. UINT StSetHubAdminOptions(ADMIN *a, RPC_ADMIN_OPTION *t);
  980. UINT StGetHubExtOptions(ADMIN *a, RPC_ADMIN_OPTION *t);
  981. UINT StSetHubExtOptions(ADMIN *a, RPC_ADMIN_OPTION *t);
  982. UINT StAddL3Switch(ADMIN *a, RPC_L3SW *t);
  983. UINT StDelL3Switch(ADMIN *a, RPC_L3SW *t);
  984. UINT StEnumL3Switch(ADMIN *a, RPC_ENUM_L3SW *t);
  985. UINT StStartL3Switch(ADMIN *a, RPC_L3SW *t);
  986. UINT StStopL3Switch(ADMIN *a, RPC_L3SW *t);
  987. UINT StAddL3If(ADMIN *a, RPC_L3IF *t);
  988. UINT StDelL3If(ADMIN *a, RPC_L3IF *t);
  989. UINT StEnumL3If(ADMIN *a, RPC_ENUM_L3IF *t);
  990. UINT StAddL3Table(ADMIN *a, RPC_L3TABLE *t);
  991. UINT StDelL3Table(ADMIN *a, RPC_L3TABLE *t);
  992. UINT StEnumL3Table(ADMIN *a, RPC_ENUM_L3TABLE *t);
  993. UINT StEnumCrl(ADMIN *a, RPC_ENUM_CRL *t);
  994. UINT StAddCrl(ADMIN *a, RPC_CRL *t);
  995. UINT StDelCrl(ADMIN *a, RPC_CRL *t);
  996. UINT StGetCrl(ADMIN *a, RPC_CRL *t);
  997. UINT StSetCrl(ADMIN *a, RPC_CRL *t);
  998. UINT StSetAcList(ADMIN *a, RPC_AC_LIST *t);
  999. UINT StGetAcList(ADMIN *a, RPC_AC_LIST *t);
  1000. UINT StEnumLogFile(ADMIN *a, RPC_ENUM_LOG_FILE *t);
  1001. UINT StReadLogFile(ADMIN *a, RPC_READ_LOG_FILE *t);
  1002. UINT StAddLicenseKey(ADMIN *a, RPC_TEST *t);
  1003. UINT StDelLicenseKey(ADMIN *a, RPC_TEST *t);
  1004. UINT StEnumLicenseKey(ADMIN *a, RPC_ENUM_LICENSE_KEY *t);
  1005. UINT StGetLicenseStatus(ADMIN *a, RPC_LICENSE_STATUS *t);
  1006. UINT StSetSysLog(ADMIN *a, SYSLOG_SETTING *t);
  1007. UINT StGetSysLog(ADMIN *a, SYSLOG_SETTING *t);
  1008. UINT StEnumEthVLan(ADMIN *a, RPC_ENUM_ETH_VLAN *t);
  1009. UINT StSetEnableEthVLan(ADMIN *a, RPC_TEST *t);
  1010. UINT StSetHubMsg(ADMIN *a, RPC_MSG *t);
  1011. UINT StGetHubMsg(ADMIN *a, RPC_MSG *t);
  1012. UINT StCrash(ADMIN *a, RPC_TEST *t);
  1013. UINT StGetAdminMsg(ADMIN *a, RPC_MSG *t);
  1014. UINT StFlush(ADMIN *a, RPC_TEST *t);
  1015. UINT StDebug(ADMIN *a, RPC_TEST *t);
  1016. UINT StSetIPsecServices(ADMIN *a, IPSEC_SERVICES *t);
  1017. UINT StGetIPsecServices(ADMIN *a, IPSEC_SERVICES *t);
  1018. UINT StAddEtherIpId(ADMIN *a, ETHERIP_ID *t);
  1019. UINT StGetEtherIpId(ADMIN *a, ETHERIP_ID *t);
  1020. UINT StDeleteEtherIpId(ADMIN *a, ETHERIP_ID *t);
  1021. UINT StEnumEtherIpId(ADMIN *a, RPC_ENUM_ETHERIP_ID *t);
  1022. UINT StSetOpenVpnSstpConfig(ADMIN *a, OPENVPN_SSTP_CONFIG *t);
  1023. UINT StGetOpenVpnSstpConfig(ADMIN *a, OPENVPN_SSTP_CONFIG *t);
  1024. UINT StGetDDnsClientStatus(ADMIN *a, DDNS_CLIENT_STATUS *t);
  1025. UINT StChangeDDnsClientHostname(ADMIN *a, RPC_TEST *t);
  1026. UINT StRegenerateServerCert(ADMIN *a, RPC_TEST *t);
  1027. UINT StMakeOpenVpnConfigFile(ADMIN *a, RPC_READ_LOG_FILE *t);
  1028. UINT StSetSpecialListener(ADMIN *a, RPC_SPECIAL_LISTENER *t);
  1029. UINT StGetSpecialListener(ADMIN *a, RPC_SPECIAL_LISTENER *t);
  1030. UINT StGetAzureStatus(ADMIN *a, RPC_AZURE_STATUS *t);
  1031. UINT StSetAzureStatus(ADMIN *a, RPC_AZURE_STATUS *t);
  1032. UINT StGetDDnsInternetSetting(ADMIN *a, INTERNET_SETTING *t);
  1033. UINT StSetDDnsInternetSetting(ADMIN *a, INTERNET_SETTING *t);
  1034. UINT StSetVgsConfig(ADMIN *a, VGS_CONFIG *t);
  1035. UINT StGetVgsConfig(ADMIN *a, VGS_CONFIG *t);
  1036. UINT ScTest(RPC *r, RPC_TEST *t);
  1037. UINT ScGetServerInfo(RPC *r, RPC_SERVER_INFO *t);
  1038. UINT ScGetServerStatus(RPC *r, RPC_SERVER_STATUS *t);
  1039. UINT ScCreateListener(RPC *r, RPC_LISTENER *t);
  1040. UINT ScEnumListener(RPC *r, RPC_LISTENER_LIST *t);
  1041. UINT ScDeleteListener(RPC *r, RPC_LISTENER *t);
  1042. UINT ScEnableListener(RPC *r, RPC_LISTENER *t);
  1043. UINT ScSetPortsUDP(RPC *r, RPC_PORTS *t);
  1044. UINT ScGetPortsUDP(RPC *r, RPC_PORTS *t);
  1045. UINT ScSetProtoOptions(RPC *r, RPC_PROTO_OPTIONS *t);
  1046. UINT ScGetProtoOptions(RPC *r, RPC_PROTO_OPTIONS *t);
  1047. UINT ScSetServerPassword(RPC *r, RPC_SET_PASSWORD *t);
  1048. UINT ScSetFarmSetting(RPC *r, RPC_FARM *t);
  1049. UINT ScGetFarmSetting(RPC *r, RPC_FARM *t);
  1050. UINT ScGetFarmInfo(RPC *r, RPC_FARM_INFO *t);
  1051. UINT ScEnumFarmMember(RPC *r, RPC_ENUM_FARM *t);
  1052. UINT ScGetFarmConnectionStatus(RPC *r, RPC_FARM_CONNECTION_STATUS *t);
  1053. UINT ScSetServerCert(RPC *r, RPC_KEY_PAIR *t);
  1054. UINT ScGetServerCert(RPC *r, RPC_KEY_PAIR *t);
  1055. UINT ScGetServerCipherList(RPC *r, RPC_STR *t);
  1056. UINT ScGetServerCipher(RPC *r, RPC_STR *t);
  1057. UINT ScSetServerCipher(RPC *r, RPC_STR *t);
  1058. UINT ScAddWgk(RPC *r, RPC_WGK *t);
  1059. UINT ScDeleteWgk(RPC *r, RPC_WGK *t);
  1060. UINT ScEnumWgk(RPC *r, RPC_WGK *t);
  1061. UINT ScCreateHub(RPC *r, RPC_CREATE_HUB *t);
  1062. UINT ScSetHub(RPC *r, RPC_CREATE_HUB *t);
  1063. UINT ScGetHub(RPC *r, RPC_CREATE_HUB *t);
  1064. UINT ScEnumHub(RPC *r, RPC_ENUM_HUB *t);
  1065. UINT ScDeleteHub(RPC *r, RPC_DELETE_HUB *t);
  1066. UINT ScGetHubRadius(RPC *r, RPC_RADIUS *t);
  1067. UINT ScSetHubRadius(RPC *r, RPC_RADIUS *t);
  1068. UINT ScEnumConnection(RPC *r, RPC_ENUM_CONNECTION *t);
  1069. UINT ScDisconnectConnection(RPC *r, RPC_DISCONNECT_CONNECTION *t);
  1070. UINT ScGetConnectionInfo(RPC *r, RPC_CONNECTION_INFO *t);
  1071. UINT ScSetHubOnline(RPC *r, RPC_SET_HUB_ONLINE *t);
  1072. UINT ScGetHubStatus(RPC *r, RPC_HUB_STATUS *t);
  1073. UINT ScSetHubLog(RPC *r, RPC_HUB_LOG *t);
  1074. UINT ScGetHubLog(RPC *r, RPC_HUB_LOG *t);
  1075. UINT ScAddCa(RPC *r, RPC_HUB_ADD_CA *t);
  1076. UINT ScEnumCa(RPC *r, RPC_HUB_ENUM_CA *t);
  1077. UINT ScGetCa(RPC *r, RPC_HUB_GET_CA *t);
  1078. UINT ScDeleteCa(RPC *r, RPC_HUB_DELETE_CA *t);
  1079. UINT ScCreateLink(RPC *r, RPC_CREATE_LINK *t);
  1080. UINT ScEnumLink(RPC *r, RPC_ENUM_LINK *t);
  1081. UINT ScGetLinkStatus(RPC *r, RPC_LINK_STATUS *t);
  1082. UINT ScSetLinkOnline(RPC *r, RPC_LINK *t);
  1083. UINT ScSetLinkOffline(RPC *r, RPC_LINK *t);
  1084. UINT ScDeleteLink(RPC *r, RPC_LINK *t);
  1085. UINT ScRenameLink(RPC *r, RPC_RENAME_LINK *t);
  1086. UINT ScAddAccess(RPC *r, RPC_ADD_ACCESS *t);
  1087. UINT ScDeleteAccess(RPC *r, RPC_DELETE_ACCESS *t);
  1088. UINT ScEnumAccess(RPC *r, RPC_ENUM_ACCESS_LIST *t);
  1089. UINT ScCreateUser(RPC *r, RPC_SET_USER *t);
  1090. UINT ScSetUser(RPC *r, RPC_SET_USER *t);
  1091. UINT ScGetUser(RPC *r, RPC_SET_USER *t);
  1092. UINT ScDeleteUser(RPC *r, RPC_DELETE_USER *t);
  1093. UINT ScEnumUser(RPC *r, RPC_ENUM_USER *t);
  1094. UINT ScCreateGroup(RPC *r, RPC_SET_GROUP *t);
  1095. UINT ScSetGroup(RPC *r, RPC_SET_GROUP *t);
  1096. UINT ScGetGroup(RPC *r, RPC_SET_GROUP *t);
  1097. UINT ScDeleteGroup(RPC *r, RPC_DELETE_USER *t);
  1098. UINT ScEnumGroup(RPC *r, RPC_ENUM_GROUP *t);
  1099. UINT ScEnumSession(RPC *r, RPC_ENUM_SESSION *t);
  1100. UINT ScGetSessionStatus(RPC *r, RPC_SESSION_STATUS *t);
  1101. UINT ScDeleteSession(RPC *r, RPC_DELETE_SESSION *t);
  1102. UINT ScEnumMacTable(RPC *r, RPC_ENUM_MAC_TABLE *t);
  1103. UINT ScDeleteMacTable(RPC *r, RPC_DELETE_TABLE *t);
  1104. UINT ScEnumIpTable(RPC *r, RPC_ENUM_IP_TABLE *t);
  1105. UINT ScDeleteIpTable(RPC *r, RPC_DELETE_TABLE *t);
  1106. UINT ScGetLink(RPC *a, RPC_CREATE_LINK *t);
  1107. UINT ScSetLink(RPC *a, RPC_CREATE_LINK *t);
  1108. UINT ScSetAccessList(RPC *r, RPC_ENUM_ACCESS_LIST *t);
  1109. UINT ScSetKeep(RPC *r, RPC_KEEP *t);
  1110. UINT ScGetKeep(RPC *r, RPC_KEEP *t);
  1111. UINT ScEnableSecureNAT(RPC *r, RPC_HUB *t);
  1112. UINT ScDisableSecureNAT(RPC *r, RPC_HUB *t);
  1113. UINT ScSetSecureNATOption(RPC *r, VH_OPTION *t);
  1114. UINT ScGetSecureNATOption(RPC *r, VH_OPTION *t);
  1115. UINT ScEnumNAT(RPC *r, RPC_ENUM_NAT *t);
  1116. UINT ScEnumDHCP(RPC *r, RPC_ENUM_DHCP *t);
  1117. UINT ScGetSecureNATStatus(RPC *r, RPC_NAT_STATUS *t);
  1118. UINT ScEnumEthernet(RPC *r, RPC_ENUM_ETH *t);
  1119. UINT ScAddLocalBridge(RPC *r, RPC_LOCALBRIDGE *t);
  1120. UINT ScDeleteLocalBridge(RPC *r, RPC_LOCALBRIDGE *t);
  1121. UINT ScEnumLocalBridge(RPC *r, RPC_ENUM_LOCALBRIDGE *t);
  1122. UINT ScGetBridgeSupport(RPC *r, RPC_BRIDGE_SUPPORT *t);
  1123. UINT ScRebootServer(RPC *r, RPC_TEST *t);
  1124. UINT ScGetCaps(RPC *r, CAPSLIST *t);
  1125. UINT ScGetConfig(RPC *r, RPC_CONFIG *t);
  1126. UINT ScSetConfig(RPC *r, RPC_CONFIG *t);
  1127. UINT ScGetDefaultHubAdminOptions(RPC *r, RPC_ADMIN_OPTION *t);
  1128. UINT ScGetHubAdminOptions(RPC *r, RPC_ADMIN_OPTION *t);
  1129. UINT ScSetHubAdminOptions(RPC *r, RPC_ADMIN_OPTION *t);
  1130. UINT ScGetHubExtOptions(RPC *r, RPC_ADMIN_OPTION *t);
  1131. UINT ScSetHubExtOptions(RPC *r, RPC_ADMIN_OPTION *t);
  1132. UINT ScAddL3Switch(RPC *r, RPC_L3SW *t);
  1133. UINT ScDelL3Switch(RPC *r, RPC_L3SW *t);
  1134. UINT ScEnumL3Switch(RPC *r, RPC_ENUM_L3SW *t);
  1135. UINT ScStartL3Switch(RPC *r, RPC_L3SW *t);
  1136. UINT ScStopL3Switch(RPC *r, RPC_L3SW *t);
  1137. UINT ScAddL3If(RPC *r, RPC_L3IF *t);
  1138. UINT ScDelL3If(RPC *r, RPC_L3IF *t);
  1139. UINT ScEnumL3If(RPC *r, RPC_ENUM_L3IF *t);
  1140. UINT ScAddL3Table(RPC *r, RPC_L3TABLE *t);
  1141. UINT ScDelL3Table(RPC *r, RPC_L3TABLE *t);
  1142. UINT ScEnumL3Table(RPC *r, RPC_ENUM_L3TABLE *t);
  1143. UINT ScEnumCrl(RPC *r, RPC_ENUM_CRL *t);
  1144. UINT ScAddCrl(RPC *r, RPC_CRL *t);
  1145. UINT ScDelCrl(RPC *r, RPC_CRL *t);
  1146. UINT ScGetCrl(RPC *r, RPC_CRL *t);
  1147. UINT ScSetCrl(RPC *r, RPC_CRL *t);
  1148. UINT ScSetAcList(RPC *r, RPC_AC_LIST *t);
  1149. UINT ScGetAcList(RPC *r, RPC_AC_LIST *t);
  1150. UINT ScEnumLogFile(RPC *r, RPC_ENUM_LOG_FILE *t);
  1151. UINT ScReadLogFile(RPC *r, RPC_READ_LOG_FILE *t);
  1152. UINT ScAddLicenseKey(RPC *r, RPC_TEST *t);
  1153. UINT ScDelLicenseKey(RPC *r, RPC_TEST *t);
  1154. UINT ScEnumLicenseKey(RPC *r, RPC_ENUM_LICENSE_KEY *t);
  1155. UINT ScGetLicenseStatus(RPC *r, RPC_LICENSE_STATUS *t);
  1156. UINT ScSetSysLog(RPC *r, SYSLOG_SETTING *t);
  1157. UINT ScGetSysLog(RPC *r, SYSLOG_SETTING *t);
  1158. UINT ScEnumEthVLan(RPC *r, RPC_ENUM_ETH_VLAN *t);
  1159. UINT ScSetEnableEthVLan(RPC *r, RPC_TEST *t);
  1160. UINT ScSetHubMsg(RPC *r, RPC_MSG *t);
  1161. UINT ScGetHubMsg(RPC *r, RPC_MSG *t);
  1162. UINT ScCrash(RPC *r, RPC_TEST *t);
  1163. UINT ScGetAdminMsg(RPC *r, RPC_MSG *t);
  1164. UINT ScFlush(RPC *r, RPC_TEST *t);
  1165. UINT ScDebug(RPC *r, RPC_TEST *t);
  1166. UINT ScSetIPsecServices(RPC *r, IPSEC_SERVICES *t);
  1167. UINT ScGetIPsecServices(RPC *r, IPSEC_SERVICES *t);
  1168. UINT ScAddEtherIpId(RPC *r, ETHERIP_ID *t);
  1169. UINT ScGetEtherIpId(RPC *r, ETHERIP_ID *t);
  1170. UINT ScDeleteEtherIpId(RPC *r, ETHERIP_ID *t);
  1171. UINT ScEnumEtherIpId(RPC *r, RPC_ENUM_ETHERIP_ID *t);
  1172. UINT ScSetOpenVpnSstpConfig(RPC *r, OPENVPN_SSTP_CONFIG *t);
  1173. UINT ScGetOpenVpnSstpConfig(RPC *r, OPENVPN_SSTP_CONFIG *t);
  1174. UINT ScGetDDnsClientStatus(RPC *r, DDNS_CLIENT_STATUS *t);
  1175. UINT ScChangeDDnsClientHostname(RPC *r, RPC_TEST *t);
  1176. UINT ScRegenerateServerCert(RPC *r, RPC_TEST *t);
  1177. UINT ScMakeOpenVpnConfigFile(RPC *r, RPC_READ_LOG_FILE *t);
  1178. UINT ScSetSpecialListener(RPC *r, RPC_SPECIAL_LISTENER *t);
  1179. UINT ScGetSpecialListener(RPC *r, RPC_SPECIAL_LISTENER *t);
  1180. UINT ScGetAzureStatus(RPC *r, RPC_AZURE_STATUS *t);
  1181. UINT ScSetAzureStatus(RPC *r, RPC_AZURE_STATUS *t);
  1182. UINT ScGetDDnsInternetSetting(RPC *r, INTERNET_SETTING *t);
  1183. UINT ScSetDDnsInternetSetting(RPC *r, INTERNET_SETTING *t);
  1184. UINT ScSetVgsConfig(RPC *r, VGS_CONFIG *t);
  1185. UINT ScGetVgsConfig(RPC *r, VGS_CONFIG *t);
  1186. void InRpcTest(RPC_TEST *t, PACK *p);
  1187. void OutRpcTest(PACK *p, RPC_TEST *t);
  1188. void FreeRpcTest(RPC_TEST *t);
  1189. void InRpcServerInfo(RPC_SERVER_INFO *t, PACK *p);
  1190. void OutRpcServerInfo(PACK *p, RPC_SERVER_INFO *t);
  1191. void FreeRpcServerInfo(RPC_SERVER_INFO *t);
  1192. void InRpcServerStatus(RPC_SERVER_STATUS *t, PACK *p);
  1193. void OutRpcServerStatus(PACK *p, RPC_SERVER_STATUS *t);
  1194. void InRpcListener(RPC_LISTENER *t, PACK *p);
  1195. void OutRpcListener(PACK *p, RPC_LISTENER *t);
  1196. void InRpcListenerList(RPC_LISTENER_LIST *t, PACK *p);
  1197. void OutRpcListenerList(PACK *p, RPC_LISTENER_LIST *t);
  1198. void FreeRpcListenerList(RPC_LISTENER_LIST *t);
  1199. void InRpcPorts(RPC_PORTS *t, PACK *p);
  1200. void OutRpcPorts(PACK *p, RPC_PORTS *t);
  1201. void FreeRpcPorts(RPC_PORTS *t);
  1202. void InRpcStr(RPC_STR *t, PACK *p);
  1203. void OutRpcStr(PACK *p, RPC_STR *t);
  1204. void FreeRpcStr(RPC_STR *t);
  1205. void InRpcProtoOptions(RPC_PROTO_OPTIONS *t, PACK *p);
  1206. void OutRpcProtoOptions(PACK *p, RPC_PROTO_OPTIONS *t);
  1207. void FreeRpcProtoOptions(RPC_PROTO_OPTIONS *t);
  1208. void InRpcSetPassword(RPC_SET_PASSWORD *t, PACK *p);
  1209. void OutRpcSetPassword(PACK *p, RPC_SET_PASSWORD *t);
  1210. void InRpcFarm(RPC_FARM *t, PACK *p);
  1211. void OutRpcFarm(PACK *p, RPC_FARM *t);
  1212. void FreeRpcFarm(RPC_FARM *t);
  1213. void InRpcFarmHub(RPC_FARM_HUB *t, PACK *p);
  1214. void OutRpcFarmHub(PACK *p, RPC_FARM_HUB *t);
  1215. void InRpcFarmInfo(RPC_FARM_INFO *t, PACK *p);
  1216. void OutRpcFarmInfo(PACK *p, RPC_FARM_INFO *t);
  1217. void FreeRpcFarmInfo(RPC_FARM_INFO *t);
  1218. void InRpcEnumFarm(RPC_ENUM_FARM *t, PACK *p);
  1219. void OutRpcEnumFarm(PACK *p, RPC_ENUM_FARM *t);
  1220. void FreeRpcEnumFarm(RPC_ENUM_FARM *t);
  1221. void InRpcFarmConnectionStatus(RPC_FARM_CONNECTION_STATUS *t, PACK *p);
  1222. void OutRpcFarmConnectionStatus(PACK *p, RPC_FARM_CONNECTION_STATUS *t);
  1223. void InRpcHubOption(RPC_HUB_OPTION *t, PACK *p);
  1224. void OutRpcHubOption(PACK *p, RPC_HUB_OPTION *t);
  1225. void InRpcRadius(RPC_RADIUS *t, PACK *p);
  1226. void OutRpcRadius(PACK *p, RPC_RADIUS *t);
  1227. void InRpcHub(RPC_HUB *t, PACK *p);
  1228. void OutRpcHub(PACK *p, RPC_HUB *t);
  1229. void InRpcCreateHub(RPC_CREATE_HUB *t, PACK *p);
  1230. void OutRpcCreateHub(PACK *p, RPC_CREATE_HUB *t);
  1231. void InRpcEnumHub(RPC_ENUM_HUB *t, PACK *p);
  1232. void OutRpcEnumHub(PACK *p, RPC_ENUM_HUB *t);
  1233. void FreeRpcEnumHub(RPC_ENUM_HUB *t);
  1234. void InRpcDeleteHub(RPC_DELETE_HUB *t, PACK *p);
  1235. void OutRpcDeleteHub(PACK *p, RPC_DELETE_HUB *t);
  1236. void InRpcEnumConnection(RPC_ENUM_CONNECTION *t, PACK *p);
  1237. void OutRpcEnumConnection(PACK *p, RPC_ENUM_CONNECTION *t);
  1238. void FreeRpcEnumConnection(RPC_ENUM_CONNECTION *t);
  1239. void InRpcDisconnectConnection(RPC_DISCONNECT_CONNECTION *t, PACK *p);
  1240. void OutRpcDisconnectConnection(PACK *p, RPC_DISCONNECT_CONNECTION *t);
  1241. void InRpcConnectionInfo(RPC_CONNECTION_INFO *t, PACK *p);
  1242. void OutRpcConnectionInfo(PACK *p, RPC_CONNECTION_INFO *t);
  1243. void InRpcSetHubOnline(RPC_SET_HUB_ONLINE *t, PACK *p);
  1244. void OutRpcSetHubOnline(PACK *p, RPC_SET_HUB_ONLINE *t);
  1245. void InRpcHubStatus(RPC_HUB_STATUS *t, PACK *p);
  1246. void OutRpcHubStatus(PACK *p, RPC_HUB_STATUS *t);
  1247. void InRpcHubLog(RPC_HUB_LOG *t, PACK *p);
  1248. void OutRpcHubLog(PACK *p, RPC_HUB_LOG *t);
  1249. void InRpcHubAddCa(RPC_HUB_ADD_CA *t, PACK *p);
  1250. void OutRpcHubAddCa(PACK *p, RPC_HUB_ADD_CA *t);
  1251. void FreeRpcHubAddCa(RPC_HUB_ADD_CA *t);
  1252. void InRpcHubEnumCa(RPC_HUB_ENUM_CA *t, PACK *p);
  1253. void OutRpcHubEnumCa(PACK *p, RPC_HUB_ENUM_CA *t);
  1254. void FreeRpcHubEnumCa(RPC_HUB_ENUM_CA *t);
  1255. void InRpcHubGetCa(RPC_HUB_GET_CA *t, PACK *p);
  1256. void OutRpcHubGetCa(PACK *p, RPC_HUB_GET_CA *t);
  1257. void FreeRpcHubGetCa(RPC_HUB_GET_CA *t);
  1258. void InRpcHubDeleteCa(RPC_HUB_DELETE_CA *t, PACK *p);
  1259. void OutRpcHubDeleteCa(PACK *p, RPC_HUB_DELETE_CA *t);
  1260. void InRpcCreateLink(RPC_CREATE_LINK *t, PACK *p);
  1261. void OutRpcCreateLink(PACK *p, RPC_CREATE_LINK *t);
  1262. void FreeRpcCreateLink(RPC_CREATE_LINK *t);
  1263. void InRpcEnumLink(RPC_ENUM_LINK *t, PACK *p);
  1264. void OutRpcEnumLink(PACK *p, RPC_ENUM_LINK *t);
  1265. void FreeRpcEnumLink(RPC_ENUM_LINK *t);
  1266. void InRpcLinkStatus(RPC_LINK_STATUS *t, PACK *p);
  1267. void OutRpcLinkStatus(PACK *p, RPC_LINK_STATUS *t);
  1268. void FreeRpcLinkStatus(RPC_LINK_STATUS *t);
  1269. void InRpcLink(RPC_LINK *t, PACK *p);
  1270. void OutRpcLink(PACK *p, RPC_LINK *t);
  1271. void InRpcAccessEx(ACCESS *a, PACK *p, UINT index);
  1272. void InRpcAccess(ACCESS *a, PACK *p);
  1273. void OutRpcAccessEx(PACK *p, ACCESS *a, UINT index, UINT total);
  1274. void OutRpcAccess(PACK *p, ACCESS *a);
  1275. void InRpcEnumAccessList(RPC_ENUM_ACCESS_LIST *a, PACK *p);
  1276. void OutRpcEnumAccessList(PACK *p, RPC_ENUM_ACCESS_LIST *a);
  1277. void FreeRpcEnumAccessList(RPC_ENUM_ACCESS_LIST *a);
  1278. void *InRpcAuthData(PACK *p, UINT *authtype, char *username);
  1279. void OutRpcAuthData(PACK *p, void *authdata, UINT authtype);
  1280. void FreeRpcAuthData(void *authdata, UINT authtype);
  1281. void InRpcSetUser(RPC_SET_USER *t, PACK *p);
  1282. void OutRpcSetUser(PACK *p, RPC_SET_USER *t);
  1283. void FreeRpcSetUser(RPC_SET_USER *t);
  1284. void InRpcEnumUser(RPC_ENUM_USER *t, PACK *p);
  1285. void OutRpcEnumUser(PACK *p, RPC_ENUM_USER *t);
  1286. void FreeRpcEnumUser(RPC_ENUM_USER *t);
  1287. void InRpcSetGroup(RPC_SET_GROUP *t, PACK *p);
  1288. void OutRpcSetGroup(PACK *p, RPC_SET_GROUP *t);
  1289. void InRpcEnumGroup(RPC_ENUM_GROUP *t, PACK *p);
  1290. void OutRpcEnumGroup(PACK *p, RPC_ENUM_GROUP *t);
  1291. void FreeRpcEnumGroup(RPC_ENUM_GROUP *t);
  1292. void InRpcDeleteUser(RPC_DELETE_USER *t, PACK *p);
  1293. void OutRpcDeleteUser(PACK *p, RPC_DELETE_USER *t);
  1294. void InRpcEnumSession(RPC_ENUM_SESSION *t, PACK *p);
  1295. void OutRpcEnumSession(PACK *p, RPC_ENUM_SESSION *t);
  1296. void FreeRpcEnumSession(RPC_ENUM_SESSION *t);
  1297. void InRpcNodeInfo(NODE_INFO *t, PACK *p);
  1298. void OutRpcNodeInfo(PACK *p, NODE_INFO *t);
  1299. void InRpcSessionStatus(RPC_SESSION_STATUS *t, PACK *p);
  1300. void OutRpcSessionStatus(PACK *p, RPC_SESSION_STATUS *t);
  1301. void FreeRpcSessionStatus(RPC_SESSION_STATUS *t);
  1302. void InRpcDeleteSession(RPC_DELETE_SESSION *t, PACK *p);
  1303. void OutRpcDeleteSession(PACK *p, RPC_DELETE_SESSION *t);
  1304. void InRpcEnumMacTable(RPC_ENUM_MAC_TABLE *t, PACK *p);
  1305. void OutRpcEnumMacTable(PACK *p, RPC_ENUM_MAC_TABLE *t);
  1306. void FreeRpcEnumMacTable(RPC_ENUM_MAC_TABLE *t);
  1307. void InRpcEnumIpTable(RPC_ENUM_IP_TABLE *t, PACK *p);
  1308. void OutRpcEnumIpTable(PACK *p, RPC_ENUM_IP_TABLE *t);
  1309. void FreeRpcEnumIpTable(RPC_ENUM_IP_TABLE *t);
  1310. void InRpcDeleteTable(RPC_DELETE_TABLE *t, PACK *p);
  1311. void OutRpcDeleteTable(PACK *p, RPC_DELETE_TABLE *t);
  1312. void InRpcMemInfo(MEMINFO *t, PACK *p);
  1313. void OutRpcMemInfo(PACK *p, MEMINFO *t);
  1314. void InRpcKeyPair(RPC_KEY_PAIR *t, PACK *p);
  1315. void OutRpcKeyPair(PACK *p, RPC_KEY_PAIR *t);
  1316. void FreeRpcKeyPair(RPC_KEY_PAIR *t);
  1317. void InRpcWgk(RPC_WGK *t, PACK *p);
  1318. void OutRpcWgk(PACK *p, RPC_WGK *t);
  1319. void FreeRpcWgk(RPC_WGK *t);
  1320. void InRpcAddAccess(RPC_ADD_ACCESS *t, PACK *p);
  1321. void OutRpcAddAccess(PACK *p, RPC_ADD_ACCESS *t);
  1322. void InRpcDeleteAccess(RPC_DELETE_ACCESS *t, PACK *p);
  1323. void OutRpcDeleteAccess(PACK *p, RPC_DELETE_ACCESS *t);
  1324. void FreeRpcSetGroup(RPC_SET_GROUP *t);
  1325. void AdjoinRpcEnumSession(RPC_ENUM_SESSION *dest, RPC_ENUM_SESSION *src);
  1326. void AdjoinRpcEnumMacTable(RPC_ENUM_MAC_TABLE *dest, RPC_ENUM_MAC_TABLE *src);
  1327. void AdjoinRpcEnumIpTable(RPC_ENUM_IP_TABLE *dest, RPC_ENUM_IP_TABLE *src);
  1328. void InRpcKeep(RPC_KEEP *t, PACK *p);
  1329. void OutRpcKeep(PACK *p, RPC_KEEP *t);
  1330. void InRpcOsInfo(OS_INFO *t, PACK *p);
  1331. void OutRpcOsInfo(PACK *p, OS_INFO *t);
  1332. void FreeRpcOsInfo(OS_INFO *t);
  1333. void InRpcEnumEth(RPC_ENUM_ETH *t, PACK *p);
  1334. void OutRpcEnumEth(PACK *p, RPC_ENUM_ETH *t);
  1335. void FreeRpcEnumEth(RPC_ENUM_ETH *t);
  1336. void InRpcLocalBridge(RPC_LOCALBRIDGE *t, PACK *p);
  1337. void OutRpcLocalBridge(PACK *p, RPC_LOCALBRIDGE *t);
  1338. void InRpcEnumLocalBridge(RPC_ENUM_LOCALBRIDGE *t, PACK *p);
  1339. void OutRpcEnumLocalBridge(PACK *p, RPC_ENUM_LOCALBRIDGE *t);
  1340. void FreeRpcEnumLocalBridge(RPC_ENUM_LOCALBRIDGE *t);
  1341. void InRpcBridgeSupport(RPC_BRIDGE_SUPPORT *t, PACK *p);
  1342. void OutRpcBridgeSupport(PACK *p, RPC_BRIDGE_SUPPORT *t);
  1343. void InRpcConfig(RPC_CONFIG *t, PACK *p);
  1344. void OutRpcConfig(PACK *p, RPC_CONFIG *t);
  1345. void FreeRpcConfig(RPC_CONFIG *t);
  1346. void InRpcAdminOption(RPC_ADMIN_OPTION *t, PACK *p);
  1347. void OutRpcAdminOption(PACK *p, RPC_ADMIN_OPTION *t);
  1348. void FreeRpcAdminOption(RPC_ADMIN_OPTION *t);
  1349. void InRpcEnumL3Table(RPC_ENUM_L3TABLE *t, PACK *p);
  1350. void OutRpcEnumL3Table(PACK *p, RPC_ENUM_L3TABLE *t);
  1351. void FreeRpcEnumL3Table(RPC_ENUM_L3TABLE *t);
  1352. void InRpcL3Table(RPC_L3TABLE *t, PACK *p);
  1353. void OutRpcL3Table(PACK *p, RPC_L3TABLE *t);
  1354. void InRpcEnumL3If(RPC_ENUM_L3IF *t, PACK *p);
  1355. void OutRpcEnumL3If(PACK *p, RPC_ENUM_L3IF *t);
  1356. void FreeRpcEnumL3If(RPC_ENUM_L3IF *t);
  1357. void InRpcL3If(RPC_L3IF *t, PACK *p);
  1358. void OutRpcL3If(PACK *p, RPC_L3IF *t);
  1359. void InRpcL3Sw(RPC_L3SW *t, PACK *p);
  1360. void OutRpcL3Sw(PACK *p, RPC_L3SW *t);
  1361. void InRpcEnumL3Sw(RPC_ENUM_L3SW *t, PACK *p);
  1362. void OutRpcEnumL3Sw(PACK *p, RPC_ENUM_L3SW *t);
  1363. void FreeRpcEnumL3Sw(RPC_ENUM_L3SW *t);
  1364. void InRpcCrl(RPC_CRL *t, PACK *p);
  1365. void OutRpcCrl(PACK *p, RPC_CRL *t);
  1366. void FreeRpcCrl(RPC_CRL *t);
  1367. void InRpcEnumCrl(RPC_ENUM_CRL *t, PACK *p);
  1368. void OutRpcEnumCrl(PACK *p, RPC_ENUM_CRL *t);
  1369. void FreeRpcEnumCrl(RPC_ENUM_CRL *t);
  1370. void InRpcInt(RPC_INT *t, PACK *p);
  1371. void OutRpcInt(PACK *p, RPC_INT *t);
  1372. void InRpcAcList(RPC_AC_LIST *t, PACK *p);
  1373. void OutRpcAcList(PACK *p, RPC_AC_LIST *t);
  1374. void FreeRpcAcList(RPC_AC_LIST *t);
  1375. void InRpcEnumLogFile(RPC_ENUM_LOG_FILE *t, PACK *p);
  1376. void OutRpcEnumLogFile(PACK *p, RPC_ENUM_LOG_FILE *t);
  1377. void FreeRpcEnumLogFile(RPC_ENUM_LOG_FILE *t);
  1378. void AdjoinRpcEnumLogFile(RPC_ENUM_LOG_FILE *t, RPC_ENUM_LOG_FILE *src);
  1379. void InRpcReadLogFile(RPC_READ_LOG_FILE *t, PACK *p);
  1380. void OutRpcReadLogFile(PACK *p, RPC_READ_LOG_FILE *t);
  1381. void FreeRpcReadLogFile(RPC_READ_LOG_FILE *t);
  1382. void InRpcRenameLink(RPC_RENAME_LINK *t, PACK *p);
  1383. void OutRpcRenameLink(PACK *p, RPC_RENAME_LINK *t);
  1384. void InRpcEnumLicenseKey(RPC_ENUM_LICENSE_KEY *t, PACK *p);
  1385. void OutRpcEnumLicenseKey(PACK *p, RPC_ENUM_LICENSE_KEY *t);
  1386. void FreeRpcEnumLicenseKey(RPC_ENUM_LICENSE_KEY *t);
  1387. void InRpcLicenseStatus(RPC_LICENSE_STATUS *t, PACK *p);
  1388. void OutRpcLicenseStatus(PACK *p, RPC_LICENSE_STATUS *t);
  1389. void InRpcEnumEthVLan(RPC_ENUM_ETH_VLAN *t, PACK *p);
  1390. void OutRpcEnumEthVLan(PACK *p, RPC_ENUM_ETH_VLAN *t);
  1391. void FreeRpcEnumEthVLan(RPC_ENUM_ETH_VLAN *t);
  1392. void InRpcMsg(RPC_MSG *t, PACK *p);
  1393. void OutRpcMsg(PACK *p, RPC_MSG *t);
  1394. void FreeRpcMsg(RPC_MSG *t);
  1395. void InRpcWinVer(RPC_WINVER *t, PACK *p);
  1396. void OutRpcWinVer(PACK *p, RPC_WINVER *t);
  1397. void InIPsecServices(IPSEC_SERVICES *t, PACK *p);
  1398. void OutIPsecServices(PACK *p, IPSEC_SERVICES *t);
  1399. void InRpcEnumEtherIpId(RPC_ENUM_ETHERIP_ID *t, PACK *p);
  1400. void OutRpcEnumEtherIpId(PACK *p, RPC_ENUM_ETHERIP_ID *t);
  1401. void FreeRpcEnumEtherIpId(RPC_ENUM_ETHERIP_ID *t);
  1402. void InEtherIpId(ETHERIP_ID *t, PACK *p);
  1403. void OutEtherIpId(PACK *p, ETHERIP_ID *t);
  1404. void InOpenVpnSstpConfig(OPENVPN_SSTP_CONFIG *t, PACK *p);
  1405. void OutOpenVpnSstpConfig(PACK *p, OPENVPN_SSTP_CONFIG *t);
  1406. void InDDnsClientStatus(DDNS_CLIENT_STATUS *t, PACK *p);
  1407. void OutDDnsClientStatus(PACK *p, DDNS_CLIENT_STATUS *t);
  1408. void InRpcSpecialListener(RPC_SPECIAL_LISTENER *t, PACK *p);
  1409. void OutRpcSpecialListener(PACK *p, RPC_SPECIAL_LISTENER *t);
  1410. void InRpcAzureStatus(RPC_AZURE_STATUS *t, PACK *p);
  1411. void OutRpcAzureStatus(PACK *p, RPC_AZURE_STATUS *t);
  1412. void InRpcInternetSetting(INTERNET_SETTING *t, PACK *p);
  1413. void OutRpcInternetSetting(PACK *p, INTERNET_SETTING *t);
  1414. #endif // ADMIN_H