Files
OCCT/src/IncludeLibrary/IncludeLibrary_comand.h
2012-03-05 19:23:40 +04:00

259 lines
9.7 KiB
C
Executable File

#ifndef __INCLUDE_LIBRARY_COMAND_H
# define __INCLUDE_LIBRARY_COMAND_H
/* comand.h */
#define BUFFER_SIZE BUF_CMD_SIZ_BYT
/* Taille des buffers input/output pour les */
/* messages. */
#define SIZE_CMD_BUFF BUFFER_SIZE - 7 * sizeof(short)
/*------------------------ Macro definitions -------------------------------*/
/*---------- Pour entetes buffers commande et application ------------------*/
#define GETSEQ_HDR(H) (0x03030303 & (H))
#define GETLGR_HDR(H) ((H) >> 2 & 0x3f | (H) >> 4 & 0xfc0)
#define GETNARG_HDR(H) GETLGR_HDR(H)
#define GETLVL_HDR(H) ((H) >> 18 & 0x3f | (H) >> 20 & 0xfc0)
#define MAKE_HDR(S,LVL,X) ((S) \
| (X) << 2 & 0xfc | (X) << 4 & 0xfc00 \
| (LVL) << 18 & 0xfc0000 | (LVL) << 20 & 0xfc000000)
/* Format des requetes/reponses, longueurs structures et codes */
/* Codes des commandes serveur : */
#define COD_CMD_CTL -6
/* SRVCTL */
#define COD_CMD_CNX -5
/* SRVCNX */
#define COD_CMD_EXI -4
/* SRVEXI */
#define COD_CMD_ASS -3
/* SRVASS */
#define COD_CMD_ASN -2
/* SRVASN */
#define COD_CMD_DEA -1
/* SRVDEA */
#define COD_CMD_DAS 0
/* SRVDAS */
/* Les codes des fonctions service applicatif */
/* vont de 1 a n (n dependant du service */
/* applicatif). */
/* Codes des fonctions de service (srvctl) */
#define COD_CTL_PRT 0 /* Sortie de la sd du serveur */
#define COD_CTL_RESTART 1 /* Arret et Restart du serveur */
#define COD_CTL_ACT_RESTART 2 /* Arret et Restart du serveur s'il est actif
(k_func a TRUE) */
#define COD_CTL_STOP 3 /* Arret du serveur (non fait) */
#define COD_CTL_CPU 4 /* Rend le type de CPU du serveur */
#define COD_CTL_ERRMSG 5 /* Rend le message d'erreur <--> status */
#define COD_CTL_DYNLOAD 6 /* Requete de chargement dynamique d'un
partageable */
#define COD_CTL_STARTLOAD 7 /* Comme COD_CTL_DYNLOAD + Start_only ou
multi-connection dans le process fils cree
par Serpc */
#define COD_CTL_ETHADR 8 /* Permet de recuperer l'adresse Ethernet ou
le systeme identification */
#define COD_CTL_DYNNOLOAD 9 /* Requete de chargement dynamique d'un
partageable */
#define COD_CTL_STARTNOLOAD 10 /* Comme COD_CTL_DYNLOAD + Start_only ou
multi-connection dans le process fils cree
par Serpc */
/* Struct entete buffer application.
Commence sur le 2eme long du buffer de commande. */
typedef struct _buf_acp BUF_ACP, *PBUF_ACP ;
struct _buf_acp {
unsigned int level ;
int func ;
unsigned int narg ;
unsigned int arg[1] ;
} ;
typedef struct _cmd_buff CMD_BUFF, *PCMD_BUFF ;
struct _cmd_buff {
/* CMD_BUFF_OFF */
/* CMD_ARG_OFF = CMD_BUFF_OFF/4 */
/* Buffer commande/fonction SIZE_CMD_BUFF octets */
/* Buffer des arguments user */
/* SRVCNX/SRVASS : */
/* ACSRV --> SERVER : Node/Taskname Destinataire */
/* SERVR --> SERVER : Node/taskname Origine */
int siz_nod ; /* SIZ_NOD_OFF 12 */
/* Longueur node destinataire 4 octets */
char nam_nod[16] ; /* NAM_NOD_OFF 16 */
/* Nom node destinataire 16 octets */
int siz_tsk ; /* SIZ_TSK_OFF 32 */
/* Longueur task destinatrice 4 octets */
char nam_tsk[16] ; /* NAM_TSK_OFF 36 */
/* Nom task destinatrice 16 octets */
/* Node/Username/Pid Client : */
int siz_nod_org ; /* SIZ_NOD_ORG_OFF 52 */
/* Longueur node origine 4 octets */
char nam_nod_org[16] ; /* NAM_NOD_ORG_OFF 56 */
/* Nom node origine 16 octets */
int siz_usr_org ; /* SIZ_USR_ORG_OFF 72 */
/* Longueur Username origine 4 octets */
char nam_usr_org[16] ; /* NAM_USR_ORG_OFF 76 */
/* Username origine 16 octets */
int siz_pid_org ; /* SIZ_PID_ORG_OFF 92 */
/* 4 octets */
int val_pid_org ; /* VAL_PID_ORG_OFF 96 */
int val_pid_org_ext ;
/* Process identification PID 8 octets */
/* ACSRV --> SERVER : Protocole utilise (CNX) */
/* SERVR --> SERVER : Protocole a utiliser(ASS) */
int siz_ptc ; /* SIZ_PTC_OFF 104 */
/* 4 octets */
int val_ptc ; /* VAL_PTC_OFF 108 */
/* Protocole (DECNET/TCP-IP) 4 octets */
char dummy[SIZE_CMD_BUFF - 100] ;
/* zone remplissage jusqu a SIZE_CMD_BUFF */
} ;
typedef struct _buf BUF, *PBUF ;
struct _buf {
unsigned int lg_buff ; /* LG_BUFF_OFF 0 */
/* Longueur commande/reponse 4 octets */
/* LVL_OFF2 2 */
/* Level (apres la longueur ! ...) */
short lnkdest ; /* LNKDEST_OFF 4 */
/* Lnk destinataire 2 octets */
short lnkorg ; /* LNKORG_OFF 6 */
/* Lnk origine 2 octets */
short func ; /* FUNC_OFF 8 */
/* Index/numero de fonction 2 octets */
short numcmd ; /* NUMCMD_OFF 10 */
/* Numero de commande 2 octets */
CMD_BUFF cmd_buf ;
} ;
typedef struct _buf_rsp BUF_RSP, *PBUF_RSP ;
struct _buf_rsp {
unsigned int lg_buff ; /* LG_BUFF_OFF 0 %%%% */
/* Longueur commande/reponse 4 octets */
/* LVL_OFF 0 reference dans READ_CHAN */
/* Level (apres la longueur ! ...) */
/* LVL_OFF2 2 */
/* Level (apres la longueur ! ...) */
short lnkdest ; /* LNKDEST_OFF 4 */
/* Lnk destinataire 2 octets */
short lnkorg ; /* LNKORG_OFF 6 */
/* Lnk origine 2 octets */
short func ; /* FUNC_OFF 8 */
/* Index/numero de fonction 2 octets */
short numcmd ; /* NUMCMD_OFF 10 */
/* Numero de commande 2 octets */
STATUS status ; /* STATUS_OFF 12 */
/* Status 8 octets */
unsigned int rsp_buff[(BUFFER_SIZE - 20) / 4] ;
/* RSP_BUFF_OFF 20 */
/* Buffer reponse Fonctions ? octets */
} ;
/* Longueurs des commandes serveur : */
#define LG_CMD_SRV 12
/* Longueur entete des commandes/fonctions */
#define LG_CMD_CNX 112
/* Longueur commande SRVCNX */
#define LG_CMD_ASS 112
/* Longueur commande SRVASS */
#define LG_CMD_DEA 12
/* Longueur commande SRVDEA */
#define LG_CMD_EXI 12
/* Longueur commande SRVEXI */
#define LG_CMD_CTL 20
/* Longueur commande SRVCTL sans argument */
/* Longueurs des reponses serveur : */
#define LG_RSP_SRV 20
/* Longueur minimum reponse (avec status) */
#define LG_RSP_CNX 20
/* Longueur reponse SRVCNX */
#define LG_RSP_ASS 20
/* Longueur reponse SRVASS */
#define LG_RSP_DEA 20
/* Longueur reponse SRVDEA */
#define LG_RSP_EXI 20
/* Longueur reponse SRVEXI */
#define LG_RSP_CTL 20
/* Longueur reponse SRVCTL */
/* Longueur des arguments des commandes : */
#define LG_NOD 16
/* Nodes names */
#define HOSTNAMELEN 256
/* Nodes names (AccesServer-Unix-Domains) */
#define LG_TSK 80
/* Tasknames */
#define LG_USR 16
/* Usernames */
#define LG_PID 8
/* PID Process Identification */
#define LG_PID_DEC 4
/* 4 octets de PID sur VAX/VMS */
#define LG_PTC 4
/* Type de protocole (DECNET/TCP-IP) */
#define LVL_VAL0 0x1
/* Level des requetes ACSRV/serveur Macro */
#define LVL_VAL 0x2
/* Level des requetes ACSRV "C" */
/* Le serveur Macro sans NTD refuse ce level 1*/
/* Le serveur Macro+NTD accepte ces 2 levels*/
/* Le serveur C accepte ces 2 levels */
/* ACSRV "C" refuse le level 0 */
#define LVL_WRT_VAL 0x3
/* Level reponses serveurs Macro+NTD et C */
/* Type de format des requetes pour serveur */
/* Valeurs reelles des levels precedents */
/* cadres a droite */
#define SEQ_BYT_VAL 0x03020100
/* Ordre des octets (VAX) */
#define MSK_SEQ_BYT 0x03030303
/* Masque pour ordre des octets */
#define MSK_SEQ_BYT_VAL 0xFCFCFCFC
/* Complement masque pour ordre des octets */
/*
; LVL : Protocol level entre Client/Serveur et Serveur/Serveur
; SEQ : Sequence des octets : pour tout ce qui n'est pas commande/reponse
; (Longueur, Level, Lnkdest, Lnkorg, Cmd/Func,
; Numcmd et Status pour la reponse)
; ARG : Nombre d'arguments du buffer de commande. Il comporte aussi la
; sequence des octets du buffer de commande qui peut etre differente
; de celle des informations acces_serveur/serveur. Et enfin il comporte
; le niveau de protocole applicatif (Structure des commandes/reponses
; et type de dialogue application/service applicatif).
; Actuellement, dans la protection, chaque valeur d'argument est
; precedee de son type et de sa longueur et le type de protocole
; applicatif est nul.
; La reponse generee par le service applicatif doit suivre l'ordre des
; octets de l'application cliente (cet ordre etant connu du service
; applicatif dans la commande). La reponse ne comporte donc pas d'ordre
; des octets. Si le type de protocole applicatif n'est pas compatible
; avec le service applicatif, ce dernier rend un status. Sinon, il
; traite la commande et fournit une reponse. Il n'y a donc pas dans la
; reponse de type de protocole. Actuellement, dans la protection, la
; reponse est constituee uniquement des valeurs sans nombre d'arguments.
; Il serait souhaitable qu'elle comporte nombre d'arguments et
; type/longueur de chaque argument avant sa valeur comme dans les
; commandes.
*/
#endif /* __INCLUDE_LIBRARY_COMAND_H */