|
|
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.