home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / warphead.zip / H / ACCESS.H < prev    next >
C/C++ Source or Header  |  1997-09-05  |  46KB  |  1,104 lines

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