diff options
author | zuul <zuul@gerrit.asterisk.org> | 2016-08-16 06:43:54 -0500 |
---|---|---|
committer | Gerrit Code Review <gerrit2@gerrit.digium.api> | 2016-08-16 06:43:54 -0500 |
commit | 050b90769a2a2d0293f7c31d1c53f6f4a73c448c (patch) | |
tree | 18a923f7f05ee5c44461696167d306b13c77da95 | |
parent | 6c4c31456fde265f874bbe9dfe28d7c011065e93 (diff) | |
parent | 403c794684a5a8afce2b490e5a40214f792794d4 (diff) |
Merge "core: Entity ID is not set or invalid" into 13
-rw-r--r-- | configs/samples/asterisk.conf.sample | 8 | ||||
-rw-r--r-- | include/asterisk/utils.h | 8 | ||||
-rw-r--r-- | main/asterisk.c | 6 | ||||
-rw-r--r-- | main/utils.c | 12 | ||||
-rw-r--r-- | pbx/pbx_dundi.c | 3 | ||||
-rw-r--r-- | res/res_corosync.c | 6 | ||||
-rw-r--r-- | res/res_pjsip_publish_asterisk.c | 5 | ||||
-rw-r--r-- | res/res_xmpp.c | 4 |
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 d5ffacb19..b8eedfa38 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; } |