Magellan Linux

Contents of /trunk/mkinitrd-magellan/klibc/usr/kinit/nfsmount/sunrpc.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 532 - (show annotations) (download)
Sat Sep 1 22:45:15 2007 UTC (16 years, 8 months ago) by niro
File MIME type: text/plain
File size: 1815 byte(s)
-import if magellan mkinitrd; it is a fork of redhats mkinitrd-5.0.8 with all magellan patches and features; deprecates magellan-src/mkinitrd

1 /*
2 * open-coded SunRPC structures
3 */
4 #ifndef NFSMOUNT_SUNRPC_H
5 #define NFSMOUNT_SUNRPC_H
6
7 #include <sys/types.h>
8 #include <inttypes.h>
9
10 #define SUNRPC_PORT 111
11 #define MOUNT_PORT 627
12
13 #define RPC_CALL 0
14 #define RPC_REPLY 1
15
16 #define PORTMAP_PROGRAM 100000
17 #define NLM_PROGRAM 100021
18
19 #define RPC_PMAP_PROGRAM 100000
20 #define RPC_PMAP_VERSION 2
21 #define RPC_PMAP_PORT 111
22
23 #define PMAP_PROC_NULL 0
24 #define PMAP_PROC_SET 1
25 #define PMAP_PROC_UNSET 2
26 #define PMAP_PROC_GETPORT 3
27 #define PMAP_PROC_DUMP 4
28
29 #define LAST_FRAG 0x80000000
30
31 #define REPLY_OK 0
32 #define REPLY_DENIED 1
33
34 #define SUCCESS 0
35 #define PROG_UNAVAIL 1
36 #define PROG_MISMATCH 2
37 #define PROC_UNAVAIL 3
38 #define GARBAGE_ARGS 4
39 #define SYSTEM_ERR 5
40
41 struct rpc_udp_header {
42 uint32_t xid;
43 uint32_t msg_type;
44 };
45
46 struct rpc_header {
47 uint32_t frag_hdr;
48 struct rpc_udp_header udp;
49 };
50
51 struct rpc_call {
52 struct rpc_header hdr;
53 uint32_t rpc_vers;
54
55 uint32_t program;
56 uint32_t prog_vers;
57 uint32_t proc;
58 uint32_t cred_flavor;
59
60 uint32_t cred_len;
61 uint32_t vrf_flavor;
62 uint32_t vrf_len;
63 };
64
65 struct rpc_reply {
66 struct rpc_header hdr;
67 uint32_t reply_state;
68 uint32_t vrf_flavor;
69 uint32_t vrf_len;
70 uint32_t state;
71 };
72
73 struct rpc {
74 struct rpc_call *call;
75 size_t call_len;
76 struct rpc_reply *reply;
77 size_t reply_len;
78 };
79
80 struct client;
81
82 typedef int (*call_stub) (struct client *, struct rpc *);
83
84 struct client {
85 int sock;
86 call_stub call_stub;
87 };
88
89 #define CLI_RESVPORT 00000001
90
91 struct client *tcp_client(uint32_t server, uint16_t port, uint32_t flags);
92 struct client *udp_client(uint32_t server, uint16_t port, uint32_t flags);
93 void client_free(struct client *client);
94
95 int rpc_call(struct client *client, struct rpc *rpc);
96
97 uint32_t portmap(uint32_t server, uint32_t program, uint32_t version, uint32_t proto);
98
99 #endif /* NFSMOUNT_SUNRPC_H */