xdm_laf.c

Go to the documentation of this file.
00001 /*----------------------------------------------------------------------------
00002  * Copyright (c) 2006, Novell, Inc.
00003  * All rights reserved.
00004  * 
00005  * Redistribution and use in source and binary forms, with or without 
00006  * modification, are permitted provided that the following conditions are 
00007  * met:
00008  * 
00009  *     * Redistributions of source code must retain the above copyright 
00010  *       notice, this list of conditions and the following disclaimer.
00011  *     * Redistributions in binary form must reproduce the above copyright 
00012  *       notice, this list of conditions and the following disclaimer in the 
00013  *       documentation and/or other materials provided with the distribution.
00014  *     * Neither the name of the Novell nor the names of its contributors 
00015  *       may be used to endorse or promote products derived from this 
00016  *       software without specific prior written permission.
00017  * 
00018  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
00019  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
00020  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 
00021  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 
00022  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
00023  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 
00024  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
00025  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 
00026  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 
00027  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 
00028  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00029  *--------------------------------------------------------------------------*/
00030 
00039 #include <libaudit.h>
00040 
00046 #ifdef _WIN32
00047 # define XDMAPI __cdecl
00048 # define XDMEXP __declspec(dllexport)
00049 #else
00050 # define XDMAPI
00051 # define XDMEXP
00052 #endif
00053 
00055 #define XDM_DEF_LAF_AMSG_TYPE 2901
00056 
00058 static int s_afd = -1;
00059 
00061 static void (*s_fplogmsg)(int level, const char * msg, ... ) = 0;
00062 
00073 XDMEXP int XDMAPI xdm_append(const char ** msgflds)
00074 {
00075    char * host = 0;
00076    char * addr = 0;
00077    char * tty = 0;
00078 #define XPRSD_OUTCOME 9
00079    int result = (int)strtoul(msgflds[XPRSD_OUTCOME], 0, 0);
00080 
00083    if (audit_log_user_message(s_afd, XDM_DEF_LAF_AMSG_TYPE, *msgflds, 
00084          host, addr, tty, result) < 0)
00085       return -1;
00086 
00087    return 0;
00088 }
00089 
00096 XDMEXP int XDMAPI xdm_init(void (*logmsg)(int level, const char * msg, ... ),
00097       char * (*getcnfstr)(const char *, char *, size_t *))
00098 {
00099    (void)getcnfstr;     /* no configuration data to be read */
00100 
00101    s_fplogmsg = logmsg; /* save logmsg function pointer */
00102 
00103    if (s_afd < 0)
00104    {
00105       if ((s_afd = audit_open()) < 0)
00106          return -1;
00107    }
00108    return 0;
00109 }
00110 
00115 XDMEXP void XDMAPI xdm_exit(void)
00116 {
00117    if (s_afd >= 0)
00118    {
00119       audit_close(s_afd);
00120       s_afd = -1;
00121    }
00122 }
00123 

Generated on Thu Aug 20 22:33:05 2009 for OpenXDAS by  doxygen 1.5.6