#include <wintirpc.h>
#include <reentrant.h>
#include <sys/types.h>
#include <assert.h>
#include <errno.h>
#include <stdlib.h>
#include <string.h>
#include <rpc/rpc.h>
#include "rpc_com.h"
Go to the source code of this file.
|
static struct svc_callout * | svc_find (rpcprog_t, rpcvers_t, struct svc_callout **, char *) |
|
static void | __xprt_do_unregister (SVCXPRT *xprt, bool_t dolock) |
|
void | xprt_register (SVCXPRT *xprt) |
|
void | xprt_unregister (SVCXPRT *xprt) |
|
void | __xprt_unregister_unlocked (SVCXPRT *xprt) |
|
bool_t | svc_reg (SVCXPRT *xprt, const rpcprog_t prog, const rpcvers_t vers, void *dispatch, const struct netconfig *nconf) |
|
void | svc_unreg (rpcprog_t prog, const rpcvers_t vers) const |
|
bool_t | svc_sendreply (SVCXPRT *xprt, xdrproc_t xdr_results, void *xdr_location) |
|
void | svcerr_noproc (SVCXPRT *xprt) |
|
void | svcerr_decode (SVCXPRT *xprt) |
|
void | svcerr_systemerr (SVCXPRT *xprt) |
|
void | svcerr_auth (SVCXPRT *xprt, enum auth_stat why) |
|
void | svcerr_weakauth (SVCXPRT *xprt) |
|
void | svcerr_noprog (SVCXPRT *xprt) |
|
void | svcerr_progvers (SVCXPRT *xprt, rpcvers_t low_vers, rpcvers_t high_vers) |
|
void | svc_getreq (int rdfds) |
|
void | svc_getreqset (fd_set *readfds) |
|
void | svc_getreq_common (SOCKET fd) |
|
void | svc_getreq_poll (struct pollfd *pfdp, int pollretval) |
|
bool_t | rpc_control (int what, void *arg) |
|
◆ max
Definition at line 63 of file svc.c.
◆ RQCRED_SIZE
#define RQCRED_SIZE 400 /* this size is excessive */ |
Definition at line 57 of file svc.c.
◆ SVC_VERSQUIET
#define SVC_VERSQUIET 0x0001 /* keep quiet about vers mismatch */ |
Definition at line 59 of file svc.c.
◆ version_keepquiet
Definition at line 60 of file svc.c.
◆ __xprt_do_unregister()
◆ __xprt_unregister_unlocked()
Definition at line 134 of file svc.c.
static void __xprt_do_unregister(SVCXPRT *xprt, bool_t dolock)
Referenced by __svc_clean_idle().
◆ rpc_control()
Definition at line 784 of file svc.c.
#define RPC_SVC_CONNMAXREC_GET
#define RPC_SVC_CONNMAXREC_SET
◆ svc_find()
Definition at line 370 of file svc.c.
383 if (((
s->sc_prog ==
prog) && (
s->sc_vers == vers)) &&
384 ((netid ==
NULL) || (
s->sc_netid ==
NULL) ||
385 (
strcmp (netid,
s->sc_netid) == 0)))
static struct svc_callout * svc_head
int strcmp(const char *String1, const char *String2)
Referenced by svc_reg(), and svc_unreg().
◆ svc_getreq()
Definition at line 604 of file svc.c.
void svc_getreqset(fd_set *readfds)
◆ svc_getreq_common()
Definition at line 641 of file svc.c.
652 msg.rm_call.cb_cred.oa_base = cred_area;
673 r.rq_prog =
msg.rm_call.cb_prog;
674 r.rq_vers =
msg.rm_call.cb_vers;
675 r.rq_proc =
msg.rm_call.cb_proc;
676 r.rq_cred =
msg.rm_call.cb_cred;
689 if (
s->sc_prog ==
r.rq_prog)
691 if (
s->sc_vers ==
r.rq_vers)
693 (*
s->sc_dispatch) (&
r, xprt);
697 if (
s->sc_vers < low_vers)
698 low_vers =
s->sc_vers;
699 if (
s->sc_vers > high_vers)
700 high_vers =
s->sc_vers;
733 #ifdef HAVE_LIBGSSAPI
GLdouble GLdouble GLdouble r
static struct svc_callout * svc_head
#define SVC_DESTROY(xprt)
void svcerr_progvers(SVCXPRT *xprt, rpcvers_t low_vers, rpcvers_t high_vers)
struct svc_auth_ops svc_auth_gss_ops
struct __svcauth::svc_auth_ops * svc_ah_ops
enum auth_stat _authenticate(struct svc_req *rqst, struct rpc_msg *msg)
#define SVC_RECV(xprt, msg)
_CRTIMP int __cdecl stat(const char *_Filename, struct stat *_Stat)
void svcerr_noprog(SVCXPRT *xprt)
void svcerr_auth(SVCXPRT *xprt, enum auth_stat why)
Referenced by svc_getreq_poll(), and svc_getreqset().
◆ svc_getreq_poll()
Definition at line 745 of file svc.c.
752 for (
i = fds_found = 0; fds_found < pollretval;
i++)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
void svc_getreq_common(SOCKET fd)
◆ svc_getreqset()
Definition at line 615 of file svc.c.
620 fd_mask
mask, *maskp;
625 maskp = readfds->fds_bits;
628 for (
mask = *maskp++; (bit =
ffs (
mask)) != 0;
mask ^= (1 << (bit - 1)))
_Check_return_opt_ _CRTIMP int __cdecl fprintf(_Inout_ FILE *_File, _In_z_ _Printf_format_string_ const char *_Format,...)
void svc_getreq_common(SOCKET fd)
Referenced by svc_getreq(), and svc_run().
◆ svc_reg()
Definition at line 178 of file svc.c.
250 &((
SVCXPRT *) xprt)->xp_ltaddr);
static struct svc_callout * svc_head
_Check_return_ _CRTIMP char *__cdecl strdup(_In_opt_z_ const char *_Src)
void freenetconfigent(struct netconfig *netconfigp)
bool_t rpcb_set(rpcprog_t program, rpcvers_t version, const struct netconfig *nconf, const struct netbuf *address)
struct netconfig * __rpcgettp(SOCKET)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean flag
void dispatch(HANDLE hStopEvent)
static struct svc_callout * svc_find(rpcprog_t, rpcvers_t, struct svc_callout **, char *)
Referenced by rpc_reg(), svc_create(), and svc_tp_create().
◆ svc_sendreply()
Definition at line 399 of file svc.c.
408 rply.rm_direction =
REPLY;
410 rply.acpted_rply.ar_verf = xprt->
xp_verf;
411 rply.acpted_rply.ar_stat =
SUCCESS;
412 rply.acpted_rply.ar_results.where = xdr_location;
413 rply.acpted_rply.ar_results.proc = xdr_results;
struct opaque_auth xp_verf
#define SVC_REPLY(xprt, msg)
Referenced by _svcauth_gss(), and universal().
◆ svc_unreg()
Definition at line 260 of file svc.c.
struct png_info_def **typedef void(__cdecl typeof(png_destroy_read_struct))(struct png_struct_def **
ActualNumberDriverObjects * sizeof(PDRIVER_OBJECT)) PDRIVER_OBJECT *DriverObjectList
static struct svc_callout * svc_head
bool_t rpcb_unset(rpcprog_t program, rpcvers_t version, const struct netconfig *nconf)
struct svc_callout * sc_next
#define mem_free(ptr, bsize)
static struct svc_callout * svc_find(rpcprog_t, rpcvers_t, struct svc_callout **, char *)
◆ svcerr_auth()
◆ svcerr_decode()
Definition at line 439 of file svc.c.
446 rply.rm_direction =
REPLY;
448 rply.acpted_rply.ar_verf = xprt->
xp_verf;
struct opaque_auth xp_verf
#define SVC_REPLY(xprt, msg)
Referenced by universal().
◆ svcerr_noproc()
Definition at line 421 of file svc.c.
428 rply.rm_direction =
REPLY;
430 rply.acpted_rply.ar_verf = xprt->
xp_verf;
struct opaque_auth xp_verf
#define SVC_REPLY(xprt, msg)
◆ svcerr_noprog()
Definition at line 549 of file svc.c.
556 rply.rm_direction =
REPLY;
558 rply.acpted_rply.ar_verf = xprt->
xp_verf;
struct opaque_auth xp_verf
#define SVC_REPLY(xprt, msg)
Referenced by svc_getreq_common().
◆ svcerr_progvers()
Definition at line 567 of file svc.c.
576 rply.rm_direction =
REPLY;
578 rply.acpted_rply.ar_verf = xprt->
xp_verf;
580 rply.acpted_rply.ar_vers.low = (
u_int32_t) low_vers;
581 rply.acpted_rply.ar_vers.high = (
u_int32_t) high_vers;
struct opaque_auth xp_verf
#define SVC_REPLY(xprt, msg)
Referenced by svc_getreq_common().
◆ svcerr_systemerr()
Definition at line 457 of file svc.c.
464 rply.rm_direction =
REPLY;
466 rply.acpted_rply.ar_verf = xprt->
xp_verf;
struct opaque_auth xp_verf
#define SVC_REPLY(xprt, msg)
◆ svcerr_weakauth()
Definition at line 536 of file svc.c.
void svcerr_auth(SVCXPRT *xprt, enum auth_stat why)
◆ xprt_register()
◆ xprt_unregister()
◆ svc_fd_lock
◆ svc_head
◆ svc_lock