mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-11-04 13:21:54 +00:00 
			
		
		
		
	ASTERISK_REGISTER_FILE no longer has any purpose so this commit removes all traces of it. Previously exported symbols removed: * __ast_register_file * __ast_unregister_file * ast_complete_source_filename This also removes the mtx_prof static variable that was declared when MTX_PROFILE was enabled. This variable was only used in lock.c so it is now initialized in that file only. ASTERISK-26480 #close Change-Id: I1074af07d71f9e159c48ef36631aa432c86f9966
		
			
				
	
	
		
			177 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			177 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/*
 | 
						|
 * Asterisk -- An open source telephony toolkit.
 | 
						|
 *
 | 
						|
 * Copyright (C) 2009, malleable, LLC.
 | 
						|
 *
 | 
						|
 * Sean Bright <sean@malleable.com>
 | 
						|
 *
 | 
						|
 * See http://www.asterisk.org for more information about
 | 
						|
 * the Asterisk project. Please do not directly contact
 | 
						|
 * any of the maintainers of this project for assistance;
 | 
						|
 * the project provides a web site, mailing lists and IRC
 | 
						|
 * channels for your use.
 | 
						|
 *
 | 
						|
 * This program is free software, distributed under the terms of
 | 
						|
 * the GNU General Public License Version 2. See the LICENSE file
 | 
						|
 * at the top of the source tree.
 | 
						|
 */
 | 
						|
 | 
						|
/*! \file
 | 
						|
 *
 | 
						|
 * \brief Asterisk Syslog Utility Functions
 | 
						|
 * \author Sean Bright <sean@malleable.com>
 | 
						|
 */
 | 
						|
 | 
						|
/*** MODULEINFO
 | 
						|
	<support_level>core</support_level>
 | 
						|
 ***/
 | 
						|
 | 
						|
#include "asterisk.h"
 | 
						|
#include "asterisk/utils.h"
 | 
						|
#include "asterisk/syslog.h"
 | 
						|
 | 
						|
#include <syslog.h>
 | 
						|
 | 
						|
static const struct {
 | 
						|
	const char *name;
 | 
						|
	int value;
 | 
						|
} facility_map[] = {
 | 
						|
	/* POSIX only specifies USER and LOCAL0 - LOCAL7 */
 | 
						|
	{ "user",     LOG_USER     },
 | 
						|
	{ "local0",   LOG_LOCAL0   },
 | 
						|
	{ "local1",   LOG_LOCAL1   },
 | 
						|
	{ "local2",   LOG_LOCAL2   },
 | 
						|
	{ "local3",   LOG_LOCAL3   },
 | 
						|
	{ "local4",   LOG_LOCAL4   },
 | 
						|
	{ "local5",   LOG_LOCAL5   },
 | 
						|
	{ "local6",   LOG_LOCAL6   },
 | 
						|
	{ "local7",   LOG_LOCAL7   },
 | 
						|
#if defined(HAVE_SYSLOG_FACILITY_LOG_KERN)
 | 
						|
	{ "kern",     LOG_KERN     },
 | 
						|
#endif
 | 
						|
#if defined(HAVE_SYSLOG_FACILITY_LOG_MAIL)
 | 
						|
	{ "mail",     LOG_MAIL     },
 | 
						|
#endif
 | 
						|
#if defined(HAVE_SYSLOG_FACILITY_LOG_DAEMON)
 | 
						|
	{ "daemon",   LOG_DAEMON   },
 | 
						|
#endif
 | 
						|
#if defined(HAVE_SYSLOG_FACILITY_LOG_AUTH)
 | 
						|
	{ "auth",     LOG_AUTH     },
 | 
						|
	{ "security", LOG_AUTH     },
 | 
						|
#endif
 | 
						|
#if defined(HAVE_SYSLOG_FACILITY_LOG_AUTHPRIV)
 | 
						|
	{ "authpriv", LOG_AUTHPRIV },
 | 
						|
#endif
 | 
						|
#if defined(HAVE_SYSLOG_FACILITY_LOG_SYSLOG)
 | 
						|
	{ "syslog",   LOG_SYSLOG   },
 | 
						|
#endif
 | 
						|
#if defined(HAVE_SYSLOG_FACILITY_LOG_FTP)
 | 
						|
	{ "ftp",      LOG_FTP      },
 | 
						|
#endif
 | 
						|
#if defined(HAVE_SYSLOG_FACILITY_LOG_LPR)
 | 
						|
	{ "lpr",      LOG_LPR      },
 | 
						|
#endif
 | 
						|
#if defined(HAVE_SYSLOG_FACILITY_LOG_NEWS)
 | 
						|
	{ "news",     LOG_NEWS     },
 | 
						|
#endif
 | 
						|
#if defined(HAVE_SYSLOG_FACILITY_LOG_UUCP)
 | 
						|
	{ "uucp",     LOG_UUCP     },
 | 
						|
#endif
 | 
						|
#if defined(HAVE_SYSLOG_FACILITY_LOG_CRON)
 | 
						|
	{ "cron",     LOG_CRON     },
 | 
						|
#endif
 | 
						|
};
 | 
						|
 | 
						|
