home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / header45.zip / access.h < prev    next >
C/C++ Source or Header  |  1999-04-29  |  46KB  |  1,106 lines

  1. /**************************************************************************/
  2. /*                                                                        */
  3. /*              IBM OS/2(tm) Local Area Network (LAN) Server              */
  4. /*                            Version 5.03                                */
  5. /*                   (C) Copyright IBM Corp. 1988, 1998                   */
  6. /*                  Licensed Materials - Property of IBM                  */
  7. /*                                                                        */
  8. /**************************************************************************/
  9. /********************************************************************/
  10.  
  11. /********************************************************************
  12.  *                                                                  *
  13.  *  About this file ...  ACCESS.H                                   *
  14.  *                                                                  *
  15.  *  This file contains information about the NetUser, NetGroup, and *
  16.  *  NetAccess APIs.  There is a section for each set of APIs.  Each *
  17.  *  section contains:                                               *
  18.  *                                                                  *
  19.  *      Function prototypes.                                        *
  20.  *                                                                  *
  21.  *      Data structure templates.                                   *
  22.  *                                                                  *
  23.  *      Definition of special values.                               *
  24.  *                                                                  *
  25.  *                                                                  *
  26.  *  NOTE:  You must include NETCONS.H before this file, since this  *
  27.  *         file depends on values defined in NETCONS.H.             *
  28.  *                                                                  *
  29.  *         This file is always included by LAN.H                    *
  30.  *                                                                  *
  31.  ********************************************************************/
  32.  
  33.  
  34.  
  35.  
  36.  
  37. /****************************************************************
  38.  *                                                              *
  39.  *              User Class                                      *
  40.  *                                                              *
  41.  ****************************************************************/
  42.  
  43. #if (defined( INCL_NETUSER ) || !defined( LAN_INCLUDED )) \
  44.     && !defined( NETUSER_INCLUDED )
  45.  
  46. #define NETUSER_INCLUDED
  47.  
  48. #ifdef ANY_32_BIT
  49. #pragma pack(1)
  50. #endif
  51.  
  52.  
  53. /****************************************************************
  54.  *                                                              *
  55.  *              Function prototypes - USER                      *
  56.  *                                                              *
  57.  ****************************************************************/
  58.  
  59. extern API_FUNCTION
  60.   NetUserAdd ( const unsigned char LSFAR * pszServer,
  61.                short                       sLevel,
  62.                unsigned char LSFAR *       pbBuffer,
  63.                unsigned short              cbBuffer );
  64.  
  65. extern API_FUNCTION
  66.   NetUserDel ( const unsigned char LSFAR * pszServer,
  67.                unsigned char LSFAR *       pszUserName );
  68.  
  69. extern API_FUNCTION
  70.   NetUserEnum ( const unsigned char LSFAR *     pszServer,
  71.                 short                           sLevel,
  72.                 unsigned char LSFAR *           pbBuffer,
  73.                 unsigned short                  cbBuffer,
  74.                 unsigned short LSFAR *          pcEntriesRead,
  75.                 unsigned short LSFAR *          pcTotalAvail );
  76.  
  77. extern API_FUNCTION
  78.   NetUserGetInfo ( const unsigned char LSFAR *     pszServer,
  79.                    unsigned char LSFAR *           pszUserName,
  80.                    short                           sLevel,
  81.                    unsigned char LSFAR *           pbBuffer,
  82.                    unsigned short                  cbBuffer,
  83.                    unsigned short LSFAR *          pcbTotalAvail );
  84.  
  85. extern API_FUNCTION
  86.   NetUserSetInfo ( const unsigned char LSFAR * pszServer,
  87.                    unsigned char LSFAR *       pszUserName,
  88.                    short                       sLevel,
  89.                    unsigned char LSFAR *       pbBuffer,
  90.                    unsigned short              cbBuffer,
  91.                    short                       sParmNum );
  92.  
  93. extern API_FUNCTION
  94.   NetUserPasswordSet ( const unsigned char LSFAR * pszServer,
  95.                        unsigned char LSFAR *       pszUserName,
  96.                        unsigned char LSFAR *       pszOldPassword,
  97.                        unsigned char LSFAR *       pszNewPassword );
  98.  
  99. extern API_FUNCTION
  100.   NetUserGetGroups ( const unsigned char LSFAR *     pszServer,
  101.                      const unsigned char LSFAR *     pszUserName,
  102.                      short                           sLevel,
  103.                      unsigned char LSFAR *           pbBuffer,
  104.                      unsigned short                  cbBuffer,
  105.                      unsigned short LSFAR *          pcEntriesRead,
  106.                      unsigned short LSFAR *          pcTotalAvail );
  107.  
  108. extern API_FUNCTION
  109.   NetUserSetGroups ( const unsigned char LSFAR * pszServer,
  110.                      const unsigned char LSFAR * pszUserName,
  111.                      short                       sLevel,
  112.                      unsigned char LSFAR *       pbBuffer,
  113.                      unsigned short              cbBuffer,
  114.                      unsigned short              cEntries );
  115.  
  116. extern API_FUNCTION
  117.   NetUserModalsGet ( const unsigned char LSFAR *     pszServer,
  118.                      short                           sLevel,
  119.                      unsigned char LSFAR *           pbBuffer,
  120.                      unsigned short                  cbBuffer,
  121.                      unsigned short LSFAR *          pcbTotalAvail );
  122.  
  123. extern API_FUNCTION
  124.   NetUserModalsSet ( const unsigned char LSFAR * pszServer,
  125.                      short                       sLevel,
  126.                      unsigned char LSFAR *       pbBuffer,
  127.                      unsigned short              cbBuffer,
  128.                      short                       sParmNum );
  129.  
  130. extern API_FUNCTION
  131.   NetUserValidate ( unsigned char LSFAR *  pszReserved,
  132.                     unsigned char LSFAR *  pszUserName,
  133.                     unsigned char LSFAR *  pszPassword,
  134.                     unsigned short LSFAR * pusPrivilege );
  135.  
  136. extern API_FUNCTION
  137.   NetUserValidate2 ( unsigned char LSFAR *  pszServer,
  138.                      short                  sLevel,
  139.                      unsigned char LSFAR *  pbBuffer,
  140.                      unsigned short         cbBuffer,
  141.                      unsigned short         usReserved2,
  142.                      unsigned short LSFAR * pcbTotalAvail );
  143.  
  144.  
  145.  
  146. /****************************************************************
  147.  *                                                              *
  148.  *              Data structure templates - USER                 *
  149.  *                                                              *
  150.  ****************************************************************/
  151.  
  152. struct user_info_0 {
  153.         unsigned char      usri0_name[UNLEN+1];
  154. };      /* user_info_0 */
  155.  
  156. struct user_info_1 {
  157.         unsigned char      usri1_name[UNLEN+1];
  158.         unsigned char      usri1_pad_1;
  159.         unsigned char               usri1_password[ENCRYPTED_PWLEN];/* See note below */
  160.         long                        usri1_password_age;
  161.         unsigned short              usri1_priv;                     /* See values below */
  162.         unsigned char LSFAR * LSPTR usri1_home_dir;
  163.         unsigned char LSFAR * LSPTR usri1_comment;
  164.         unsigned short              usri1_flags;                    /* See values below */
  165.         unsigned char LSFAR * LSPTR usri1_script_path;
  166. };      /* user_info_1 */
  167.  
  168. /*
  169.  *      NOTE:  The maximum length of a user password is PWLEN.  The
  170.  *      field usri1_password contains extra room for transporting
  171.  *      the encrypted form of the password over the network.  When
  172.  *      setting the user's password, check length vs. PWLEN, not
  173.  *      the size of this field.  PWLEN is defined in NETCONS.H.
  174.  */
  175.  
  176.  
  177.  
  178. struct user_info_2 {
  179.         unsigned char               usri2_name[UNLEN+1];
  180.         unsigned char               usri2_pad_1;
  181.         unsigned char               usri2_password[ENCRYPTED_PWLEN];
  182.         long                        usri2_password_age;
  183.         unsigned short              usri2_priv;
  184.         unsigned char LSFAR * LSPTR usri2_home_dir;
  185.         unsigned char LSFAR * LSPTR usri2_comment;
  186.         unsigned short              usri2_flags;
  187.         unsigned char LSFAR * LSPTR usri2_script_path;
  188.         unsigned long               usri2_auth_flags;
  189.         unsigned char LSFAR * LSPTR usri2_full_name;
  190.         unsigned char LSFAR * LSPTR usri2_usr_comment;
  191.         unsigned char LSFAR * LSPTR usri2_parms;
  192.         unsigned char LSFAR * LSPTR usri2_workstations;
  193.         long                        usri2_last_logon;
  194.         long                        usri2_last_logoff;
  195.         long                        usri2_acct_expires;
  196.         unsigned long               usri2_max_storage;
  197.         unsigned short              usri2_units_per_week;
  198.         unsigned char LSFAR * LSPTR usri2_logon_hours;
  199.         unsigned short              usri2_bad_pw_count;
  200.         unsigned short              usri2_num_logons;
  201.         unsigned char LSFAR * LSPTR usri2_logon_server;
  202.         unsigned short              usri2_country_code;
  203.         unsigned short              usri2_code_page;
  204. };      /* user_info_2 */
  205.  
  206. struct user_info_10 {
  207.         unsigned char               usri10_name[UNLEN+1];
  208.         unsigned char               usri10_pad_1;
  209.         unsigned char LSFAR * LSPTR usri10_comment;
  210.         unsigned char LSFAR * LSPTR usri10_usr_comment;
  211.         unsigned char LSFAR * LSPTR usri10_full_name;
  212. };      /* user_info_10 */
  213.  
  214. struct user_info_11 {
  215.         unsigned char               usri11_name[UNLEN+1];
  216.         unsigned char               usri11_pad_1;
  217.         unsigned char LSFAR * LSPTR usri11_comment;
  218.         unsigned char LSFAR * LSPTR usri11_usr_comment;
  219.         unsigned char LSFAR * LSPTR usri11_full_name;
  220.         unsigned short              usri11_priv;
  221.         unsigned long               usri11_auth_flags;
  222.         long                        usri11_password_age;
  223.         unsigned char LSFAR * LSPTR usri11_home_dir;
  224.         unsigned char LSFAR * LSPTR usri11_parms;
  225.         long                        usri11_last_logon;
  226.         long                        usri11_last_logoff;
  227.         unsigned short              usri11_bad_pw_count;
  228.         unsigned short              usri11_num_logons;
  229.         unsigned char LSFAR * LSPTR usri11_logon_server;
  230.         unsigned short              usri11_country_code;
  231.         unsigned char LSFAR * LSPTR usri11_workstations;
  232.         unsigned long               usri11_max_storage;
  233.         unsigned short              usri11_units_per_week;
  234.         unsigned char LSFAR * LSPTR usri11_logon_hours;
  235.         unsigned short              usri11_code_page;
  236. };      /* user_info_11 */
  237.  
  238. /*
  239.  *      For User Modals
  240. */
  241.  
  242. struct  user_modals_info_0 {
  243.         unsigned short  usrmod0_min_passwd_len;
  244.         unsigned long   usrmod0_max_passwd_age;
  245.         unsigned long   usrmod0_min_passwd_age;
  246.         unsigned long   usrmod0_force_logoff;
  247.         unsigned short  usrmod0_password_hist_len;
  248.         unsigned short  usrmod0_maxbadpw;
  249. };      /* user_modals_info_0 */
  250.  
  251.  
  252. struct  user_modals_info_1 {
  253.         unsigned short              usrmod1_role;
  254.         unsigned char LSFAR * LSPTR usrmod1_primary;
  255. };      /* user_modals_info_1 */
  256.  
  257.  
  258. #ifdef PURE_32
  259. /****************************************************************
  260.  *                                                              *
  261.  *                  Function prototypes - USER                  *
  262.  *                   for "pure" 32-bit only                     *
  263.  *                                                              *
  264.  ****************************************************************/
  265.  
  266. extern API32_FUNCTION
  267.   Net32UserAdd ( const unsigned char * pszServer,
  268.                  unsigned long         ulLevel,
  269.                  unsigned char       * pbBuffer,
  270.                  unsigned long         ulBuffer,         /*was USHORT */
  271.                  unsigned char       * pszReserved);
  272.  
  273. extern API32_FUNCTION
  274.   Net32UserDel ( const unsigned char   * pszServer,
  275.                  unsigned char         * pszUserName,
  276.                  unsigned char       * pszReserved);
  277.  
  278. extern API32_FUNCTION
  279.   Net32UserEnum ( const unsigned char * pszServer,
  280.                   unsigned long         ulLevel,         /*was signed short */
  281.                   unsigned char       * pbBuffer,
  282.                   unsigned long         ulBuffer,        /*was USHORT */
  283.                   unsigned long       * pulEntriesRead,  /*was USHORT */
  284.                   unsigned long       * pulTotalAvail,   /*was USHORT */
  285.                   unsigned char       * pszReserved);
  286.  
  287. extern API32_FUNCTION
  288.   Net32UserGetInfo ( const unsigned char * pszServer,
  289.                      unsigned char       * pszUserName,
  290.                      unsigned long         ulLevel,
  291.                      unsigned char       * pbBuffer,
  292.                      unsigned long         ulBuffer,         /*was USHORT */
  293.                      unsigned long       * pulTotalAvail,    /*was USHORT */
  294.                      unsigned char       * pszReserved);
  295.  
  296. extern API32_FUNCTION
  297.   Net32UserSetInfo ( const unsigned char * pszServer,
  298.                      unsigned char       * pszUserName,
  299.                      unsigned long         ulLevel,
  300.                      unsigned char       * pbBuffer,
  301.                      unsigned long         ulBuffer,      /*was USHORT */
  302.                      unsigned long         ulParmNum,     /*was signed short */
  303.                      unsigned char       * pszReserved);
  304.  
  305. extern API32_FUNCTION
  306.   Net32UserPasswordSet ( const unsigned char * pszServer,
  307.                          unsigned char       * pszUserName,
  308.                          unsigned char       * pszOldPassword,
  309.                          unsigned char       * pszNewPassword,
  310.                          unsigned char       * pszReserved);
  311.  
  312. extern API32_FUNCTION
  313.   Net32UserGetGroups ( const unsigned char * pszServer,
  314.                        const unsigned char * pszUserName,
  315.                        unsigned long         ulLevel,      /*was signed short*/
  316.                        unsigned char       * pbBuffer,
  317.                        unsigned long         ulBuffer,        /*was USHORT*/
  318.                        unsigned long       * pulEntriesRead,  /*was USHORT*/
  319.                        unsigned long       * pulTotalAvail,   /*was USHORT*/
  320.                        unsigned char       * pszReserved);
  321.  
  322. extern API32_FUNCTION
  323.   Net32UserSetGroups ( const unsigned char * pszServer,
  324.                        const unsigned char * pszUserName,
  325.                        unsigned long         ulLevel,    /*was signed short*/
  326.                        unsigned char       * pbBuffer,
  327.                        unsigned long         ulBuffer,       /*was USHORT*/
  328.                        unsigned long         ulEntries,  /*was USHORT*/
  329.                        unsigned char       * pszReserved);
  330.  
  331. extern API32_FUNCTION
  332.   Net32UserModalsGet ( const unsigned char * pszServer,
  333.                        unsigned long         ulLevel,
  334.                        unsigned char       * pbBuffer,
  335.                        unsigned long         ulBuffer,        /*was USHORT */
  336.                        unsigned long       * pulTotalAvail,   /*was USHORT */
  337.                        unsigned char       * pszReserved);
  338.  
  339. extern API32_FUNCTION
  340.   Net32UserModalsSet ( const unsigned char * pszServer,
  341.                        unsigned long         ulLevel,      /*was signed short */
  342.                        unsigned char       * pbBuffer,
  343.                        unsigned long         ulBuffer,     /*was USHORT */
  344.                        unsigned long         ulParmNum,    /*was USHORT */
  345.                        unsigned char       * pszReserved);
  346.  
  347. extern API32_FUNCTION
  348.   Net32UserValidate2 ( unsigned char   * pszServer,
  349.                        unsigned long     ulLevel,        /*was signed short */
  350.                        unsigned char   * pbBuffer,
  351.                        unsigned long     ulBuffer,       /*was SHORT */
  352.                        unsigned long     ulReserved2,    /*was SHORT */
  353.                        unsigned long   * pulTotalAvail,  /*was SHORT */
  354.                        unsigned char   * pszReserved);
  355.  
  356. #endif /* PURE_32 */
  357.  
  358.  
  359.  
  360.  
  361. /*
  362.  *      For User Logon Validation
  363. */
  364.  
  365. struct user_logon_req_1 {
  366.         unsigned char               usrreq1_name[UNLEN+1];
  367.         unsigned char               usrreq1_pad_1;
  368.         unsigned char               usrreq1_password[SESSION_PWLEN];
  369.         unsigned char LSFAR * LSPTR usrreq1_workstation;
  370. };      /* user_logon_req_1 */
  371.  
  372.  
  373. struct user_logon_info_0 {
  374.         unsigned char   usrlog0_eff_name[UNLEN+1];
  375.         unsigned char   usrlog0_pad_1;
  376. };      /* user_logon_info_0 */
  377.  
  378. struct user_logon_info_1 {
  379.         unsigned short              usrlog1_code;
  380.         unsigned char               usrlog1_eff_name[UNLEN+1];
  381.         unsigned char               usrlog1_pad_1;
  382.         unsigned short              usrlog1_priv;
  383.         unsigned long               usrlog1_auth_flags;
  384.         unsigned short              usrlog1_num_logons;
  385.         unsigned short              usrlog1_bad_pw_count;
  386.         unsigned long               usrlog1_last_logon;
  387.         unsigned long               usrlog1_last_logoff;
  388.         unsigned long               usrlog1_logoff_time;
  389.         unsigned long               usrlog1_kickoff_time;
  390.         long                        usrlog1_password_age;
  391.         unsigned long               usrlog1_pw_can_change;
  392.         unsigned long               usrlog1_pw_must_change;
  393.         unsigned char LSFAR * LSPTR usrlog1_computer;
  394.         unsigned char LSFAR * LSPTR usrlog1_domain;
  395.         unsigned char LSFAR * LSPTR usrlog1_script_path;
  396.         unsigned long               usrlog1_reserved1;
  397. };      /* user_logon_info_1 */
  398.  
  399.  
  400. struct user_logon_info_2 {
  401.         unsigned char               usrlog2_eff_name[UNLEN+1];
  402.         unsigned char               usrlog2_pad_1;
  403.         unsigned char LSFAR * LSPTR usrlog2_computer;
  404.         unsigned char LSFAR * LSPTR usrlog2_full_name;
  405.         unsigned char LSFAR * LSPTR usrlog2_usrcomment;
  406.         unsigned long               usrlog2_logon_time;
  407. };      /* user_logon_info_2 */
  408.  
  409.  
  410.  
  411.  
  412. struct user_logoff_req_1 {
  413.         unsigned char   usrlfreq1_name[UNLEN+1];
  414.         unsigned char   usrlfreq1_pad_1;
  415.         unsigned char   usrlfreq1_workstation[CNLEN+1];
  416. };      /* user_logoff_req_1 */
  417.  
  418. struct user_logoff_info_1 {
  419.         unsigned short  usrlogf1_code;
  420.         unsigned long   usrlogf1_duration;
  421.         unsigned short  usrlogf1_num_logons;
  422. };      /* user_logoff_info_1 */
  423.  
  424. /****************************************************************
  425.  *                                                              *
  426.  *              Special values and constants - USER             *
  427.  *                                                              *
  428.  ****************************************************************/
  429.  
  430.  
  431. /*
  432.  *      Bit masks for field usriX_flags of user_info_X (X = 0/1).
  433.  */
  434.  
  435. #define         UF_SCRIPT               0x1
  436. #define         UF_ACCOUNTDISABLE       0x2
  437. #define         UF_DELETE_PROHIBITED    0x4
  438. #define         UF_HOMEDIR_REQUIRED     0x8
  439. #define         UF_PASSWD_NOTREQD       0x20
  440. #define         UF_PASSWD_CANT_CHANGE   0x40
  441.  
  442. /*
  443.  *      Bit masks for field usri2_auth_flags of user_info_2.
  444. */
  445.  
  446. #define         AF_OP_PRINT             0x1
  447. #define         AF_OP_COMM              0x2
  448. #define         AF_OP_SERVER            0x4
  449. #define         AF_OP_ACCOUNTS          0x8
  450.  
  451.  
  452. /*
  453.  *      UAS role manifests under NETLOGON
  454.  */
  455. #define         UAS_ROLE_STANDALONE     0
  456. #define         UAS_ROLE_MEMBER         1
  457. #define         UAS_ROLE_BACKUP         2
  458. #define         UAS_ROLE_PRIMARY        3
  459.  
  460. /*
  461.  *      Values for parmnum for NetUserSetInfo.
  462.  */
  463.  
  464. /* LM1.0 style */
  465. #define         U1_ALL                  0
  466. #define         U1_NAME                 1
  467. #define         U1_PAD                  2
  468. #define         U1_PASSWD               3
  469. #define         U1_PASSWDAGE            4
  470. #define         U1_PRIV                 5
  471. #define         U1_DIR                  6
  472. #define         U1_COMMENT              7
  473. #define         U1_USER_FLAGS           8
  474. #define         U1_SCRIPT_PATH          9
  475.  
  476.  
  477. /* LM2.0 style */
  478. #ifndef  PARMNUM_ALL
  479. #define         PARMNUM_ALL             0
  480. #endif
  481.  
  482. #define         PARMNUM_NAME            1
  483. #define         PARMNUM_PAD             2
  484. #define         PARMNUM_PASSWD          3
  485. #define         PARMNUM_PASSWDAGE       4
  486. #define         PARMNUM_PRIV            5
  487. #define         PARMNUM_DIR             6
  488. #define         PARMNUM_COMMENT         7
  489. #define         PARMNUM_USER_FLAGS      8
  490. #define         PARMNUM_SCRIPT_PATH     9
  491. #define         PARMNUM_AUTH_FLAGS      10
  492. #define         PARMNUM_FULL_NAME       11
  493. #define         PARMNUM_USR_COMMENT     12
  494. #define         PARMNUM_PARMS           13
  495. #define         PARMNUM_WORKSTATIONS    14
  496. #define         PARMNUM_ACCT_EXPIRES    17
  497. #define         PARMNUM_MAX_STORAGE     18
  498. #define         PARMNUM_UNITS_PER_WEEK  19
  499. #define         PARMNUM_LOGON_HOURS     20
  500. #define         PARMNUM_LOGON_SERVER    23
  501. #define         PARMNUM_COUNTRY_CODE    24
  502. #define         PARMNUM_CODE_PAGE       25
  503. #define         PARMNUM_PASSWD_EXPIRED 100
  504.  
  505.  
  506. /*
  507.  *      For SetInfo call (parmnum 0) when password change not required
  508.  */
  509. #define         NULL_USERSETINFO_PASSWD         "              "
  510.  
  511.  
  512.  
  513. #define         TIMEQ_FOREVER                   ((unsigned long) -1L)
  514. #define         USER_MAXSTORAGE_UNLIMITED       ((unsigned long) -1L)
  515. #define         USER_NO_LOGOFF                  ((unsigned long) -1L)
  516. #define         UNITS_PER_DAY                   24
  517. #define         UNITS_PER_WEEK                  UNITS_PER_DAY * 7
  518.  
  519.  
  520. /*
  521.  *      Privilege levels (user_info_X field usriX_priv (X = 0/1)).
  522.  */
  523. #define         USER_PRIV_MASK          0x3
  524. #define         USER_PRIV_GUEST         0
  525. #define         USER_PRIV_USER          1
  526. #define         USER_PRIV_ADMIN         2
  527.  
  528. /*
  529.  *      user modals related defaults
  530.  */
  531. #define         MAX_PASSWD_LEN          PWLEN
  532. #define         DEF_MIN_PWLEN           6
  533. #define         DEF_PWUNIQUENESS        5
  534. #define         DEF_MAX_PWHIST          8
  535. #define         DEF_MAX_PWAGE           (unsigned long) 90*24*3600 /* 90 days */
  536. #define         DEF_MIN_PWAGE           (unsigned long) 0L         /* 0 days */
  537. #define         DEF_FORCE_LOGOFF        (unsigned long) 0xffffffff /* never */
  538. #define         DEF_MAX_BADPW           0                          /* no limit*/
  539. #define         ONE_DAY                 (unsigned long) 01*24*3600 /* 01 day  */
  540. /*
  541.  *      User Logon Validation (codes returned)
  542. */
  543. #define         VALIDATED_LOGON         0
  544. #define         PASSWORD_EXPIRED        2
  545. #define         NON_VALIDATED_LOGON     3
  546.  
  547. #define         VALID_LOGOFF            1
  548.  
  549.  
  550. /*
  551.  *      parmnum manifests for user modals
  552. */
  553.  
  554. #define         MODAL0_PARMNUM_ALL              0
  555. #define         MODAL0_PARMNUM_MIN_LEN          1
  556. #define         MODAL0_PARMNUM_MAX_AGE          2
  557. #define         MODAL0_PARMNUM_MIN_AGE          3
  558. #define         MODAL0_PARMNUM_FORCEOFF         4
  559. #define         MODAL0_PARMNUM_HISTLEN          5
  560. #define         MODAL0_PARMNUM_MAX_BADPW        6
  561. #define         MODAL0_PARMNUM_RESERVED1        6
  562.  
  563. #define         MODAL1_PARMNUM_ALL              0
  564. #define         MODAL1_PARMNUM_ROLE             1
  565. #define         MODAL1_PARMNUM_PRIMARY          2
  566.  
  567.  
  568. #ifdef ANY_32_BIT
  569. #pragma pack()
  570. #endif
  571.  
  572. #endif /* NETUSER_INCLUDED */
  573.  
  574.  
  575. /****************************************************************
  576.  *                                                              *
  577.  *              Group Class                                     *
  578.  *                                                              *
  579.  ****************************************************************/
  580.  
  581. #if (defined( INCL_NETGROUP ) || !defined( LAN_INCLUDED )) \
  582.     && !defined( NETGROUP_INCLUDED )
  583.  
  584. #define NETGROUP_INCLUDED
  585.  
  586. #ifdef ANY_32_BIT
  587. #pragma pack(1)
  588. #endif
  589.  
  590.  
  591. /****************************************************************
  592.  *                                                              *
  593.  *              Function prototypes - GROUP                     *
  594.  *                                                              *
  595.  ****************************************************************/
  596.  
  597. extern API_FUNCTION
  598.   NetGroupAdd ( const unsigned char LSFAR * pszServer,
  599.                 short                       sLevel,
  600.                 unsigned char LSFAR *       pbBuffer,
  601.                 unsigned short              usBuffer );
  602.  
  603. extern API_FUNCTION
  604.   NetGroupDel ( const unsigned char LSFAR * pszServer,
  605.                 unsigned char LSFAR *       pszGroupName );
  606.  
  607. extern API_FUNCTION
  608.   NetGroupEnum ( const unsigned char LSFAR *     pszServer,
  609.                  short                           sLevel,
  610.                  unsigned char LSFAR *           pbBuffer,
  611.                  unsigned short                  usBuffer,
  612.                  unsigned short LSFAR *          pusEntriesRead,
  613.                  unsigned short LSFAR *          pusTotalAvail );
  614.  
  615. extern API_FUNCTION
  616.   NetGroupAddUser ( const unsigned char LSFAR * pszServer,
  617.                     unsigned char LSFAR *       pszGroupName,
  618.                     unsigned char LSFAR *       pszUserName );
  619.  
  620. extern API_FUNCTION
  621.   NetGroupDelUser ( const unsigned char LSFAR * pszServer,
  622.                     unsigned char LSFAR *       pszGroupName,
  623.                     unsigned char LSFAR *       pszUserName );
  624.  
  625. extern API_FUNCTION
  626.   NetGroupGetUsers ( const unsigned char LSFAR *     pszServer,
  627.                      const unsigned char LSFAR *     pszGroupName,
  628.                      short                           sLevel,
  629.                      unsigned char LSFAR *           pbBuffer,
  630.                      unsigned short                  usBuffer,
  631.                      unsigned short LSFAR *          pusEntriesRead,
  632.                      unsigned short LSFAR *          pusTotalAvail );
  633.  
  634. extern API_FUNCTION
  635.   NetGroupSetUsers ( const unsigned char LSFAR * pszServer,
  636.                      const unsigned char LSFAR * pszGroupName,
  637.                      short                       sLevel,
  638.                      unsigned char LSFAR *       pbBuffer,
  639.                      unsigned short              usBuffer,
  640.                      unsigned short              usEntries );
  641.  
  642. extern API_FUNCTION
  643.   NetGroupGetInfo ( const unsigned char LSFAR *     pszServer,
  644.                     unsigned char LSFAR *           pszGroupName,
  645.                     short                           sLevel,
  646.                     unsigned char LSFAR *           pbBuffer,
  647.                     unsigned short                  usBuffer,
  648.                     unsigned short LSFAR *          pusTotalAvail );
  649.  
  650. extern API_FUNCTION
  651.   NetGroupSetInfo ( const unsigned char LSFAR * pszServer,
  652.                     unsigned char LSFAR *       pszGroupName,
  653.                     short                       sLevel,
  654.                     unsigned char LSFAR *       pbBuffer,
  655.                     unsigned short              usBuffer,
  656.                     short                       sParmNum );
  657.  
  658.  
  659. /****************************************************************
  660.  *                                                              *
  661.  *             Data structure templates - GROUP                 *
  662.  *                                                              *
  663.  ****************************************************************/
  664.  
  665.  
  666. struct group_info_0 {
  667.         unsigned char               grpi0_name[GNLEN+1];
  668. };      /* group_info_0 */
  669.  
  670. struct group_info_1 {
  671.         unsigned char               grpi1_name[GNLEN+1];
  672.         unsigned char               grpi1_pad;
  673.         unsigned char LSFAR * LSPTR grpi1_comment;
  674. };      /* group_info_1 */
  675.  
  676. struct group_users_info_0 {
  677.         unsigned char               grui0_name[UNLEN+1];
  678. };      /* group_users_info_0 */
  679.  
  680.  
  681.  
  682. /****************************************************************
  683.  *                                                              *
  684.  *              Function prototypes - GROUP                     *
  685.  *              for "pure" 32-bit code                          *
  686.  *                                                              *
  687.  ****************************************************************/
  688. #ifdef PURE_32
  689. extern API32_FUNCTION
  690.   Net32GroupAdd ( const unsigned char   * pszServer,
  691.                   unsigned long           ulLevel,
  692.                   unsigned char         * pbBuffer,
  693.                   unsigned long           ulBuffer,
  694.                   unsigned char         * pszReserved);
  695.  
  696. extern API32_FUNCTION
  697.   Net32GroupDel ( const unsigned char* pszServer,
  698.                   unsigned char      * pszGroupName,
  699.                   unsigned char      * pszReserved);
  700.  
  701. extern API32_FUNCTION
  702.   Net32GroupEnum ( const unsigned char    * pszServer,
  703.                    unsigned long            ulLevel,
  704.                    unsigned char          * pbBuffer,
  705.                    unsigned long            ulBuffer,
  706.                    unsigned long          * pulEntriesRead,
  707.                    unsigned long          * pulTotalAvail,
  708.                    unsigned char          * pszReserved);
  709.  
  710. extern API32_FUNCTION
  711.   Net32GroupAddUser ( const unsigned char* pszServer,
  712.                       unsigned char      * pszGroupName,
  713.                       unsigned char      * pszUserName,
  714.                       unsigned char      * pszReserved);
  715.  
  716. extern API32_FUNCTION
  717.   Net32GroupDelUser ( const unsigned char* pszServer,
  718.                       unsigned char      * pszGroupName,
  719.                       unsigned char      * pszUserName,
  720.                       unsigned char      * pszReserved);
  721.  
  722. extern API32_FUNCTION
  723.   Net32GroupGetUsers ( const unsigned char    * pszServer,
  724.                        const unsigned char    * pszGroupName,
  725.                        unsigned long            ulLevel,
  726.                        unsigned char          * pbBuffer,
  727.                        unsigned long            ulBuffer,
  728.                        unsigned long          * pulEntriesRead,
  729.                        unsigned long          * pulTotalAvail,
  730.                        unsigned char          * pszReserved);
  731.  
  732. extern API32_FUNCTION
  733.   Net32GroupSetUsers ( const unsigned char    * pszServer,
  734.                        const unsigned char    * pszGroupName,
  735.                        unsigned long            ulLevel,
  736.                        unsigned char          * pbBuffer,
  737.                        unsigned long            ulBuffer,
  738.                        unsigned long            ulEntries,
  739.                        unsigned char          * pszReserved);
  740.  
  741. extern API32_FUNCTION
  742.   Net32GroupGetInfo ( const unsigned char * pszServer,
  743.                       unsigned char       * pszGroupName,
  744.                       unsigned long         ulLevel,
  745.                       unsigned char       * pbBuffer,
  746.                       unsigned long         ulBuffer,
  747.                       unsigned long       * pulTotalAvail,
  748.                       unsigned char       * pszReserved);
  749.  
  750. extern API32_FUNCTION
  751.   Net32GroupSetInfo ( const unsigned char * pszServer,
  752.                       unsigned char       * pszGroupName,
  753.                       unsigned long         ulLevel,
  754.                       unsigned char       * pbBuffer,
  755.                       unsigned long         ulBuffer,
  756.                       unsigned long         ulParmNum,
  757.                       unsigned char       * pszReserved);
  758. #endif /* PURE_32*/
  759.  
  760.  
  761. /****************************************************************
  762.  *                                                              *
  763.  *              Special values and constants - GROUP            *
  764.  *                                                              *
  765.  ****************************************************************/
  766.  
  767. #define         GROUPIDMASK     0x8000  /* MSB set if uid refers to a group */
  768.  
  769. /*
  770.  *      Predefined group for all normal users, administrators and guests
  771.  *      LOCAL is a special group for pinball local security.
  772. */
  773.  
  774. #define         GROUP_SPECIALGRP_USERS          "USERS"
  775. #define         GROUP_SPECIALGRP_ADMINS         "ADMINS"
  776. #define         GROUP_SPECIALGRP_GUESTS         "GUESTS"
  777. #define         GROUP_SPECIALGRP_LOCAL          "LOCAL"
  778.  
  779.  
  780. /*
  781.  *      parmnum manifests for SetInfo calls (only comment is settable)
  782. */
  783.  
  784. #define         GRP1_PARMNUM_ALL        0
  785. #define         GRP1_PARMNUM_NAME       1
  786. #define         GRP1_PARMNUM_COMMENT    2
  787.  
  788. #ifdef ANY_32_BIT
  789. #pragma pack()
  790. #endif
  791.  
  792. #endif /* NETGROUP_INCLUDED */
  793.  
  794. /****************************************************************
  795.  *                                                              *
  796.  *                 Access Class                                 *
  797.  *                                                              *
  798.  ****************************************************************/
  799.  
  800. #if (defined( INCL_NETACCESS ) || !defined( LAN_INCLUDED )) \
  801.     && !defined( NETACCESS_INCLUDED )
  802.  
  803. #define NETACCESS_INCLUDED
  804.  
  805. #ifdef ANY_32_BIT
  806. #pragma pack(1)
  807. #endif
  808.  
  809.  
  810. /****************************************************************
  811.  *                                                              *
  812.  *                  Function prototypes - ACCESS                *
  813.  *                                                              *
  814.  ****************************************************************/
  815.  
  816. extern API_FUNCTION
  817.   NetAccessAdd ( const unsigned char LSFAR * pszServer,
  818.                  short                       sLevel,
  819.                  unsigned char LSFAR *       pbBuffer,
  820.                  unsigned short              cbBuffer );
  821.  
  822. extern API_FUNCTION
  823.   NetAccessCheck ( unsigned char LSFAR *  pszReserved,
  824.                    unsigned char LSFAR *  pszUserName,
  825.                    unsigned char LSFAR *  pszResource,
  826.                    unsigned short         usOperation,
  827.                    unsigned short LSFAR * pusResult );
  828.  
  829. extern API_FUNCTION
  830.   NetAccessDel ( const unsigned char LSFAR * pszServer,
  831.                  unsigned char LSFAR *       pszResource );
  832.  
  833. extern API_FUNCTION
  834.   NetAccessEnum ( const unsigned char LSFAR * pszServer,
  835.                   unsigned char LSFAR *       pszBasePath,
  836.                   short                       fsRecursive,
  837.                   short                       sLevel,
  838.                   unsigned char LSFAR *       pbBuffer,
  839.                   unsigned short              cbBuffer,
  840.                   unsigned short LSFAR *      pcEntriesRead,
  841.                   unsigned short LSFAR *      pcTotalAvail );
  842.  
  843. extern API_FUNCTION
  844.   NetAccessGetInfo ( const unsigned char LSFAR * pszServer,
  845.                      unsigned char LSFAR *       pszResource,
  846.                      short                       sLevel,
  847.                      unsigned char LSFAR *       pbBuffer,
  848.                      unsigned short              cbBuffer,
  849.                      unsigned short LSFAR *      pcbTotalAvail );
  850.  
  851. extern API_FUNCTION
  852.   NetAccessSetInfo ( const unsigned char LSFAR * pszServer,
  853.                      unsigned char LSFAR *       pszResource,
  854.                      short                       sLevel,
  855.                      unsigned char LSFAR *       pbBuffer,
  856.                      unsigned short              cbBuffer,
  857.                      short                       sParmNum );
  858.  
  859. extern API_FUNCTION
  860.   NetAccessGetUserPerms ( unsigned char LSFAR *  pszServer,
  861.                           unsigned char LSFAR *  pszUgName,
  862.                           unsigned char LSFAR *  pszResource,
  863.                           unsigned short LSFAR * pusPerms );
  864.  
  865. extern API_FUNCTION
  866.   NetAccessApply( const unsigned char LSFAR * pszServer,
  867.                   unsigned char LSFAR *       pszApplydir,
  868.                   unsigned char LSFAR *       pbBuffer,
  869.                   unsigned short              cbBuffer,
  870.                   unsigned char LSFAR *       pszreserved1,
  871.                   unsigned long               ulreserved2,
  872.                   unsigned long               uloptions);
  873.  
  874. /****************************************************************
  875.  *                                                              *
  876.  *              Data structure templates - ACCESS               *
  877.  *                                                              *
  878.  ****************************************************************/
  879.  
  880. struct access_list {
  881.         unsigned char   acl_ugname[UNLEN+1];
  882.         unsigned char   acl_ugname_pad_1;
  883.         short           acl_access;
  884. };      /* access_list */
  885.  
  886. struct access_info_0 {
  887.         unsigned char LSFAR * LSPTR acc0_resource_name;
  888. };      /* access_info_0 */
  889.  
  890. struct access_info_1 {
  891.         unsigned char LSFAR * LSPTR acc1_resource_name;
  892.         short                       acc1_attr;  /* See values below */
  893.         short                       acc1_count;
  894. };      /* access_info_1 */
  895.  
  896. struct applyerr_info_1 {
  897.         unsigned char LSFAR * LSPTR error_buf;
  898.         unsigned short error_code;
  899. };      /* applyerr_info_1 */
  900.  
  901. /* Supported values for "uloptions" parameter of NetAccessApply */
  902. #define APPLY_ABSOLUTE      0x01
  903.  
  904.  
  905.  
  906. #ifdef PURE_32
  907. /****************************************************************
  908.  *                                                              *
  909.  *           32-Bit Function prototypes - ACCESS                *
  910.  *                                                              *
  911.  ****************************************************************/
  912. extern API32_FUNCTION
  913.   Net32AccessAdd ( const unsigned char   * pszServer,
  914.                    unsigned long           ulLevel,      /*was signed short*/
  915.                    unsigned char         * pbBuffer,
  916.                    unsigned long           ulBuffer );   /*was USHORT*/
  917.  
  918. extern API32_FUNCTION
  919.   Net32AccessApply( const unsigned char * pszServer,
  920.                     unsigned char       * pszApplydir,
  921.                     unsigned char       * pbBuffer,
  922.                     unsigned long         ulBuffer,    /*was USHORT*/
  923.                     unsigned char       * pszreserved1,
  924.                     unsigned long         ulreserved2,
  925.                     unsigned long         uloptions);
  926.  
  927. extern API32_FUNCTION
  928.   Net32AccessCheck ( unsigned char * pszReserved,
  929.                      unsigned char * pszUserName,
  930.                      unsigned char * pszResource,
  931.                      unsigned long   ulOperation,  /*was short*/
  932.                      unsigned long * pulResult );  /*was short*/
  933.  
  934. extern API32_FUNCTION
  935.   Net32AccessDel ( const unsigned char* pszServer,
  936.                    unsigned char      * pszResource );
  937.  
  938. extern API32_FUNCTION
  939.   Net32AccessEnum ( const unsigned char   * pszServer,
  940.                     unsigned char         * pszBasePath,
  941.                     short                   fsRecursive,
  942.                     unsigned long           ulLevel,        /*was signed short*/
  943.                     unsigned char         * pbBuffer,
  944.                     unsigned long           cbBuffer,       /*was USHORT*/
  945.                     unsigned long         * pcEntriesRead,  /*was USHORT*/
  946.                     unsigned long         * pcTotalAvail ); /*was USHORT*/
  947.  
  948. extern API32_FUNCTION
  949.   Net32AccessGetInfo ( const unsigned char * pszServer,
  950.                        unsigned char       * pszResource,
  951.                        unsigned long         ulLevel,
  952.                        unsigned char       * pbBuffer,
  953.                        unsigned long         cbBuffer,        /*was short*/
  954.                        unsigned long       * pcbTotalAvail ); /*was short*/
  955.  
  956. extern API32_FUNCTION
  957.   Net32AccessSetInfo ( const unsigned char * pszServer,
  958.                        unsigned char       * pszResource,
  959.                        unsigned long         ulLevel,     /*was signed short*/
  960.                        unsigned char       * pbBuffer,
  961.                        unsigned long         ulBuffer,    /*was short*/
  962.                        unsigned long         ulParmNum ); /*was signed short*/
  963.  
  964. extern API32_FUNCTION
  965.   Net32AccessGetUserPerms ( unsigned char * pszServer,
  966.                             unsigned char * pszUgName,
  967.                             unsigned char * pszResource,
  968.                             unsigned long * pulPerms );  /*was short*/
  969. #endif /* PURE_32 */
  970.  
  971.  
  972. /****************************************************************
  973.  *                                                              *
  974.  *              Special values and constants - ACCESS           *
  975.  *                                                              *
  976.  ****************************************************************/
  977.  
  978. /*
  979.  *      Maximum number of permission entries for each resource.
  980.  */
  981.  
  982. #define MAXPERMENTRIES  64
  983.  
  984.  
  985. /*
  986.  *      Bit values for the access permissions.  ACCESS_ALL is a handy
  987.  *      way to specify maximum permissions.  These are used in
  988.  *      acl_access field of access_list structures.
  989.  */
  990. #define         ACCESS_NONE     0
  991. #define         ACCESS_ALL     (ACCESS_READ|ACCESS_WRITE|ACCESS_CREATE|ACCESS_EXEC|ACCESS_DELETE|ACCESS_ATRIB|ACCESS_PERM)
  992. #define         ACCESS_READ     0x1
  993. #define         ACCESS_WRITE    0x2
  994. #define         ACCESS_CREATE   0x4
  995. #define         ACCESS_EXEC     0x8
  996. #define         ACCESS_DELETE   0x10
  997. #define         ACCESS_ATRIB    0x20
  998. #define         ACCESS_PERM     0x40
  999.  
  1000. #define         ACCESS_GROUP    0x8000
  1001.  
  1002. /*
  1003.  *      Bit values for the acc1_attr field of the access_info_1 structure.
  1004.  *      Only one bit is currently defined.
  1005.  */
  1006.  
  1007. #define         ACCESS_AUDIT            0x1
  1008.  
  1009. /*
  1010.  *      Parmnum value for NetAccessSetInfo.
  1011.  */
  1012.  
  1013. #define         ACCESS_ATTR_PARMNUM     2
  1014.  
  1015.  
  1016. /*
  1017.  *      ACCESS_LETTERS defines a letter for each bit position in
  1018.  *      the acl_access field of struct access_list.  Note that some
  1019.  *      bits have a corresponding letter of ' ' (space).
  1020.  */
  1021.  
  1022. #define         ACCESS_LETTERS          "RWCXDAP         "
  1023.  
  1024.  
  1025. #ifdef ANY_32_BIT
  1026. #pragma pack()
  1027. #endif
  1028.  
  1029. #endif /* NETACCESS_INCLUDED */
  1030.  
  1031. /****************************************************************
  1032.  *                                                              *
  1033.  *              Domain Class                                    *
  1034.  *                                                              *
  1035.  ****************************************************************/
  1036.  
  1037. #if (defined( INCL_NETDOMAIN ) || !defined( LAN_INCLUDED )) \
  1038.     && !defined( NETDOMAIN_INCLUDED )
  1039.  
  1040. #define NETDOMAIN_INCLUDED
  1041.  
  1042. #ifdef ANY_32_BIT
  1043. #pragma pack(1)
  1044. #endif
  1045.  
  1046.  
  1047. /****************************************************************
  1048.  *                                                              *
  1049.  *                  Function prototypes - DOMAIN                *
  1050.  *                                                              *
  1051.  ****************************************************************/
  1052.  
  1053. extern API_FUNCTION
  1054.   NetGetDCName ( const unsigned char LSFAR * pszServer,
  1055.                  const unsigned char LSFAR * pszDomain,
  1056.                  unsigned char LSFAR *       pbBuffer,
  1057.                  unsigned short              cbBuffer );
  1058.  
  1059. extern API_FUNCTION
  1060.   NetLogonEnum ( const unsigned char LSFAR * pszServer,
  1061.                  short                       sLevel,
  1062.                  unsigned char LSFAR *       pbBuffer,
  1063.                  unsigned short              cbBuffer,
  1064.                  unsigned short LSFAR *      pusEntriesRead,
  1065.                  unsigned short LSFAR *      pusTotalAvail );
  1066.  
  1067.  
  1068. #ifdef PURE_32
  1069. /********************************************************************
  1070.  *                                                                  *
  1071.  * Function prototypes - DOMAIN - for 32-bit code, mixed and "pure" *
  1072.  *                                                                  *
  1073.  ********************************************************************/
  1074.  
  1075. extern API32_FUNCTION
  1076.   Net32GetDCName ( const unsigned char * pszServer,
  1077.                    const unsigned char * pszDomain,
  1078.                    unsigned char       * pbBuffer,
  1079.                    unsigned long         ulBuffer );
  1080.  
  1081. extern API32_FUNCTION
  1082.   Net32LogonEnum ( const unsigned char * pszServer,
  1083.                    unsigned long         ulLevel,
  1084.                    unsigned char       * pbBuffer,
  1085.                    unsigned long         ulBuffer,
  1086.                    unsigned long       * pulEntriesRead,
  1087.                    unsigned long       * pulTotalAvail );
  1088.  
  1089. #endif /* PURE_32 */
  1090.  
  1091.  
  1092. /****************************************************************
  1093.  *                                                              *
  1094.  *              Special values and constants - DOMAIN           *
  1095.  *                                                              *
  1096.  ****************************************************************/
  1097.  
  1098. #define         LOGON_INFO_UNKNOWN      -1
  1099.  
  1100.  
  1101. #ifdef ANY_32_BIT
  1102. #pragma pack()
  1103. #endif
  1104.  
  1105. #endif /* NETDOMAIN_INCLUDED */
  1106.