summaryrefslogtreecommitdiffstats
path: root/private/net/svcdlls/lls/server/pack.h
blob: 7e6feadeb62c320655b671d1f1d93ee04b815ff2 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
/*++

Copyright (c) 1995  Microsoft Corporation

Module Name:

   Pack.h

Abstract:


Author:

   Arthur Hanson       (arth)      Dec 07, 1994

Environment:

Revision History:

   Jeff Parham (jeffparh) 05-Dec-1995
      o  Added new fields to purchase record to support secure certificates.
      o  Unified per server purchase model with per seat purchase model for
         secure certificates; per server model still done in the traditional
         manner for non-secure certificates (for backwards compatibility).
      o  Added SaveAll() function analogous to LoadAll().
      o  Added support for extended user data packing/unpacking.  This was
         done to save the SUITE_USE flag across restarts of the service.
      o  Removed user table parameters from unpack routines that didn't use
         them.

--*/

#ifndef _LLS_PACK_H
#define _LLS_PACK_H


#ifdef __cplusplus
extern "C" {
#endif

/////////////////////////////////////////////////////////////////////
//
// Save / Load Mapping
//
#define MAPPING_FILE_VERSION 0x0100

typedef struct _PACK_MAPPING_RECORD {
   LPTSTR Name;
   LPTSTR Comment;
   ULONG Licenses;
} PACK_MAPPING_RECORD, *PPACK_MAPPING_RECORD;

typedef struct _PACK_MAPPING_USER_RECORD {
   ULONG Mapping;
   LPTSTR Name;
} PACK_MAPPING_USER_RECORD, *PPACK_MAPPING_USER_RECORD;

typedef struct _MAPPING_FILE_HEADER {
   ULONG MappingUserTableSize;
   ULONG MappingUserStringSize;
   ULONG MappingTableSize;
   ULONG MappingStringSize;
} MAPPING_FILE_HEADER, *PMAPPING_FILE_HEADER;


/////////////////////////////////////////////////////////////////////
//
// Save / Load License
//

/////////////////  OLD (3.51) FORMAT ////////////////////
#define LICENSE_FILE_VERSION_0 0x0100

typedef struct _PACK_LICENSE_PURCHASE_RECORD_0 {
   ULONG Service;
   LONG NumberLicenses;
   DWORD Date;
   LPTSTR Admin;
   LPTSTR Comment;
} PACK_LICENSE_PURCHASE_RECORD_0, *PPACK_LICENSE_PURCHASE_RECORD_0;

typedef struct _LICENSE_FILE_HEADER_0 {
   ULONG LicenseServiceTableSize;
   ULONG LicenseServiceStringSize;
   ULONG LicenseTableSize;
   ULONG LicenseStringSize;
} LICENSE_FILE_HEADER_0, *PLICENSE_FILE_HEADER_0;

/////////////////  NEW FORMAT ////////////////////
#define LICENSE_FILE_VERSION 0x0201

typedef struct _PACK_LICENSE_SERVICE_RECORD {
   LPTSTR ServiceName;
   LONG NumberLicenses;
} PACK_LICENSE_SERVICE_RECORD, *PPACK_LICENSE_SERVICE_RECORD;

typedef struct _PACK_LICENSE_PURCHASE_RECORD {
   ULONG Service;
   LONG NumberLicenses;
   DWORD Date;
   LPTSTR Admin;
   LPTSTR Comment;

   // new for SUR: (see description in purchase.h)
   ULONG    PerServerService;
   DWORD    AllowedModes;
   DWORD    CertificateID;
   LPTSTR   Source;
   DWORD    ExpirationDate;
   DWORD    MaxQuantity;
   LPTSTR   Vendor;
   DWORD    Secrets[ LLS_NUM_SECRETS ];
} PACK_LICENSE_PURCHASE_RECORD, *PPACK_LICENSE_PURCHASE_RECORD;

typedef struct _LICENSE_FILE_HEADER {
   ULONG LicenseServiceTableSize;
   ULONG LicenseServiceStringSize;

   ULONG LicenseTableSize;
   ULONG LicenseStringSize;

   // new for SUR:
   ULONG PerServerLicenseServiceTableSize;
   ULONG PerServerLicenseServiceStringSize;

} LICENSE_FILE_HEADER, *PLICENSE_FILE_HEADER;


/////////////////////////////////////////////////////////////////////
//
// Save / Load LLS Data
//

/////////////////  OLD (3.51) FORMAT ////////////////////
#define USER_FILE_VERSION_0 0x0100

typedef struct _LLS_DATA_FILE_HEADER_0 {
   ULONG ServiceTableSize;
   ULONG ServiceStringSize;
   ULONG ServerTableSize;
   ULONG ServerStringSize;
   ULONG ServerServiceTableSize;
   ULONG UserTableSize;
   ULONG UserStringSize;
} LLS_DATA_FILE_HEADER_0, *PLLS_DATA_FILE_HEADER_0;

/////////////////  NEW FORMAT ////////////////////
#define USER_FILE_VERSION 0x0200

typedef struct _LLS_DATA_FILE_HEADER {
   ULONG ServiceLevel;
   ULONG ServiceTableSize;
   ULONG ServiceStringSize;

   ULONG ServerLevel;
   ULONG ServerTableSize;
   ULONG ServerStringSize;

   ULONG ServerServiceLevel;
   ULONG ServerServiceTableSize;

   ULONG UserLevel;
   ULONG UserTableSize;
   ULONG UserStringSize;
} LLS_DATA_FILE_HEADER, *PLLS_DATA_FILE_HEADER;



VOID LicenseListLoad();
NTSTATUS LicenseListSave();
VOID MappingListLoad();
NTSTATUS MappingListSave();
VOID LLSDataLoad();
NTSTATUS LLSDataSave();

VOID LoadAll ( );
VOID SaveAll ( );

NTSTATUS ServiceListPack ( ULONG *pServiceTableSize, PREPL_SERVICE_RECORD *pServices );
VOID     ServiceListUnpack ( ULONG   ServiceTableSize, PREPL_SERVICE_RECORD Services, ULONG ServerTableSize, PREPL_SERVER_RECORD Servers, ULONG ServerServiceTableSize, PREPL_SERVER_SERVICE_RECORD ServerServices );
NTSTATUS ServerListPack ( ULONG *pServerTableSize, PREPL_SERVER_RECORD *pServers );
VOID     ServerListUnpack ( ULONG   ServiceTableSize, PREPL_SERVICE_RECORD Services, ULONG ServerTableSize, PREPL_SERVER_RECORD Servers, ULONG ServerServiceTableSize, PREPL_SERVER_SERVICE_RECORD ServerServices );
NTSTATUS ServerServiceListPack ( ULONG *pServerServiceTableSize, PREPL_SERVER_SERVICE_RECORD *pServerServices );
VOID     ServerServiceListUnpack ( ULONG ServiceTableSize, PREPL_SERVICE_RECORD Services, ULONG ServerTableSize, PREPL_SERVER_RECORD Servers, ULONG ServerServiceTableSize, PREPL_SERVER_SERVICE_RECORD ServerServices );
NTSTATUS UserListPack ( DWORD LastReplicated, ULONG UserLevel, ULONG *pUserTableSize, LPVOID *pUsers );
VOID     UserListUnpack ( ULONG ServiceTableSize, PREPL_SERVICE_RECORD Services, ULONG ServerTableSize, PREPL_SERVER_RECORD Servers, ULONG ServerServiceTableSize, PREPL_SERVER_SERVICE_RECORD ServerServices, ULONG UserLevel, ULONG UserTableSize, LPVOID Users );
NTSTATUS PackAll ( DWORD LastReplicated, ULONG *pServiceTableSize, PREPL_SERVICE_RECORD *pServices, ULONG *pServerTableSize, PREPL_SERVER_RECORD *pServers, ULONG *pServerServiceTableSize, PREPL_SERVER_SERVICE_RECORD *pServerServices, ULONG UserLevel, ULONG *pUserTableSize, LPVOID *pUsers );
VOID     UnpackAll ( ULONG ServiceTableSize, PREPL_SERVICE_RECORD Services, ULONG ServerTableSize, PREPL_SERVER_RECORD Servers, ULONG ServerServiceTableSize, PREPL_SERVER_SERVICE_RECORD ServerServices, ULONG UserLevel, ULONG UserTableSize, LPVOID Users );


#ifdef __cplusplus
}
#endif

#endif