6 typedef struct Portmap Portmap;
16 100003, 2, IPPROTO_UDP, 2049, /* nfs v2 */
17 // 100003, 3, IPPROTO_UDP, 2049, /* nfs v3 */
18 100005, 1, IPPROTO_UDP, 2049, /* mount */
19 150001, 2, IPPROTO_UDP, 1111, /* pcnfsd v2 */
20 150001, 1, IPPROTO_UDP, 1111, /* pcnfsd v1 */
24 static void pmapinit(int, char**);
25 static int pmapnull(int, Rpccall*, Rpccall*);
26 static int pmapset(int, Rpccall*, Rpccall*);
27 static int pmapunset(int, Rpccall*, Rpccall*);
28 static int pmapgetport(int, Rpccall*, Rpccall*);
29 static int pmapdump(int, Rpccall*, Rpccall*);
30 static int pmapcallit(int, Rpccall*, Rpccall*);
32 static Procmap pmapproc[] = {
45 100000, 2, pmapinit, pmapproc,
50 main(int argc, char *argv[])
52 server(argc, argv, myport, progmap);
57 pmapinit(int argc, char **argv)
61 if(argopt(ARGC()) < 0)
62 sysfatal("usage: %s %s", argv0, commonopts);
65 clog("portmapper init\n");
69 pmapnull(int n, Rpccall *cmd, Rpccall *reply)
76 pmapset(int n, Rpccall *cmd, Rpccall *reply)
78 uchar *dataptr = reply->results;
81 return garbage(reply, "bad count");
84 return dataptr - (uchar *)reply->results;
88 pmapunset(int n, Rpccall *cmd, Rpccall *reply)
90 uchar *dataptr = reply->results;
93 return garbage(reply, "bad count");
96 return dataptr - (uchar *)reply->results;
100 pmapgetport(int n, Rpccall *cmd, Rpccall *reply)
102 int prog, vers, prot;
103 uchar *argptr = cmd->args;
104 uchar *dataptr = reply->results;
110 return garbage(reply, "bad count");
114 chat("host=%I, port=%ld: ", cmd->host, cmd->port);
115 chat("getport: %d, %d, %d...", prog, vers, prot);
116 for(mp=map; mp->prog>0; mp++)
117 if(prog == mp->prog && vers == mp->vers &&
118 prot == mp->protocol)
120 chat("%d\n", mp->port);
122 return dataptr - (uchar *)reply->results;
126 pmapdump(int n, Rpccall *cmd, Rpccall *reply)
128 uchar *dataptr = reply->results;
132 return garbage(reply, "bad count");
134 for(mp=map; mp->prog>0; mp++){
142 return dataptr - (uchar *)reply->results;
146 pmapcallit(int n, Rpccall *cmd, Rpccall *reply)
148 int prog, vers, proc;
149 uchar *argptr = cmd->args;
150 uchar *dataptr = reply->results;
154 return garbage(reply, "bad count");
158 chat("host=%I, port=%ld: ", cmd->host, cmd->port);
159 chat("callit: %d, %d, %d...", prog, vers, proc);
160 for(mp=map; mp->prog>0; mp++)
161 if(prog == mp->prog && vers == mp->vers &&
168 chat("%d\n", mp->port);
171 return dataptr - (uchar *)reply->results;