home *** CD-ROM | disk | FTP | other *** search
/ Piper's Pit BBS/FTP: ibm 0210 - 0219 / ibm0210-0219 / ibm0213.tar / ibm0213 / LS4APWAD.ZIP / LS40A.A12 / IBMLSA / IBM400R2 / OSLANAPI.ZIP / IBMLAN / NETSRC / H / ACCESS.H next >
Encoding:
C/C++ Source or Header  |  1994-06-10  |  45.5 KB  |  1,100 lines

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