ReactOS 0.4.15-dev-7934-g1dc8d80
pmap_getport.c
Go to the documentation of this file.
1/*
2 * Copyright (c) 2009, Sun Microsystems, Inc.
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 * - Redistributions of source code must retain the above copyright notice,
8 * this list of conditions and the following disclaimer.
9 * - Redistributions in binary form must reproduce the above copyright notice,
10 * this list of conditions and the following disclaimer in the documentation
11 * and/or other materials provided with the distribution.
12 * - Neither the name of Sun Microsystems, Inc. nor the names of its
13 * contributors may be used to endorse or promote products derived
14 * from this software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
20 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
23 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
24 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
26 * POSSIBILITY OF SUCH DAMAGE.
27 */
28
29#include <wintirpc.h>
30#include <sys/types.h>
31//#include <sys/socket.h>
32
33//#include <arpa/inet.h>
34//#include <net/if.h>
35
36#include <assert.h>
37//#include <unistd.h>
38
39#include <rpc/rpc.h>
40#include <rpc/pmap_prot.h>
41#include <rpc/pmap_clnt.h>
42
43static const struct timeval timeout = { 5, 0 };
44static const struct timeval tottimeout = { 60, 0 };
45
46#ifdef _WIN32
47/*
48 * pmap_getport.c
49 * Client interface to pmap rpc service.
50 *
51 * Copyright (C) 1984, Sun Microsystems, Inc.
52 */
53/*
54 * Find the mapped port for program,version.
55 * Calls the pmap service remotely to do the lookup.
56 * Returns 0 if no map exists.
57 */
60 struct sockaddr_in *address;
64{
65 return (u_short)2049;
66}
67#else
68/*
69 * Find the mapped port for program,version.
70 * Calls the pmap service remotely to do the lookup.
71 * Returns 0 if no map exists.
72 */
75 struct sockaddr_in *address;
79{
80 u_short port = 0;
81 int sock = -1;
83 struct pmap parms;
84
86
87 address->sin_port = htons(PMAPPORT);
90 if (client != NULL) {
91 parms.pm_prog = program;
92 parms.pm_vers = version;
93 parms.pm_prot = protocol;
94 parms.pm_port = 0; /* not needed or used */
97 &parms, (xdrproc_t)xdr_u_short, &port, tottimeout) !=
101 } else if (port == 0) {
103 }
105 }
106 address->sin_port = 0;
107 return (port);
108}
109#endif /* ! _WIN32 */
bool_t xdr_u_short(XDR *xdrs, u_short *usp)
Definition: xdr.c:300
#define RPCSMALLMSGSIZE
Definition: clnt.h:179
#define CLNT_CALL(rh, proc, xargs, argsp, xres, resp, secs)
Definition: clnt.h:199
#define clnt_geterr(rh, errp)
Definition: clnt.h:220
#define CLNT_DESTROY(rh)
Definition: clnt.h:275
CLIENT * clntudp_bufcreate(struct sockaddr_in *, u_long, u_long, struct timeval, int *, u_int, u_int)
#define RPC_PMAPFAILURE
Definition: clnt_stat.h:57
@ RPC_SUCCESS
Definition: clnt_stat.h:22
@ RPC_PROGNOTREGISTERED
Definition: clnt_stat.h:58
UINT32 u_int
Definition: types.h:82
#define NULL
Definition: types.h:112
unsigned short u_short
Definition: types.h:81
u_int32_t rpcproc_t
Definition: types.h:106
static const WCHAR version[]
Definition: asmname.c:66
USHORT port
Definition: uri.c:228
#define assert(x)
Definition: debug.h:53
unsigned long u_long
Definition: linux.h:269
GLuint address
Definition: glext.h:9393
GLuint program
Definition: glext.h:6723
#define htons(x)
Definition: module.h:215
static const struct timeval tottimeout
Definition: pmap_getport.c:44
u_short pmap_getport(struct sockaddr_in *address, u_long program, u_long version, u_int protocol)
Definition: pmap_getport.c:74
bool_t xdr_pmap(XDR *xdrs, struct pmap *regs)
Definition: pmap_prot.c:45
#define PMAPPROC_GETPORT
Definition: pmap_prot.h:84
#define PMAPPORT
Definition: pmap_prot.h:76
#define PMAPVERS
Definition: pmap_prot.h:78
#define PMAPPROG
Definition: pmap_prot.h:77
static FILE * client
Definition: client.c:41
Definition: pmap_prot.h:88
long unsigned pm_prog
Definition: pmap_prot.h:89
long unsigned pm_vers
Definition: pmap_prot.h:90
long unsigned pm_port
Definition: pmap_prot.h:92
long unsigned pm_prot
Definition: pmap_prot.h:91
struct rpc_err cf_error
Definition: clnt.h:497
enum clnt_stat cf_stat
Definition: clnt.h:496
Definition: tcpcore.h:1455
Definition: dhcpd.h:245
bool_t(* xdrproc_t)(XDR *,...)
Definition: xdr.h:144