Functionality for send sms with using IMS service. (#1477)
* Update * update * Update * update * new version of profile for send sms * update * update Co-authored-by: root <root@lfv.unassigned-domain> Co-authored-by: eug <eug@lfv.unassigned-domain>
This commit is contained in:
parent
fb8ebcdbea
commit
aa6368132e
|
@ -26,6 +26,8 @@ logger:
|
||||||
hss:
|
hss:
|
||||||
freeDiameter: @sysconfdir@/freeDiameter/hss.conf
|
freeDiameter: @sysconfdir@/freeDiameter/hss.conf
|
||||||
|
|
||||||
|
# sms_over_ims: "sip:smsc.mnc001.mcc001.3gppnetwork.org:7060;transport=tcp"
|
||||||
|
|
||||||
#
|
#
|
||||||
# parameter:
|
# parameter:
|
||||||
#
|
#
|
||||||
|
|
|
@ -323,6 +323,9 @@ int hss_context_parse_config(void)
|
||||||
ogs_warn("unknown key `%s`", fd_key);
|
ogs_warn("unknown key `%s`", fd_key);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else if (!strcmp(hss_key, "sms_over_ims")) {
|
||||||
|
self.sms_over_ims =
|
||||||
|
ogs_yaml_iter_value(&hss_iter);
|
||||||
} else
|
} else
|
||||||
ogs_warn("unknown key `%s`", hss_key);
|
ogs_warn("unknown key `%s`", hss_key);
|
||||||
}
|
}
|
||||||
|
@ -952,6 +955,190 @@ char *hss_cx_download_user_data(
|
||||||
ogs_assert(user_data);
|
ogs_assert(user_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(self.sms_over_ims) {
|
||||||
|
user_data = ogs_mstrcatf(user_data, "%s",
|
||||||
|
ogs_diam_cx_xml_ifc_s);
|
||||||
|
ogs_assert(user_data);
|
||||||
|
|
||||||
|
user_data = ogs_mstrcatf(user_data, "%s%s%s",
|
||||||
|
ogs_diam_cx_xml_priority_s,
|
||||||
|
"2",
|
||||||
|
ogs_diam_cx_xml_priority_e);
|
||||||
|
ogs_assert(user_data);
|
||||||
|
|
||||||
|
user_data = ogs_mstrcatf(user_data, "%s",
|
||||||
|
ogs_diam_cx_xml_tp_s);
|
||||||
|
ogs_assert(user_data);
|
||||||
|
|
||||||
|
user_data = ogs_mstrcatf(user_data, "%s%s%s",
|
||||||
|
ogs_diam_cx_xml_cnf_s,
|
||||||
|
"1",
|
||||||
|
ogs_diam_cx_xml_cnf_e);
|
||||||
|
ogs_assert(user_data);
|
||||||
|
|
||||||
|
user_data = ogs_mstrcatf(user_data, "%s",
|
||||||
|
ogs_diam_cx_xml_spt_s);
|
||||||
|
ogs_assert(user_data);
|
||||||
|
|
||||||
|
user_data = ogs_mstrcatf(user_data, "%s%s%s",
|
||||||
|
ogs_diam_cx_xml_condition_negated_s,
|
||||||
|
"0",
|
||||||
|
ogs_diam_cx_xml_condition_negated_e);
|
||||||
|
ogs_assert(user_data);
|
||||||
|
|
||||||
|
user_data = ogs_mstrcatf(user_data, "%s%s%s",
|
||||||
|
ogs_diam_cx_xml_group_s,
|
||||||
|
"1",
|
||||||
|
ogs_diam_cx_xml_group_e);
|
||||||
|
ogs_assert(user_data);
|
||||||
|
|
||||||
|
user_data = ogs_mstrcatf(user_data, "%s%s%s",
|
||||||
|
ogs_diam_cx_xml_method_s,
|
||||||
|
"MESSAGE",
|
||||||
|
ogs_diam_cx_xml_method_e);
|
||||||
|
ogs_assert(user_data);
|
||||||
|
|
||||||
|
user_data = ogs_mstrcatf(user_data, "%s",
|
||||||
|
ogs_diam_cx_xml_extension_s);
|
||||||
|
ogs_assert(user_data);
|
||||||
|
|
||||||
|
user_data = ogs_mstrcatf(user_data, "%s%s%s",
|
||||||
|
ogs_diam_cx_xml_registration_type_s,
|
||||||
|
"0",
|
||||||
|
ogs_diam_cx_xml_registration_type_e);
|
||||||
|
ogs_assert(user_data);
|
||||||
|
|
||||||
|
user_data = ogs_mstrcatf(user_data, "%s",
|
||||||
|
ogs_diam_cx_xml_extension_e);
|
||||||
|
ogs_assert(user_data);
|
||||||
|
|
||||||
|
user_data = ogs_mstrcatf(user_data, "%s",
|
||||||
|
ogs_diam_cx_xml_spt_e);
|
||||||
|
ogs_assert(user_data);
|
||||||
|
|
||||||
|
user_data = ogs_mstrcatf(user_data, "%s",
|
||||||
|
ogs_diam_cx_xml_spt_s);
|
||||||
|
ogs_assert(user_data);
|
||||||
|
|
||||||
|
user_data = ogs_mstrcatf(user_data, "%s%s%s",
|
||||||
|
ogs_diam_cx_xml_condition_negated_s,
|
||||||
|
"0",
|
||||||
|
ogs_diam_cx_xml_condition_negated_e);
|
||||||
|
ogs_assert(user_data);
|
||||||
|
|
||||||
|
user_data = ogs_mstrcatf(user_data, "%s%s%s",
|
||||||
|
ogs_diam_cx_xml_group_s,
|
||||||
|
"2",
|
||||||
|
ogs_diam_cx_xml_group_e);
|
||||||
|
ogs_assert(user_data);
|
||||||
|
|
||||||
|
user_data = ogs_mstrcatf(user_data, "%s",
|
||||||
|
ogs_diam_cx_xml_sip_hdr_s);
|
||||||
|
ogs_assert(user_data);
|
||||||
|
|
||||||
|
user_data = ogs_mstrcatf(user_data, "%s%s%s",
|
||||||
|
ogs_diam_cx_xml_header_s,
|
||||||
|
"Content-Type",
|
||||||
|
ogs_diam_cx_xml_header_e);
|
||||||
|
ogs_assert(user_data);
|
||||||
|
|
||||||
|
user_data = ogs_mstrcatf(user_data, "%s%s%s",
|
||||||
|
ogs_diam_cx_xml_content_s,
|
||||||
|
"application/vnd.3gpp.sms",
|
||||||
|
ogs_diam_cx_xml_content_e);
|
||||||
|
ogs_assert(user_data);
|
||||||
|
|
||||||
|
user_data = ogs_mstrcatf(user_data, "%s",
|
||||||
|
ogs_diam_cx_xml_sip_hdr_e);
|
||||||
|
ogs_assert(user_data);
|
||||||
|
|
||||||
|
user_data = ogs_mstrcatf(user_data, "%s",
|
||||||
|
ogs_diam_cx_xml_extension_s);
|
||||||
|
ogs_assert(user_data);
|
||||||
|
|
||||||
|
user_data = ogs_mstrcatf(user_data, "%s%s%s",
|
||||||
|
ogs_diam_cx_xml_registration_type_s,
|
||||||
|
"0",
|
||||||
|
ogs_diam_cx_xml_registration_type_e);
|
||||||
|
ogs_assert(user_data);
|
||||||
|
|
||||||
|
user_data = ogs_mstrcatf(user_data, "%s",
|
||||||
|
ogs_diam_cx_xml_extension_e);
|
||||||
|
ogs_assert(user_data);
|
||||||
|
|
||||||
|
user_data = ogs_mstrcatf(user_data, "%s",
|
||||||
|
ogs_diam_cx_xml_spt_e);
|
||||||
|
ogs_assert(user_data);
|
||||||
|
|
||||||
|
user_data = ogs_mstrcatf(user_data, "%s",
|
||||||
|
ogs_diam_cx_xml_spt_s);
|
||||||
|
ogs_assert(user_data);
|
||||||
|
|
||||||
|
user_data = ogs_mstrcatf(user_data, "%s%s%s",
|
||||||
|
ogs_diam_cx_xml_condition_negated_s,
|
||||||
|
"0",
|
||||||
|
ogs_diam_cx_xml_condition_negated_e);
|
||||||
|
ogs_assert(user_data);
|
||||||
|
|
||||||
|
user_data = ogs_mstrcatf(user_data, "%s%s%s",
|
||||||
|
ogs_diam_cx_xml_group_s,
|
||||||
|
"3",
|
||||||
|
ogs_diam_cx_xml_group_e);
|
||||||
|
ogs_assert(user_data);
|
||||||
|
|
||||||
|
user_data = ogs_mstrcatf(user_data, "%s%s%s",
|
||||||
|
ogs_diam_cx_xml_session_case_s,
|
||||||
|
"0",
|
||||||
|
ogs_diam_cx_xml_session_case_e);
|
||||||
|
ogs_assert(user_data);
|
||||||
|
|
||||||
|
user_data = ogs_mstrcatf(user_data, "%s",
|
||||||
|
ogs_diam_cx_xml_extension_s);
|
||||||
|
ogs_assert(user_data);
|
||||||
|
|
||||||
|
user_data = ogs_mstrcatf(user_data, "%s%s%s",
|
||||||
|
ogs_diam_cx_xml_registration_type_s,
|
||||||
|
"0",
|
||||||
|
ogs_diam_cx_xml_registration_type_e);
|
||||||
|
ogs_assert(user_data);
|
||||||
|
|
||||||
|
user_data = ogs_mstrcatf(user_data, "%s",
|
||||||
|
ogs_diam_cx_xml_extension_e);
|
||||||
|
ogs_assert(user_data);
|
||||||
|
|
||||||
|
user_data = ogs_mstrcatf(user_data, "%s",
|
||||||
|
ogs_diam_cx_xml_spt_e);
|
||||||
|
ogs_assert(user_data);
|
||||||
|
|
||||||
|
user_data = ogs_mstrcatf(user_data, "%s",
|
||||||
|
ogs_diam_cx_xml_tp_e);
|
||||||
|
ogs_assert(user_data);
|
||||||
|
|
||||||
|
user_data = ogs_mstrcatf(user_data, "%s",
|
||||||
|
ogs_diam_cx_xml_app_server_s);
|
||||||
|
ogs_assert(user_data);
|
||||||
|
|
||||||
|
user_data = ogs_mstrcatf(user_data, "%s%s%s",
|
||||||
|
ogs_diam_cx_xml_server_name_s,
|
||||||
|
self.sms_over_ims,
|
||||||
|
ogs_diam_cx_xml_server_name_e);
|
||||||
|
ogs_assert(user_data);
|
||||||
|
|
||||||
|
user_data = ogs_mstrcatf(user_data, "%s%s%s",
|
||||||
|
ogs_diam_cx_xml_default_handling_s,
|
||||||
|
"0",
|
||||||
|
ogs_diam_cx_xml_default_handling_e);
|
||||||
|
ogs_assert(user_data);
|
||||||
|
|
||||||
|
user_data = ogs_mstrcatf(user_data, "%s",
|
||||||
|
ogs_diam_cx_xml_app_server_e);
|
||||||
|
ogs_assert(user_data);
|
||||||
|
|
||||||
|
user_data = ogs_mstrcatf(user_data, "%s",
|
||||||
|
ogs_diam_cx_xml_ifc_e);
|
||||||
|
ogs_assert(user_data);
|
||||||
|
}
|
||||||
|
|
||||||
user_data = ogs_mstrcatf(user_data, "%s",
|
user_data = ogs_mstrcatf(user_data, "%s",
|
||||||
ogs_diam_cx_xml_service_profile_e);
|
ogs_diam_cx_xml_service_profile_e);
|
||||||
ogs_assert(user_data);
|
ogs_assert(user_data);
|
||||||
|
|
|
@ -38,6 +38,7 @@ extern int __hss_log_domain;
|
||||||
typedef struct _hss_context_t {
|
typedef struct _hss_context_t {
|
||||||
const char *diam_conf_path;/* HSS Diameter conf path */
|
const char *diam_conf_path;/* HSS Diameter conf path */
|
||||||
ogs_diam_config_t *diam_config; /* HSS Diameter config */
|
ogs_diam_config_t *diam_config; /* HSS Diameter config */
|
||||||
|
const char *sms_over_ims; /* SMS over IMS */
|
||||||
|
|
||||||
ogs_thread_mutex_t db_lock;
|
ogs_thread_mutex_t db_lock;
|
||||||
ogs_thread_mutex_t cx_lock;
|
ogs_thread_mutex_t cx_lock;
|
||||||
|
|
Loading…
Reference in New Issue