Revert "Revert "Functionality for send sms with using IMS service. (#1477)""

This reverts commit b732d7bcc5.
This commit is contained in:
Sukchan Lee 2022-04-09 00:45:37 +09:00
parent 0b3df3e3db
commit 832ab156e9
3 changed files with 190 additions and 0 deletions

View File

@ -26,6 +26,8 @@ logger:
hss:
freeDiameter: @sysconfdir@/freeDiameter/hss.conf
# sms_over_ims: "sip:smsc.mnc001.mcc001.3gppnetwork.org:7060;transport=tcp"
#
# parameter:
#

View File

@ -323,6 +323,9 @@ int hss_context_parse_config(void)
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
ogs_warn("unknown key `%s`", hss_key);
}
@ -952,6 +955,190 @@ char *hss_cx_download_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",
ogs_diam_cx_xml_service_profile_e);
ogs_assert(user_data);

View File

@ -38,6 +38,7 @@ extern int __hss_log_domain;
typedef struct _hss_context_t {
const char *diam_conf_path;/* HSS Diameter conf path */
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 cx_lock;