1/* BEGIN LICENSE BLOCK
2 * Version: CMPL 1.1
3 *
4 * The contents of this file are subject to the Cisco-style Mozilla Public
5 * License Version 1.1 (the "License"); you may not use this file except
6 * in compliance with the License.  You may obtain a copy of the License
7 * at www.eclipse-clp.org/license.
8 *
9 * Software distributed under the License is distributed on an "AS IS"
10 * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.  See
11 * the License for the specific language governing rights and limitations
12 * under the License.
13 *
14 * The Original Code is  The ECLiPSe Constraint Logic Programming System.
15 * The Initial Developer of the Original Code is  Cisco Systems, Inc.
16 * Portions created by the Initial Developer are
17 * Copyright (C) 1994-2006 Cisco Systems, Inc.  All Rights Reserved.
18 *
19 * Contributor(s): Kees Schuerman, ECRC
20 *
21 * END LICENSE BLOCK */
22/**********************************************************************
23**      System: Parallel Distributed System
24**        File: nsrv_int.h
25**      Author: Kees Schuerman
26**      SccsId: "@(#)nsrv_int.h	1.18 07 Nov 1995"
27** Description: Name Service Internals
28***********************************************************************/
29
30#ifndef _NSRV_INT_H_
31#define _NSRV_INT_H_
32
33/*
34** Return Codes
35*/
36
37#define NSRV_XDR_ENCODE        -3          /* xdr encoding error             */
38#define NSRV_XDR_DECODE        -2          /* xdr decoding error             */
39
40
41
42/*
43** Property
44*/
45
46#define NSRV_ENVIRONMENT	1
47#define NSRV_DEFAULT		2
48#define NSRV_PARAMETER  	3
49
50
51
52/*
53** Version
54*/
55
56#define NSRV_VERSION_MAJOR      0
57#define NSRV_VERSION_MINOR      1
58
59
60/*
61** Mode
62*/
63
64typedef pds_word_t nsrv_mode_t;
65
66#define xdr_nsrv_mode	xdr_pds_word
67
68#define NSRV_PDS		0x0001
69#define NSRV_SHM		0x0010
70
71
72
73/**********************************************************************
74** Runtime Consistency Checking
75***********************************************************************/
76
77#if defined(NDEBUG)
78#define nsrv_assert(ex)
79#else
80#if defined(__STDC__)
81    extern int fprintf(FILE * stream, const char * format, ...);
82#else /* __STDC__ */
83    extern int fprintf();
84#endif /* __STDC__ */
85#define nsrv_assert(ex) {                                       \
86    if (!(ex)) {                                                \
87        (void) fprintf(stderr,                                  \
88               "PDS NSRV Assertion Failed:");                   \
89        (void) fprintf(stderr, " file \"%s\"", __FILE__);       \
90        (void) fprintf(stderr, " line %d\n", __LINE__);         \
91        exit(-1);                                               \
92    }                                                           \
93}
94#endif /* NDEBUG */
95
96#define nsrv_assert_always() {					\
97        (void) fprintf(stderr,                                  \
98               "PDS NSRV Assertion Failed:");                   \
99        (void) fprintf(stderr, " file \"%s\"", __FILE__);       \
100        (void) fprintf(stderr, " line %d\n", __LINE__);         \
101        exit(-1);                                               \
102}
103
104#define nsrv_perror_and_assert_always(s) {			\
105	(void) perror(s);					\
106	nsrv_assert_always();					\
107}
108
109
110/*
111** NSRV Memory Areas
112*/
113
114extern char * nsrv_data_start;	/* start of (shared) data area	*/
115extern char * nsrv_msg_start;	/* start of (shared) msg area	*/
116
117
118/*
119** Request/Reply Buffer
120**
121** Note: XDR requires that buffers are aligned on a 4-byte boundary.
122**       The size of the buffers is measured in 4-byte XDR entities.
123*/
124
125#define NSRV_BUF_SIZE (NSRV_FILENAMELEN_MAX + 128)
126
127
128/*
129** Request Numbers
130*/
131
132typedef pds_int32  nsrv_number_t;
133
134#define MDT_NSRVNUMBER	MDT_INT32
135
136#define xdr_nsrv_number	xdr_pds_int32
137
138#define NSRV_APORT_REGISTER	0
139#define NSRV_APORT_DEREGISTER	1
140#define NSRV_APORT_LOOK_UP	2
141#define NSRV_BPORT_REGISTER	3
142#define NSRV_BPORT_DEREGISTER	4
143#define NSRV_BPORT_LOOK_UP	5
144#define NSRV_BDOMAIN_REGISTER	6
145#define NSRV_BDOMAIN_DEREGISTER	7
146#define NSRV_BDOMAIN_LOOK_UP	8
147#define NSRV_NEW_BPORT_ID	9
148#define NSRV_FREE_BPORT_ID	10
149#define NSRV_NEW_BDOMAIN_ID	11
150#define NSRV_FREE_BDOMAIN_ID	12
151#define NSRV_VERSION		13
152#define NSRV_NOF_APORTS		14
153
154#define NSRV_PING		20
155
156#define NSRV_GET_MODE		30
157#define NSRV_GET_PATH		31
158
159
160/*
161** Requests
162*/
163
164typedef struct {
165    nsrv_number_t request_number;
166    aport_id_t reply_port_id;
167    nsrv_name_t key;
168    nsrv_name_t name;
169    nsrv_name_t signature;
170    aport_t port;
171} aport_register_request_t;
172
173extern msg_type_t MDT_APORT_REGISTER_REQUEST;
174
175typedef struct {
176    nsrv_number_t request_number;
177    aport_id_t reply_port_id;
178    nsrv_name_t key;
179    nsrv_name_t name;
180    nsrv_name_t signature;
181    bport_t port;
182} bport_register_request_t;
183
184extern msg_type_t MDT_BPORT_REGISTER_REQUEST;
185
186typedef struct {
187    nsrv_number_t request_number;
188    aport_id_t reply_port_id;
189    nsrv_name_t key;
190    nsrv_name_t name;
191    nsrv_name_t signature;
192    bdomain_t domain;
193} bdomain_register_request_t;
194
195extern msg_type_t MDT_BDOMAIN_REGISTER_REQUEST;
196
197typedef struct {
198    nsrv_number_t request_number;
199    aport_id_t reply_port_id;
200    nsrv_name_t key;
201    nsrv_name_t name;
202    nsrv_name_t signature;
203} deregister_request_t;
204
205extern msg_type_t MDT_DEREGISTER_REQUEST;
206
207typedef struct {
208    nsrv_number_t request_number;
209    aport_id_t reply_port_id;
210    nsrv_name_t key;
211    nsrv_name_t name;
212} look_up_request_t;
213
214extern msg_type_t MDT_LOOK_UP_REQUEST;
215
216typedef struct {
217    nsrv_number_t request_number;
218    aport_id_t reply_port_id;
219    nsrv_name_t signature;
220    bport_id_t port_id;
221} bport_id_request_t;
222
223extern msg_type_t MDT_BPORTID_REQUEST;
224
225typedef struct {
226    nsrv_number_t request_number;
227    aport_id_t reply_port_id;
228    nsrv_name_t signature;
229    bdomain_id_t domain_id;
230} bdomain_id_request_t;
231
232extern msg_type_t MDT_BDOMAINID_REQUEST;
233
234typedef struct {
235    nsrv_number_t request_number;
236    aport_id_t reply_port_id;
237} version_request_t;
238
239extern msg_type_t MDT_VERSION_REQUEST;
240
241
242/*
243** Replies
244*/
245
246typedef struct {
247    nsrv_ret_t ret;
248} simple_reply_t;
249
250extern msg_type_t MDT_SIMPLE_REPLY;
251
252typedef struct {
253    nsrv_ret_t ret;
254    aport_t port;
255} aport_reply_t;
256
257extern msg_type_t MDT_APORT_REPLY;
258
259typedef struct {
260    nsrv_ret_t ret;
261    bport_t port;
262} bport_reply_t;
263
264extern msg_type_t MDT_BPORT_REPLY;
265
266typedef struct {
267    nsrv_ret_t ret;
268    bdomain_t domain;
269} bdomain_reply_t;
270
271extern msg_type_t MDT_BDOMAIN_REPLY;
272
273typedef struct {
274    nsrv_ret_t ret;
275    bport_id_t port_id;
276} bport_id_reply_t;
277
278extern msg_type_t MDT_BPORTID_REPLY;
279
280typedef struct {
281    nsrv_ret_t ret;
282    bdomain_id_t domain_id;
283} bdomain_id_reply_t;
284
285extern msg_type_t MDT_BDOMAINID_REPLY;
286
287typedef struct {
288    nsrv_ret_t ret;
289    nsrv_version_t version;
290} version_reply_t;
291
292extern msg_type_t MDT_VERSION_REPLY;
293
294#if defined(__STDC__)
295extern nsrv_ret_t nsrv_types_init_i(void);
296extern void nsrv_init_port_number(unsigned * port_number,
297				  unsigned * property);
298extern void nsrv_sock_linger(int sock);
299extern void nsrv_sock_nodelay(int sock);
300extern nsrv_ret_t nsrv_send_sock(int sock,
301				 char * message,
302				 pds_uint32 size);
303extern nsrv_ret_t nsrv_receive_sock(int sock,
304				    char * message,
305				    pds_uint32 * size);
306extern void nsrv_close_sock(int sock);
307extern void nsrv_init_server_i(char * datafile, int verbose);
308extern void nsrv_exit_i(void);
309extern nsrv_ret_t nsrv_init_client_i(char * datafile);
310extern nsrv_ret_t nsrv_aport_register_i(nsrv_name_t key,
311                                        nsrv_name_t name,
312                                        nsrv_name_t signature,
313                                        aport_t * port);
314extern nsrv_ret_t nsrv_aport_deregister_i(nsrv_name_t key,
315                                          nsrv_name_t name,
316                                          nsrv_name_t signature);
317extern nsrv_ret_t nsrv_aport_look_up_i(nsrv_name_t key,
318                                       nsrv_name_t name,
319                                       aport_t * port);
320extern nsrv_ret_t nsrv_bport_register_i(nsrv_name_t key,
321                                        nsrv_name_t name,
322                                        nsrv_name_t signature,
323                                        bport_t * port);
324extern nsrv_ret_t nsrv_bport_deregister_i(nsrv_name_t key,
325                                          nsrv_name_t name,
326                                          nsrv_name_t signature);
327extern nsrv_ret_t nsrv_bport_look_up_i(nsrv_name_t key,
328                                       nsrv_name_t name,
329                                       bport_t * port);
330extern nsrv_ret_t nsrv_bdomain_register_i(nsrv_name_t key,
331                                          nsrv_name_t name,
332                                          nsrv_name_t signature,
333                                          bdomain_t * domain);
334extern nsrv_ret_t nsrv_bdomain_deregister_i(nsrv_name_t key,
335                                            nsrv_name_t name,
336                                            nsrv_name_t signature);
337extern nsrv_ret_t nsrv_bdomain_look_up_i(nsrv_name_t key,
338                                         nsrv_name_t name,
339                                         bdomain_t * domain);
340extern nsrv_ret_t nsrv_new_bport_id_i(nsrv_name_t signature,
341                                      bport_id_t * port_id);
342extern nsrv_ret_t nsrv_free_bport_id_i(nsrv_name_t signature,
343                                       bport_id_t port_id);
344extern nsrv_ret_t nsrv_new_bdomain_id_i(nsrv_name_t signature,
345                                        bdomain_id_t * domain_id);
346extern nsrv_ret_t nsrv_free_bdomain_id_i(nsrv_name_t signature,
347                                         bdomain_id_t domain_id);
348extern nsrv_ret_t nsrv_version_i(nsrv_version_t * version);
349#else /* __STDC__ */
350extern nsrv_ret_t nsrv_types_init_i();
351extern void nsrv_init_port_number();
352extern void nsrv_sock_linger();
353extern void nsrv_sock_nodelay();
354extern nsrv_ret_t nsrv_send_sock();
355extern nsrv_ret_t nsrv_receive_sock();
356extern void nsrv_close_sock();
357extern void nsrv_init_server_i();
358extern void nsrv_exit_i();
359extern nsrv_ret_t nsrv_init_client_i();
360extern nsrv_ret_t nsrv_aport_register_i();
361extern nsrv_ret_t nsrv_aport_deregister_i();
362extern nsrv_ret_t nsrv_aport_look_up_i();
363extern nsrv_ret_t nsrv_bport_register_i();
364extern nsrv_ret_t nsrv_bport_deregister_i();
365extern nsrv_ret_t nsrv_bport_look_up_i();
366extern nsrv_ret_t nsrv_bdomain_register_i();
367extern nsrv_ret_t nsrv_bdomain_deregister_i();
368extern nsrv_ret_t nsrv_bdomain_look_up_i();
369extern nsrv_ret_t nsrv_new_bport_id_i();
370extern nsrv_ret_t nsrv_free_bport_id_i();
371extern nsrv_ret_t nsrv_new_bdomain_id_i();
372extern nsrv_ret_t nsrv_free_bdomain_id_i();
373extern nsrv_ret_t nsrv_version_i();
374#endif /* __STDC__ */
375
376
377#endif /* _NSRV_INT_H_ */
378
379