ReactOS  0.4.14-dev-297-g23e575c
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 
43 static const struct timeval timeout = { 5, 0 };
44 static 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  */
58 u_short
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  */
73 u_short
75  struct sockaddr_in *address;
79 {
80  u_short port = 0;
81  int sock = -1;
82  CLIENT *client;
83  struct pmap parms;
84 
85  assert(address != NULL);
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) !=
98  RPC_SUCCESS){
101  } else if (port == 0) {
103  }
105  }
106  address->sin_port = 0;
107  return (port);
108 }
109 #endif /* ! _WIN32 */
#define RPC_PMAPFAILURE
Definition: clnt_stat.h:57
u_int32_t rpcproc_t
Definition: types.h:106
#define PMAPPROG
Definition: pmap_prot.h:77
#define clnt_geterr(rh, errp)
Definition: clnt.h:220
bool_t xdr_pmap(XDR *xdrs, struct pmap *regs)
Definition: pmap_prot.c:45
unsigned long u_long
Definition: linux.h:269
long unsigned pm_prog
Definition: pmap_prot.h:89
#define assert(x)
Definition: debug.h:53
Definition: dhcpd.h:245
bool_t(* xdrproc_t)(XDR *,...)
Definition: xdr.h:144
#define CLNT_CALL(rh, proc, xargs, argsp, xres, resp, secs)
Definition: clnt.h:199
smooth NULL
Definition: ftsmooth.c:416
static const WCHAR version[]
Definition: asmname.c:66
#define RPCSMALLMSGSIZE
Definition: clnt.h:179
#define PMAPVERS
Definition: pmap_prot.h:78
long unsigned pm_port
Definition: pmap_prot.h:92
u_short pmap_getport(struct sockaddr_in *address, u_long program, u_long version, u_int protocol)
Definition: pmap_getport.c:74
#define PMAPPROC_GETPORT
Definition: pmap_prot.h:84
#define PMAPPORT
Definition: pmap_prot.h:76
long unsigned pm_prot
Definition: pmap_prot.h:91
enum clnt_stat cf_stat
Definition: clnt.h:496
static FILE * client
Definition: client.c:41
GLuint address
Definition: glext.h:9393
unsigned short u_short
Definition: types.h:81
bool_t xdr_u_short(XDR *xdrs, u_short *usp)
Definition: xdr.c:300
#define CLNT_DESTROY(rh)
Definition: clnt.h:275
GLuint program
Definition: glext.h:6723
UINT32 u_int
Definition: types.h:82
Definition: tcpcore.h:1455
struct rpc_err cf_error
Definition: clnt.h:497
#define htons(x)
Definition: module.h:213
CLIENT * clntudp_bufcreate(struct sockaddr_in *, u_long, u_long, struct timeval, int *, u_int, u_int)
USHORT port
Definition: uri.c:227
long unsigned pm_vers
Definition: pmap_prot.h:90
static const struct timeval tottimeout
Definition: pmap_getport.c:44
Definition: pmap_prot.h:88