1 /*
2  * Copyright (c) 2006-2021, RT-Thread Development Team
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  *
6  * Change Logs:
7  * Date           Author       Notes
8  */
9 #ifndef __RPC_PMAP_PROT_H__
10 #define __RPC_PMAP_PROT_H__
11 
12 #include <rpc/xdr.h>
13 
14 /* The following procedures are supported by the protocol:
15  *
16  * PMAPPROC_NULL() returns ()
17  *  takes nothing, returns nothing
18  *
19  * PMAPPROC_SET(struct pmap) returns (bool_t)
20  *  TRUE is success, FALSE is failure.  Registers the tuple
21  *  [prog, vers, prot, port].
22  *
23  * PMAPPROC_UNSET(struct pmap) returns (bool_t)
24  *  TRUE is success, FALSE is failure.  Un-registers pair
25  *  [prog, vers].  prot and port are ignored.
26  *
27  * PMAPPROC_GETPORT(struct pmap) returns (long unsigned).
28  *  0 is failure.  Otherwise returns the port number where the pair
29  *  [prog, vers] is registered.  It may lie!
30  *
31  * PMAPPROC_DUMP() RETURNS (struct pmaplist *)
32  *
33  * PMAPPROC_CALLIT(unsigned, unsigned, unsigned, string<>)
34  *  RETURNS (port, string<>);
35  * usage: encapsulatedresults = PMAPPROC_CALLIT(prog, vers, proc, encapsulatedargs);
36  *  Calls the procedure on the local machine.  If it is not registered,
37  *  this procedure is quite; ie it does not return error information!!!
38  *  This procedure only is supported on rpc/udp and calls via
39  *  rpc/udp.  This routine only passes null authentication parameters.
40  *  This file has no interface to xdr routines for PMAPPROC_CALLIT.
41  *
42  * The service supports remote procedure calls on udp/ip or tcp/ip socket 111.
43  */
44 
45 #define PMAPPORT        ((unsigned short)111)
46 #define PMAPPROG        ((unsigned long)100000)
47 #define PMAPVERS        ((unsigned long)2)
48 #define PMAPVERS_PROTO      ((unsigned long)2)
49 #define PMAPVERS_ORIG       ((unsigned long)1)
50 #define PMAPPROC_NULL       ((unsigned long)0)
51 #define PMAPPROC_SET        ((unsigned long)1)
52 #define PMAPPROC_UNSET      ((unsigned long)2)
53 #define PMAPPROC_GETPORT    ((unsigned long)3)
54 #define PMAPPROC_DUMP       ((unsigned long)4)
55 #define PMAPPROC_CALLIT     ((unsigned long)5)
56 
57 struct pmap {
58     long unsigned pm_prog;
59     long unsigned pm_vers;
60     long unsigned pm_prot;
61     long unsigned pm_port;
62 };
63 
64 extern bool_t xdr_pmap (XDR *__xdrs, struct pmap *__regs);
65 
66 #endif
67