b311480e |
1 | /* |
2 | Copyright (c) 1998-1999 Matra Datavision |
973c2be1 |
3 | Copyright (c) 1999-2014 OPEN CASCADE SAS |
b311480e |
4 | |
973c2be1 |
5 | This file is part of Open CASCADE Technology software library. |
b311480e |
6 | |
d5f74e42 |
7 | This library is free software; you can redistribute it and/or modify it under |
8 | the terms of the GNU Lesser General Public License version 2.1 as published |
973c2be1 |
9 | by the Free Software Foundation, with special exception defined in the file |
10 | OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT |
11 | distribution for complete text of the license and disclaimer of any warranty. |
b311480e |
12 | |
973c2be1 |
13 | Alternatively, this file may be used under the terms of Open CASCADE |
14 | commercial license or contractual agreement. |
b311480e |
15 | */ |
16 | |
7fd59977 |
17 | #ifndef __INCLUDE_LIBRARY_COMAND_H |
18 | # define __INCLUDE_LIBRARY_COMAND_H |
19 | /* comand.h */ |
20 | |
21 | #define BUFFER_SIZE BUF_CMD_SIZ_BYT |
22 | /* Taille des buffers input/output pour les */ |
23 | /* messages. */ |
24 | |
25 | #define SIZE_CMD_BUFF BUFFER_SIZE - 7 * sizeof(short) |
26 | |
27 | |
28 | /*------------------------ Macro definitions -------------------------------*/ |
29 | /*---------- Pour entetes buffers commande et application ------------------*/ |
30 | |
31 | |
32 | #define GETSEQ_HDR(H) (0x03030303 & (H)) |
33 | #define GETLGR_HDR(H) ((H) >> 2 & 0x3f | (H) >> 4 & 0xfc0) |
34 | #define GETNARG_HDR(H) GETLGR_HDR(H) |
35 | #define GETLVL_HDR(H) ((H) >> 18 & 0x3f | (H) >> 20 & 0xfc0) |
36 | #define MAKE_HDR(S,LVL,X) ((S) \ |
37 | | (X) << 2 & 0xfc | (X) << 4 & 0xfc00 \ |
38 | | (LVL) << 18 & 0xfc0000 | (LVL) << 20 & 0xfc000000) |
39 | |
40 | |
41 | /* Format des requetes/reponses, longueurs structures et codes */ |
42 | |
43 | /* Codes des commandes serveur : */ |
44 | |
45 | #define COD_CMD_CTL -6 |
46 | /* SRVCTL */ |
47 | #define COD_CMD_CNX -5 |
48 | /* SRVCNX */ |
49 | #define COD_CMD_EXI -4 |
50 | /* SRVEXI */ |
51 | #define COD_CMD_ASS -3 |
52 | /* SRVASS */ |
53 | #define COD_CMD_ASN -2 |
54 | /* SRVASN */ |
55 | #define COD_CMD_DEA -1 |
56 | /* SRVDEA */ |
57 | #define COD_CMD_DAS 0 |
58 | /* SRVDAS */ |
59 | |
60 | /* Les codes des fonctions service applicatif */ |
61 | /* vont de 1 a n (n dependant du service */ |
62 | /* applicatif). */ |
63 | |
64 | /* Codes des fonctions de service (srvctl) */ |
65 | #define COD_CTL_PRT 0 /* Sortie de la sd du serveur */ |
66 | #define COD_CTL_RESTART 1 /* Arret et Restart du serveur */ |
67 | #define COD_CTL_ACT_RESTART 2 /* Arret et Restart du serveur s'il est actif |
68 | (k_func a TRUE) */ |
69 | #define COD_CTL_STOP 3 /* Arret du serveur (non fait) */ |
70 | #define COD_CTL_CPU 4 /* Rend le type de CPU du serveur */ |
71 | #define COD_CTL_ERRMSG 5 /* Rend le message d'erreur <--> status */ |
72 | #define COD_CTL_DYNLOAD 6 /* Requete de chargement dynamique d'un |
73 | partageable */ |
74 | #define COD_CTL_STARTLOAD 7 /* Comme COD_CTL_DYNLOAD + Start_only ou |
75 | multi-connection dans le process fils cree |
76 | par Serpc */ |
77 | #define COD_CTL_ETHADR 8 /* Permet de recuperer l'adresse Ethernet ou |
78 | le systeme identification */ |
79 | #define COD_CTL_DYNNOLOAD 9 /* Requete de chargement dynamique d'un |
80 | partageable */ |
81 | #define COD_CTL_STARTNOLOAD 10 /* Comme COD_CTL_DYNLOAD + Start_only ou |
82 | multi-connection dans le process fils cree |
83 | par Serpc */ |
84 | |
85 | /* Struct entete buffer application. |
86 | Commence sur le 2eme long du buffer de commande. */ |
87 | typedef struct _buf_acp BUF_ACP, *PBUF_ACP ; |
88 | struct _buf_acp { |
89 | unsigned int level ; |
90 | int func ; |
91 | unsigned int narg ; |
92 | unsigned int arg[1] ; |
93 | } ; |
94 | |
95 | typedef struct _cmd_buff CMD_BUFF, *PCMD_BUFF ; |
96 | struct _cmd_buff { |
97 | /* CMD_BUFF_OFF */ |
98 | /* CMD_ARG_OFF = CMD_BUFF_OFF/4 */ |
99 | /* Buffer commande/fonction SIZE_CMD_BUFF octets */ |
100 | /* Buffer des arguments user */ |
101 | |
102 | /* SRVCNX/SRVASS : */ |
103 | /* ACSRV --> SERVER : Node/Taskname Destinataire */ |
104 | /* SERVR --> SERVER : Node/taskname Origine */ |
105 | int siz_nod ; /* SIZ_NOD_OFF 12 */ |
106 | /* Longueur node destinataire 4 octets */ |
107 | char nam_nod[16] ; /* NAM_NOD_OFF 16 */ |
108 | /* Nom node destinataire 16 octets */ |
109 | int siz_tsk ; /* SIZ_TSK_OFF 32 */ |
110 | /* Longueur task destinatrice 4 octets */ |
111 | char nam_tsk[16] ; /* NAM_TSK_OFF 36 */ |
112 | /* Nom task destinatrice 16 octets */ |
113 | /* Node/Username/Pid Client : */ |
114 | int siz_nod_org ; /* SIZ_NOD_ORG_OFF 52 */ |
115 | /* Longueur node origine 4 octets */ |
116 | char nam_nod_org[16] ; /* NAM_NOD_ORG_OFF 56 */ |
117 | /* Nom node origine 16 octets */ |
118 | int siz_usr_org ; /* SIZ_USR_ORG_OFF 72 */ |
119 | /* Longueur Username origine 4 octets */ |
120 | char nam_usr_org[16] ; /* NAM_USR_ORG_OFF 76 */ |
121 | /* Username origine 16 octets */ |
122 | int siz_pid_org ; /* SIZ_PID_ORG_OFF 92 */ |
123 | /* 4 octets */ |
124 | int val_pid_org ; /* VAL_PID_ORG_OFF 96 */ |
125 | int val_pid_org_ext ; |
126 | /* Process identification PID 8 octets */ |
127 | /* ACSRV --> SERVER : Protocole utilise (CNX) */ |
128 | /* SERVR --> SERVER : Protocole a utiliser(ASS) */ |
129 | |
130 | int siz_ptc ; /* SIZ_PTC_OFF 104 */ |
131 | /* 4 octets */ |
132 | int val_ptc ; /* VAL_PTC_OFF 108 */ |
133 | /* Protocole (DECNET/TCP-IP) 4 octets */ |
134 | |
135 | char dummy[SIZE_CMD_BUFF - 100] ; |
136 | /* zone remplissage jusqu a SIZE_CMD_BUFF */ |
137 | } ; |
138 | |
139 | typedef struct _buf BUF, *PBUF ; |
140 | struct _buf { |
141 | |
142 | unsigned int lg_buff ; /* LG_BUFF_OFF 0 */ |
143 | /* Longueur commande/reponse 4 octets */ |
144 | /* LVL_OFF2 2 */ |
145 | /* Level (apres la longueur ! ...) */ |
146 | short lnkdest ; /* LNKDEST_OFF 4 */ |
147 | /* Lnk destinataire 2 octets */ |
148 | short lnkorg ; /* LNKORG_OFF 6 */ |
149 | /* Lnk origine 2 octets */ |
150 | short func ; /* FUNC_OFF 8 */ |
151 | /* Index/numero de fonction 2 octets */ |
152 | short numcmd ; /* NUMCMD_OFF 10 */ |
153 | /* Numero de commande 2 octets */ |
154 | CMD_BUFF cmd_buf ; |
155 | |
156 | } ; |
157 | |
158 | typedef struct _buf_rsp BUF_RSP, *PBUF_RSP ; |
159 | struct _buf_rsp { |
160 | |
161 | unsigned int lg_buff ; /* LG_BUFF_OFF 0 %%%% */ |
162 | /* Longueur commande/reponse 4 octets */ |
163 | /* LVL_OFF 0 reference dans READ_CHAN */ |
164 | /* Level (apres la longueur ! ...) */ |
165 | /* LVL_OFF2 2 */ |
166 | /* Level (apres la longueur ! ...) */ |
167 | short lnkdest ; /* LNKDEST_OFF 4 */ |
168 | /* Lnk destinataire 2 octets */ |
169 | short lnkorg ; /* LNKORG_OFF 6 */ |
170 | /* Lnk origine 2 octets */ |
171 | short func ; /* FUNC_OFF 8 */ |
172 | /* Index/numero de fonction 2 octets */ |
173 | short numcmd ; /* NUMCMD_OFF 10 */ |
174 | /* Numero de commande 2 octets */ |
175 | STATUS status ; /* STATUS_OFF 12 */ |
176 | /* Status 8 octets */ |
177 | unsigned int rsp_buff[(BUFFER_SIZE - 20) / 4] ; |
178 | /* RSP_BUFF_OFF 20 */ |
179 | /* Buffer reponse Fonctions ? octets */ |
180 | } ; |
181 | |
182 | |
183 | /* Longueurs des commandes serveur : */ |
184 | #define LG_CMD_SRV 12 |
185 | /* Longueur entete des commandes/fonctions */ |
186 | #define LG_CMD_CNX 112 |
187 | /* Longueur commande SRVCNX */ |
188 | #define LG_CMD_ASS 112 |
189 | /* Longueur commande SRVASS */ |
190 | #define LG_CMD_DEA 12 |
191 | /* Longueur commande SRVDEA */ |
192 | #define LG_CMD_EXI 12 |
193 | /* Longueur commande SRVEXI */ |
194 | #define LG_CMD_CTL 20 |
195 | /* Longueur commande SRVCTL sans argument */ |
196 | |
197 | /* Longueurs des reponses serveur : */ |
198 | #define LG_RSP_SRV 20 |
199 | /* Longueur minimum reponse (avec status) */ |
200 | #define LG_RSP_CNX 20 |
201 | /* Longueur reponse SRVCNX */ |
202 | #define LG_RSP_ASS 20 |
203 | /* Longueur reponse SRVASS */ |
204 | #define LG_RSP_DEA 20 |
205 | /* Longueur reponse SRVDEA */ |
206 | #define LG_RSP_EXI 20 |
207 | /* Longueur reponse SRVEXI */ |
208 | #define LG_RSP_CTL 20 |
209 | /* Longueur reponse SRVCTL */ |
210 | |
211 | /* Longueur des arguments des commandes : */ |
212 | #define LG_NOD 16 |
213 | /* Nodes names */ |
214 | #define HOSTNAMELEN 256 |
215 | /* Nodes names (AccesServer-Unix-Domains) */ |
216 | #define LG_TSK 80 |
217 | /* Tasknames */ |
218 | #define LG_USR 16 |
219 | /* Usernames */ |
220 | #define LG_PID 8 |
221 | /* PID Process Identification */ |
222 | #define LG_PID_DEC 4 |
223 | /* 4 octets de PID sur VAX/VMS */ |
224 | #define LG_PTC 4 |
225 | /* Type de protocole (DECNET/TCP-IP) */ |
226 | |
227 | #define LVL_VAL0 0x1 |
228 | /* Level des requetes ACSRV/serveur Macro */ |
229 | #define LVL_VAL 0x2 |
230 | /* Level des requetes ACSRV "C" */ |
231 | /* Le serveur Macro sans NTD refuse ce level 1*/ |
232 | /* Le serveur Macro+NTD accepte ces 2 levels*/ |
233 | /* Le serveur C accepte ces 2 levels */ |
234 | /* ACSRV "C" refuse le level 0 */ |
235 | #define LVL_WRT_VAL 0x3 |
236 | /* Level reponses serveurs Macro+NTD et C */ |
237 | /* Type de format des requetes pour serveur */ |
238 | /* Valeurs reelles des levels precedents */ |
239 | /* cadres a droite */ |
240 | #define SEQ_BYT_VAL 0x03020100 |
241 | /* Ordre des octets (VAX) */ |
242 | #define MSK_SEQ_BYT 0x03030303 |
243 | /* Masque pour ordre des octets */ |
244 | #define MSK_SEQ_BYT_VAL 0xFCFCFCFC |
245 | /* Complement masque pour ordre des octets */ |
246 | /* |
247 | ; LVL : Protocol level entre Client/Serveur et Serveur/Serveur |
248 | ; SEQ : Sequence des octets : pour tout ce qui n'est pas commande/reponse |
249 | ; (Longueur, Level, Lnkdest, Lnkorg, Cmd/Func, |
250 | ; Numcmd et Status pour la reponse) |
251 | |
252 | ; ARG : Nombre d'arguments du buffer de commande. Il comporte aussi la |
253 | ; sequence des octets du buffer de commande qui peut etre differente |
254 | ; de celle des informations acces_serveur/serveur. Et enfin il comporte |
255 | ; le niveau de protocole applicatif (Structure des commandes/reponses |
256 | ; et type de dialogue application/service applicatif). |
257 | ; Actuellement, dans la protection, chaque valeur d'argument est |
258 | ; precedee de son type et de sa longueur et le type de protocole |
259 | ; applicatif est nul. |
260 | |
261 | ; La reponse generee par le service applicatif doit suivre l'ordre des |
262 | ; octets de l'application cliente (cet ordre etant connu du service |
263 | ; applicatif dans la commande). La reponse ne comporte donc pas d'ordre |
264 | ; des octets. Si le type de protocole applicatif n'est pas compatible |
265 | ; avec le service applicatif, ce dernier rend un status. Sinon, il |
266 | ; traite la commande et fournit une reponse. Il n'y a donc pas dans la |
267 | ; reponse de type de protocole. Actuellement, dans la protection, la |
268 | ; reponse est constituee uniquement des valeurs sans nombre d'arguments. |
269 | ; Il serait souhaitable qu'elle comporte nombre d'arguments et |
270 | ; type/longueur de chaque argument avant sa valeur comme dans les |
271 | ; commandes. |
272 | */ |
273 | |
274 | #endif /* __INCLUDE_LIBRARY_COMAND_H */ |