|
|
The connection server is not supported on SCO OpenServer; the Binary Compatibility Module networking library maps the cs_connect and cs_perror functions to use SCO OpenServer interfaces.
The AUTH structure (see /usr/include/rpc/auth.h) has an extra element (a des_block structure) that is not in the SCO OpenServer implementation.
/* UnixWare AUTH structure */ typedef struct __auth { struct opaque_auth ah_cred; /* client credentials */ struct opaque_auth ah_verf; /* credential verifier */ union des_block ah_key; /* encrypt/decrypt key */ struct auth_ops { void (*ah_nextverf)(struct __auth *); bool_t (*ah_marshal)(struct __auth *, XDR *); int (*ah_validate)(struct __auth *, struct opaque_auth *); int (*ah_refresh)(struct __auth *); void (*ah_destroy)(struct __auth *); } *ah_ops; caddr_t ah_private; /* private data of auth style */ } AUTH;
/* SCO OpenServer AUTH structure */ typedef struct { struct opaque_auth ah_cred; struct opaque_auth ah_verf; struct auth_ops { void (*ah_nextverf)(); int (*ah_marshal)(); /* nextverf & serialize */ int (*ah_validate)(); /* validate varifier */ int (*ah_refresh)(); /* refresh credentials */ void (*ah_destroy)(); /* destroy this structure */ } *ah_ops; caddr_t ah_private; } AUTH;
The CLIENT structure (see /usr/include/rpc/clnt.h and rpc(3rpc)) has elements not in the SCO OpenServer implementation.
/* UnixWare CLIENT handle */ typedef struct { AUTH *cl_auth; /* authenticator */ struct clnt_ops { enum clnt_stat (*cl_call)(); /* call remote procedure */ void (*cl_abort)(); /* abort a call */ void (*cl_geterr)(); /* get specific error code */ bool_t (*cl_freeres)(); /* frees results */ void (*cl_destroy)(); /* destroy this structure */ bool_t (*cl_control)(); /* the ioctl() of rpc */ } *cl_ops; caddr_t cl_private; /* private stuff */ char *cl_netid; /* network token */ char *cl_tp; /* device name */ } CLIENT;
/* SCO OpenServer CLIENT handle */ typedef struct { AUTH *cl_auth; /* authenticator */ struct clnt_ops { enum clnt_stat (*cl_call)(); /* call remote procedure */ void (*cl_abort)(); /* abort a call */ void (*cl_geterr)(); /* get specific error code */ bool_t (*cl_freeres)();/* frees results */ void (*cl_destroy)();/* destroy this structure */ bool_t (*cl_control)();/* the ioctl() of rpc */ } *cl_ops; caddr_t cl_private; /* private stuff */ } CLIENT;
These calls (callrpc, clnttcp_create, clntudp_create, clntudp_bufcreate, and clntraw_create) are present in libnsl on UnixWare for compatibility only and are undocumented. In order to compile a program that uses them, you must include the /usr/include/rpc/clnt_soc.h header file. On UnixWare these client interfaces are replaced by the rpc_clnt_create(3rpc) interfaces.
These calls also access the CLIENT structure; see ``CLIENT structure source compatibility notes''.
The UnixWare routines endnetconfig, endnetpath, freenetconfig, get_nderror, getnetconfig, getnetconfigent, and getnetpath will work on SCO OpenServer with the UnixWare and OpenServer Development Kit installed. However, the netconfig file they use is located in /udk/etc/netconfig (rather than /etc/netconfig, as this file is used for other purposes on SCO OpenServer).
These interfaces (pmap_set, pmap_unset, pmap_rmtcall, pmap_getmaps, pmap_getport, and clnt_broadcast) are present in libnsl on UnixWare for compatibility only and are undocumented. In order to compile a program that uses them, you must include the /usr/include/rpc/pmap_clnt.h header file. On UnixWare, the rpcbind(3rpc) interfaces replace the portmapper interfaces.
These calls (svcfd_create, svcraw_create, svctcp_create, svcudp_bufcreate, svcudp_create, and svcudp_enablecache) are present in libnsl on UnixWare for compatibility only and are undocumented. In order to compile a program that uses them, you must include the /usr/include/rpc/svc_soc.h header file. On UnixWare these client interfaces are replaced by the rpc_svc_create(3rpc) interfaces.
These calls also access the SVCXPRT structure; see ``SVCXPRT structure source compatibility notes''.
The SVCXPRT structure (see /usr/include/rpc/svc.h) has elements not in the SCO OpenServer implementation. This affects the folowing routines: svcerr_auth, svcerr_decode, svcerr_noproc, svcerr_noprog, svcerr_progvers, svcerr_systemerr, and svcerr_weakauth.