本文整理汇总了C++中ws_strdup函数的典型用法代码示例。如果您正苦于以下问题:C++ ws_strdup函数的具体用法?C++ ws_strdup怎么用?C++ ws_strdup使用的例子?那么, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了ws_strdup函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ws_add_res_struct_string
/*****************************************************************************
函 数 名 : ws_add_res_struct_string
功能描述 : 该接口提供给web service钩子函数,用于添加web service结果参数
本函数增加一个字符串类型结构参数
输入参数 : ws_env ---- web service执行环境
ws_req_res ---- web service参数结构
name ---- 参数名称,外面分配空间
value ---- 参数值
输出参数 : 无
返 回 值 : ERROR_SUCCESS 添加成功
ERROR_SYSTEM 添加失败
调用函数 :
被调函数 :
============================================================================
修改历史 :
1.日 期 : 2008年8月8日
修改内容 : 新生成函数
*****************************************************************************/
u_int32_t ws_add_res_struct_string(WS_ENV* ws_env, WS_REQ_RES* ws_req_res,
const char* name, const char* value)
{
WS_PARA *para;
//http_out("\nws_add_res_struct_string:%s, %s", name, value);
if((NULL == ws_env) || (NULL == ws_req_res))
{
return ERROR_SYSTEM;
}
if (ws_req_res->res_count >= MAX_RES_STRUCT_PARA_COUNT)
{
WEB_SEND_DEBUG_s("The max response parameter is reached.");
return ERROR_SYSTEM;
}
para = &(ws_req_res->response[ws_req_res->res_count++]);
para->type = WS_PARA_TYPE_STRING;
para->name = ws_strdup(ws_env, name);
para->data = ws_strdup(ws_env, value);
return ERROR_SUCCESS;
}
示例2: ws__getDnsmasqInfo
int ws__getDnsmasqInfo(WS_ENV* ws_env, struct ws__getDnsmasqInfoResponse *ret)
{
CONFIG * cfg = NULL;
cfg = config_load(CFG_DNS_PATH);
if(NULL == cfg)
{
return ws_send_soap_error(ws_env, "Open dns config file failed.");
}
if(config_getint(cfg, "dnsmasq_switch", 0))
{
ret->ret.dnsmasqstat = ws_strdup(ws_env, "enable");
}
else
{
ret->ret.dnsmasqstat = ws_strdup(ws_env, "disable");
}
config_free(cfg);
return WS_OK;
}
示例3: ws__getFluxConfig
/*******************************************************************************
函数名称 : ws__getFluxConfig
功能描述 : 获得流量分析配置
输入参数 : 无
输出参数 : 无
返 回 值 : WS_OK ----操作成功
flux_manage_error_code ----操作失败
--------------------------------------------------------------------------------
最近一次修改记录 :
修改作者 : zhangfaqi
修改目的 : 创建函数
修改日期 : 2011-4-30
*******************************************************************************/
s32 ws__getFluxConfig(WS_ENV* ws_env, struct ws__getFluxConfigResponse *ret)
{
sqlite3 *db = NULL;
sqlite3_res res;
s32 ws_ret = WS_OK;
s32 sql_ret = SQLITE_OK;
const s8* err_info;
s8 *tmpStr;
db = sqlite3_open_ex(1, FLUX_MANAGE_DBFILE);
if ( NULL == db )
{
ws_ret = ERR_FLUX_MANAGE_OPEN_DB_FAILD;
goto label_ret;
}
/* 查询流量是否开启配置 */
snprintf(g_sqlite_sql_buf, SQLITE_SQL_BUF_SIZE,
"SELECT * FROM " FLUX_MANAGE_TAB_CONFIG);
if ( SQLITE_OK != sqlite3_exec_query_ex(db, g_sqlite_sql_buf, &res) )
{
ws_ret = ERR_FLUX_MANAGE_EXEC_SQL_FAILD;
goto label_ret;
}
/* 数据库只有一条配置,所以取第一条即可 */
sql_ret += sqlite3_get_s32_ex(res, 0, FLUX_MANAGE_CONFIG_ENABLE, &(ret->ret.flag));
sql_ret += sqlite3_get_s32_ex(res, 0, FLUX_MANAGE_CONFIG_TYPE, &(ret->ret.logType));
sql_ret += sqlite3_get_s32_ex(res, 0, FLUX_MANAGE_CONFIG_PORT, &(ret->ret.serverPort));
sql_ret += sqlite3_get_str_ex(res, 0, FLUX_MANAGE_CONFIG_IP, &tmpStr);
ret->ret.serverIp = ws_strdup(ws_env, tmpStr);
if ( SQLITE_OK != sql_ret )
{
ws_ret = ERR_FLUX_MANAGE_GET_RES_FAILD;
goto label_ret;
}
label_ret:
sqlite3_res_free_ex(res);
res = NULL;
sqlite3_close_ex(db);
db = NULL;
if (WS_OK != ws_ret)
{
err_info = flux_manage_error_str(ws_ret);
return ws_send_soap_error(ws_env, err_info);
}
return WS_OK;
}
示例4: ws__mldEnableIfGet
/******************************************************************************
函数名称: ws__mldEnableIfGet
功能描述: 取得mld显示信息
输入参数: ret:结果集
输出参数: ret:结果集
返 回 值: 0表示返回成功
--------------------------------------------------------------------------------
最近一次修改记录 :
修改作者: 刘晓贺
修改目的: 新生成函数
修改日期: 2011-2-14
*******************************************************************************/
s32 ws__mldEnableIfGet(WS_ENV * ws_env, struct ws__getIp6McastMldEnableIfResponse *ret)
{
s32 i = 0;
s32 num = 0;
s8 *ifname = NULL;
s32 result = 0;
sqlite3 *db = NULL;
sqlite3_res res = NULL;
struct Ip6McastMldEnableIf *data = NULL;
db = sqlite3_open_ex(1, IP_MC_CFG_DB);
if(NULL == db)
{
return ws_send_soap_error(ws_env, "open basic db failed!");
}
result = sqlite3_exec_query_ex(db, "select count(*) as count from tb_basic_interface_info;", &res);
if(SQLITE_OK != result)
{
sqlite3_close_ex(db);
return ws_send_soap_error(ws_env, "sqlite3_exec_query_ex error!");
}
/*获取当前数据库中的记录数*/
sqlite3_get_s32_ex(res, 0, "count", &num);
/*释放结果集,多次查询时,每次都需要释放*/
sqlite3_res_free_ex(res);
res = NULL;
data = (struct Ip6McastMldEnableIf *)ws_malloc(ws_env, num * sizeof(struct Ip6McastMldEnableIf));
result = sqlite3_exec_query_ex(db, "select * from tb_basic_interface_info;", &res);
if(SQLITE_OK != result)
{
sqlite3_close_ex(db);
return ws_send_soap_error(ws_env, "sqlite3_exec_query_ex error!");
}
for(i = 0; i < num; i++)
{
sqlite3_get_str_ex(res, i, "ifname", &ifname);
data[i].ifname = ws_strdup(ws_env, ifname);
}
/*释放结果集,多次查询时,每次都需要释放*/
sqlite3_res_free_ex(res);
res = NULL;
sqlite3_close_ex(db);
ret->ret.sum = num;
ret->ret.res_USCOREcount = num;
ret->ret.__size = num;
ret->ret.__ptrres = data;
return SQLITE_OK;
}
示例5: ws__getAvSigsType
s32 ws__getAvSigsType(WS_ENV *soap, struct ws__getAvSigsListType *ret)
{
sqlite3 *dba_con = NULL;
sqlite3_res dba_res = NULL;
u32 count = 0;
u32 i = 0;
s8 *tmp = NULL;
struct AvSigsType *Info = NULL;
dba_con = sqlite3_open_ex(1, AV_DESC_DBFILE);
if (NULL == dba_con)
{
return WS_OK;
}
snprintf(g_sqlite_sql_buf, sizeof(g_sqlite_sql_buf), "SELECT COUNT(*) AS count FROM tb_av_description_category;");
sqlite3_exec_query_ex(dba_con, g_sqlite_sql_buf, &dba_res);
sqlite3_get_u32_ex(dba_res, 0, "count", &count);
ret->ret.sum = (s32)count;
ret->ret.res_USCOREcount = ret->ret.__size = (s32)count;
if(0 == count)
{
goto label_ret;
}
Info = (struct AvSigsType *)ws_malloc(soap, count * sizeof(struct AvSigsType));
if(NULL == Info)
{
goto label_ret;
}
ret->ret.__ptrres = Info;
sqlite3_res_free_ex(dba_res);
dba_res = NULL;
snprintf(g_sqlite_sql_buf, sizeof(g_sqlite_sql_buf), "SELECT * FROM tb_av_description_category;");
sqlite3_exec_query_ex(dba_con, g_sqlite_sql_buf, &dba_res);
for(i = 0; i < count; i++)
{
sqlite3_get_s32_ex(dba_res, (s32)i, "category_id", &Info[i].value);
sqlite3_get_str_ex(dba_res, (s32)i, "category_name", &tmp);
Info[i].name= ws_strdup(soap, tmp);
}
label_ret:
sqlite3_res_free_ex(dba_res);
dba_res = NULL;
sqlite3_close_ex(dba_con);
dba_con = NULL;
return WS_OK;
}
示例6: cwmp_node_get_TrapDestination
/*******************************************************************************
函数名称 : cwmp_node_get_TrapDestination
功能描述 : 取得Trap接收主机的IP
输入参数 : ws_env 运行环境
输出参数 : get_value 返回值
get_type 返回类型
返 回 值 : 执行成功返回ERR_SUCCESS
否则返回失败
--------------------------------------------------------------------------------
最近一次修改记录 :
修改作者 : 雷宁
修改目的 : 新函数
修改日期 : 2010-03-26
*******************************************************************************/
u32 cwmp_node_get_TrapDestination(WS_ENV* ws_env, s8** get_value, u32 *get_type)
{
char str[STRSIZE]={0};
if(!ERROR_SUCCESS == getSnmpTrapDesIp(str))
{
return ERR_CWMP_INTERNAL;
}
*get_value = ws_strdup(ws_env, str);
*get_type = CWMP_VALUE_TYPE_STRING;
return ERROR_SUCCESS;
}
示例7: cwmp_node_get_ReadWriteCommunity
/*******************************************************************************
函数名称 : cwmp_node_get_ReadWriteCommunity
功能描述 : 取得SNMP读写口令
输入参数 : ws_env 运行环境
输出参数 : get_value 返回值
get_type 返回类型
返 回 值 : 执行成功返回ERR_SUCCESS
否则返回失败
--------------------------------------------------------------------------------
最近一次修改记录 :
修改作者 : 雷宁
修改目的 : 新函数
修改日期 : 2010-03-16
*******************************************************************************/
u32 cwmp_node_get_ReadWriteCommunity(WS_ENV* ws_env, s8** get_value, u32 *get_type)
{
char str[STRSIZE]={0};
if(!ERROR_SUCCESS == snmp_get_sysRwCommon(str, STRSIZE))
{
return ERR_CWMP_INTERNAL;
}
*get_value = ws_strdup(ws_env, str);
*get_type = CWMP_VALUE_TYPE_STRING;
return ERROR_SUCCESS;
}
示例8: cwmp_node_get_contract
/*******************************************************************************
函数名称 : cwmp_node_get_contract
功能描述 : 取得SNMP联系人信息
输入参数 : ws_env 运行环境
输出参数 : get_value 返回值
get_type 返回类型
返 回 值 : 执行成功返回ERR_SUCCESS
否则返回失败
--------------------------------------------------------------------------------
最近一次修改记录 :
修改作者 : 雷宁
修改目的 : 新函数
修改日期 : 2010-03-16
*******************************************************************************/
u32 cwmp_node_get_contract(WS_ENV* ws_env, s8** get_value, u32 *get_type)
{
char str[STRSIZE]={0};
if(!ERROR_SUCCESS == snmp_get_syscontact(str, STRSIZE))
{
return ERR_CWMP_INTERNAL;
}
*get_value = ws_strdup(ws_env, str);
*get_type = CWMP_VALUE_TYPE_STRING;
return ERROR_SUCCESS;
}
示例9: ws_add_req_para_string
/*****************************************************************************
函 数 名 : ws_add_req_para_string
功能描述 : 该接口提供给display/submit流程,用于调用web service
本函数增加一个字符串类型请求参数
字符串空间在外面分配
输入参数 : ws_env ---- web service执行环境
ws_req_res ---- web service参数结构
name ---- 参数名称,外面分配空间
value ---- 参数值
输出参数 : 无
返 回 值 : ERROR_SUCCESS 添加成功
ERROR_SYSTEM 添加失败
调用函数 :
被调函数 :
============================================================================
修改历史 :
1.日 期 : 2008年8月8日
修改内容 : 新生成函数
*****************************************************************************/
u_int32_t ws_add_req_para_string(WS_ENV* ws_env, WS_REQ_RES* ws_req_res,
const char* name, const char* value)
{
WS_PARA *para;
if((NULL == ws_env) || (NULL == ws_req_res))
{
return ERROR_SYSTEM;
}
if (ws_req_res->req_count >= MAX_REQ_PARA_COUNT)
{
char err_string[512] = {0};
snprintf(err_string, sizeof(err_string), "The max number of web service parameter is %d", MAX_REQ_PARA_COUNT);
SubEnv__set_err(err_string);
return ERROR_SYSTEM;
}
para = &(ws_req_res->request[ws_req_res->req_count++]);
para->type = WS_PARA_TYPE_STRING;
para->name = ws_strdup(ws_env, name);
para->data = ws_strdup(ws_env, value);
return ERROR_SUCCESS;
}
示例10: tinfotostatus
/*****************************************************************************
函 数 名 : tinfotostatus
功能描述 : 交换机:把后两个结构体的值赋给第一个结构体。现定每个聚合组最多8个物理端口,因此list长度为1024存ifindex列表远够。
输入参数 : struct port_aggr_bondInfo* aggr_Info ---- 赋值的结构体
struct port_aggr_statusInfo* bond_Info ---- 赋值的结构体
输出参数 : struct AggrStatus* aggrStatus ---- 被赋值结构体
返 回 值 : ERR_OK ---- 执行成功
ws_new_soap_fault ---- 执行失败
-----------------------------------------------------------------------------
最近一次修改记录:
修改作者: liuguang
修改目的: 生成新函数
修改日期: 2009年9月30日
*****************************************************************************/
void tinfotostatus(WS_ENV* soap, struct AggrStatus* aggrStatus, struct port_aggr_bondInfo* aggr_Info, struct port_aggr_statusInfo* bond_Info)
{
s8 name[IFNAMSIZ];
char iflist[1024];
s8 dev_id[32];
aggrStatus->aggrID = (s32)aggr_Info->aggrID;
aggrStatus->aggrType = (s32)aggr_Info->aggrType;
aggrStatus->aggrHash = (s32)aggr_Info->aggrHash;
aggrStatus->aggrName = ws_strdup(soap, aggr_Info->aggrName);
snprintf(dev_id, sizeof(dev_id), "%X,%02X:%02X:%02X:%02X:%02X:%02X", bond_Info->aggrDevID.sys_priority,
bond_Info->aggrDevID.sys_mac_addr.mac_addr_value[0],
bond_Info->aggrDevID.sys_mac_addr.mac_addr_value[1],
bond_Info->aggrDevID.sys_mac_addr.mac_addr_value[2],
bond_Info->aggrDevID.sys_mac_addr.mac_addr_value[3],
bond_Info->aggrDevID.sys_mac_addr.mac_addr_value[4],
bond_Info->aggrDevID.sys_mac_addr.mac_addr_value[5]);
aggrStatus->aggrDevID1 = ws_strdup(soap, dev_id);
if(BOND_STATIC == aggr_Info->aggrType)
{
aggrStatus->aggrDevID2 = ws_strdup(soap, "------");
}
else
{
snprintf(dev_id, sizeof(dev_id), "%X,%02X:%02X:%02X:%02X:%02X:%02X", bond_Info->partner_aggrDevID.sys_priority,
bond_Info->partner_aggrDevID.sys_mac_addr.mac_addr_value[0],
bond_Info->partner_aggrDevID.sys_mac_addr.mac_addr_value[1],
bond_Info->partner_aggrDevID.sys_mac_addr.mac_addr_value[2],
bond_Info->partner_aggrDevID.sys_mac_addr.mac_addr_value[3],
bond_Info->partner_aggrDevID.sys_mac_addr.mac_addr_value[4],
bond_Info->partner_aggrDevID.sys_mac_addr.mac_addr_value[5]);
aggrStatus->aggrDevID2 = ws_strdup(soap, dev_id);
}
/* 不存在或未添加 */
if (0xFFFF == bond_Info->min_port || 0xFFFE == bond_Info->min_port)
{
aggrStatus->aggrMinPort = "";
}
else
{
snprintf(name, sizeof(name), "%d", IFM_GET_ETH_IFINDEX(bond_Info->min_port));
aggrStatus->aggrMinPort = ws_strdup(soap, name);
}
iflist[0] = '\0';
port_aggr_u8toeth_string(iflist, bond_Info->select_ports);
aggrStatus->aggrSelPort = ws_strdup(soap, iflist);
iflist[0] = '\0';
port_aggr_u8toeth_string(iflist, bond_Info->unselect_ports);
aggrStatus->aggrUnsPort = ws_strdup(soap, iflist);
return;
}
示例11: ws__getBgpGlobalInfo
s32 ws__getBgpGlobalInfo(WS_ENV * ws_env, s32 afi, s32 safi, struct BgpGlobalInfoRespone * ret)
{
web_bgp_global_info_t info;
memset(ret,0,sizeof(struct BgpGlobalInfoRespone));
if( 1 != socket_api_request(WEB_BGP_APICMD_GET_GLO,NULL,0,&info,sizeof(web_bgp_global_info_t)) )
return ws_send_soap_error(ws_env,"send getBgpGlobalInfo command error!");
ret->ret.state = info.state;
ret->ret.asid = info.asid ;
ret->ret.disEBGP=info.disEBGP;
ret->ret.disIBGP=info.disIBGP;
ret->ret.disLOCAL=info.disLOCAL;
ret->ret.settype= info.settype;
ret->ret.ebgpmaxpath = info.ebgpmaxpath;
ret->ret.ibgpmaxpath = info.ibgpmaxpath;
ret->ret.grState= info.grState;
ret->ret.grRestart = info.grRestartTime;
ret->ret.grStale = info.grStaleTime ;
ret->ret.rtid = ws_strdup(ws_env, inet_ntoa(info.rtid));
ret->ret.redis= ws_strdup(ws_env,(s8*)info.redis);
return WS_OK;
}
示例12: ws__getLocalUserInfoSync
/*****************************************************************************
函 数 名 : ws__getLocalUserInfoSync
功能描述 : 本地用户远程同步
输入参数 : soap ---- web service执行环境
输出参数 : ret ---- 返回结果
返 回 值 : WS_OK ---- 执行成功
----------------------------------------------------------------------------
----
最近一次修改记录 :
修改作者 : 仇俊杰
修改目的 : 新添加函数
修改日期 : 2011-2-22
*****************************************************************************/
int ws__getLocalUserInfoSync(WS_ENV* ws_env, struct getLocalUserRemoteSyncResponse * ret)
{
CONFIG * cfg = NULL;
cfg = config_load(LOCAL_USER_CFG_PATH);
if (NULL == cfg)
{
return ws_send_soap_error (ws_env, "Open file failed!");
}
ret->ret.umcPort = config_getint(cfg, "umc_port", 80);
ret->ret.umcIp = ws_strdup (ws_env, config_get(cfg, "umc_ip", "127.0.0.1"));
config_free(cfg);
return WS_OK;
}
示例13: ws__getBgpAggInfo
s32 ws__getBgpAggInfo(WS_ENV * ws_env,s32 afi, s32 safi, s32 nstart, s32 nsize, struct BgpAggInfoRespone * ret )
{
struct BgpAggInfo * out = NULL;
web_bgp_aggregate_info_t * info = (void*)buff;
s32 count ,i ;
s32 sum = 0 , max = 0;
u8 iptrans[INET6_ADDRSTRLEN];
u8 *ipret=NULL;
if( socket_api_write(WEB_BGP_APICMD_GET_AGG,NULL,0) < 0 )
return ws_send_soap_error(ws_env,"send command error!");
do{
count = socket_api_read(WEB_BGP_APICMD_GET_AGG,info,SOCKET_API_BUFFER_SIZE);
if( count <= 0 )
{
break;
}
if( max < sum + count )
{
void * tmp = ws_malloc(ws_env,(sum + count)*sizeof(struct BgpAggInfo));
if( out != NULL )
{
memcpy(tmp,out,sum * sizeof(struct BgpAggInfo));
ws_free(ws_env,out);
}
out = tmp ;
max = sum + count ;
}
for(i=0;i<count;i++)
{
ipret = (u8*)inet_ntop((s32)info[i].p.family,(void*)&info[i].p.u,(s8*)iptrans,INET6_ADDRSTRLEN);
if( ipret == NULL )
continue;
out[sum].addr = ws_strdup(ws_env,(s8*)ipret);
out[sum].mask = info[i].p.prefixlen;
out[sum].sonly= info[i].summary_only;
out[sum].asset=info[i].as_set;
sum++;
}
}while( ! socket_api_check_flag(SOCKET_API_FLAG_LASTONE) );
ret->ret.sum = sum ;
ret->ret.__ptrres = out ;
ret->ret.__size = sum ;
ret->ret.res_USCOREcount = sum ;
return WS_OK;
}
示例14: ws__getHotbConfig
/*******************************************************************************
函数名称 : ws__getHotbConfig
功能描述 : 获取双机热备配置信息
输入参数 : soap ---- web service执行环境
输出参数 : ret ---- 返回结果
返 回 值 : WS_OK ---- 执行成功
soapFault ---- 执行失败
--------------------------------------------------------------------------------
最近一次修改记录 :
修改作者 : 吕进
修改目的 : 双机热备配置页面整改
修改日期 : 2010年10月8日
*******************************************************************************/
int ws__getHotbConfig(WS_ENV* soap, struct ws__getHotbConfigResponse *ret)
{
int retcode;
struct hotb_config_s hotb_cfg;
s32 hotbakmode = 0;
retcode = hotb_get_config(&hotb_cfg);
//vsm
s8 vsm_port_name[INTERFACE_NAME_MAX_LENGTH] = {0};
s8* show_name;
s8 state[HOTB_STATE_LEN];
if( 0 == retcode)
{
// 根据双机热备配置信息,获取双机热备配置类型
if (HOTB_SWITCH_ON == hotb_cfg.hotb_switch && HOTB_SILENCE_MODE_ON == hotb_cfg.silenece_mode)
{
ret->ret.hotbakType = HOTB_SILENCE_HOTBAK;
}
else if (HOTB_SWITCH_NON_ON == hotb_cfg.hotb_switch && HOTB_NOT_SUPPORT_NO_SYMMETRY_ROUTE == hotb_cfg.supportNoSymmetryRoute)
{
ret->ret.hotbakType = HOTB_ORDINARY_HOTBAK;
}
else if (HOTB_SWITCH_ON == hotb_cfg.hotb_switch && HOTB_NOT_SUPPORT_NO_SYMMETRY_ROUTE == hotb_cfg.supportNoSymmetryRoute)
{
ret->ret.hotbakType = HOTB_ADVANCED_HOTBAK;
}
else if (HOTB_SWITCH_ON == hotb_cfg.hotb_switch && HOTB_SUPPORT_NO_SYMMETRY_ROUTE == hotb_cfg.supportNoSymmetryRoute)
{
ret->ret.hotbakType = HOTB_NON_SYMMETRY_HOTBAK;
}
else
{
ret->ret.hotbakType = HOTB_CLOSE;
}
ret->ret.ip = ws_strdup(soap, hotb_cfg.hotb_ip);
ifm_name2stack(hotb_cfg.hotb_ifname, vsm_port_name, sizeof(vsm_port_name), &show_name);
ret->ret.ifname = ws_strdup(soap, show_name);
hotb_get_bak_mod(&hotbakmode);
ret->ret.hotbakmode = hotbakmode;
ret->ret.syncname = ws_strdup(soap, hotb_cfg.sync_port);
}
else
{
ret->ret.hotbakType = HOTB_CLOSE;
ret->ret.ip = ws_strdup(soap, "");
ret->ret.ifname = ws_strdup(soap, "");
ret->ret.hotbakmode = 0;
}
hotb_silence_get_state(state);
ret->ret.state = ws_strdup(soap, state);
return WS_OK;
}
示例15: rlt_get_rule_by_policyid
s32 rlt_get_rule_by_policyid(WS_ENV* soap,sqlite3 *db,struct RltRuleInfo *rule_info_list, u32 policyId)
{
s32 sql_ret = SQLITE_OK;
sqlite3_res res = NULL;
s32 res_row;
s8 * unit;
snprintf(g_sqlite_sql_buf, SQLITE_SQL_BUF_SIZE, "SELECT * FROM tb_rlimit_rule where policy_id=%u;", policyId);
sql_ret += sqlite3_exec_query_ex(db, g_sqlite_sql_buf, &res);
while ( SQLITE_OK == (sql_ret += sqlite3_res_next_ex(res, &res_row)) && SQLITE_RES_END != res_row )
{
sql_ret += sqlite3_get_s32_ex(res, res_row, "policy_id", &(rule_info_list[res_row].policyId));
sql_ret += sqlite3_get_s32_ex(res, res_row, "rule_id", &(rule_info_list[res_row].ruleId));
sql_ret += sqlite3_get_s32_ex(res, res_row, "app_group_id", &(rule_info_list[res_row].appId));
sql_ret += sqlite3_get_s32_ex(res, res_row, "cir", &(rule_info_list[res_row].cir));
if (SQLITE_OK != sql_ret)
{
break;
}
sql_ret += sqlite3_get_str_ex(res, res_row, "unit", &unit);
rule_info_list[res_row].unit = ws_strdup(soap,unit);
if (SQLITE_OK != sql_ret)
{
break;
}
}
sqlite3_res_free_ex(res);
res = NULL;
if (SQLITE_OK != sql_ret)
{
return ERROR_FAIL;
}
return ERROR_SUCCESS;
}