/*
* From RFC1833
+ * and http://tools.ietf.org/html/draft-ietf-oncrpc-rpcbind-00
*/
const PMAP_PORT = 111; /* portmapper port number */
-struct mapping {
+struct pmap2_mapping {
unsigned int prog;
unsigned int vers;
unsigned int prot;
unsigned int port;
};
-struct call_args {
+struct pmap2_call_args {
unsigned int prog;
unsigned int vers;
unsigned int proc;
opaque args<>;
};
-struct call_result {
+struct pmap2_call_result {
unsigned int port;
opaque res<>;
};
+struct pmap2_mapping_list {
+ pmap2_mapping map;
+ pmap2_mapping_list *next;
+};
+
+struct pmap2_dump_result {
+ struct pmap2_mapping_list *list;
+};
+
+struct pmap3_string_result {
+ string addr<>;
+};
+
+struct pmap3_mapping {
+ unsigned int prog;
+ unsigned int vers;
+ string netid<>;
+ string addr<>;
+ string owner<>;
+};
+
+struct pmap3_mapping_list {
+ pmap3_mapping map;
+ pmap3_mapping_list *next;
+};
+
+struct pmap3_dump_result {
+ struct pmap3_mapping_list *list;
+};
+
+struct pmap3_call_args {
+ unsigned int prog;
+ unsigned int vers;
+ unsigned int proc;
+ opaque args<>;
+};
+
+struct pmap3_call_result {
+ unsigned int port;
+ opaque res<>;
+};
+
+struct pmap3_netbuf {
+ unsigned int maxlen;
+ /* This pretty much contains a sockaddr_storage.
+ * Beware differences in endianess for ss_family
+ * and whether or not ss_len exists.
+ */
+ opaque buf<>;
+};
+
program PMAP_PROGRAM {
version PMAP_V2 {
void
- PMAP_NULL(void) = 0;
+ PMAP2_NULL(void) = 0;
bool
- PMAP_SET(mapping) = 1;
+ PMAP2_SET(pmap2_mapping) = 1;
bool
- PMAP_UNSET(mapping) = 2;
+ PMAP2_UNSET(pmap2_mapping) = 2;
unsigned int
- PMAP_GETPORT(mapping) = 3;
+ PMAP2_GETPORT(pmap2_mapping) = 3;
+
+ pmap2_dump_result
+ PMAP2_DUMP(void) = 4;
- call_result
- PMAP_CALLIT(call_args) = 5;
+ pmap2_call_result
+ PMAP2_CALLIT(pmap2_call_args) = 5;
} = 2;
+ version PMAP_V3 {
+ void
+ PMAP3_NULL(void) = 0;
+
+ bool
+ PMAP3_SET(pmap3_mapping) = 1;
+
+ bool
+ PMAP3_UNSET(pmap3_mapping) = 2;
+
+ pmap3_string_result
+ PMAP3_GETADDR(pmap3_mapping) = 3;
+
+ pmap3_dump_result
+ PMAP3_DUMP(void) = 4;
+
+ pmap3_call_result
+ PMAP3_CALLIT(pmap3_call_args) = 5;
+
+ unsigned int
+ PMAP3_GETTIME(void) = 6;
+
+ pmap3_netbuf
+ PMAP3_UADDR2TADDR(string) = 7;
+
+ struct pmap3_string_result
+ PMAP3_TADDR2UADDR(pmap3_netbuf) = 8;
+ } = 3;
} = 100000;