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

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