summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--configs/samples/asterisk.conf.sample8
-rw-r--r--include/asterisk/utils.h8
-rw-r--r--main/asterisk.c6
-rw-r--r--main/utils.c12
-rw-r--r--pbx/pbx_dundi.c3
-rw-r--r--res/res_corosync.c6
-rw-r--r--res/res_pjsip_publish_asterisk.c5
-rw-r--r--res/res_xmpp.c4
8 files changed, 47 insertions, 5 deletions
diff --git a/configs/samples/asterisk.conf.sample b/configs/samples/asterisk.conf.sample
index e4883ec97..b0543d803 100644
--- a/configs/samples/asterisk.conf.sample
+++ b/configs/samples/asterisk.conf.sample
@@ -88,6 +88,14 @@ documentation_language = en_US ; Set the language you want documentation
; considered dangerous because they can allow
; privilege escalation.
; Default no
+;entityid=00:11:22:33:44:55 ; Entity ID.
+ ; This is in the form of a MAC address.
+ ; It should be universally unique.
+ ; It must be unique between servers communicating
+ ; with a protocol that uses this value.
+ ; This is currently is used by DUNDi and
+ ; Exchanging Device and Mailbox State
+ ; using protocols: XMPP, Corosync and PJSIP.
; Changing the following lines may compromise your security.
;[files]
diff --git a/include/asterisk/utils.h b/include/asterisk/utils.h
index c311e9cd5..c3df4779f 100644
--- a/include/asterisk/utils.h
+++ b/include/asterisk/utils.h
@@ -973,6 +973,14 @@ int ast_str_to_eid(struct ast_eid *eid, const char *s);
int ast_eid_cmp(const struct ast_eid *eid1, const struct ast_eid *eid2);
/*!
+ * \brief Check if EID is empty
+ *
+ * \return 1 if the EID is empty, zero otherwise
+ * \since 13.12.0
+ */
+int ast_eid_is_empty(const struct ast_eid *eid);
+
+/*!
* \brief Get current thread ID
* \return the ID if platform is supported, else -1
*/
diff --git a/main/asterisk.c b/main/asterisk.c
index 772c3dce9..b23ddfc55 100644
--- a/main/asterisk.c
+++ b/main/asterisk.c
@@ -3752,10 +3752,10 @@ static void ast_readconfig(void)
} else if (!strcasecmp(v->name, "entityid")) {
struct ast_eid tmp_eid;
if (!ast_str_to_eid(&tmp_eid, v->value)) {
- ast_verbose("Successfully set global EID to '%s'\n", v->value);
ast_eid_default = tmp_eid;
- } else
- ast_verbose("Invalid Entity ID '%s' provided\n", v->value);
+ } else {
+ ast_log(LOG_WARNING, "Invalid Entity ID '%s' provided\n", v->value);
+ }
} else if (!strcasecmp(v->name, "lightbackground")) {
ast_set2_flag(&ast_options, ast_true(v->value), AST_OPT_FLAG_LIGHT_BACKGROUND);
} else if (!strcasecmp(v->name, "forceblackbackground")) {
diff --git a/main/utils.c b/main/utils.c
index bd74ee24d..1a034c101 100644
--- a/main/utils.c
+++ b/main/utils.c
@@ -2493,7 +2493,7 @@ void ast_set_default_eid(struct ast_eid *eid)
return;
}
for (x = 0; x < MAXIF; x++) {
- static const char *prefixes[] = { "eth", "em" };
+ static const char *prefixes[] = { "eth", "em", "eno", "ens" };
unsigned int i;
for (i = 0; i < ARRAY_LEN(prefixes); i++) {
@@ -2544,7 +2544,7 @@ void ast_set_default_eid(struct ast_eid *eid)
}
#endif
#endif
- ast_debug(1, "No ethernet interface found for seeding global EID. You will have to set it manually.\n");
+ ast_log(LOG_WARNING, "No ethernet interface found for seeding global EID. You will have to set it manually.\n");
}
int ast_str_to_eid(struct ast_eid *eid, const char *s)
@@ -2569,6 +2569,14 @@ int ast_eid_cmp(const struct ast_eid *eid1, const struct ast_eid *eid2)
return memcmp(eid1, eid2, sizeof(*eid1));
}
+int ast_eid_is_empty(const struct ast_eid *eid)
+{
+ struct ast_eid empty_eid;
+
+ memset(&empty_eid, 0, sizeof(empty_eid));
+ return memcmp(eid, &empty_eid, sizeof(empty_eid)) ? 0 : 1;
+}
+
int ast_file_is_readable(const char *filename)
{
#if defined(HAVE_EACCESS) || defined(HAVE_EUIDACCESS)
diff --git a/pbx/pbx_dundi.c b/pbx/pbx_dundi.c
index 51801f45f..5ca8a8568 100644
--- a/pbx/pbx_dundi.c
+++ b/pbx/pbx_dundi.c
@@ -4847,6 +4847,9 @@ static int set_config(char *config_file, struct sockaddr_in* sin, int reload)
ast_log(LOG_WARNING, "Unable to get host name!\n");
AST_LIST_LOCK(&peers);
+ if (ast_eid_is_empty(&ast_eid_default)) {
+ ast_log(LOG_WARNING, "Entity ID is not set.\n");
+ }
memcpy(&global_eid, &ast_eid_default, sizeof(global_eid));
global_storehistory = 0;
diff --git a/res/res_corosync.c b/res/res_corosync.c
index 9ffffaaca..6bbbc34b9 100644
--- a/res/res_corosync.c
+++ b/res/res_corosync.c
@@ -1103,6 +1103,11 @@ static int load_module(void)
cs_error_t cs_err;
struct cpg_name name;
+ if (ast_eid_is_empty(&ast_eid_default)) {
+ ast_log(LOG_ERROR, "Entity ID is not set.\n");
+ return AST_MODULE_LOAD_DECLINE;
+ }
+
nodes = ao2_container_alloc(23, corosync_node_hash_fn, corosync_node_cmp_fn);
if (!nodes) {
goto failed;
@@ -1162,6 +1167,7 @@ static int load_module(void)
ast_cli_register_multiple(corosync_cli, ARRAY_LEN(corosync_cli));
+
return AST_MODULE_LOAD_SUCCESS;
failed:
diff --git a/res/res_pjsip_publish_asterisk.c b/res/res_pjsip_publish_asterisk.c
index 002d976d4..b32408aa3 100644
--- a/res/res_pjsip_publish_asterisk.c
+++ b/res/res_pjsip_publish_asterisk.c
@@ -858,6 +858,11 @@ static int load_module(void)
{
CHECK_PJSIP_PUBSUB_MODULE_LOADED();
+ if (ast_eid_is_empty(&ast_eid_default)) {
+ ast_log(LOG_ERROR, "Entity ID is not set.\n");
+ return AST_MODULE_LOAD_DECLINE;
+ }
+
ast_sorcery_apply_config(ast_sip_get_sorcery(), "asterisk-publication");
ast_sorcery_apply_default(ast_sip_get_sorcery(), "asterisk-publication", "config", "pjsip.conf,criteria=type=asterisk-publication");
diff --git a/res/res_xmpp.c b/res/res_xmpp.c
index ed35cd169..d7f2b5478 100644
--- a/res/res_xmpp.c
+++ b/res/res_xmpp.c
@@ -4652,6 +4652,10 @@ static int load_module(void)
ast_mutex_init(&messagelock);
ast_cond_init(&message_received_condition, NULL);
+ if (ast_eid_is_empty(&ast_eid_default)) {
+ ast_log(LOG_WARNING, "Entity ID is not set. The distributing device state or MWI will not work.\n");
+ }
+
return AST_MODULE_LOAD_SUCCESS;
}