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