mirror of
				https://github.com/open5gs/open5gs.git
				synced 2025-11-03 21:43:25 +00:00 
			
		
		
		
	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:
		@@ -26,6 +26,8 @@ logger:
 | 
			
		||||
hss:
 | 
			
		||||
    freeDiameter: @sysconfdir@/freeDiameter/hss.conf
 | 
			
		||||
 | 
			
		||||
#    sms_over_ims: "sip:smsc.mnc001.mcc001.3gppnetwork.org:7060;transport=tcp"
 | 
			
		||||
 | 
			
		||||
#
 | 
			
		||||
# parameter:
 | 
			
		||||
#
 | 
			
		||||
 
 | 
			
		||||
@@ -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);
 | 
			
		||||
 
 | 
			
		||||
@@ -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;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user