int ast_syslog_facility(const char *facility)
 | 
						|
{
 | 
						|
	int index;
 | 
						|
 | 
						|
	for (index = 0; index < ARRAY_LEN(facility_map); index++) {
 | 
						|
		if (!strcasecmp(facility_map[index].name, facility)) {
 | 
						|
			return facility_map[index].value;
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	return -1;
 | 
						|
}
 | 
						|
 | 
						|
const char *ast_syslog_facility_name(int facility)
 | 
						|
{
 | 
						|
	int index;
 | 
						|
 | 
						|
	for (index = 0; index < ARRAY_LEN(facility_map); index++) {
 | 
						|
		if (facility_map[index].value == facility) {
 | 
						|
			return facility_map[index].name;
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	return NULL;
 | 
						|
}
 | 
						|
 | 
						|
static const struct {
 | 
						|
	const char *name;
 | 
						|
	int value;
 | 
						|
} priority_map[] = {
 | 
						|
	{ "alert",   LOG_ALERT   },
 | 
						|
	{ "crit",    LOG_CRIT    },
 | 
						|
	{ "debug",   LOG_DEBUG   },
 | 
						|
	{ "emerg",   LOG_EMERG   },
 | 
						|
	{ "err",     LOG_ERR     },
 | 
						|
	{ "error",   LOG_ERR     },
 | 
						|
	{ "info",    LOG_INFO    },
 | 
						|
	{ "notice",  LOG_NOTICE  },
 | 
						|
	{ "warning", LOG_WARNING },
 | 
						|
};
 | 
						|
 | 
						|
int ast_syslog_priority(const char *priority)
 | 
						|
{
 | 
						|
	int index;
 | 
						|
 | 
						|
	for (index = 0; index < ARRAY_LEN(priority_map); index++) {
 | 
						|
		if (!strcasecmp(priority_map[index].name, priority)) {
 | 
						|
			return priority_map[index].value;
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	return -1;
 | 
						|
}
 | 
						|
 | 
						|
const char *ast_syslog_priority_name(int priority)
 | 
						|
{
 | 
						|
	int index;
 | 
						|
 | 
						|
	for (index = 0; index < ARRAY_LEN(priority_map); index++) {
 | 
						|
		if (priority_map[index].value == priority) {
 | 
						|
			return priority_map[index].name;
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	return NULL;
 | 
						|
}
 | 
						|
 | 
						|
static const int logger_level_to_syslog_map[] = {
 | 
						|
	[__LOG_DEBUG]   = LOG_DEBUG,
 | 
						|
	[1]             = LOG_INFO, /* Only kept for backwards compatibility */
 | 
						|
	[__LOG_NOTICE]  = LOG_NOTICE,
 | 
						|
	[__LOG_WARNING] = LOG_WARNING,
 | 
						|
	[__LOG_ERROR]   = LOG_ERR,
 | 
						|
	[__LOG_VERBOSE] = LOG_DEBUG,
 | 
						|
	[__LOG_DTMF]    = LOG_DEBUG,
 | 
						|
};
 | 
						|
 | 
						|
int ast_syslog_priority_from_loglevel(int level)
 | 
						|
{
 | 
						|
	/* First 16 levels are reserved for system use.
 | 
						|
	 * Default to using LOG_NOTICE for dynamic logging.
 | 
						|
	 */
 | 
						|
	if (level >= 16 && level < ASTNUMLOGLEVELS) {
 | 
						|
		return LOG_NOTICE;
 | 
						|
	}
 | 
						|
 | 
						|
	if (level < 0 || level >= ARRAY_LEN(logger_level_to_syslog_map)) {
 | 
						|
		return -1;
 | 
						|
	}
 | 
						|
 | 
						|
	return logger_level_to_syslog_map[level];
 | 
						|
}
 |