1  /*
       2   * auth_unix.h, Protocol for UNIX style authentication parameters for RPC
       3   *
       4   * Copyright (c) 2010, Oracle America, Inc.
       5   *
       6   * Redistribution and use in source and binary forms, with or without
       7   * modification, are permitted provided that the following conditions are
       8   * met:
       9   *
      10   *     * Redistributions of source code must retain the above copyright
      11   *       notice, this list of conditions and the following disclaimer.
      12   *     * Redistributions in binary form must reproduce the above
      13   *       copyright notice, this list of conditions and the following
      14   *       disclaimer in the documentation and/or other materials
      15   *       provided with the distribution.
      16   *     * Neither the name of the "Oracle America, Inc." nor the names of its
      17   *       contributors may be used to endorse or promote products derived
      18   *       from this software without specific prior written permission.
      19   *
      20   *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
      21   *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
      22   *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
      23   *   FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
      24   *   COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
      25   *   INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
      26   *   DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
      27   *   GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
      28   *   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
      29   *   WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
      30   *   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
      31   *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
      32   */
      33  
      34  /*
      35   * The system is very weak.  The client uses no encryption for  it
      36   * credentials and only sends null verifiers.  The server sends backs
      37   * null verifiers or optionally a verifier that suggests a new short hand
      38   * for the credentials.
      39   */
      40  
      41  #ifndef _RPC_AUTH_UNIX_H
      42  #define _RPC_AUTH_UNIX_H	1
      43  
      44  #include <features.h>
      45  #include <sys/types.h>
      46  #include <rpc/types.h>
      47  #include <rpc/auth.h>
      48  #include <rpc/xdr.h>
      49  
      50  __BEGIN_DECLS
      51  
      52  /* The machine name is part of a credential; it may not exceed 255 bytes */
      53  #define MAX_MACHINE_NAME 255
      54  
      55  /* gids compose part of a credential; there may not be more than 16 of them */
      56  #define NGRPS 16
      57  
      58  /*
      59   * Unix style credentials.
      60   */
      61  struct authunix_parms
      62    {
      63      u_long aup_time;
      64      char *aup_machname;
      65      __uid_t aup_uid;
      66      __gid_t aup_gid;
      67      u_int aup_len;
      68      __gid_t *aup_gids;
      69    };
      70  
      71  extern bool_t xdr_authunix_parms (XDR *__xdrs, struct authunix_parms *__p)
      72       __THROW;
      73  
      74  /*
      75   * If a response verifier has flavor AUTH_SHORT,
      76   * then the body of the response verifier encapsulates the following structure;
      77   * again it is serialized in the obvious fashion.
      78   */
      79  struct short_hand_verf
      80    {
      81      struct opaque_auth new_cred;
      82    };
      83  
      84  __END_DECLS
      85  
      86  #endif /* rpc/auth_unix.h */