Imported Upstream version 1.9.4
[deb_libnfs.git] / portmap / portmap.x
index 17fd980455449cff57bde695be42296d1b28ff4e..5ceb4367f2365a398bf384daa8221b05222019b4 100644 (file)
 /*
- * From RFC1833
- */
+Copyright (c) 2014, Ronnie Sahlberg
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this
+   list of conditions and the following disclaimer. 
+2. Redistributions in binary form must reproduce the above copyright notice,
+   this list of conditions and the following disclaimer in the documentation
+   and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+The views and conclusions contained in the software and documentation are those
+of the authors and should not be interpreted as representing official policies, 
+either expressed or implied, of the FreeBSD Project.
+*/
 
 const PMAP_PORT = 111;      /* portmapper port number */
 
-struct pmap_mapping {
+struct pmap2_mapping {
        unsigned int prog;
        unsigned int vers;
        unsigned int prot;
        unsigned int port;
 };
 
-struct pmap_call_args {
+struct pmap2_call_args {
        unsigned int prog;
        unsigned int vers;
        unsigned int proc;
        opaque args<>;
 };
 
-struct pmap_call_result {
+struct pmap2_call_result {
        unsigned int port;
        opaque res<>;
 };
 
-struct pmap_mapping_list {
-       pmap_mapping map;
-       pmap_mapping_list *next;
+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 pmap_dump_result {
-       struct pmap_mapping_list *list;
+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(pmap_mapping)       = 1;
+               PMAP2_SET(pmap2_mapping)       = 1;
 
                bool
-               PMAP_UNSET(pmap_mapping)     = 2;
+               PMAP2_UNSET(pmap2_mapping)     = 2;
 
                unsigned int
-               PMAP_GETPORT(pmap_mapping)   = 3;
+               PMAP2_GETPORT(pmap2_mapping)   = 3;
 
-               pmap_mapping_list
-               PMAP_DUMP(void)              = 4;
+               pmap2_dump_result
+               PMAP2_DUMP(void)               = 4;
 
-               pmap_call_result
-               PMAP_CALLIT(pmap_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;