home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / lansystk.zip / INCLUDE / LANSERV / AUDIT.H < prev    next >
C/C++ Source or Header  |  1998-05-08  |  20KB  |  525 lines

  1. /**************************************************************************/
  2. /*                                                                        */
  3. /*              IBM OS/2(tm) Local Area Network (LAN) Server              */
  4. /*                            Version 4.0                                 */
  5. /*                   (C) Copyright IBM Corp. 1988, 1994                   */
  6. /*                  Licensed Materials - Property of IBM                  */
  7. /*                            52G8468, 52G8475                            */
  8. /*                                                                        */
  9. /**************************************************************************/
  10. /********************************************************************/
  11.  
  12.  
  13.  
  14. /********************************************************************
  15.  *                                                                  *
  16.  *  About this file ...  AUDIT.H                                    *
  17.  *                                                                  *
  18.  *  This file contains information about the NetAudit APIs.         *
  19.  *                                                                  *
  20.  *      Function prototypes.                                        *
  21.  *                                                                  *
  22.  *      Data structure templates.                                   *
  23.  *                                                                  *
  24.  *      Definition of special values.                               *
  25.  *                                                                  *
  26.  *                                                                  *
  27.  *  NOTE:  You must include NETCONS.H before this file, since this  *
  28.  *         file depends on values defined in NETCONS.H.             *
  29.  *                                                                  *
  30.  ********************************************************************/
  31.  
  32.  
  33.  
  34. #ifdef ANY_32_BIT
  35. #pragma pack(1)
  36. #endif
  37.  
  38.  
  39.  
  40. #ifndef NETAUDIT_INCLUDED
  41.  
  42. #define NETAUDIT_INCLUDED
  43.  
  44.  
  45. /****************************************************************
  46.  *                                *
  47.  *        Data Structures for LogRead            *
  48.  *                                *
  49.  ****************************************************************/
  50.  
  51. #ifndef LOGFLAGS_FORWARD
  52.  
  53. typedef struct loghandle
  54.     {
  55.     unsigned long    time;        /* Timestamp of first record */
  56.     unsigned long    last_flags;    /* Last call's flags */
  57.     unsigned long    offset;     /* Current offset in log */
  58.     unsigned long    rec_offset;    /* Current record offset in log */
  59.     }    HLOG;
  60.  
  61.  
  62. #define LOGFLAGS_FORWARD    0
  63. #define LOGFLAGS_BACKWARD    0x1
  64. #define LOGFLAGS_SEEK        0x2
  65.  
  66. #endif
  67.  
  68.  
  69. /****************************************************************
  70.  *                                                              *
  71.  *              Function prototypes                             *
  72.  *                                                              *
  73.  ****************************************************************/
  74.  
  75.  
  76.  
  77. extern API_FUNCTION
  78.   NetAuditClear ( const unsigned char LSFAR * pszServer,
  79.                   const unsigned char LSFAR * pszBackupFile,
  80.                   unsigned char LSFAR *       pszReserved );
  81.  
  82. extern API_FUNCTION
  83.   NetAuditOpen ( const unsigned char LSFAR * pszServer,
  84.                  unsigned LSINT      LSFAR * phAuditLog,
  85.                  unsigned char       LSFAR * pszReserved );
  86.  
  87. extern API_FUNCTION
  88.   NetAuditRead ( const unsigned char LSFAR * pszServer,
  89.                  const unsigned char LSFAR * pszReserved1,
  90.                  HLOG LSFAR *                phAuditLog,
  91.                  unsigned long               ulOffset,
  92.                  unsigned short LSFAR      * pusReserved2,
  93.                  unsigned long               ulReserved3,
  94.                  unsigned long               flOffset,
  95.                  unsigned char LSFAR *       pbBuffer,
  96.                  unsigned short              cbBuffer,
  97.                  unsigned short LSFAR      * pcbReturned,
  98.                  unsigned short LSFAR      * pcbTotalAvail );
  99.  
  100.  
  101. extern API_FUNCTION
  102.   NetAuditWrite ( unsigned short              usType,
  103.                   const unsigned char LSFAR * pbBuffer,
  104.                   unsigned short              cbBuffer,
  105.                   unsigned char LSFAR *       pszReserved1,
  106.                   unsigned char LSFAR *       pszReserved2 );
  107.  
  108.  
  109. /****************************************************************
  110.  *                                *
  111.  *          Data structure templates            *
  112.  *                                *
  113.  ****************************************************************/
  114.  
  115. /*
  116.  *   General audit_entry information.  For each type of entry,
  117.  *   there may be additional information.  This is found at an
  118.  *   offset of "ae_data_offset" from the start of the audit_entry
  119.  *   structure.
  120.  *   
  121.  *   Note that at the very end of each record is a word (unsigned
  122.  *   short) that is the length of the record, the same value as
  123.  *   found in ae_len.  This length includes the whole record, including
  124.  *   the trailing length word.  This allows scanning backward.
  125.  */
  126.  
  127. struct audit_entry {
  128.     unsigned short      ae_len;         /* length of record */
  129.      unsigned short        ae_reserved;
  130.         unsigned long       ae_time;        /* time of entry    */
  131.         unsigned short      ae_type;        /* type of entry    */
  132.         unsigned short      ae_data_offset; /* offset to ae_data */
  133. };     /* audit_entry */
  134.  
  135. /*
  136.  *    The following structures represent the layout of the data area
  137.  *    of specific audit entry types.  This is the information found
  138.  *    at an offset of "ae_data_offset" from the start of the record.
  139.  *    This will usually immediately follow the audit_entry structure,
  140.  *    but DO NOT ASSUME THIS. Use the ae_data_offset value.
  141.  *
  142.  *    Some of these fields are offsets of the start of a text string.
  143.  *    The offset is from the start of the data area (i.e. the position
  144.  *    identified by ae_data_offset), NOT from the start of the whole
  145.  *    entry.  This data will appear as ASCIIZ strings, usually in the
  146.  *    area following the defined structure.
  147.  */
  148.  
  149.                     /* Server status record */
  150. struct ae_srvstatus {
  151.  
  152.     unsigned short    ae_sv_status;
  153.                     /* AE_SRVSTART, AE_SRVPAUSED, */
  154.                     /*  AE_SRVCONT, AE_SRVSTOP    */
  155. };    /* ae_srvstatus */
  156.  
  157. struct ae_sesslogon {
  158.     unsigned short    ae_so_compname;    /* ptr to computername of client    */
  159.     unsigned short    ae_so_username;    /* ptr to username of client (NULL  */
  160.                     /*  if same as computername)        */
  161.     unsigned short    ae_so_privilege;    /* AE_GUEST, AE_USER, AE_ADMIN        */
  162. };    /* ae_sesslogon */
  163.     
  164. struct ae_sesslogoff {
  165.     unsigned short    ae_sf_compname;    /* ptr to computername of client    */
  166.     unsigned short    ae_sf_username;    /* ptr to username of client (NULL  */
  167.                     /*  if same as computername)        */
  168.     unsigned short    ae_sf_reason;    /* AE_NORMAL, AE_ERROR, AE_AUTODIS, */
  169.                     /*  AE_ADMINDIS                */
  170. };    /* ae_sesslogoff */
  171.  
  172. struct ae_sesspwerr {
  173.     unsigned short    ae_sp_compname;    /* ptr to computername of client  */
  174.     unsigned short    ae_sp_username;    /* ptr to username submitted by   */
  175.                     /*  client (NULL if same as       */
  176.                     /*  computername)          */
  177. };    /* ae_sesspwerr */
  178.     
  179. struct ae_connstart {
  180.     unsigned short    ae_ct_compname;    /* ptr to computername of client    */
  181.     unsigned short    ae_ct_username;    /* ptr to username of client (NULL  */
  182.                     /*  if same as computername)        */
  183.     unsigned short    ae_ct_netname;    /* ptr to netname of share        */
  184.     unsigned short    ae_ct_connid;    /* Unique connection ID            */
  185. };    /* ae_connstart */
  186.  
  187. struct ae_connstop {
  188.     unsigned short    ae_cp_compname;    /* ptr to computername of client    */
  189.     unsigned short    ae_cp_username;    /* ptr to username of client (NULL  */
  190.                     /*  if same as computername)        */
  191.     unsigned short    ae_cp_netname;    /* ptr to netname of share        */
  192.     unsigned short    ae_cp_connid;    /* Unique connection ID            */
  193.     unsigned short    ae_cp_reason;    /* AE_NORMAL/AE_SESSDIS/AE_UNSHARE  */
  194. };    /* ae_connstop */
  195.  
  196. struct ae_connrej {
  197.     unsigned short    ae_cr_compname;    /* ptr to computername of client    */
  198.     unsigned short    ae_cr_username;    /* ptr to username of client (NULL  */
  199.                     /*  if same as computername)        */
  200.     unsigned short    ae_cr_netname;    /* ptr to netname of share        */
  201.     unsigned short    ae_cr_reason;    /* AE_USERLIMIT, AE_BADPW        */
  202. };    /* ae_connrej */
  203.  
  204. struct ae_resaccess {
  205.     unsigned short    ae_ra_compname;    /* ptr to computername of client    */
  206.     unsigned short    ae_ra_username;    /* ptr to username of client (NULL  */
  207.                     /*  if same as computername)        */
  208.     unsigned short    ae_ra_resname;    /* ptr to resource name            */
  209.     unsigned short    ae_ra_operation;    /* Bitmask uses bits defined in     */
  210.                     /*  access.h                */
  211.     unsigned short    ae_ra_returncode;    /* return code from operation        */
  212.     unsigned short    ae_ra_restype;    /* type of resource record        */
  213.     unsigned short    ae_ra_fileid;    /* unique server ID of file        */
  214. };    /* ae_resaccess */
  215.  
  216. struct ae_resaccessrej {
  217.     unsigned short    ae_rr_compname;    /* ptr to computername of client    */
  218.     unsigned short    ae_rr_username;    /* ptr to username of client (NULL  */
  219.                     /*  if same as computername)        */
  220.     unsigned short    ae_rr_resname;    /* ptr to resource name            */
  221.     unsigned short    ae_rr_operation;    /* Bitmask uses bits defined in     */
  222.                     /*  access.h                */
  223. };    /* ae_resaccessrej */
  224.  
  225. struct ae_closefile {
  226.     unsigned short    ae_cf_compname;    /* ptr to computername of client    */
  227.     unsigned short    ae_cf_username;    /* ptr to username of client (NULL  */
  228.                     /*  if same as computername)        */
  229.     unsigned short    ae_cf_resname;    /* ptr to resource name            */
  230.     unsigned short    ae_cf_fileid;    /* unique ID of file            */
  231.     unsigned long     ae_cf_duration;    /* length of use of file        */
  232.     unsigned short    ae_cf_reason;    /* How the file was closed        */
  233.                     /* 0 = Normal Client Close        */
  234.                     /* 1 = Session Disconnected        */
  235.                     /* 2 = Administrative Close        */
  236. };    /* ae_closefile */
  237.  
  238. struct ae_servicestat {
  239.     unsigned short    ae_ss_compname; /* ptr to computername of client    */
  240.     unsigned short    ae_ss_username; /* ptr to username of client (NULL  */
  241.                     /*  if same as computername)        */
  242.     unsigned short    ae_ss_svcname;    /* ptr to service name            */
  243.     unsigned short    ae_ss_status;    /* status of service            */
  244.     unsigned long    ae_ss_code;    /* code of service            */
  245.     unsigned short    ae_ss_text;    /* text of service            */
  246.     unsigned short    ae_ss_returnval;
  247. };    /* ae_servicestat */
  248.  
  249.  
  250. struct ae_aclmod {
  251.     unsigned short    ae_am_compname;    /* ptr to computername of client    */
  252.     unsigned short    ae_am_username;    /* ptr to username of client (NULL  */
  253.                     /*  if same as computername)        */
  254.     unsigned short    ae_am_resname;    /* ptr to resource name         */
  255.     unsigned short    ae_am_action;    /* action performed on ACL record   */
  256.                     /* 0 = mod, 1 = del, 2 = add        */
  257.     unsigned short    ae_am_datalen;    /* length of data following struct  */
  258. };    /* ae_aclmod */
  259.  
  260.  
  261. struct ae_uasmod {
  262.     unsigned short    ae_um_compname;    /* ptr to computername of client    */
  263.     unsigned short    ae_um_username;    /* ptr to username of client (NULL  */
  264.                     /*  if same as computername)        */
  265.     unsigned short    ae_um_resname;    /* ptr to resource name         */
  266.     unsigned short    ae_um_rectype;    /* type of UAS record            */
  267.                     /* 0 = user, 1 = group, 2 = modals  */
  268.     unsigned short    ae_um_action;    /* action performed on record        */
  269.                     /* 0 = mod, 1 = del, 2 = add        */
  270.     unsigned short    ae_um_datalen;    /* length of appended structure     */
  271. };    /* ae_uasmod */
  272.  
  273. struct ae_netlogon {
  274.     unsigned short    ae_no_compname;    /* ptr to computername of client    */
  275.     unsigned short    ae_no_username;    /* ptr to username of client (NULL  */
  276.                     /*  if same as computername)        */
  277.     unsigned short    ae_no_privilege;    /* AE_GUEST, AE_USER, AE_ADMIN        */
  278.     unsigned long     ae_no_authflags;    /* operator privileges            */
  279. };    /* ae_netlogon */
  280.  
  281. struct ae_netlogoff {
  282.     unsigned short    ae_nf_compname;    /* ptr to computername of client    */
  283.     unsigned short    ae_nf_username;    /* ptr to username of client (NULL  */
  284.                     /* if same as computername)        */
  285.     unsigned short    ae_reserved1;    /* AE_NORMAL (reason for logoff)    */
  286.     unsigned short    ae_reserved2;    /* AE_NORMAL (details of reason)    */
  287. };    /* ae_netlogoff */
  288.  
  289. struct ae_netlogdenied {
  290.     unsigned short    ae_nd_compname;    /* ptr to computername of client    */
  291.     unsigned short    ae_nd_username;    /* ptr to username of client (NULL  */
  292.                     /*  if same as computername)        */
  293.     unsigned short    ae_nd_reason;    /* reason for denial of netlogon    */
  294.     unsigned short    ae_nd_subreason;    /* details of reason for denial     */
  295. };    /* ae_netlogdenied */
  296.  
  297. struct ae_acclim {
  298.     unsigned short    ae_al_compname;    /* ptr to computername of client    */
  299.     unsigned short    ae_al_username;    /* ptr to username of client (NULL  */
  300.                     /*  if same as computername)        */
  301.     unsigned short    ae_al_resname;    /* ptr to resource name         */
  302.     unsigned short    ae_al_limit;    /* limit that was exceeded        */
  303. };    /* ae_acclim */
  304.  
  305.  
  306. struct ae_resaccess2 {
  307.     unsigned short    ae_ra2_compname;  /* ptr to computername of client    */
  308.     unsigned short    ae_ra2_username;  /* ptr to username of client (NULL  */
  309.                                         /*  if same as computername)        */
  310.     unsigned short    ae_ra2_resname;    /* ptr to resource name         */
  311.     unsigned short    ae_ra2_operation; /* Bitmask uses bits defined in     */
  312.                     /*  access.h                */
  313.     unsigned short    ae_ra2_returncode; /* return code from operation        */
  314.     unsigned short    ae_ra2_restype;    /* type of resource record        */
  315.     unsigned long     ae_ra2_fileid;    /* unique server ID of file        */
  316. };    /* ae_resaccess2 */
  317.  
  318.  
  319. /* -------------------- Begin F2359 --------------------- */
  320.  
  321. #ifdef PURE_32
  322. /****************************************************************
  323.  *                                                              *
  324.  *       Function prototypes for "pure" 32-bit code             *
  325.  *                                                              *
  326.  ****************************************************************/
  327.  
  328. extern API32_FUNCTION
  329.   Net32AuditClear ( const unsigned char * pszServer,
  330.                     const unsigned char * pszBackupFile,
  331.                     unsigned char       * pszReserved );
  332.  
  333. extern API32_FUNCTION
  334.   Net32AuditRead ( const unsigned char * pszServer,
  335.                    const unsigned char * pszReserved1,
  336.                    HLOG                * phAuditLogHandle,
  337.                    unsigned long         ulOffset,
  338.                    unsigned short      * pusReserved2,
  339.                    unsigned long         ulReserved3,
  340.                    unsigned long         ulOpenFlags,          
  341.                    unsigned char       * pbBuffer,             
  342.                    unsigned long         ulBuffer,
  343.                    unsigned long       * pulReturned,
  344.                    unsigned long       * pulTotalAvail );
  345.                                         
  346.  
  347. extern API32_FUNCTION
  348.   Net32AuditWrite ( unsigned short        usType,
  349.                     const unsigned char * pbBuffer,
  350.                     unsigned long         ulBuffer,
  351.                     unsigned char       * pszReserved1,
  352.                     unsigned char       * pszReserved2);
  353.  
  354.  
  355. #endif /* PURE_32 */
  356.  
  357. /* --------------------  End  F2359 --------------------- */
  358.  
  359. /****************************************************************
  360.  *                                                              *
  361.  *          Special values and constants            *
  362.  *                                                              *
  363.  ****************************************************************/
  364.  
  365.  
  366. /*
  367.  *      Audit entry types (field ae_type in audit_entry).
  368.  */
  369.  
  370. #define AE_SRVSTATUS     0
  371. #define AE_SESSLOGON     1
  372. #define AE_SESSLOGOFF    2
  373. #define AE_SESSPWERR     3
  374. #define AE_CONNSTART     4
  375. #define AE_CONNSTOP      5
  376. #define AE_CONNREJ       6
  377. #define AE_RESACCESS     7
  378. #define AE_RESACCESSREJ  8
  379. #define AE_CLOSEFILE     9
  380. #define AE_SERVICESTAT  11
  381. #define AE_ACLMOD       12
  382. #define AE_UASMOD       13
  383. #define AE_NETLOGON     14
  384. #define AE_NETLOGOFF    15
  385. #define AE_NETLOGDENIED 16
  386. #define AE_ACCLIMITEXCD 17
  387. #define AE_RESACCESS2   18
  388. #define AE_ACLMODFAIL   19
  389.  
  390.  
  391. /*
  392.  *    Values for ae_ss_status field of ae_srvstatus.
  393.  */
  394.  
  395. #define AE_SRVSTART     0
  396. #define AE_SRVPAUSED    1
  397. #define AE_SRVCONT      2
  398. #define AE_SRVSTOP      3
  399.  
  400. /*
  401.  *      Values for ae_so_privilege field of ae_sesslogon.
  402.  */
  403.  
  404. #define AE_GUEST        0
  405. #define AE_USER         1
  406. #define AE_ADMIN        2
  407.  
  408. /*
  409.  *      Values for various ae_XX_reason fields.
  410.  */
  411.  
  412. #define AE_NORMAL       0
  413. #define AE_USERLIMIT    0
  414. #define AE_GENERAL      0
  415. #define AE_ERROR        1
  416. #define AE_SESSDIS      1
  417. #define AE_BADPW        1
  418. #define AE_AUTODIS      2
  419. #define AE_UNSHARE      2
  420. #define AE_ADMINPRIVREQD 2
  421. #define AE_ADMINDIS     3
  422. #define AE_NOACCESSPERM 3
  423. #define AE_ACCRESTRICT  4
  424. #define AE_UNDEFINEDUSER   9        /* @P01 */
  425.  
  426. #define    AE_NORMAL_CLOSE 0
  427. #define    AE_SES_CLOSE    1
  428. #define    AE_ADMIN_CLOSE  2
  429.  
  430.  
  431. /*
  432.  * Values for xx_subreason fields.
  433.  */
  434.  
  435. #define AE_LIM_UNKNOWN      0
  436. #define AE_LIM_LOGONHOURS   1
  437. #define AE_LIM_EXPIRED      2
  438. #define AE_LIM_INVAL_WKSTA  3
  439. #define AE_LIM_DISABLED     4
  440. #define AE_LIM_DELETED      5
  441.  
  442.  
  443.  
  444. /*
  445.  * Values for xx_action fields
  446.  */
  447.  
  448. #define AE_MOD          0
  449. #define AE_DELETE       1
  450. #define AE_ADD          2
  451. #define AE_PWSET        9                      /*   @D01A   */
  452.  
  453.  
  454. /*
  455.  * Types of UAS record for um_rectype field
  456.  */
  457.  
  458. #define AE_UAS_USER         0
  459. #define AE_UAS_GROUP        1
  460. #define AE_UAS_MODALS       2
  461.  
  462.  
  463. /*
  464.  * Bitmasks for auditing events
  465.  *
  466.  *  The parentheses around the hex constants broke h_to_inc
  467.  *  and have been purged from the face of the earth.
  468.  */
  469.  
  470. #define SVAUD_SERVICE           0x1
  471. #define SVAUD_GOODSESSLOGON     0x6
  472. #define SVAUD_BADSESSLOGON      0x18
  473. #define SVAUD_SESSLOGON         (SVAUD_GOODSESSLOGON | SVAUD_BADSESSLOGON)
  474. #define SVAUD_GOODNETLOGON      0x60
  475. #define SVAUD_BADNETLOGON       0x180
  476. #define SVAUD_NETLOGON          (SVAUD_GOODNETLOGON | SVAUD_BADNETLOGON)
  477. #define SVAUD_LOGON             (SVAUD_NETLOGON | SVAUD_SESSLOGON)
  478. #define SVAUD_GOODUSE           0x600
  479. #define SVAUD_BADUSE            0x1800
  480. #define SVAUD_USE               (SVAUD_GOODUSE | SVAUD_BADUSE)
  481. #define SVAUD_USERLIST          0x2000
  482. #define SVAUD_PERMISSIONS       0x4000
  483. #define SVAUD_RESOURCE          0x8000
  484. #define SVAUD_LOGONLIM        0x00010000
  485.  
  486.  
  487. /*
  488.  * Resource access audit bitmasks.
  489.  */
  490.  
  491. #define AA_AUDIT_ALL        0x0001
  492. #define AA_A_OWNER        0x0004
  493. #define AA_CLOSE        0x0008
  494. #define AA_S_OPEN        0x0010
  495. #define AA_S_WRITE        0x0020
  496. #define AA_S_CREATE        0x0020
  497. #define AA_S_DELETE        0x0040
  498. #define AA_S_ACL        0x0080
  499. #define AA_S_ALL        ( AA_S_OPEN | AA_S_WRITE | AA_S_DELETE | AA_S_ACL)
  500. #define AA_F_OPEN        0x0100
  501. #define AA_F_WRITE        0x0200
  502. #define AA_F_CREATE        0x0200
  503. #define AA_F_DELETE        0x0400
  504. #define AA_F_ACL        0x0800
  505. #define AA_F_ALL        ( AA_F_OPEN | AA_F_WRITE | AA_F_DELETE | AA_F_ACL)
  506.  
  507. /* Pinball-specific */
  508. #define AA_A_OPEN        0x1000
  509. #define AA_A_WRITE        0x2000
  510. #define AA_A_CREATE        0x2000
  511. #define AA_A_DELETE        0x4000
  512. #define AA_A_ACL        0x8000
  513. #define AA_A_ALL        ( AA_F_OPEN | AA_F_WRITE | AA_F_DELETE | AA_F_ACL)
  514.  
  515.  
  516.  
  517.  
  518.  
  519. #endif /* NETAUDIT_INCLUDED */
  520.  
  521. #ifdef ANY_32_BIT
  522. #pragma pack()
  523. #endif
  524.  
  525.