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.h
25**      Author: Kees Schuerman
26**      SccsId: "@(#)nsrv.h	1.14 07 Nov 1995"
27** Description: Name Server Interface
28***********************************************************************/
29
30#ifndef _NSRV_H_
31#define _NSRV_H_
32
33/*
34** Return Codes
35*/
36
37#define NSRV_OK              PDS_OK             /* success               */
38#define NSRV_NYI             PDS_NYI            /* not yet implemented   */
39#define NSRV_WARN            PDS_WARN           /* general warning       */
40#define NSRV_ERROR           PDS_ERROR          /* general error         */
41#define NSRV_IMPLIM          PDS_IMPLIM         /* implementation limit  */
42#define NSRV_INVAL           PDS_INVAL          /* invalid argument      */
43#define NSRV_NORESOURCES     PDS_NORESOURCES    /* no resources          */
44#define NSRV_NOMEMORY        PDS_NOMEMORY       /* no memory             */
45
46#define NSRV_NOPORT    	     (PDS_RET_MAX + 1)  /* no such port        	 */
47#define NSRV_NOT_READY	     (PDS_RET_MAX + 2)  /* not ready for request */
48#define NSRV_NOT_YOURS       (PDS_RET_MAX + 3)  /* signature mismatch    */
49#define NSRV_NOT_REGISTERED  (PDS_RET_MAX + 4)  /* not registered      	 */
50#define NSRV_NODOMAIN        (PDS_RET_MAX + 5)  /* no such domain 	 */
51#define NSRV_NOSERVER        (PDS_RET_MAX + 6)  /* no name server 	 */
52#define NSRV_NOHOST    	     (PDS_RET_MAX + 7)  /* no such host   	 */
53#define NSRV_EVERSION 	     (PDS_RET_MAX + 8)  /* version mismatch 	 */
54
55
56
57/*
58** Configurable Parameters
59*/
60
61#define NSRV_PORT_DEFAULT       4916       /* number of 1st default port  */
62#define NSRV_DEFAULT_PORTS      5          /* number of default ports     */
63#define NSRV_DATA_AREA_SIZE     0x00800000 /* size of nsrv data mem area  */
64#define NSRV_MSG_AREA_SIZE      0x00800000 /* size of nsrv msg mem area   */
65#define NSRV_NAMELEN		64
66#define NSRV_FILENAMELEN_MAX	BMSG_FILENAMELEN_MAX
67
68
69
70/*
71** Environment Variables
72*/
73
74#define NSRV_PATH		"NSRV_PATH"
75#define NSRV_PORT		"NSRV_PORT"
76#define NSRV_HOST		"NSRV_HOST"
77
78
79
80/*
81** Identifiers
82*/
83
84#define NSRV_BDOMAIN_ID 1
85#define NSRV_BPORT_ID   1
86
87
88
89/*
90** File Names
91*/
92
93#define NSRV_DATAFILE	"nsrv.data"
94#define NSRV_MSGFILE	"nsrv.msg"
95
96
97
98/*
99** Key, Domain Name, and Port Name
100*/
101
102#define NSRV_KEY                "nsrv_key"
103#define NSRV_DOMAIN_NAME        "nsrv_domain_name"
104#define NSRV_PORT_NAME          "nsrv_port_name"
105
106
107
108/*
109** Type Definitions
110*/
111
112#define	NSRV_INTFC	16
113
114typedef char nsrv_name_t [NSRV_NAMELEN+1];
115typedef pds_ret_t nsrv_ret_t;
116typedef struct {
117    pds_uint32 v_minor;
118    pds_uint32 v_major;
119} nsrv_version_t;
120
121#define MDT_NSRVRET	MDT_RET
122
123extern msg_type_t MDT_NSRVNAME;
124extern msg_type_t MDT_NSRVVERSION;
125
126
127
128/*
129** Global Variables
130*/
131
132extern int nsrv_initialised;
133extern int nsrv_exited;
134extern int nsrv_exiting;
135
136#define nsrv_ready()    (nsrv_initialised && !nsrv_exited && !nsrv_exiting)
137
138
139
140/*
141** Name Server Primitives
142*/
143
144#if defined(__STDC__)
145extern nsrv_ret_t nsrv_init(char * hostname,
146			    unsigned * port_number);
147extern nsrv_ret_t nsrv_types_init(void);
148extern void nsrv_exit(void);
149extern char * nsrv_data_base(void);
150extern char * nsrv_msg_base(void);
151extern nsrv_ret_t nsrv_aport_register(nsrv_name_t key,
152                                      nsrv_name_t port_name,
153                                      nsrv_name_t signature,
154				      aport_t * port);
155extern nsrv_ret_t nsrv_aport_deregister(nsrv_name_t key,
156                                        nsrv_name_t port_name,
157                                        nsrv_name_t signature);
158extern nsrv_ret_t nsrv_aport_look_up(nsrv_name_t key,
159                                     nsrv_name_t port_name,
160                                     aport_t * port);
161extern nsrv_ret_t nsrv_bport_register(nsrv_name_t key,
162                                      nsrv_name_t port_name,
163                                      nsrv_name_t signature,
164				      bport_t * port);
165extern nsrv_ret_t nsrv_bport_deregister(nsrv_name_t key,
166                                        nsrv_name_t port_name,
167                                        nsrv_name_t signature);
168extern nsrv_ret_t nsrv_bport_look_up(nsrv_name_t key,
169                                     nsrv_name_t port_name,
170                                     bport_t * port);
171extern nsrv_ret_t nsrv_bdomain_register(nsrv_name_t key,
172                                        nsrv_name_t domain_name,
173                                        nsrv_name_t signature,
174				        bdomain_t * domain);
175extern nsrv_ret_t nsrv_bdomain_deregister(nsrv_name_t key,
176                                          nsrv_name_t domain_name,
177                                          nsrv_name_t signature);
178extern nsrv_ret_t nsrv_bdomain_look_up(nsrv_name_t key,
179                                       nsrv_name_t port_name,
180                                       bdomain_t * domain);
181extern nsrv_ret_t nsrv_new_bport_id(nsrv_name_t signature,
182				    bport_id_t * port_id);
183extern nsrv_ret_t nsrv_free_bport_id(nsrv_name_t signature,
184				     bport_id_t port_id);
185extern nsrv_ret_t nsrv_new_bdomain_id(nsrv_name_t signature,
186				      bdomain_id_t * domain_id);
187extern nsrv_ret_t nsrv_free_bdomain_id(nsrv_name_t signature,
188				       bdomain_id_t domain_id);
189extern nsrv_ret_t nsrv_ping(char * hostname,
190			    unsigned * port_number);
191extern nsrv_ret_t nsrv_version(nsrv_version_t * version);
192extern char * nsrv_error_string(nsrv_ret_t nret);
193extern void nsrv_perror(nsrv_ret_t nret,
194                        char * s);
195#else /* __STDC__ */
196extern nsrv_ret_t nsrv_init();
197extern nsrv_ret_t nsrv_types_init();
198extern void nsrv_exit();
199extern char * nsrv_data_base();
200extern char * nsrv_msg_base();
201extern nsrv_ret_t nsrv_aport_register();
202extern nsrv_ret_t nsrv_aport_deregister();
203extern nsrv_ret_t nsrv_aport_look_up();
204extern nsrv_ret_t nsrv_bport_register();
205extern nsrv_ret_t nsrv_bport_deregister();
206extern nsrv_ret_t nsrv_bport_look_up();
207extern nsrv_ret_t nsrv_bdomain_register();
208extern nsrv_ret_t nsrv_bdomain_deregister();
209extern nsrv_ret_t nsrv_bdomain_look_up();
210extern nsrv_ret_t nsrv_new_bport_id();
211extern nsrv_ret_t nsrv_free_bport_id();
212extern nsrv_ret_t nsrv_new_bdomain_id();
213extern nsrv_ret_t nsrv_free_bdomain_id();
214extern nsrv_ret_t nsrv_ping();
215extern nsrv_ret_t nsrv_version();
216extern char * nsrv_error_string();
217extern void nsrv_perror();
218#endif /* __STDC__ */
219
220
221#endif /* _NSRV_H_ */
222
223