From 57e5d7c2aea61db5e2cac5f96192534d2e86aab2 Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Sun, 8 Jan 2006 00:30:40 +0000 Subject: [PATCH] windows-eventlog-20051219 For afsd_service.exe, properly use the Event Log by constructing message strings stored in a MESSAGETEXT resource. This patch also removes a large number of debugging related event messages that should never have been seen by an end user. That data is now logged to the trace.log where it should have been logged initially. Similar changes need to be implemented for afslogon.dll and afscreds.exe The afsd_eventlog.[ch] files should be broken out into its own library so that it can be reused efficiently. The afsreg.h header was cleaned up to ensure name consistency and to remove the last vestiges of "IBM AFS". ==================== This delta was composed from multiple commits as part of the CVS->Git migration. The checkin message with each commit was inconsistent. The following are the additional commit messages. ==================== Do not change "AFS Client" to "OpenAFS Client" unless the installers are also updated. ==================== remove temporary files upon clean --- src/WINNT/afsd/NTMakefile | 4 +- src/WINNT/afsd/afsd.h | 6 +- src/WINNT/afsd/afsd_eventlog.c | 444 +++++++++++++++++---------- src/WINNT/afsd/afsd_eventlog.h | 3 +- src/WINNT/afsd/afsd_eventmessages.mc | 210 ++++++++++++- src/WINNT/afsd/afsd_service.c | 52 +--- src/WINNT/afsd/afsd_service.rc | 4 +- src/WINNT/afsd/cm_config.c | 106 +------ src/WINNT/afsd/cm_conn.c | 68 ++-- src/WINNT/afsd/cm_dnlc.c | 20 -- src/WINNT/afsd/smb.c | 161 +++------- src/WINNT/afsd/smb3.c | 39 +-- src/WINNT/afsreg/afsreg.h | 14 +- 13 files changed, 610 insertions(+), 521 deletions(-) diff --git a/src/WINNT/afsd/NTMakefile b/src/WINNT/afsd/NTMakefile index 7f66f374d..e491822f5 100644 --- a/src/WINNT/afsd/NTMakefile +++ b/src/WINNT/afsd/NTMakefile @@ -504,7 +504,7 @@ $(OUT)\unlog.res: unlog.rc AFS_component_version_number.h $(OUT)\afscpcc.res: afscpcc.rc AFS_component_version_number.h -afsd_eventmessages.rc: afsd_eventmessages.h +afsd_eventmessages.rc: $(INCFILEDIR)\afsd_eventmessages.h $(OUT)\afsd_service.res: afsd_service.rc afsd_eventmessages.rc AFS_component_version_number.h @@ -520,6 +520,8 @@ clean:: $(DEL) afsrpc.h $(DEL) afsrpc_?.* $(DEL) afsd_eventmessages.h + $(DEL) afsd_eventmessages.rc + $(DEL) MSG?????.bin $(DEL) $(CONF_DLLFILE) $(DEL) $(LOGON_DLLFILE) $(DEL) $(LOG95_DLLFILE) diff --git a/src/WINNT/afsd/afsd.h b/src/WINNT/afsd/afsd.h index 18b121307..f0423b4c9 100644 --- a/src/WINNT/afsd/afsd.h +++ b/src/WINNT/afsd/afsd.h @@ -66,13 +66,15 @@ BOOL APIENTRY About(HWND, unsigned int, unsigned int, long); #include "afsd_init.h" #ifdef DJGPP #include "afs/afsmsg95.h" +#else +#include "afsd_eventlog.h" #endif #include #include -#define AFS_DAEMON_SERVICE_NAME "TransarcAFSDaemon" -#define AFS_DAEMON_EVENT_NAME "AFS Client" +#define AFS_DAEMON_SERVICE_NAME AFSREG_CLT_SVC_NAME +#define AFS_DAEMON_EVENT_NAME AFSREG_CLT_SW_NAME void afs_exit(); diff --git a/src/WINNT/afsd/afsd_eventlog.c b/src/WINNT/afsd/afsd_eventlog.c index f7f932ffc..6bb707808 100644 --- a/src/WINNT/afsd/afsd_eventlog.c +++ b/src/WINNT/afsd/afsd_eventlog.c @@ -10,53 +10,51 @@ #include #include #include +#include #include +#include "afsd.h" #include "afsd_eventlog.h" -static CHAR szKeyName[] = AFSREG_APPLOG_SUBKEY "\\" AFSREG_CLT_SVC_NAME; - static BOOL GetServicePath(LPTSTR lpPathBuf, PDWORD pdwPathBufSize); static BOOL AddEventSource(void); static BOOL GetServicePath(LPTSTR lpPathBuf, PDWORD pdwPathBufSize) { - HKEY hKey = NULL; - DWORD dwData = 0; - BOOL bRet = TRUE; + HKEY hKey = NULL; + DWORD dwData = 0; + BOOL bRet = TRUE; - do { - - // Open key - if ( RegOpenKeyEx( HKEY_LOCAL_MACHINE, AFSREG_SVR_SVC_SUBKEY, 0, KEY_QUERY_VALUE, &hKey ) ) - { - bRet = FALSE; - break; - } - - // prepare user's buffer and read into it - dwData = *pdwPathBufSize; - memset(lpPathBuf, '\0', dwData); - if ( RegQueryValueEx( - hKey, // handle to key - "ImagePath", // value name - NULL, // reserved - NULL, // type buffer - (LPBYTE) lpPathBuf, // data buffer - &dwData)) // size of data buffer - { - bRet = FALSE; - break; - } + do { + // Open key + if ( RegOpenKeyEx( HKEY_LOCAL_MACHINE, AFSREG_CLT_SVC_SUBKEY, 0, KEY_QUERY_VALUE, &hKey ) ) + { + bRet = FALSE; + break; + } + + // prepare user's buffer and read into it + dwData = *pdwPathBufSize; + memset(lpPathBuf, '\0', dwData); + if ( RegQueryValueEx( hKey, // handle to key + "ImagePath", // value name + NULL, // reserved + NULL, // type buffer + (LPBYTE) lpPathBuf, // data buffer + &dwData)) // size of data buffer + { + bRet = FALSE; + break; + } - *pdwPathBufSize = dwData; + *pdwPathBufSize = dwData; - } while (0); + } while (0); - if (hKey != NULL) - RegCloseKey(hKey); - - return bRet; + if (hKey != NULL) + RegCloseKey(hKey); + + return bRet; } // @@ -65,151 +63,265 @@ GetServicePath(LPTSTR lpPathBuf, PDWORD pdwPathBufSize) static BOOL AddEventSource() { - HKEY hKey = NULL; - UCHAR szBuf[MAX_PATH]; - DWORD dwData, dwDisposition; - BOOL bRet = TRUE; - - do { - // Let's see if key already exists as a subkey under the - // Application key in the EventLog registry key. If not, - // create it. - if ( RegOpenKeyEx( HKEY_LOCAL_MACHINE, szKeyName, 0, - KEY_QUERY_VALUE, &hKey ) ) - { - // nope - create it - if ( RegCreateKeyEx(HKEY_LOCAL_MACHINE, szKeyName, 0, - NULL, REG_OPTION_NON_VOLATILE, - KEY_ALL_ACCESS, NULL, &hKey, - &dwDisposition)) - { - bRet = FALSE; - break; - } - - // Set the name of the message file - // Get "ImagePath" from TransarcAFSDaemon service - memset(szBuf, '\0', MAX_PATH); - dwData = MAX_PATH; - GetServicePath(szBuf, &dwData); - - // Add the name to the EventMessageFile subkey. - if ( RegSetValueEx( - hKey, // subkey handle - AFSREG_SVR_APPLOG_MSGFILE_VALUE, // value name - 0, // must be zero - REG_EXPAND_SZ, // value type - (LPBYTE) szBuf, // pointer to value data - (DWORD)strlen(szBuf) + 1)) // length of value data - { - bRet = FALSE; - break; - } - - // Set the supported event types in the TypesSupported subkey. - dwData = EVENTLOG_ERROR_TYPE | EVENTLOG_WARNING_TYPE | - EVENTLOG_INFORMATION_TYPE; - - if ( RegSetValueEx( - hKey, // subkey handle - AFSREG_SVR_APPLOG_MSGTYPE_VALUE, // value name - 0, // must be zero - REG_DWORD, // value type - (LPBYTE) &dwData, // pointer to value data - sizeof(DWORD))) // length of value data - { - bRet = FALSE; - break; - } - } - - else - { - // key was opened - read it - memset(szBuf, '\0', MAX_PATH); - dwData = MAX_PATH; - if ( RegQueryValueEx( - hKey, // handle to key - AFSREG_SVR_APPLOG_MSGFILE_VALUE, // value name - NULL, // reserved - NULL, // type buffer - (LPBYTE) szBuf, // data buffer - &dwData)) // size of data buffer - { - bRet = FALSE; - break; - } - } - - } while (0); + HKEY hKey = NULL, hLogKey; + UCHAR szBuf[MAX_PATH]; + DWORD dwData, dwDisposition; + BOOL bRet = TRUE; + + do { + if ( RegOpenKeyEx( HKEY_LOCAL_MACHINE, AFSREG_APPLOG_SUBKEY, 0, + KEY_QUERY_VALUE, &hLogKey ) ) + { + // nope - create it + if ( RegCreateKeyEx(HKEY_LOCAL_MACHINE, AFSREG_APPLOG_SUBKEY, 0, + NULL, REG_OPTION_NON_VOLATILE, + KEY_ALL_ACCESS, NULL, &hLogKey, + &dwDisposition)) + { + bRet = FALSE; + break; + } + } + + // Let's see if key already exists as a subkey under the + // Application key in the EventLog registry key. If not, + // create it. + if ( RegOpenKeyEx( hLogKey, AFSREG_CLT_APPLOG_SUBKEY, 0, + KEY_QUERY_VALUE, &hKey ) ) + { + // nope - create it + if ( RegCreateKeyEx(hLogKey, AFSREG_CLT_APPLOG_SUBKEY, 0, + NULL, REG_OPTION_NON_VOLATILE, + KEY_ALL_ACCESS, NULL, &hKey, + &dwDisposition)) + { + bRet = FALSE; + break; + } + + // Set the name of the message file + // Get "ImagePath" from TransarcAFSDaemon service + memset(szBuf, '\0', MAX_PATH); + dwData = MAX_PATH; + GetServicePath(szBuf, &dwData); + + // Add the name to the EventMessageFile subkey. + if ( RegSetValueEx( hKey, // subkey handle + AFSREG_APPLOG_MSGFILE_VALUE, // value name + 0, // must be zero + REG_EXPAND_SZ, // value type + (LPBYTE) szBuf, // pointer to value data + (DWORD)strlen(szBuf) + 1)) // length of value data + { + bRet = FALSE; + break; + } + + // Set the supported event types in the TypesSupported subkey. + dwData = EVENTLOG_ERROR_TYPE | EVENTLOG_WARNING_TYPE | + EVENTLOG_INFORMATION_TYPE; + + if ( RegSetValueEx( hKey, // subkey handle + AFSREG_APPLOG_MSGTYPE_VALUE, // value name + 0, // must be zero + REG_DWORD, // value type + (LPBYTE) &dwData, // pointer to value data + sizeof(DWORD))) // length of value data + { + bRet = FALSE; + break; + } + } + else + { + // key was opened - read it + memset(szBuf, '\0', MAX_PATH); + dwData = MAX_PATH; + if ( RegQueryValueEx( hKey, // handle to key + AFSREG_APPLOG_MSGFILE_VALUE, // value name + NULL, // reserved + NULL, // type buffer + (LPBYTE) szBuf, // data buffer + &dwData)) // size of data buffer + { + bRet = FALSE; + break; + } + } + } while (0); - if (hKey != NULL) - RegCloseKey(hKey); + if (hKey != NULL) + RegCloseKey(hKey); - return bRet; -} + if (hLogKey != NULL) + RegCloseKey(hLogKey); + + return bRet; +} // Log an event with a formatted system message as the (only) substitution // string, from the given message ID. VOID LogEventMessage(WORD wEventType, DWORD dwEventID, DWORD dwMessageID) { - LPTSTR msgBuf; + LPTSTR msgBuf; - FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM - | FORMAT_MESSAGE_ALLOCATE_BUFFER, - NULL, dwMessageID, 0, (LPTSTR)&msgBuf, 0, NULL); - LogEvent(wEventType, dwEventID, msgBuf, NULL); - LocalFree(msgBuf); + FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_ALLOCATE_BUFFER, + NULL, dwMessageID, 0, (LPTSTR)&msgBuf, 0, NULL); + LogEvent(wEventType, dwEventID, msgBuf, NULL); + LocalFree(msgBuf); } // // Use the ReportEvent API to write an entry to the system event log. // -#define MAXSTRINGARGS 100 +#define MAXARGS 8 +#define STRLEN 64 VOID -LogEvent(WORD wEventType, DWORD dwEventID, LPTSTR lpString, ...) +LogEvent(WORD wEventType, DWORD dwEventID, ...) { - va_list listStrings; - HANDLE hEventSource; - LPTSTR lpStrings[MAXSTRINGARGS]; - WORD wNumStrings; - - // Ensure that our event source is properly initialized. - if (!AddEventSource()) - return; - - // Get a handle to the event log. - hEventSource = RegisterEventSource(NULL, AFSREG_CLT_SVC_PARAM_KEY); - if (hEventSource == NULL) - return; - - // Construct the array of substitution strings. - va_start(listStrings, lpString); - for (wNumStrings = 0; - lpString != NULL && wNumStrings < MAXSTRINGARGS; - wNumStrings++) - { - lpStrings[wNumStrings] = lpString; - // Advance to the next argument. - lpString = va_arg(listStrings, LPTSTR); - } - va_end(listStrings); - - // Make sure we were not given too many args. - if (wNumStrings >= MAXSTRINGARGS) - return; - - // Log the event. - ReportEvent(hEventSource, // handle of event source - wEventType, // event type - 0, // event category - dwEventID, // event ID - NULL, // current user's SID - wNumStrings, // strings in lpszStrings - 0, // no bytes of raw data - lpStrings, // array of error strings - NULL); // no raw data - - DeregisterEventSource(hEventSource); -} + va_list listArgs; + HANDLE hEventSource; + LPTSTR lpArgs[MAXARGS]; + CHAR lpStrings[MAXARGS][STRLEN]; + WORD wNumArgs = 0; + WORD wNumStrings = 0; + DWORD code; + + // Ensure that our event source is properly initialized. + if (!AddEventSource()) + return; + + // Get a handle to the event log. + hEventSource = RegisterEventSource(NULL, AFS_DAEMON_EVENT_NAME); + if (hEventSource == NULL) + return; + + // Construct the array of substitution strings. + va_start(listArgs, dwEventID); + + switch ( dwEventID ) { + case MSG_FLUSH_NO_SHARE_NAME: + case MSG_FLUSH_NO_MEMORY: + case MSG_FLUSH_IMPERSONATE_ERROR: + case MSG_FLUSH_UNEXPECTED_EVENT: + case MSG_UNHANDLED_EXCEPTION: + case MSG_SMB_ZERO_TRANSACTION_COUNT: + case MSG_SERVICE_START_PENDING: + case MSG_SERVICE_INCORRECT_VERSIONS: + case MSG_SERVICE_RUNNING: + case MSG_SERVICE_STOPPING: + case MSG_SERVICE_ERROR_STOP: + break; + case MSG_FLUSH_BAD_SHARE_NAME: + case MSG_FLUSH_OPEN_ENUM_ERROR: + case MSG_FLUSH_ENUM_ERROR: + case MSG_FLUSH_FAILED: + case MSG_RX_HARD_DEAD_TIME_EXCEEDED: + case MSG_SERVICE_ERROR_STOP_WITH_MSG: + wNumArgs = 1; + lpArgs[0] = va_arg(listArgs, LPTSTR); + break; + case MSG_TIME_FLUSH_PER_VOLUME: + case MSG_TIME_FLUSH_TOTAL: + wNumArgs = 2; + lpArgs[0] = va_arg(listArgs, LPTSTR); + lpArgs[1] = va_arg(listArgs, LPTSTR); + break; + case MSG_SERVER_REPORTS_VNOVOL: + case MSG_SERVER_REPORTS_VMOVED: + case MSG_SERVER_REPORTS_VOFFLINE: + case MSG_SERVER_REPORTS_VSALVAGE: + case MSG_SERVER_REPORTS_VNOSERVICE: + case MSG_SERVER_REPORTS_VIO: + wNumArgs = 2; + lpArgs[0] = va_arg(listArgs, LPTSTR); + StringCbPrintf(lpStrings[1],STRLEN,"%d",va_arg(listArgs,afs_int32)); + lpArgs[1] = lpStrings[1]; + break; + case MSG_BAD_SMB_PARAM: + wNumArgs = 5; + lpArgs[0] = va_arg(listArgs, LPTSTR); + StringCbPrintf(lpStrings[1],STRLEN,"%d",va_arg(listArgs,int)); + StringCbPrintf(lpStrings[2],STRLEN,"%d",va_arg(listArgs,int)); + StringCbPrintf(lpStrings[3],STRLEN,"%d",va_arg(listArgs,int)); + StringCbPrintf(lpStrings[4],STRLEN,"%d",va_arg(listArgs,WORD)); + lpArgs[1] = lpStrings[1]; + lpArgs[2] = lpStrings[2]; + lpArgs[3] = lpStrings[3]; + lpArgs[4] = lpStrings[4]; + break; + case MSG_BAD_SMB_PARAM_WITH_OFFSET: + wNumArgs = 6; + lpArgs[0] = va_arg(listArgs, LPTSTR); + StringCbPrintf(lpStrings[1],STRLEN,"%d",va_arg(listArgs,int)); + StringCbPrintf(lpStrings[2],STRLEN,"%d",va_arg(listArgs,int)); + StringCbPrintf(lpStrings[3],STRLEN,"%d",va_arg(listArgs,int)); + StringCbPrintf(lpStrings[4],STRLEN,"%d",va_arg(listArgs,int)); + StringCbPrintf(lpStrings[5],STRLEN,"%d",va_arg(listArgs,WORD)); + lpArgs[1] = lpStrings[1]; + lpArgs[2] = lpStrings[2]; + lpArgs[3] = lpStrings[3]; + lpArgs[4] = lpStrings[4]; + lpArgs[5] = lpStrings[5]; + break; + case MSG_BAD_SMB_TOO_SHORT: + case MSG_BAD_SMB_INVALID: + case MSG_BAD_SMB_INCOMPLETE: + wNumArgs = 1; + StringCbPrintf(lpStrings[0],STRLEN,"%d",va_arg(listArgs,WORD)); + lpArgs[0] = lpStrings[0]; + break; + case MSG_SMB_SESSION_START: + wNumArgs = 1; + StringCbPrintf(lpStrings[0],STRLEN,"%d",va_arg(listArgs,long)); + lpArgs[0] = lpStrings[0]; + break; + case MSG_BAD_SMB_WRONG_SESSION: + wNumArgs = 2; + StringCbPrintf(lpStrings[0],STRLEN,"%d",va_arg(listArgs,DWORD)); + StringCbPrintf(lpStrings[1],STRLEN,"%d",va_arg(listArgs,WORD)); + lpArgs[0] = lpStrings[0]; + lpArgs[1] = lpStrings[1]; + break; + case MSG_BAD_VCP: + wNumArgs = 4; + StringCbPrintf(lpStrings[0],STRLEN,"%d",va_arg(listArgs,UCHAR)); + StringCbPrintf(lpStrings[1],STRLEN,"%d",va_arg(listArgs,UCHAR)); + StringCbPrintf(lpStrings[2],STRLEN,"%d",va_arg(listArgs,UCHAR)); + StringCbPrintf(lpStrings[3],STRLEN,"%d",va_arg(listArgs,UCHAR)); + lpArgs[0] = lpStrings[0]; + lpArgs[1] = lpStrings[1]; + lpArgs[2] = lpStrings[2]; + lpArgs[3] = lpStrings[3]; + break; + case MSG_SERVICE_ERROR_STOP_WITH_MSG_AND_LOCATION: + wNumArgs = 3; + lpArgs[0] = va_arg(listArgs, LPTSTR); + StringCbPrintf(lpStrings[1],STRLEN,"%d",va_arg(listArgs,int)); + lpArgs[1] = lpStrings[1]; + lpArgs[2] = va_arg(listArgs,LPTSTR); + break; + } + va_end(listArgs); + + // Make sure we were not given too many args. + if (wNumArgs >= MAXARGS) + return; + + // Log the event. + code = ReportEvent(hEventSource, // handle of event source + wEventType, // event type + 0, // event category + dwEventID, // event ID + NULL, // current user's SID + wNumArgs, // strings in lpszArgs + 0, // no bytes of raw data + wNumArgs ? lpArgs : NULL, // array of error strings + NULL); // no raw data + + + DeregisterEventSource(hEventSource); +} + + diff --git a/src/WINNT/afsd/afsd_eventlog.h b/src/WINNT/afsd/afsd_eventlog.h index 614d2d85b..c8e7ad078 100644 --- a/src/WINNT/afsd/afsd_eventlog.h +++ b/src/WINNT/afsd/afsd_eventlog.h @@ -8,6 +8,5 @@ #include "afsd_eventmessages.h" VOID LogEventMessage(WORD wEventType, DWORD dwEventID, DWORD dwMessageID); -VOID LogEvent(WORD wEventType, DWORD dwEventID, LPTSTR lpString, ...); - +VOID LogEvent(WORD wEventType, DWORD dwEventID, ...); #endif /* __AFSD_EVENTLOG_H_ */ diff --git a/src/WINNT/afsd/afsd_eventmessages.mc b/src/WINNT/afsd/afsd_eventmessages.mc index 37f86ac9b..33d563819 100644 --- a/src/WINNT/afsd/afsd_eventmessages.mc +++ b/src/WINNT/afsd/afsd_eventmessages.mc @@ -4,6 +4,9 @@ ;// This file contains the message definitions for the ;// TransarcAFSDaemon service to facilitate system event logging. ;// +;// Do not edit the header file. It is autogenerated from +;// afsd_eventmessages.mc. If you edit afsd_eventmessages.mc +;// be sure to ensure the consistency of the data types in LogEvent() ;// ; ;#ifndef __AFSD_EVENTMESSAGES_H_ @@ -25,7 +28,7 @@ FacilityNames=(System=0x0:FACILITY_SYSTEM LanguageNames=(English=0x409:MSG00409) -MessageId=0x1 +MessageId=0x1001 Severity=Informational Facility=System SymbolicName=MSG_TIME_FLUSH_PER_VOLUME @@ -106,4 +109,209 @@ Flush volumes thread received unrecognized event. . +MessageId= +Severity=Warning +Facility=System +SymbolicName=MSG_SERVER_REPORTS_VNOVOL +Language=English +Server %1 reported volume %2 as not attached. +. + +MessageId= +Severity=Warning +Facility=System +SymbolicName=MSG_SERVER_REPORTS_VMOVED +Language=English +Server %1 reported volume %2 as moved. +. + +MessageId= +Severity=Warning +Facility=System +SymbolicName=MSG_SERVER_REPORTS_VOFFLINE +Language=English +Server %1 reported volume %2 as offline. +. + +MessageId= +Severity=Warning +Facility=System +SymbolicName=MSG_SERVER_REPORTS_VSALVAGE +Language=English +Server %1 reported volume %2 as needs salvage. +. + +MessageId= +Severity=Warning +Facility=System +SymbolicName=MSG_SERVER_REPORTS_VNOSERVICE +Language=English +Server %1 reported volume %2 as not in service. +. + +MessageId= +Severity=Warning +Facility=System +SymbolicName=MSG_SERVER_REPORTS_VIO +Language=English +Server %1 reported volume %2 as temporarily unaccessible. +. + + +MessageId= +Severity=Warning +Facility=System +SymbolicName=MSG_RX_HARD_DEAD_TIME_EXCEEDED +Language=English +Hard Dead Time exceeded when communicating with server %1 +. + +MessageId= +Severity=Error +Facility=System +SymbolicName=MSG_BAD_SMB_PARAM +Language=English +File %1 Line %2 Bad SMB param %3 out of %4, ncb len %5. +. + +MessageId= +Severity=Error +Facility=System +SymbolicName=MSG_BAD_SMB_PARAM_WITH_OFFSET +Language=English +File %1 Line %2 Bad SMB param %3 offset %4 out of %5, ncb len %6. +. + + +MessageId= +Severity=Warning +Facility=System +SymbolicName=MSG_BAD_SMB_TOO_SHORT +Language=English +SMB message too short, len %1. +. + + +MessageId= +Severity=Warning +Facility=System +SymbolicName=MSG_BAD_SMB_WRONG_SESSION +Language=English +SMB request straddled session startup, took %1 ms, ncb length %2. +. + +MessageId= +Severity=Warning +Facility=System +SymbolicName=MSG_BAD_SMB_INVALID +Language=English +Invalid SMB message, length %1. +. + + +MessageId= +Severity=Warning +Facility=System +SymbolicName=MSG_BAD_SMB_INCOMPLETE +Language=English +Incomplete SMB message, length %1. +. + + +MessageId= +Severity=Warning +Facility=System +SymbolicName=MSG_BAD_VCP +Language=English +VCP could not be found: +LSNs[idx_session]=[%1] +lanas[idx_session]=[%2] +ncbp->ncb_lsn=[%3] +ncbp->ncb_lana_num=[%4] +. + +MessageId= +Severity=Error +Facility=System +SymbolicName=MSG_UNHANDLED_EXCEPTION +Language=English +Unhandled exception. Examine OpenAFS log files for further details. +. + +MessageId= +Severity=Informational +Facility=System +SymbolicName=MSG_SMB_SESSION_START +Language=English +SMB session startup, %1 ongoing ops. +. + +MessageId= +Severity=Warning +Facility=System +SymbolicName=MSG_SMB_ZERO_TRANSACTION_COUNT +Language=English +Transaction2 word count = 0. +. + + +MessageId= +Severity=Informational +Facility=System +SymbolicName=MSG_SERVICE_START_PENDING +Language=English +OpenAFS Start Pending. +. + +MessageId= +Severity=Error +Facility=System +SymbolicName=MSG_SERVICE_INCORRECT_VERSIONS +Language=English +OpenAFS Start Failed due to version inconsistency. See afsd_init.log for details. +. + +MessageId= +Severity=Informational +Facility=System +SymbolicName=MSG_SERVICE_RUNNING +Language=English +OpenAFS Running. +. + +MessageId= +Severity=Informational +Facility=System +SymbolicName=MSG_SERVICE_STOPPING +Language=English +OpenAFS Stopping. +. + + +MessageId= +Severity=Error +Facility=System +SymbolicName=MSG_SERVICE_ERROR_STOP +Language=English +OpenAFS Stopping due to error: Unknown reason. +. + + +MessageId= +Severity=Error +Facility=System +SymbolicName=MSG_SERVICE_ERROR_STOP_WITH_MSG +Language=English +OpenAFS Stopping due to error: %1. +. + + +MessageId= +Severity=Error +Facility=System +SymbolicName=MSG_SERVICE_ERROR_STOP_WITH_MSG_AND_LOCATION +Language=English +OpenAFS Stopping due to error (%1:%2): %3. +. + ;#endif /* __AFSD_EVENTMESSAGES_H_ 1 */ diff --git a/src/WINNT/afsd/afsd_service.c b/src/WINNT/afsd/afsd_service.c index 999270853..65ebe5cbf 100644 --- a/src/WINNT/afsd/afsd_service.c +++ b/src/WINNT/afsd/afsd_service.c @@ -59,20 +59,11 @@ int powerEventsRegistered = 0; */ static void afsd_notifier(char *msgp, char *filep, long line) { - char tbuffer[512]; - char *ptbuf[1]; - HANDLE h; - if (filep) - sprintf(tbuffer, "Error at file %s, line %d: %s", + LogEvent(EVENTLOG_ERROR_TYPE, MSG_SERVICE_ERROR_STOP_WITH_MSG_AND_LOCATION, filep, line, msgp); else - sprintf(tbuffer, "Error at unknown location: %s", msgp); - - h = RegisterEventSource(NULL, AFS_DAEMON_EVENT_NAME); - ptbuf[0] = tbuffer; - ReportEvent(h, EVENTLOG_ERROR_TYPE, 0, line, NULL, 1, 0, ptbuf, NULL); - DeregisterEventSource(h); + LogEvent(EVENTLOG_ERROR_TYPE, MSG_SERVICE_ERROR_STOP_WITH_MSG, msgp); GlobalStatus = line; @@ -1089,13 +1080,7 @@ afsd_Main(DWORD argc, LPTSTR *argv) SetServiceStatus(StatusHandle, &ServiceStatus); #endif - { - HANDLE h; char *ptbuf[1]; - h = RegisterEventSource(NULL, AFS_DAEMON_EVENT_NAME); - ptbuf[0] = "AFS start pending"; - ReportEvent(h, EVENTLOG_INFORMATION_TYPE, 0, 0, NULL, 1, 0, ptbuf, NULL); - DeregisterEventSource(h); - } + LogEvent(EVENTLOG_INFORMATION_TYPE, MSG_SERVICE_START_PENDING); #ifdef REGISTER_POWER_NOTIFICATIONS { @@ -1134,14 +1119,8 @@ afsd_Main(DWORD argc, LPTSTR *argv) ServiceStatus.dwControlsAccepted = 0; SetServiceStatus(StatusHandle, &ServiceStatus); - { - HANDLE h; char *ptbuf[1]; - h = RegisterEventSource(NULL, AFS_DAEMON_EVENT_NAME); - ptbuf[0] = "Incorrect module versions loaded"; - ReportEvent(h, EVENTLOG_ERROR_TYPE, 0, 0, NULL, 1, 0, ptbuf, NULL); - DeregisterEventSource(h); - } - + LogEvent(EVENTLOG_ERROR_TYPE, MSG_SERVICE_INCORRECT_VERSIONS); + /* exit if initialization failed */ return; } @@ -1301,13 +1280,8 @@ afsd_Main(DWORD argc, LPTSTR *argv) ServiceStatus.dwControlsAccepted = SERVICE_ACCEPT_STOP | SERVICE_ACCEPT_SHUTDOWN | SERVICE_ACCEPT_POWEREVENT | SERVICE_ACCEPT_PARAMCHANGE; SetServiceStatus(StatusHandle, &ServiceStatus); #endif - { - HANDLE h; char *ptbuf[1]; - h = RegisterEventSource(NULL, AFS_DAEMON_EVENT_NAME); - ptbuf[0] = "AFS running"; - ReportEvent(h, EVENTLOG_INFORMATION_TYPE, 0, 0, NULL, 1, 0, ptbuf, NULL); - DeregisterEventSource(h); - } + + LogEvent(EVENTLOG_INFORMATION_TYPE, MSG_SERVICE_RUNNING); } /* allow an exit to be called when started */ @@ -1347,14 +1321,10 @@ afsd_Main(DWORD argc, LPTSTR *argv) afsi_log("Received Termination Signal, Stopping Service"); - { - HANDLE h; char *ptbuf[1]; - h = RegisterEventSource(NULL, AFS_DAEMON_EVENT_NAME); - ptbuf[0] = "AFS quitting"; - ReportEvent(h, GlobalStatus ? EVENTLOG_ERROR_TYPE : EVENTLOG_INFORMATION_TYPE, - 0, 0, NULL, 1, 0, ptbuf, NULL); - DeregisterEventSource(h); - } + if ( GlobalStatus ) + LogEvent(EVENTLOG_ERROR_TYPE, MSG_SERVICE_ERROR_STOP); + else + LogEvent(EVENTLOG_INFORMATION_TYPE, MSG_SERVICE_STOPPING); /* allow an exit to be called prior to stopping the service */ hHookDll = LoadLibrary(AFSD_HOOK_DLL); diff --git a/src/WINNT/afsd/afsd_service.rc b/src/WINNT/afsd/afsd_service.rc index b2443e90f..7ad4598ef 100644 --- a/src/WINNT/afsd/afsd_service.rc +++ b/src/WINNT/afsd/afsd_service.rc @@ -9,12 +9,14 @@ /* Define VERSIONINFO resource */ -#define AFS_VERINFO_FILE_DESCRIPTION "AFS Client Daemon" +#define AFS_VERINFO_FILE_DESCRIPTION "OpenAFS Client Service" #define AFS_VERINFO_NAME "afsd_service" #define AFS_VERINFO_FILENAME "afsd_service.exe" #include "AFS_component_version_number.h" #include "..\..\config\NTVersioninfo.rc" +#include "afsd_eventmessages.rc" + 1 ICON OpenAFS.ico diff --git a/src/WINNT/afsd/cm_config.c b/src/WINNT/afsd/cm_config.c index 28512af70..ab8e5d7d3 100644 --- a/src/WINNT/afsd/cm_config.c +++ b/src/WINNT/afsd/cm_config.c @@ -49,80 +49,6 @@ extern int errno; #define AFS_CELLSERVDB AFS_CELLSERVDB_UNIX #endif /* DJGPP || WIN95 */ -static DWORD TraceOption = 0; - -/* This really needs to be initialized at DLL Init */ -#define TRACE_OPTION_EVENT 4 - -#define ISCONFIGTRACE(v) ( ((v) & TRACE_OPTION_EVENT)==TRACE_OPTION_EVENT) - -void DebugEvent0_local(char *a) -{ - HANDLE h; char *ptbuf[1]; - if (!ISCONFIGTRACE(TraceOption)) - return; - h = RegisterEventSource(NULL, a); - ptbuf[0] = a; - ReportEvent(h, EVENTLOG_INFORMATION_TYPE, 0, 0, NULL, 1, 0, (const char **)ptbuf, NULL); - DeregisterEventSource(h); -} - -#define MAXBUF_ 512 - -void DebugEvent_local(char *a,char *b,...) -{ - HANDLE h; char *ptbuf[1],buf[MAXBUF_+1]; - va_list marker; - if (!ISCONFIGTRACE(TraceOption)) - return; - h = RegisterEventSource(NULL, a); - va_start(marker,b); - _vsnprintf(buf,MAXBUF_,b,marker); - ptbuf[0] = buf; - ReportEvent(h, EVENTLOG_INFORMATION_TYPE, 0, 0, NULL, 1, 0, (const char **)ptbuf, NULL);\ - DeregisterEventSource(h); - va_end(marker); -} - -#define REG_CLIENT_PARMS_KEY TEXT("SYSTEM\\CurrentControlSet\\Services\\TransarcAFSDaemon\\Parameters") -#define REG_CLIENT_TRACE_OPTION_PARM TEXT("TraceOption") - -#ifdef COMMENT -BOOL WINAPI DllMain (HANDLE hModule, DWORD fdwReason, LPVOID lpReserved) -{ - switch (fdwReason) - { - case DLL_PROCESS_ATTACH: { - DWORD LSPtype, LSPsize; - HKEY NPKey; - - (void) RegOpenKeyEx(HKEY_LOCAL_MACHINE, AFSREG_CLT_SVC_PARAM_SUBKEY, - 0, KEY_QUERY_VALUE, &NPKey); - LSPsize=sizeof(TraceOption); - RegQueryValueEx(NPKey, REG_CLIENT_TRACE_OPTION_PARM, NULL, - &LSPtype, (LPBYTE)&TraceOption, &LSPsize); - - RegCloseKey (NPKey); - break; - } - - case DLL_THREAD_ATTACH: - break; - - case DLL_THREAD_DETACH: - break; - - case DLL_PROCESS_DETACH: - break; - - default: - return FALSE; - } - - return TRUE; // successful DLL_PROCESS_ATTACH -} -#endif /* COMMENT */ - static long cm_ParsePair(char *lineBufferp, char *leftp, char *rightp) { char *tp; @@ -179,7 +105,7 @@ static long cm_ParsePair(char *lineBufferp, char *leftp, char *rightp) static int IsWindowsModule(const char * name) { - char * p; + const char * p; int i; /* Do not perform searches for probable Windows modules */ @@ -264,10 +190,10 @@ long cm_SearchCellFile(char *cellNamep, char *newCellNamep, bestp = fopen(wdir, "r"); -#ifdef DEBUG - DebugEvent_local("AFS- cm_searchfile fopen", "Handle[%x], wdir[%s]", bestp, wdir); +#ifdef CELLSERV_DEBUG + osi_Log2(afsd_logp,"cm_searchfile fopen handle[%p], wdir[%s]", bestp, + osi_LogSaveString(afsd_logp,wdir)); #endif - /* have we seen the cell line for the guy we're looking for? */ inRightCell = 0; while (1) { @@ -322,9 +248,9 @@ long cm_SearchCellFile(char *cellNamep, char *newCellNamep, strcpy(newCellNamep, lineBuffer+1); inRightCell = 1; tracking = 0; -#ifdef DEBUG - DebugEvent_local("AFS- cm_searchfile is cell", "inRightCell[%x], linebuffer[%s]", - inRightCell, lineBuffer); +#ifdef CELLSERV_DEBUG + osi_Log2(afsd_logp, "cm_searchfile is cell inRightCell[%p], linebuffer[%s]", + inRightCell, osi_LogSaveString(afsd_logp,lineBuffer)); #endif } else if (strnicmp(lineBuffer+1, cellNamep, @@ -366,15 +292,11 @@ long cm_SearchCellFile(char *cellNamep, char *newCellNamep, /* add the server to the VLDB list */ WSASetLastError(0); thp = gethostbyname(valuep); -#ifdef DEBUG - { - int iErr = WSAGetLastError(); - DebugEvent_local("AFS- cm_searchfile inRightCell", - "thp[%x], valuep[%s], WSAGetLastError[%d]", - thp, valuep, iErr); - } +#ifdef CELLSERV_DEBUG + osi_Log3(afsd_logp,"cm_searchfile inRightCell thp[%p], valuep[%s], WSAGetLastError[%d]", + thp, osi_LogSaveString(afsd_logp,valuep), WSAGetLastError()); #endif - if (thp) { + if (thp) { memcpy(&vlSockAddr.sin_addr.s_addr, thp->h_addr, sizeof(long)); vlSockAddr.sin_family = AF_INET; @@ -428,11 +350,9 @@ long cm_SearchCellByDNS(char *cellNamep, char *newCellNamep, int *ttl, int numServers; int i; struct sockaddr_in vlSockAddr; - -#ifdef DEBUG - DebugEvent_local("AFS SearchCellDNS-","Doing search for [%s]", cellNamep); +#ifdef CELLSERV_DEBUG + osi_Log1(afsd_logp,"SearchCellDNS-Doing search for [%s]", osi_LogSaveString(afsd_logp,cellNamep)); #endif - if ( IsWindowsModule(cellNamep) ) return -1; rc = getAFSServer(cellNamep, cellHostAddrs, cellHostNames, &numServers, ttl); diff --git a/src/WINNT/afsd/cm_conn.c b/src/WINNT/afsd/cm_conn.c index bf8a7f1ab..614976855 100644 --- a/src/WINNT/afsd/cm_conn.c +++ b/src/WINNT/afsd/cm_conn.c @@ -17,12 +17,7 @@ #include #include #include -#ifndef DJGPP -#include -#else #include -#endif - #include "afsd.h" osi_rwlock_t cm_connLock; @@ -153,7 +148,8 @@ cm_Analyze(cm_conn_t *connp, cm_user_t *userp, cm_req_t *reqp, int dead_session; long timeUsed, timeLeft; long code; - + char addr[16]; + osi_Log2(afsd_logp, "cm_Analyze connp 0x%p, code 0x%x", connp, errorCode); @@ -336,31 +332,46 @@ cm_Analyze(cm_conn_t *connp, cm_user_t *userp, cm_req_t *reqp, else if (errorCode == VNOVOL || errorCode == VMOVED || errorCode == VOFFLINE || errorCode == VSALVAGE || errorCode == VNOSERVICE || errorCode == VIO) { -#ifndef DJGPP - HANDLE h; - char *ptbuf[1]; - char s[100]; -#endif char addr[16]; char *format; - +#ifndef DJGPP + DWORD msgID; +#endif switch ( errorCode ) { case VNOVOL: +#ifndef DJGPP + msgID = MSG_SERVER_REPORTS_VNOVOL; +#endif format = "Server %s reported volume %d as not attached."; break; case VMOVED: +#ifndef DJGPP + msgID = MSG_SERVER_REPORTS_VMOVED; +#endif format = "Server %s reported volume %d as moved."; break; case VOFFLINE: +#ifndef DJGPP + msgID = MSG_SERVER_REPORTS_VOFFLINE; +#endif format = "Server %s reported volume %d as offline."; break; case VSALVAGE: +#ifndef DJGPP + msgID = MSG_SERVER_REPORTS_VSALVAGE; +#endif format = "Server %s reported volume %d as needs salvage."; break; case VNOSERVICE: +#ifndef DJGPP + msgID = MSG_SERVER_REPORTS_VNOSERVICE; +#endif format = "Server %s reported volume %d as not in service."; break; case VIO: +#ifndef DJGPP + msgID = MSG_SERVER_REPORTS_VIO; +#endif format = "Server %s reported volume %d as temporarily unaccessible."; break; } @@ -371,16 +382,10 @@ cm_Analyze(cm_conn_t *connp, cm_user_t *userp, cm_req_t *reqp, ((serverp->addr.sin_addr.s_addr & 0xff00)>> 8), ((serverp->addr.sin_addr.s_addr & 0xff0000)>> 16), ((serverp->addr.sin_addr.s_addr & 0xff000000)>> 24)); - osi_Log2(afsd_logp, format, osi_LogSaveString(afsd_logp,addr), fidp->volume); - + + osi_Log2(afsd_logp, format, osi_LogSaveString(afsd_logp,addr), fidp->volume); #ifndef DJGPP - /* Create Event Log message */ - h = RegisterEventSource(NULL, AFS_DAEMON_EVENT_NAME); - sprintf(s, format, addr, fidp->volume); - ptbuf[0] = s; - ReportEvent(h, EVENTLOG_WARNING_TYPE, 0, 1009, NULL, - 1, 0, ptbuf, NULL); - DeregisterEventSource(h); + LogEvent(EVENTLOG_WARNING_TYPE, msgID, addr, fidp->volume); #endif /* Mark server offline for this volume */ @@ -423,20 +428,21 @@ cm_Analyze(cm_conn_t *connp, cm_user_t *userp, cm_req_t *reqp, * this is to prevent the SMB session from timing out * In addition, we log an event to the event log */ + + /* Log server being offline for this volume */ + sprintf(addr, "%d.%d.%d.%d", + ((serverp->addr.sin_addr.s_addr & 0xff)), + ((serverp->addr.sin_addr.s_addr & 0xff00)>> 8), + ((serverp->addr.sin_addr.s_addr & 0xff0000)>> 16), + ((serverp->addr.sin_addr.s_addr & 0xff000000)>> 24)); + #ifndef DJGPP - HANDLE h; - char *ptbuf[1]; - char s[100]; - h = RegisterEventSource(NULL, AFS_DAEMON_EVENT_NAME); - sprintf(s, "cm_Analyze: HardDeadTime exceeded."); - ptbuf[0] = s; - ReportEvent(h, EVENTLOG_WARNING_TYPE, 0, 1009, NULL, - 1, 0, ptbuf, NULL); - DeregisterEventSource(h); + LogEvent(EVENTLOG_WARNING_TYPE, MSG_RX_HARD_DEAD_TIME_EXCEEDED, addr); #endif /* !DJGPP */ retry = 0; - osi_Log0(afsd_logp, "cm_Analyze: hardDeadTime exceeded"); + osi_Log1(afsd_logp, "cm_Analyze: hardDeadTime exceeded addr[%s]", + osi_LogSaveString(afsd_logp,addr)); } else if (errorCode >= -64 && errorCode < 0) { /* mark server as down */ diff --git a/src/WINNT/afsd/cm_dnlc.c b/src/WINNT/afsd/cm_dnlc.c index 237177eb9..184ca71fe 100644 --- a/src/WINNT/afsd/cm_dnlc.c +++ b/src/WINNT/afsd/cm_dnlc.c @@ -38,21 +38,6 @@ static int cm_debugDnlc = 0; /* debug dnlc */ * 1. If nameHash[i] is NULL, list is empty * 2. A single element in a hash bucket has itself as prev and next. */ -#ifndef DJGPP -#define dnlcNotify(x,debug){ \ - HANDLE hh; \ - char *ptbuf[1]; \ - ptbuf[0] = x; \ - if ( debug ) { \ - hh = RegisterEventSource(NULL, AFS_DAEMON_EVENT_NAME); \ - ReportEvent(hh,EVENTLOG_ERROR_TYPE,0,__LINE__, \ - NULL, 1, 0, ptbuf, NULL); \ - DeregisterEventSource(hh); \ - } \ - } -#else -#define dnlcNotify(x,debug) -#endif /* !DJGPP */ /* Must be called with cm_dnlcLock write locked */ static cm_nc_t * @@ -80,7 +65,6 @@ GetMeAnEntry() tnc = cm_data.nameHash[nameptr]; if (!tnc) { - dnlcNotify("null tnc in GetMeAnEntry",1); osi_Log0(afsd_logp,"null tnc in GetMeAnEntry"); return 0; } @@ -158,7 +142,6 @@ cm_dnlcEnter ( cm_scache_t *adp, dnlcstats.cycles++; lock_ReleaseWrite(&cm_dnlcLock); - dnlcNotify("DNLC cycle",1); if ( cm_debugDnlc ) osi_Log0(afsd_logp, "DNLC cycle"); cm_dnlcPurge(); @@ -275,7 +258,6 @@ cm_dnlcLookup (cm_scache_t *adp, cm_lookupSearch_t* sp) dnlcstats.cycles++; lock_ReleaseRead(&cm_dnlcLock); - dnlcNotify("DNLC cycle",1); if ( cm_debugDnlc ) osi_Log0(afsd_logp, "DNLC cycle"); cm_dnlcPurge(); @@ -315,7 +297,6 @@ RemoveEntry (cm_nc_t *tnc, unsigned int key) { if (!tnc->prev) /* things on freelist always have null prev ptrs */ { - dnlcNotify("Bogus dnlc freelist", 1); osi_Log0(afsd_logp,"Bogus dnlc freelist"); return 1; /* error */ } @@ -384,7 +365,6 @@ cm_dnlcRemove (cm_scache_t *adp, char *aname) dnlcstats.cycles++; lock_ReleaseWrite(&cm_dnlcLock); - dnlcNotify("DNLC cycle",1); if ( cm_debugDnlc ) osi_Log0(afsd_logp, "DNLC cycle"); cm_dnlcPurge(); diff --git a/src/WINNT/afsd/smb.c b/src/WINNT/afsd/smb.c index db1a21180..2a80dab31 100644 --- a/src/WINNT/afsd/smb.c +++ b/src/WINNT/afsd/smb.c @@ -984,9 +984,9 @@ smb_user_t *smb_FindUID(smb_vc_t *vcp, unsigned short uid, int flags) for(uidp = vcp->usersp; uidp; uidp = uidp->nextp) { if (uid == uidp->userID) { uidp->refCount++; - osi_LogEvent("AFS smb_FindUID (Find by UID)",NULL," VCP[0x%p] found-uid[%d] name[%s]", - vcp, uidp->userID, - osi_LogSaveString(smb_logp, (uidp->unp) ? uidp->unp->name : "")); + osi_Log3(smb_logp, "smb_FindUID vcp[0x%p] found-uid[%d] name[%s]", + vcp, uidp->userID, + osi_LogSaveString(smb_logp, (uidp->unp) ? uidp->unp->name : "")); break; } } @@ -1000,7 +1000,9 @@ smb_user_t *smb_FindUID(smb_vc_t *vcp, unsigned short uid, int flags) vcp->usersp = uidp; lock_InitializeMutex(&uidp->mx, "user_t mutex"); uidp->userID = uid; - osi_LogEvent("AFS smb_FindUID (Find by UID)",NULL,"VCP[0x%p] new-uid[%d] name[%s]",vcp,uidp->userID,(uidp->unp ? uidp->unp->name : "")); + osi_Log3(smb_logp, "smb_FindUID vcp[0x%p] new-uid[%d] name[%s]", + vcp, uidp->userID, + osi_LogSaveString(smb_logp,uidp->unp ? uidp->unp->name : "")); } lock_ReleaseWrite(&smb_rctLock); return uidp; @@ -1042,7 +1044,8 @@ smb_user_t *smb_FindUserByNameThisSession(smb_vc_t *vcp, char *usern) continue; if (stricmp(uidp->unp->name, usern) == 0) { uidp->refCount++; - osi_LogEvent("AFS smb_FindUserByNameThisSession",NULL,"VCP[0x%x] uid[%d] match-name[%s]",vcp,uidp->userID,usern); + osi_Log3(smb_logp,"smb_FindUserByNameThisSession vcp[0x%p] uid[%d] match-name[%s]", + vcp,uidp->userID,osi_LogSaveString(smb_logp,usern)); break; } else continue; @@ -2016,22 +2019,16 @@ unsigned int smb_GetSMBParm(smb_packet_t *smbp, int parm) parmCount = *smbp->wctp; if (parm >= parmCount) { - char s[100]; -#ifndef DJGPP - HANDLE h; - char *ptbuf[1]; - h = RegisterEventSource(NULL, AFS_DAEMON_EVENT_NAME); -#endif - sprintf(s, "Bad SMB param %d out of %d, ncb len %d", - parm, parmCount, smbp->ncb_length); -#ifndef DJGPP - ptbuf[0] = s; - ReportEvent(h, EVENTLOG_ERROR_TYPE, 0, 1006, NULL, - 1, smbp->ncb_length, ptbuf, smbp); - DeregisterEventSource(h); -#endif - osi_Log3(smb_logp,"Bad SMB param %d out of %d, ncb len %d", + char s[100]; + + sprintf(s, "Bad SMB param %d out of %d, ncb len %d", + parm, parmCount, smbp->ncb_length); + osi_Log3(smb_logp,"Bad SMB param %d out of %d, ncb len %d", parm, parmCount, smbp->ncb_length); +#ifndef DJGPP + LogEvent(EVENTLOG_ERROR_TYPE, MSG_BAD_SMB_PARAM, + __FILE__, __LINE__, parm, parmCount, smbp->ncb_length); +#endif /* !DJGPP */ osi_panic(s, __FILE__, __LINE__); } parmDatap = smbp->wctp + (2*parm) + 1; @@ -2049,19 +2046,13 @@ unsigned int smb_GetSMBOffsetParm(smb_packet_t *smbp, int parm, int offset) if (parm * 2 + offset >= parmCount * 2) { char s[100]; -#ifndef DJGPP - HANDLE h; - char *ptbuf[1]; - h = RegisterEventSource(NULL, AFS_DAEMON_EVENT_NAME); -#endif + sprintf(s, "Bad SMB param %d offset %d out of %d, ncb len %d", parm, offset, parmCount, smbp->ncb_length); #ifndef DJGPP - ptbuf[0] = s; - ReportEvent(h, EVENTLOG_ERROR_TYPE, 0, 1006, NULL, - 1, smbp->ncb_length, ptbuf, smbp); - DeregisterEventSource(h); -#endif + LogEvent(EVENTLOG_ERROR_TYPE, MSG_BAD_SMB_PARAM_WITH_OFFSET, + __FILE__, __LINE__, parm, offset, parmCount, smbp->ncb_length); +#endif /* !DJGPP */ osi_Log4(smb_logp, "Bad SMB param %d offset %d out of %d, ncb len %d", parm, offset, parmCount, smbp->ncb_length); osi_panic(s, __FILE__, __LINE__); @@ -6727,18 +6718,10 @@ void smb_DispatchPacket(smb_vc_t *vcp, smb_packet_t *inp, smb_packet_t *outp, if (ncbp->ncb_length < offsetof(struct smb, vdata)) { /* log it and discard it */ #ifndef DJGPP - HANDLE h; - char *ptbuf[1]; - char s[100]; - h = RegisterEventSource(NULL, AFS_DAEMON_EVENT_NAME); - sprintf(s, "SMB message too short, len %d", ncbp->ncb_length); - ptbuf[0] = s; - ReportEvent(h, EVENTLOG_WARNING_TYPE, 0, 1007, NULL, - 1, ncbp->ncb_length, ptbuf, inp); - DeregisterEventSource(h); -#else /* DJGPP */ - osi_Log1(smb_logp, "SMB message too short, len %d", ncbp->ncb_length); + LogEvent(EVENTLOG_WARNING_TYPE, MSG_BAD_SMB_TOO_SHORT, + __FILE__, __LINE__, ncbp->ncb_length); #endif /* !DJGPP */ + osi_Log1(smb_logp, "SMB message too short, len %d", ncbp->ncb_length); return; } @@ -6799,10 +6782,8 @@ void smb_DispatchPacket(smb_vc_t *vcp, smb_packet_t *inp, smb_packet_t *outp, code = smb_ReceiveCoreWriteRaw (vcp, inp, outp, rwcp); else { - osi_LogEvent("AFS Dispatch %s",(myCrt_Dispatch(inp->inCom)),"vcp 0x%p lana %d lsn %d",vcp,vcp->lana,vcp->lsn); osi_Log4(smb_logp,"Dispatch %s vcp 0x%p lana %d lsn %d",myCrt_Dispatch(inp->inCom),vcp,vcp->lana,vcp->lsn); code = (*(dp->procp)) (vcp, inp, outp); - osi_LogEvent("AFS Dispatch return",NULL,"Code 0x%x",code); osi_Log4(smb_logp,"Dispatch return code 0x%x vcp 0x%p lana %d lsn %d",code,vcp,vcp->lana,vcp->lsn); #ifdef LOG_PACKET if ( code == CM_ERROR_BADSMB || @@ -6812,21 +6793,13 @@ void smb_DispatchPacket(smb_vc_t *vcp, smb_packet_t *inp, smb_packet_t *outp, } if (oldGen != sessionGen) { -#ifndef DJGPP - HANDLE h; - char *ptbuf[1]; - char s[100]; newTime = GetCurrentTime(); - h = RegisterEventSource(NULL, AFS_DAEMON_EVENT_NAME); - sprintf(s, "Pkt straddled session startup, took %d ms, ncb length %d", - newTime - oldTime, ncbp->ncb_length); - ptbuf[0] = s; - ReportEvent(h, EVENTLOG_WARNING_TYPE, 0, - 1005, NULL, 1, ncbp->ncb_length, ptbuf, smbp); - DeregisterEventSource(h); +#ifndef DJGPP + LogEvent(EVENTLOG_WARNING_TYPE, MSG_BAD_SMB_WRONG_SESSION, + newTime - oldTime, ncbp->ncb_length); #endif /* !DJGPP */ - osi_Log1(smb_logp, "Pkt straddled session startup, " - "ncb length %d", ncbp->ncb_length); + osi_Log2(smb_logp, "Pkt straddled session startup, " + "took %d ms, ncb length %d", newTime - oldTime, ncbp->ncb_length); } } else { @@ -6851,25 +6824,12 @@ void smb_DispatchPacket(smb_vc_t *vcp, smb_packet_t *inp, smb_packet_t *outp, /* catastrophic failure: log as much as possible */ if (code == CM_ERROR_BADSMB) { #ifndef DJGPP - HANDLE h; - char *ptbuf[1]; - char s[100]; - - osi_Log1(smb_logp, - "Invalid SMB, ncb_length %d", - ncbp->ncb_length); - - h = RegisterEventSource(NULL, AFS_DAEMON_EVENT_NAME); - sprintf(s, "Invalid SMB message, length %d", - ncbp->ncb_length); - ptbuf[0] = s; - ReportEvent(h, EVENTLOG_ERROR_TYPE, 0, 1002, NULL, - 1, ncbp->ncb_length, ptbuf, smbp); - DeregisterEventSource(h); + LogEvent(EVENTLOG_WARNING_TYPE, MSG_BAD_SMB_INVALID, + ncbp->ncb_length); +#endif /* !DJGPP */ #ifdef LOG_PACKET smb_LogPacket(inp); #endif /* LOG_PACKET */ -#endif /* !DJGPP */ osi_Log1(smb_logp, "Invalid SMB message, length %d", ncbp->ncb_length); @@ -7439,19 +7399,8 @@ void smb_Server(VOID *parmp) /* Treat as transient error */ { #ifndef DJGPP - EVENT_HANDLE h; - char *ptbuf[1]; - char s[100]; - - h = RegisterEventSource(NULL, AFS_DAEMON_EVENT_NAME); - sprintf(s, "SMB message incomplete, length %d", - ncbp->ncb_length); - ptbuf[0] = s; - ReportEvent(h, EVENTLOG_WARNING_TYPE, 0, - 1001, NULL, 1, - ncbp->ncb_length, ptbuf, - bufp); - DeregisterEventSource(h); + LogEvent(EVENTLOG_WARNING_TYPE, MSG_BAD_SMB_INCOMPLETE, + ncbp->ncb_length); #endif /* !DJGPP */ osi_Log1(smb_logp, "dispatch smb recv failed, message incomplete, ncb_length %d", @@ -7504,29 +7453,12 @@ void smb_Server(VOID *parmp) * Log, sleep and resume. */ if (!vcp) { - HANDLE h; - char buf[1000]; - char *ptbuf[1]; - - sprintf(buf, - "Bad vcp!! : " - "LSNs[idx_session]=[%d]," - "lanas[idx_session]=[%d]," - "ncbp->ncb_lsn=[%d]," - "ncbp->ncb_lana_num=[%d]", + LogEvent(EVENTLOG_WARNING_TYPE, MSG_BAD_VCP, LSNs[idx_session], lanas[idx_session], ncbp->ncb_lsn, ncbp->ncb_lana_num); - ptbuf[0] = buf; - - h = RegisterEventSource(NULL,AFS_DAEMON_EVENT_NAME); - if (h) { - ReportEvent(h, EVENTLOG_ERROR_TYPE, 0, 1001, NULL,1,sizeof(*ncbp),ptbuf,(void*)ncbp); - DeregisterEventSource(h); - } - /* Also log in the trace log. */ osi_Log4(smb_logp, "Server: BAD VCP!" "LSNs[idx_session]=[%d]," @@ -7631,17 +7563,7 @@ DWORD smb_ServerExceptionFilter(void) { * we have a trace (assuming tracing was enabled). Otherwise, this should * throw a second exception. */ - HANDLE h; - char *ptbuf[1]; - - ptbuf[0] = "Unhandled exception forcing trace"; - - h = RegisterEventSource(NULL,AFS_DAEMON_EVENT_NAME); - if(h) { - ReportEvent(h, EVENTLOG_ERROR_TYPE, 0, 1001, NULL,1,0,ptbuf,NULL); - DeregisterEventSource(h); - } - + LogEvent(EVENTLOG_ERROR_TYPE, MSG_UNHANDLED_EXCEPTION); afsd_ForceTrace(TRUE); buf_ForceTrace(TRUE); return EXCEPTION_CONTINUE_SEARCH; @@ -7810,16 +7732,7 @@ void smb_Listener(void *parmp) if (reportSessionStartups) { #ifndef DJGPP - HANDLE h; - char *ptbuf[1]; - char s[100]; - - h = RegisterEventSource(NULL, AFS_DAEMON_EVENT_NAME); - sprintf(s, "SMB session startup, %d ongoing ops", ongoingOps); - ptbuf[0] = s; - ReportEvent(h, EVENTLOG_WARNING_TYPE, 0, 1004, NULL, - 1, 0, ptbuf, NULL); - DeregisterEventSource(h); + LogEvent(EVENTLOG_INFORMATION_TYPE, MSG_SMB_SESSION_START, ongoingOps); #else /* DJGPP */ time(&now); fprintf(stderr, "%s: New session %d starting from host %s\n", diff --git a/src/WINNT/afsd/smb3.c b/src/WINNT/afsd/smb3.c index 10d58a82a..6b79a09dc 100644 --- a/src/WINNT/afsd/smb3.c +++ b/src/WINNT/afsd/smb3.c @@ -843,7 +843,6 @@ long smb_ReceiveV3SessionSetupX(smb_vc_t *vcp, smb_packet_t *inp, smb_packet_t * unp = uidp->unp; userp = unp->userp; newUid = (unsigned short)uidp->userID; /* For some reason these are different types!*/ - osi_LogEvent("AFS smb_ReceiveV3SessionSetupX",NULL,"FindUserByName:Lana[%d],lsn[%d],userid[%d],name[%s]",vcp->lana,vcp->lsn,newUid,osi_LogSaveString(smb_logp, usern)); osi_Log3(smb_logp,"smb_ReceiveV3SessionSetupX FindUserByName:Lana[%d],lsn[%d],userid[%d]",vcp->lana,vcp->lsn,newUid); smb_ReleaseUID(uidp); } @@ -869,7 +868,6 @@ long smb_ReceiveV3SessionSetupX(smb_vc_t *vcp, smb_packet_t *inp, smb_packet_t * uidp = smb_FindUID(vcp, newUid, SMB_FLAG_CREATE); lock_ObtainMutex(&uidp->mx); uidp->unp = unp; - osi_LogEvent("AFS smb_ReceiveV3SessionSetupX",NULL,"MakeNewUser:VCP[%p],Lana[%d],lsn[%d],userid[%d],TicketKTCName[%s]",vcp,vcp->lana,vcp->lsn,newUid,osi_LogSaveString(smb_logp, usern)); osi_Log4(smb_logp,"smb_ReceiveV3SessionSetupX MakeNewUser:VCP[%p],Lana[%d],lsn[%d],userid[%d]",vcp,vcp->lana,vcp->lsn,newUid); lock_ReleaseMutex(&uidp->mx); smb_ReleaseUID(uidp); @@ -1292,19 +1290,9 @@ long smb_ReceiveV3Trans(smb_vc_t *vcp, smb_packet_t *inp, smb_packet_t *outp) /* We sometimes see 0 word count. What to do? */ if (*inp->wctp == 0) { + osi_Log0(smb_logp, "Transaction2 word count = 0"); #ifndef DJGPP - HANDLE h; - char *ptbuf[1]; - - osi_Log0(smb_logp, "TRANSACTION word count = 0"); - - h = RegisterEventSource(NULL, AFS_DAEMON_EVENT_NAME); - ptbuf[0] = "Transaction2 word count = 0"; - ReportEvent(h, EVENTLOG_WARNING_TYPE, 0, 1003, NULL, - 1, inp->ncb_length, ptbuf, inp); - DeregisterEventSource(h); -#else /* DJGPP */ - osi_Log0(smb_logp, "TRANSACTION word count = 0"); + LogEvent(EVENTLOG_WARNING_TYPE, MSG_SMB_ZERO_TRANSACTION_COUNT); #endif /* !DJGPP */ smb_SetSMBDataLength(outp, 0); @@ -1377,14 +1365,11 @@ long smb_ReceiveV3Trans(smb_vc_t *vcp, smb_packet_t *inp, smb_packet_t *outp) rapOp = asp->parmsp[0]; if ( rapOp >= 0 && rapOp < SMB_RAP_NOPCODES && smb_rapDispatchTable[rapOp].procp) { - osi_LogEvent("AFS-Dispatch-RAP[%s]",myCrt_RapDispatch(rapOp),"vcp[%p] lana[%d] lsn[%d]",vcp,vcp->lana,vcp->lsn); osi_Log4(smb_logp,"AFS Server - Dispatch-RAP %s vcp[%p] lana[%d] lsn[%d]",myCrt_RapDispatch(rapOp),vcp,vcp->lana,vcp->lsn); code = (*smb_rapDispatchTable[rapOp].procp)(vcp, asp, outp); - osi_LogEvent("AFS-Dispatch-RAP return",myCrt_RapDispatch(rapOp),"Code 0x%x",code); osi_Log4(smb_logp,"AFS Server - Dispatch-RAP return code 0x%x vcp[%x] lana[%d] lsn[%d]",code,vcp,vcp->lana,vcp->lsn); } else { - osi_LogEvent("AFS-Dispatch-RAP [invalid]", NULL, "op[%x] vcp[%p] lana[%d] lsn[%d]", rapOp, vcp, vcp->lana, vcp->lsn); osi_Log4(smb_logp,"AFS Server - Dispatch-RAP [INVALID] op[%x] vcp[%p] lana[%d] lsn[%d]", rapOp, vcp, vcp->lana, vcp->lsn); code = CM_ERROR_BADOP; } @@ -1934,19 +1919,9 @@ long smb_ReceiveV3Tran2A(smb_vc_t *vcp, smb_packet_t *inp, smb_packet_t *outp) /* We sometimes see 0 word count. What to do? */ if (*inp->wctp == 0) { + osi_Log0(smb_logp, "Transaction2 word count = 0"); #ifndef DJGPP - HANDLE h; - char *ptbuf[1]; - - osi_Log0(smb_logp, "TRANSACTION2 word count = 0"); - - h = RegisterEventSource(NULL, AFS_DAEMON_EVENT_NAME); - ptbuf[0] = "Transaction2 word count = 0"; - ReportEvent(h, EVENTLOG_WARNING_TYPE, 0, 1003, NULL, - 1, inp->ncb_length, ptbuf, inp); - DeregisterEventSource(h); -#else /* DJGPP */ - osi_Log0(smb_logp, "TRANSACTION2 word count = 0"); + LogEvent(EVENTLOG_WARNING_TYPE, MSG_SMB_ZERO_TRANSACTION_COUNT); #endif /* !DJGPP */ smb_SetSMBDataLength(outp, 0); @@ -2017,12 +1992,10 @@ long smb_ReceiveV3Tran2A(smb_vc_t *vcp, smb_packet_t *inp, smb_packet_t *outp) /* now dispatch it */ if ( asp->opcode >= 0 && asp->opcode < 20 && smb_tran2DispatchTable[asp->opcode].procp) { - osi_LogEvent("AFS-Dispatch-2[%s]",myCrt_2Dispatch(asp->opcode),"vcp[%p] lana[%d] lsn[%d]",vcp,vcp->lana,vcp->lsn); osi_Log4(smb_logp,"AFS Server - Dispatch-2 %s vcp[%p] lana[%d] lsn[%d]",myCrt_2Dispatch(asp->opcode),vcp,vcp->lana,vcp->lsn); code = (*smb_tran2DispatchTable[asp->opcode].procp)(vcp, asp, outp); } else { - osi_LogEvent("AFS-Dispatch-2 [invalid]", NULL, "op[%x] vcp[%p] lana[%d] lsn[%d]", asp->opcode, vcp, vcp->lana, vcp->lsn); osi_Log4(smb_logp,"AFS Server - Dispatch-2 [INVALID] op[%x] vcp[%p] lana[%d] lsn[%d]", asp->opcode, vcp, vcp->lana, vcp->lsn); code = CM_ERROR_BADOP; } @@ -7170,11 +7143,9 @@ cm_user_t *smb_FindCMUserByName(/*smb_vc_t *vcp,*/ char *usern, char *machine) unp->userp = cm_NewUser(); lock_ReleaseMutex(&unp->mx); osi_Log2(smb_logp,"smb_FindCMUserByName New user name[%s] machine[%s]",osi_LogSaveString(smb_logp,usern),osi_LogSaveString(smb_logp,machine)); - osi_LogEvent("AFS smb_FindCMUserByName : New User",NULL,"name[%s] machine[%s]",usern,machine); } else { osi_Log2(smb_logp,"smb_FindCMUserByName Not found name[%s] machine[%s]",osi_LogSaveString(smb_logp,usern),osi_LogSaveString(smb_logp,machine)); - osi_LogEvent("AFS smb_FindCMUserByName : Found",NULL,"name[%s] machine[%s]",usern,machine); - } + } return unp->userp; } diff --git a/src/WINNT/afsreg/afsreg.h b/src/WINNT/afsreg/afsreg.h index 8126a6df3..ef516174f 100644 --- a/src/WINNT/afsreg/afsreg.h +++ b/src/WINNT/afsreg/afsreg.h @@ -16,6 +16,9 @@ #define AFSREG_NULL_KEY ((HKEY)0) +/* Do not change AFSREG_{CLT,SVR}_SW_NAME unless the installation + * name in the installers is also changed to match + */ #define AFSREG_SVR_SVC_NAME "TransarcAFSServer" #define AFSREG_SVR_SW_NAME "AFS Server" @@ -71,9 +74,10 @@ #define AFSREG_APPLOG_KEY "HKEY_LOCAL_MACHINE\\" AFSREG_APPLOG_SUBKEY /* AFS event source subkey and subkey values -- client and server services */ -#define AFSREG_SVR_APPLOG_SUBKEY "AFS Service" -#define AFSREG_SVR_APPLOG_MSGFILE_VALUE "EventMessageFile" -#define AFSREG_SVR_APPLOG_MSGTYPE_VALUE "TypesSupported" +#define AFSREG_SVR_APPLOG_SUBKEY AFSREG_SVR_SW_NAME +#define AFSREG_CLT_APPLOG_SUBKEY AFSREG_CLT_SW_NAME +#define AFSREG_APPLOG_MSGFILE_VALUE "EventMessageFile" +#define AFSREG_APPLOG_MSGTYPE_VALUE "TypesSupported" @@ -139,7 +143,7 @@ * DeviceName:REG_SZ: */ -#define AFSREG_SVR_SVC_DISPLAYNAME_DATA "IBM AFS Server" +#define AFSREG_SVR_SVC_DISPLAYNAME_DATA "OpenAFS Server" #define AFSREG_SVR_SVC_IMAGENAME_DATA "bosctlsvc.exe" #define AFSREG_SVR_SVC_SUBKEY "System\\CurrentControlSet\\Services\\" AFSREG_SVR_SVC_NAME @@ -160,7 +164,7 @@ * Cell:REG_SZ: */ -#define AFSREG_CLT_SVC_DISPLAYNAME_DATA "IBM AFS Client" +#define AFSREG_CLT_SVC_DISPLAYNAME_DATA "OpenAFS Client" #define AFSREG_CLT_SVC_IMAGENAME_DATA "afsd_service.exe" #define AFSREG_CLT_SVC_SUBKEY "System\\CurrentControlSet\\Services\\" AFSREG_CLT_SVC_NAME -- 2.39.5