当前位置: 首页>>代码示例>>C++>>正文


C++ ws_strdup函数代码示例

本文整理汇总了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;
}
开发者ID:millken,项目名称:zhuxianB30,代码行数:41,代码来源:ws_in_call.c

示例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;
}
开发者ID:millken,项目名称:zhuxianB30,代码行数:21,代码来源:ws_dns_proxy.c

示例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;
}
开发者ID:millken,项目名称:zhuxianB30,代码行数:65,代码来源:ws_flux_manage.c

示例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;

}
开发者ID:millken,项目名称:zhuxianB30,代码行数:64,代码来源:ws_mld.c

示例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;
}
开发者ID:millken,项目名称:zhuxianB30,代码行数:52,代码来源:ws_av_policy.c

示例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;    
}
开发者ID:millken,项目名称:zhuxianB30,代码行数:27,代码来源:cwmp_node_snmp.c

示例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;    
}
开发者ID:millken,项目名称:zhuxianB30,代码行数:27,代码来源:cwmp_node_snmp.c

示例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;    
}
开发者ID:millken,项目名称:zhuxianB30,代码行数:27,代码来源:cwmp_node_snmp.c

示例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;
}
开发者ID:millken,项目名称:zhuxianB30,代码行数:44,代码来源:ws_in_call.c

示例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;
}
开发者ID:millken,项目名称:zhuxianB30,代码行数:67,代码来源:ws_bond.c

示例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;
}
开发者ID:millken,项目名称:zhuxianB30,代码行数:23,代码来源:ws_bgp.c

示例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;
}
开发者ID:millken,项目名称:zhuxianB30,代码行数:27,代码来源:ws_localauth_user_cfg.c

示例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;
}
开发者ID:millken,项目名称:zhuxianB30,代码行数:50,代码来源:ws_bgp.c

示例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;
}
开发者ID:millken,项目名称:zhuxianB30,代码行数:70,代码来源:ws_hotbackup.c

示例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;
}
开发者ID:millken,项目名称:zhuxianB30,代码行数:49,代码来源:ws_rlimit.c


注:本文中的ws_strdup函数示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。