From 357b275239d2e461cd2a3dbaf4d091932824abd4 Mon Sep 17 00:00:00 2001
From: "David M. Lee" <dlee@digium.com>
Date: Mon, 5 Aug 2013 14:35:00 +0000
Subject: [PATCH] Fix res_ari_asterisk load issue

The new res_ari_asterisk.so module presents several config options
from asterisk main. Unfortunately, they aren't exported, so the module
won't load on Linux.

This patch renames the variables, adding the ast_ prefix so they will
be exported.

Review: https://reviewboard.asterisk.org/r/2737


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@396166 65c4cc65-6c06-0410-ace0-fbb531ad65f3
---
 include/asterisk/options.h  |  8 +++----
 main/asterisk.c             | 44 ++++++++++++++++++-------------------
 main/channel.c              |  2 +-
 main/cli.c                  | 12 +++++-----
 main/manager.c              |  6 ++---
 main/pbx.c                  | 12 +++++-----
 res/ari/resource_asterisk.c | 14 ++++++------
 utils/extconf.c             |  6 ++---
 8 files changed, 52 insertions(+), 52 deletions(-)

diff --git a/include/asterisk/options.h b/include/asterisk/options.h
index 73fa42bcec..2761415b80 100644
--- a/include/asterisk/options.h
+++ b/include/asterisk/options.h
@@ -154,15 +154,15 @@ enum ast_compat_flags {
 extern struct ast_flags ast_compat;
 
 extern int option_verbose;
-extern int option_maxfiles;		/*!< Max number of open file handles (files, sockets) */
+extern int ast_option_maxfiles;		/*!< Max number of open file handles (files, sockets) */
 extern int option_debug;		/*!< Debugging */
-extern int option_maxcalls;		/*!< Maximum number of simultaneous channels */
+extern int ast_option_maxcalls;		/*!< Maximum number of simultaneous channels */
 extern unsigned int option_dtmfminduration;	/*!< Minimum duration of DTMF (channel.c) in ms */
-extern double option_maxload;
+extern double ast_option_maxload;
 #if defined(HAVE_SYSINFO)
 extern long option_minmemfree;		/*!< Minimum amount of free system memory - stop accepting calls if free memory falls below this watermark */
 #endif
-extern char defaultlanguage[];
+extern char ast_defaultlanguage[];
 
 extern struct timeval ast_startuptime;
 extern struct timeval ast_lastreloadtime;
diff --git a/main/asterisk.c b/main/asterisk.c
index 9bd0d858c5..beed010831 100644
--- a/main/asterisk.c
+++ b/main/asterisk.c
@@ -319,9 +319,9 @@ struct ast_flags ast_compat = { 0 };
 
 int option_verbose;				/*!< Verbosity level */
 int option_debug;				/*!< Debug level */
-double option_maxload;				/*!< Max load avg on system */
-int option_maxcalls;				/*!< Max number of active calls */
-int option_maxfiles;				/*!< Max number of open file handles (files, sockets) */
+double ast_option_maxload;			/*!< Max load avg on system */
+int ast_option_maxcalls;			/*!< Max number of active calls */
+int ast_option_maxfiles;			/*!< Max number of open file handles (files, sockets) */
 unsigned int option_dtmfminduration;		/*!< Minimum duration of DTMF. */
 #if defined(HAVE_SYSINFO)
 long option_minmemfree;				/*!< Minimum amount of free system memory - stop accepting calls if free memory falls below this watermark */
@@ -364,7 +364,7 @@ static char *remotehostname;
 
 struct console consoles[AST_MAX_CONNECTS];
 
-char defaultlanguage[MAX_LANGUAGE] = DEFAULT_LANGUAGE;
+char ast_defaultlanguage[MAX_LANGUAGE] = DEFAULT_LANGUAGE;
 
 static int ast_el_add_history(char *);
 static int ast_el_read_history(char *);
@@ -599,17 +599,17 @@ static char *handle_show_settings(struct ast_cli_entry *e, int cmd, struct ast_c
 	ast_cli(a->fd, "-----------------\n");
 	ast_cli(a->fd, "  Version:                     %s\n", ast_get_version());
 	ast_cli(a->fd, "  Build Options:               %s\n", S_OR(AST_BUILDOPTS, "(none)"));
-	if (option_maxcalls)
-		ast_cli(a->fd, "  Maximum calls:               %d (Current %d)\n", option_maxcalls, ast_active_channels());
+	if (ast_option_maxcalls)
+		ast_cli(a->fd, "  Maximum calls:               %d (Current %d)\n", ast_option_maxcalls, ast_active_channels());
 	else
 		ast_cli(a->fd, "  Maximum calls:               Not set\n");
-	if (option_maxfiles)
-		ast_cli(a->fd, "  Maximum open file handles:   %d\n", option_maxfiles);
+	if (ast_option_maxfiles)
+		ast_cli(a->fd, "  Maximum open file handles:   %d\n", ast_option_maxfiles);
 	else
 		ast_cli(a->fd, "  Maximum open file handles:   Not set\n");
 	ast_cli(a->fd, "  Verbosity:                   %d\n", option_verbose);
 	ast_cli(a->fd, "  Debug level:                 %d\n", option_debug);
-	ast_cli(a->fd, "  Maximum load average:        %lf\n", option_maxload);
+	ast_cli(a->fd, "  Maximum load average:        %lf\n", ast_option_maxload);
 #if defined(HAVE_SYSINFO)
 	ast_cli(a->fd, "  Minimum free memory:         %ld MB\n", option_minmemfree);
 #endif
@@ -624,7 +624,7 @@ static char *handle_show_settings(struct ast_cli_entry *e, int cmd, struct ast_c
 	ast_cli(a->fd, "  System:                      %s/%s built by %s on %s %s\n", ast_build_os, ast_build_kernel, ast_build_user, ast_build_machine, ast_build_date);
 	ast_cli(a->fd, "  System name:                 %s\n", ast_config_AST_SYSTEM_NAME);
 	ast_cli(a->fd, "  Entity ID:                   %s\n", eid_str);
-	ast_cli(a->fd, "  Default language:            %s\n", defaultlanguage);
+	ast_cli(a->fd, "  Default language:            %s\n", ast_defaultlanguage);
 	ast_cli(a->fd, "  Language prefix:             %s\n", ast_language_is_prefix ? "Enabled" : "Disabled");
 	ast_cli(a->fd, "  User name and group:         %s/%s\n", ast_config_AST_RUN_USER, ast_config_AST_RUN_GROUP);
 	ast_cli(a->fd, "  Executable includes:         %s\n", ast_test_flag(&ast_options, AST_OPT_FLAG_EXEC_INCLUDES) ? "Enabled" : "Disabled");
@@ -3402,22 +3402,22 @@ static void ast_readconfig(void)
 				option_dtmfminduration = AST_MIN_DTMF_DURATION;
 			}
 		} else if (!strcasecmp(v->name, "maxcalls")) {
-			if ((sscanf(v->value, "%30d", &option_maxcalls) != 1) || (option_maxcalls < 0)) {
-				option_maxcalls = 0;
+			if ((sscanf(v->value, "%30d", &ast_option_maxcalls) != 1) || (ast_option_maxcalls < 0)) {
+				ast_option_maxcalls = 0;
 			}
 		} else if (!strcasecmp(v->name, "maxload")) {
 			double test[1];
 
 			if (getloadavg(test, 1) == -1) {
 				ast_log(LOG_ERROR, "Cannot obtain load average on this system. 'maxload' option disabled.\n");
-				option_maxload = 0.0;
-			} else if ((sscanf(v->value, "%30lf", &option_maxload) != 1) || (option_maxload < 0.0)) {
-				option_maxload = 0.0;
+				ast_option_maxload = 0.0;
+			} else if ((sscanf(v->value, "%30lf", &ast_option_maxload) != 1) || (ast_option_maxload < 0.0)) {
+				ast_option_maxload = 0.0;
 			}
 		/* Set the maximum amount of open files */
 		} else if (!strcasecmp(v->name, "maxfiles")) {
-			option_maxfiles = atoi(v->value);
-			set_ulimit(option_maxfiles);
+			ast_option_maxfiles = atoi(v->value);
+			set_ulimit(ast_option_maxfiles);
 		/* What user to run as */
 		} else if (!strcasecmp(v->name, "runuser")) {
 			ast_copy_string(cfg_paths.run_user, v->value, sizeof(cfg_paths.run_user));
@@ -3440,7 +3440,7 @@ static void ast_readconfig(void)
 		} else if (!strcasecmp(v->name, "languageprefix")) {
 			ast_language_is_prefix = ast_true(v->value);
 		} else if (!strcasecmp(v->name, "defaultlanguage")) {
-			ast_copy_string(defaultlanguage, v->value, MAX_LANGUAGE);
+			ast_copy_string(ast_defaultlanguage, v->value, MAX_LANGUAGE);
 		} else if (!strcasecmp(v->name, "lockmode")) {
 			if (!strcasecmp(v->value, "lockfile")) {
 				ast_set_lock_type(AST_LOCK_TYPE_LOCKFILE);
@@ -3725,13 +3725,13 @@ int main(int argc, char *argv[])
 			ast_set_flag(&ast_options, AST_OPT_FLAG_INIT_KEYS);
 			break;
 		case 'L':
-			if ((sscanf(optarg, "%30lf", &option_maxload) != 1) || (option_maxload < 0.0)) {
-				option_maxload = 0.0;
+			if ((sscanf(optarg, "%30lf", &ast_option_maxload) != 1) || (ast_option_maxload < 0.0)) {
+				ast_option_maxload = 0.0;
 			}
 			break;
 		case 'M':
-			if ((sscanf(optarg, "%30d", &option_maxcalls) != 1) || (option_maxcalls < 0)) {
-				option_maxcalls = 0;
+			if ((sscanf(optarg, "%30d", &ast_option_maxcalls) != 1) || (ast_option_maxcalls < 0)) {
+				ast_option_maxcalls = 0;
 			}
 			break;
 		case 'm':
diff --git a/main/channel.c b/main/channel.c
index 95d0a5dccd..f1d98de126 100644
--- a/main/channel.c
+++ b/main/channel.c
@@ -992,7 +992,7 @@ __ast_channel_alloc_ap(int needqueue, int state, const char *cid_num, const char
 
 	AST_LIST_HEAD_INIT_NOLOCK(ast_channel_autochans(tmp));
 
-	ast_channel_language_set(tmp, defaultlanguage);
+	ast_channel_language_set(tmp, ast_defaultlanguage);
 
 	ast_channel_tech_set(tmp, &null_tech);
 
diff --git a/main/cli.c b/main/cli.c
index 6ca0737ab5..dd9f3bcd07 100644
--- a/main/cli.c
+++ b/main/cli.c
@@ -854,10 +854,10 @@ static char *handle_showcalls(struct ast_cli_entry *e, int cmd, struct ast_cli_a
 	} else
 		return CLI_SHOWUSAGE;
 
-	if (option_maxcalls) {
+	if (ast_option_maxcalls) {
 		ast_cli(a->fd, "%d of %d max active call%s (%5.2f%% of capacity)\n",
-		   ast_active_calls(), option_maxcalls, ESS(ast_active_calls()),
-		   ((double)ast_active_calls() / (double)option_maxcalls) * 100.0);
+		   ast_active_calls(), ast_option_maxcalls, ESS(ast_active_calls()),
+		   ((double)ast_active_calls() / (double)ast_option_maxcalls) * 100.0);
 	} else {
 		ast_cli(a->fd, "%d active call%s\n", ast_active_calls(), ESS(ast_active_calls()));
 	}
@@ -982,10 +982,10 @@ static char *handle_chanlist(struct ast_cli_entry *e, int cmd, struct ast_cli_ar
 	if (!concise) {
 		numchans = ast_active_channels();
 		ast_cli(a->fd, "%d active channel%s\n", numchans, ESS(numchans));
-		if (option_maxcalls)
+		if (ast_option_maxcalls)
 			ast_cli(a->fd, "%d of %d max active call%s (%5.2f%% of capacity)\n",
-				ast_active_calls(), option_maxcalls, ESS(ast_active_calls()),
-				((double)ast_active_calls() / (double)option_maxcalls) * 100.0);
+				ast_active_calls(), ast_option_maxcalls, ESS(ast_active_calls()),
+				((double)ast_active_calls() / (double)ast_option_maxcalls) * 100.0);
 		else
 			ast_cli(a->fd, "%d active call%s\n", ast_active_calls(), ESS(ast_active_calls()));
 
diff --git a/main/manager.c b/main/manager.c
index 19f1e94c24..a17646f0de 100644
--- a/main/manager.c
+++ b/main/manager.c
@@ -5212,11 +5212,11 @@ static int action_coresettings(struct mansession *s, const struct message *m)
 			AMI_VERSION,
 			ast_get_version(),
 			ast_config_AST_SYSTEM_NAME,
-			option_maxcalls,
-			option_maxload,
+			ast_option_maxcalls,
+			ast_option_maxload,
 			ast_config_AST_RUN_USER,
 			ast_config_AST_RUN_GROUP,
-			option_maxfiles,
+			ast_option_maxfiles,
 			AST_CLI_YESNO(ast_realtime_enabled()),
 			AST_CLI_YESNO(ast_cdr_is_enabled()),
 			AST_CLI_YESNO(check_webmanager_enabled())
diff --git a/main/pbx.c b/main/pbx.c
index 0f0f5114a1..9ef2f1ed0c 100644
--- a/main/pbx.c
+++ b/main/pbx.c
@@ -6317,16 +6317,16 @@ static int increase_call_count(const struct ast_channel *c)
 #endif
 
 	ast_mutex_lock(&maxcalllock);
-	if (option_maxcalls) {
-		if (countcalls >= option_maxcalls) {
-			ast_log(LOG_WARNING, "Maximum call limit of %d calls exceeded by '%s'!\n", option_maxcalls, ast_channel_name(c));
+	if (ast_option_maxcalls) {
+		if (countcalls >= ast_option_maxcalls) {
+			ast_log(LOG_WARNING, "Maximum call limit of %d calls exceeded by '%s'!\n", ast_option_maxcalls, ast_channel_name(c));
 			failed = -1;
 		}
 	}
-	if (option_maxload) {
+	if (ast_option_maxload) {
 		getloadavg(&curloadavg, 1);
-		if (curloadavg >= option_maxload) {
-			ast_log(LOG_WARNING, "Maximum loadavg limit of %f load exceeded by '%s' (currently %f)!\n", option_maxload, ast_channel_name(c), curloadavg);
+		if (curloadavg >= ast_option_maxload) {
+			ast_log(LOG_WARNING, "Maximum loadavg limit of %f load exceeded by '%s' (currently %f)!\n", ast_option_maxload, ast_channel_name(c), curloadavg);
 			failed = -1;
 		}
 	}
diff --git a/res/ari/resource_asterisk.c b/res/ari/resource_asterisk.c
index 88f8d35cdd..6f2eb80272 100644
--- a/res/ari/resource_asterisk.c
+++ b/res/ari/resource_asterisk.c
@@ -99,7 +99,7 @@ void ast_ari_get_asterisk_info(struct ast_variable *headers,
 			" s: { s: s, s: s } }",
 
 			"name", ast_config_AST_SYSTEM_NAME,
-			"default_language", defaultlanguage,
+			"default_language", ast_defaultlanguage,
 
 			"setid",
 			"user", ast_config_AST_RUN_USER,
@@ -107,19 +107,19 @@ void ast_ari_get_asterisk_info(struct ast_variable *headers,
 
 		res |= ast_json_object_set(json, "config", config);
 
-		if (option_maxcalls) {
+		if (ast_option_maxcalls) {
 			res |= ast_json_object_set(config, "max_channels",
-				ast_json_integer_create(option_maxcalls));
+				ast_json_integer_create(ast_option_maxcalls));
 		}
 
-		if (option_maxfiles) {
+		if (ast_option_maxfiles) {
 			res |= ast_json_object_set(config, "max_open_files",
-				ast_json_integer_create(option_maxfiles));
+				ast_json_integer_create(ast_option_maxfiles));
 		}
 
-		if (option_maxload) {
+		if (ast_option_maxload) {
 			res |= ast_json_object_set(config, "max_load",
-				ast_json_real_create(option_maxload));
+				ast_json_real_create(ast_option_maxload));
 		}
 	}
 
diff --git a/utils/extconf.c b/utils/extconf.c
index c679c4c3e3..be32163129 100644
--- a/utils/extconf.c
+++ b/utils/extconf.c
@@ -1894,9 +1894,9 @@ struct ast_flags ast_options = { AST_DEFAULT_OPTIONS };
 
 extern int option_verbose;
 extern int option_debug;		/*!< Debugging */
-extern int option_maxcalls;		/*!< Maximum number of simultaneous channels */
-extern double option_maxload;
-extern char defaultlanguage[];
+extern int ast_option_maxcalls;		/*!< Maximum number of simultaneous channels */
+extern double ast_option_maxload;
+extern char ast_defaultlanguage[];
 
 extern pid_t ast_mainpid;
 
-- 
GitLab