/* IBM_PROLOG_BEGIN_TAG */ /* This is an automatically generated prolog. */ /* */ /* tcpip720 src/tcpip/usr/include/tcpip_audit.h 1.14 */ /* */ /* Licensed Materials - Property of IBM */ /* */ /* COPYRIGHT International Business Machines Corp. 1985,1989 */ /* All Rights Reserved */ /* */ /* US Government Users Restricted Rights - Use, duplication or */ /* disclosure restricted by GSA ADP Schedule Contract with IBM Corp. */ /* */ /* IBM_PROLOG_END_TAG */ /* @(#)23 1.14 src/tcpip/usr/include/tcpip_audit.h, tcp_apps, tcpip720 5/14/97 18:48:12 */ /* * COMPONENT_NAME: TCPIP tcpip_audit.h * * FUNCTIONS: CHANGE_CONFIGURATION_WRITE, CHANGE_HOST_ID_WRITE, * CHANGE_MANUALLY_SET_ROUTE_WRITE, CONNECTION_WRITE, * EXPORT_DATA_WRITE, IMPORT_DATA_WRITE, * MAIL_CONFIGURATION_WRITE, MAIL_TO_A_FILE_WRITE, * NET_ACCESS_WRITE, SET_NETWORK_TIME_WRITE, * USE_EFFECTIVE_UID, USE_REAL_UID * * ORIGINS: 27 * * (C) COPYRIGHT International Business Machines Corp. 1985, 1989, 1995 * All Rights Reserved * Licensed Materials - Property of IBM * * US Government Users Restricted Rights - Use, duplication or * disclosure restricted by GSA ADP Schedule Contract with IBM Corp. */ #ifndef _H_TCPIP_AUDIT #define _H_TCPIP_AUDIT #ifdef _CSECURITY #include #include #define PROTOCOL "TCP/IP" /* TCP/IP, SNA, UUCP, etc..*/ /* * TCP/IP application auditlog cases. * BOS limits event names to 15 characters and NULL... */ #define CHANGE_HOST_ID 0000001 #define EVENT_CHANGE_HOST_ID "TCPIP_host_id" #define CHANGE_CONFIGURATION 0000002 #define EVENT_CHANGE_CONFIGURATION "TCPIP_config" #define CHANGE_MANUALLY_SET_ROUTE 0000004 #define EVENT_CHANGE_MANUALLY_SET_ROUTE "TCPIP_route" #define CONNECTION 0000010 #define EVENT_CONNECTION "TCPIP_connect" #define IMPORT_DATA 0000020 #define EVENT_IMPORT_DATA "TCPIP_data_in" #define EXPORT_DATA 0000040 #define EVENT_EXPORT_DATA "TCPIP_data_out" #define NET_ACCESS 0000100 #define EVENT_NET_ACCESS "TCPIP_access" #define SET_NETWORK_TIME 0000200 #define EVENT_SET_NETWORK_TIME "TCPIP_set_time" #define MAIL_CONFIGURATION 0000400 #define EVENT_MAIL_CONFIGURATION "SENDMAIL_Config" #define MAIL_TO_A_FILE 0001000 #define EVENT_MAIL_TO_A_FILE "SENDMAIL_ToFile" /* globals and externs */ #define TCPIP_MAX_TAIL_FIELDS 8 struct in_addr make_in_addr(); /* Macros */ #define USE_EFFECTIVE_UID(euid) \ if ((setuid(euid)) == -1) syslog(LOG_ALERT, "setuid: %m"); #define USE_REAL_UID(uid) \ if ((setuid(uid)) == -1) syslog(LOG_ALERT, "setuid: %m"); /* Audit record template macros */ #define CHANGE_HOST_ID_WRITE(HOSTNAME, RESULT, ERRNO) \ audit_tail[1] = HOSTNAME; \ audit_tail[2] = RESULT; \ tcpip_auditlog(CHANGE_HOST_ID, audit_tail, ERRNO); #define CHANGE_CONFIGURATION_WRITE(ADD_DELETE, INTERFACE, INETADDR, RESULT, ERRNO) \ audit_tail[1] = ADD_DELETE; \ audit_tail[2] = INTERFACE; \ audit_tail[3] = inet_ntoa(INETADDR); \ audit_tail[4] = RESULT; \ tcpip_auditlog(CHANGE_CONFIGURATION, audit_tail, ERRNO); #define CHANGE_MANUALLY_SET_ROUTE_WRITE(DESTINATION, GATEWAY, ADD_OR_DELETE, NET_OR_HOST, RESULT, ERRNO) \ audit_tail[1] = inet_ntoa(DESTINATION); \ audit_tail[2] = inet_ntoa(GATEWAY); \ audit_tail[3] = ADD_OR_DELETE; \ audit_tail[4] = NET_OR_HOST; \ audit_tail[5] = RESULT; \ tcpip_auditlog(CHANGE_MANUALLY_SET_ROUTE, audit_tail, ERRNO); #define CONNECTION_WRITE(INETADDR, PORT, OPERATION, RESULT, ERRNO) \ audit_tail[1] = inet_ntoa(INETADDR); \ audit_tail[2] = PORT; \ audit_tail[3] = OPERATION; \ audit_tail[4] = RESULT; \ tcpip_auditlog(CONNECTION, audit_tail, ERRNO); #define AUDIT_TAIL_ADDR_BUF_SZ 256 #define CONNECTION6_WRITE(INET6ADDR, PORT, OPERATION, RESULT, ERRNO) \ { \ char audit_tail_addr_buf[AUDIT_TAIL_ADDR_BUF_SZ]; \ audit_tail[1] = (char *)inet_ntop(AF_INET6, INET6ADDR, \ audit_tail_addr_buf, AUDIT_TAIL_ADDR_BUF_SZ); \ audit_tail[2] = PORT; \ audit_tail[3] = OPERATION; \ audit_tail[4] = RESULT; \ tcpip_auditlog(CONNECTION, audit_tail, ERRNO); \ } #define IMPORT_DATA_WRITE(INETADDR, FROM_FILE, TO_FILE, RESULT, ERRNO) \ audit_tail[1] = inet_ntoa(INETADDR); \ audit_tail[2] = FROM_FILE; \ audit_tail[3] = TO_FILE; \ audit_tail[4] = RESULT; \ tcpip_auditlog(IMPORT_DATA, audit_tail, ERRNO); #define IMPORT6_DATA_WRITE(INET6ADDR, FROM_FILE, TO_FILE, RESULT, ERRNO) \ { \ char audit_tail_addr_buf[AUDIT_TAIL_ADDR_BUF_SZ]; \ audit_tail[1] = (char *)inet_ntop(AF_INET6, INET6ADDR, \ audit_tail_addr_buf, AUDIT_TAIL_ADDR_BUF_SZ); \ audit_tail[2] = FROM_FILE; \ audit_tail[3] = TO_FILE; \ audit_tail[4] = RESULT; \ tcpip_auditlog(IMPORT_DATA, audit_tail, ERRNO); \ } #define EXPORT_DATA_WRITE(INETADDR, FROM_FILE, TO_FILE, RESULT, ERRNO) \ audit_tail[1] = inet_ntoa(INETADDR); \ audit_tail[2] = FROM_FILE; \ audit_tail[3] = TO_FILE; \ audit_tail[4] = RESULT; \ tcpip_auditlog(EXPORT_DATA, audit_tail, ERRNO); #define EXPORT6_DATA_WRITE(INET6ADDR, FROM_FILE, TO_FILE, RESULT, ERRNO) \ { \ char audit_tail_addr_buf[AUDIT_TAIL_ADDR_BUF_SZ]; \ audit_tail[1] = (char *)inet_ntop(AF_INET6, INET6ADDR, \ audit_tail_addr_buf, AUDIT_TAIL_ADDR_BUF_SZ); \ audit_tail[2] = FROM_FILE; \ audit_tail[3] = TO_FILE; \ audit_tail[4] = RESULT; \ tcpip_auditlog(EXPORT_DATA, audit_tail, ERRNO); \ } #define NET_ACCESS_WRITE(INETADDR, ACCESS_TYPE, USER, RESULT, ERRNO) \ audit_tail[1] = inet_ntoa(INETADDR); \ audit_tail[2] = ACCESS_TYPE; \ audit_tail[3] = USER; \ audit_tail[4] = RESULT; \ tcpip_auditlog(NET_ACCESS, audit_tail, ERRNO); #define NET6_ACCESS_WRITE(INET6ADDR, ACCESS_TYPE, USER, RESULT, ERRNO) \ { \ char audit_tail_addr_buf[AUDIT_TAIL_ADDR_BUF_SZ]; \ audit_tail[1] = (char *)inet_ntop(AF_INET6, INET6ADDR, \ audit_tail_addr_buf, AUDIT_TAIL_ADDR_BUF_SZ); \ audit_tail[2] = ACCESS_TYPE; \ audit_tail[3] = USER; \ audit_tail[4] = RESULT; \ tcpip_auditlog(NET_ACCESS, audit_tail, ERRNO); \ } #define SET_NETWORK_TIME_WRITE(INETADDR, TIME, RESULT, ERRNO) \ audit_tail[1] = inet_ntoa(INETADDR); \ audit_tail[2] = TIME; \ /* Get rid of \n from asctime() */ \ *(audit_tail[2] + strlen(audit_tail[2]) - 1) = '\0'; \ audit_tail[3] = RESULT; \ tcpip_auditlog(SET_NETWORK_TIME, audit_tail, ERRNO); #define MAIL_CONFIGURATION_WRITE(OPERATION, RESULT, ERRNO) \ audit_tail[1] = OPERATION; \ audit_tail[2] = RESULT; \ tcpip_auditlog(MAIL_CONFIGURATION, audit_tail, ERRNO); #define MAIL_TO_A_FILE_WRITE(FROM, TO, RESULT, ERRNO) \ audit_tail[1] = FROM; \ audit_tail[2] = TO; \ audit_tail[3] = RESULT; \ tcpip_auditlog(MAIL_TO_A_FILE, audit_tail, ERRNO); #endif /* _CSECURITY */ #endif /* _H_TCPIP_AUDIT */