feat: create cook branch

This commit is contained in:
zhangsz
2025-03-08 16:40:56 +08:00
parent 9a139c52c6
commit 025a455e17
70 changed files with 3603 additions and 11829 deletions

View File

@@ -1,131 +1,7 @@
#include "sh_conf.h"
Ro_LinkSet rolkset={0,0};
int GetRoDiamIdPeer(DiamId_t **realm, DiamId_t **host, int bSms)
{
struct peer_hdr*peer = NULL;
SH_CONF_S *pcfg = NULL;
int i;
int ret = -1;
int peer_state = -1;
if (bSms)
{
int curlk = rolkset.cursmslk;
for (i=0; i<rolkset.smslknum; i++)
{
curlk = (curlk + i +1) % rolkset.smslknum;
pcfg = &rolkset.smslk[curlk].cfg;
if (pcfg->pi_diamid_peer != NULL)
{
ret = fd_peer_getbyid(pcfg->pi_diamid_peer, strlen(pcfg->pi_diamid_peer), 0, &peer);
if( !ret && peer )
{
peer_state = fd_peer_get_state(peer);
if( STATE_OPEN == peer_state )
{
if (rolkset.smslk[curlk].bconn == 0)
{
printf("diam peer disconn to conn, host[%s]\r\n", pcfg->pi_diamid_peer);
rolkset.smslk[curlk].bconn = 1;
}
*realm = pcfg->pi_diamid_realm_peer;
*host = pcfg->pi_diamid_peer;
return 1;
}
else
{
if (rolkset.smslk[curlk].bconn == 1)
{
printf("diam peer conn to discon, host[%s]\r\n", pcfg->pi_diamid_peer);
rolkset.smslk[curlk].bconn = 0;
}
}
}
else
{
printf("diam peer NA, host[%s], ret[%d], peer[%p]\r\n", pcfg->pi_diamid_peer, ret, peer);
rolkset.smslk[curlk].bconn = 0;
}
}
}
}
else
{
int curlk = rolkset.curvoicelk;
for (i=0; i<rolkset.voicelknum; i++)
{
curlk = (curlk + i +1) % rolkset.voicelknum;
pcfg = &rolkset.voicelk[curlk].cfg;
if (pcfg->pi_diamid_peer != NULL)
{
ret = fd_peer_getbyid(pcfg->pi_diamid_peer, strlen(pcfg->pi_diamid_peer), 0, &peer);
if( !ret && peer )
{
peer_state = fd_peer_get_state(peer);
if( STATE_OPEN == peer_state )
{
if (rolkset.voicelk[curlk].bconn == 0)
{
printf("diam peer disconn to conn, host[%s]\r\n", pcfg->pi_diamid_peer);
rolkset.voicelk[curlk].bconn = 1;
}
*realm = pcfg->pi_diamid_realm_peer;
*host = pcfg->pi_diamid_peer;
return 1;
}
else
{
if (rolkset.voicelk[curlk].bconn == 1)
{
printf("diam peer conn to discon, host[%s]\r\n", pcfg->pi_diamid_peer);
rolkset.voicelk[curlk].bconn = 0;
}
}
}
else
{
printf("diam peer NA, host[%s], ret[%d], peer[%p]\r\n", pcfg->pi_diamid_peer, ret, peer);
rolkset.voicelk[curlk].bconn = 0;
}
}
}
}
return 0;
}
int AddRoLink(SH_CONF_S *cfg, uint16_t port, int bSms)
{
if (bSms)
{
if(rolkset.smslknum >= MaxRoLinkNum)
{
return 0;
}
rolkset.smslk[rolkset.smslknum].cfg.pi_diamid_peer = strdup(cfg->pi_diamid_peer);
rolkset.smslk[rolkset.smslknum].cfg.pi_diamid_realm_peer = strdup(cfg->pi_diamid_realm_peer);
rolkset.smslk[rolkset.smslknum].cfg.peer_port = port;
rolkset.smslknum++;
}
else
{
if(rolkset.voicelknum >= MaxRoLinkNum)
{
return 0;
}
rolkset.voicelk[rolkset.voicelknum].cfg.pi_diamid_peer = strdup(cfg->pi_diamid_peer);
rolkset.voicelk[rolkset.voicelknum].cfg.pi_diamid_realm_peer = strdup(cfg->pi_diamid_realm_peer);
rolkset.voicelk[rolkset.voicelknum].cfg.peer_port = port;
rolkset.voicelknum++;
}
return 1;
}
SH_CONF_S g_sh_conf_ext;
//SH_CONF_S g_rovoice_conf_ext;
//SH_CONF_S g_rosms_conf_ext;
#define SH_PARSE_BUFFER_LEN 1024
@@ -143,7 +19,7 @@ static char* shParseStr_(char* buffer, char* _key, char *ret_str, int flag_from_
if(NULL != pos_2)
{
memcpy(ret_str, pos_1 + 1, pos_2 - pos_1 - 1);
ret_str[pos_2 - pos_1] = '\0';
ret_str[pos_1 - pos_2] = '\0';
// fprintf(stderr, "%s=%s\n", _key, ret_str);
return ret_str;
}
@@ -226,10 +102,6 @@ int shParse_(struct fd_config * conf)
return 2;
}
conf->ro_voiceport = 29100;
conf->ro_smsport = 19500;
strcpy(conf->service_context_voice, "agrandtech_ro@3gpp.org");
strcpy(conf->service_context_sms, "agrandtech_sms@3gpp.org");
/* Copy process */
while((fgets(buffer, SH_PARSE_BUFFER_LEN, fd)) != NULL)
{
@@ -247,18 +119,6 @@ int shParse_(struct fd_config * conf)
memset( ret_str, 0, strlen(ret_str) );
}
if( shParseStr(buffer, "ServiceCxtRoVoice", ret_str) )
{
strcpy(conf->service_context_voice, ret_str);
memset( ret_str, 0, strlen(ret_str) );
}
if( shParseStr(buffer, "ServiceCxtRoSms", ret_str) )
{
strcpy(conf->service_context_sms, ret_str);
memset( ret_str, 0, strlen(ret_str) );
}
shParseInt(buffer, "RoVoicePort", &conf->ro_voiceport);
shParseInt(buffer, "RoSmsPort", &conf->ro_smsport);
shParseInt(buffer, "Port", &conf->cnf_port);
shParseInt(buffer, "SecPort", &conf->cnf_port_tls);
shParseInt(buffer, "SCTPStr", &conf->cnf_sctp_str);
@@ -329,29 +189,6 @@ int shParseExt(struct fd_config * conf)
g_sh_conf_ext.pi_diamid_realm_peer = strdup(ret_str);
memset( ret_str, 0, strlen(ret_str) );
}
g_sh_conf_ext.peer_port = fd_g_config->cnf_port;
if( shParseFlags(buffer, "ConnectPeer", "Ro_SMS") )
{
//g_rosms_conf_ext.pi_diamid_peer = strdup(g_sh_conf_ext.pi_diamid_peer);
//g_rosms_conf_ext.pi_diamid_realm_peer = strdup(g_sh_conf_ext.pi_diamid_realm_peer);
//g_rosms_conf_ext.peer_port = fd_g_config->ro_smsport;
AddRoLink(&g_sh_conf_ext, fd_g_config->ro_smsport, 1);
free(g_sh_conf_ext.pi_diamid_peer);
g_sh_conf_ext.pi_diamid_peer = NULL;
free(g_sh_conf_ext.pi_diamid_realm_peer);
g_sh_conf_ext.pi_diamid_realm_peer = NULL;
}
if( shParseFlags(buffer, "ConnectPeer", "Ro_VOICE") )
{
//g_rovoice_conf_ext.pi_diamid_peer = strdup(g_sh_conf_ext.pi_diamid_peer);
//g_rovoice_conf_ext.pi_diamid_realm_peer = strdup(g_sh_conf_ext.pi_diamid_realm_peer);
//g_rovoice_conf_ext.peer_port = fd_g_config->ro_voiceport;
AddRoLink(&g_sh_conf_ext, fd_g_config->ro_voiceport, 0);
free(g_sh_conf_ext.pi_diamid_peer);
g_sh_conf_ext.pi_diamid_peer = NULL;
free(g_sh_conf_ext.pi_diamid_realm_peer);
g_sh_conf_ext.pi_diamid_realm_peer = NULL;
}
}