![融合idc信息安全管理系统-业务框架处理详细设计说明书_第1页](http://file4.renrendoc.com/view12/M03/3F/24/wKhkGWaDfsmAKUn4AAHvoAwJm3E622.jpg)
![融合idc信息安全管理系统-业务框架处理详细设计说明书_第2页](http://file4.renrendoc.com/view12/M03/3F/24/wKhkGWaDfsmAKUn4AAHvoAwJm3E6222.jpg)
![融合idc信息安全管理系统-业务框架处理详细设计说明书_第3页](http://file4.renrendoc.com/view12/M03/3F/24/wKhkGWaDfsmAKUn4AAHvoAwJm3E6223.jpg)
![融合idc信息安全管理系统-业务框架处理详细设计说明书_第4页](http://file4.renrendoc.com/view12/M03/3F/24/wKhkGWaDfsmAKUn4AAHvoAwJm3E6224.jpg)
![融合idc信息安全管理系统-业务框架处理详细设计说明书_第5页](http://file4.renrendoc.com/view12/M03/3F/24/wKhkGWaDfsmAKUn4AAHvoAwJm3E6225.jpg)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录
目录.................................................................................2
1皿...............................................................................4
2详细设计...........................................................................4
2.1全局常用宏定义.................................................................4
2.2业务链表管理详细设计...........................................................4
2.2.1数据描述....................................................................4
2.2.2函数或流程描述..............................................................7
2.3业务处理设计....................................................................7
2.3.1数据描述.....................................................................7
232函数.........................................................................9
2.4基于业务处理的规则匹配........................................................12
2.4.1数据描述...................................................................12
2.4.2函数........................................................................23
2.5错误处理和调试手段............................................................31
2.5.1命令行......................................................................31
关键词:
摘要:
缩略语清单:〈对本文所用缩略语进行说明,要求提供每个缩略语的英文全名和中文解释。>
缩略语英文全名中文解释
1简介
2详细设计
2.1全局常用宏定义
1.数据长度宏定义
#defineBUSI_DATA_8BYTE_LEN8
#defineBUSI_DATA_16BYTE_LEN16
#defineBUSI_DATA_32BYTE_LEN32
#defineBUSI_DATA_64BYTE_LEN64
#defineBUSI_DATA_128BYTE_LEN128
#defineBUSI_DATA_256BYTE_LEN256
#defineBUSI_DATA_512BYTE_LEN512
#defineBUSI_DATA_1024BYTE_LEN1024
该处定义的宏为业务处理整体模块设计所引用,除非必要在设计与实现流程中禁止采用数字,涉
及数据长度引用的地方均采用宏定义。
2.2业务链表管理详细设计
2.2.1数据描述
1.处理流程
该业务初始处理失败,后愎
不再处理弃息处理状态
2.结构体定义
当前数据结构是根据当前系统需求来添加的,后续如需变更请在当前变量后需添加;请不
要变更结构体已有成员的字节长度以及变量名。
Typedefstructbusi_http_parser_s
(
Uint32_tulHttpInfoTempBitMap;/*临时位图,用来表示在当前数据包处理流程
中,新增的信息*/
Uint32_tulHttpInfoB让Map;展物存■息位图,用来标示,当前处理已提取到哪些完
整信息。
r
enumBUSI_HTTPINFO_E
(
BUSI_HTTPINFO_HOST,
BUSI_HTTPINFO_HOST_END,
BUSI_HTTPINFO_URL,
BUSI_HTTPINFO_URLEND,
BUSI_HTTPINFO_COOKIE,
BUSI_HTTPINFO_COOKIE_END,
BUSI_HTTPINFO_USEFIAGENT,
BUSI_HTTPINFO_USERAGENT_END,
};
7
Uint8_t*pucHttpHost;/*动态申请内存*/
Uint8_t*pucHttpUrl;/*动态申请内存*/
Uint8_t*pucHttpCookie;/*动态申请内存*/
Uint8_t*pucHttpUseragent;/*动态申请内存*/
Uint8JucHttpParserStatus;〃H丁丁尸处理状态
/*
enumBUSI_HTTP_PAFISER_STATUS_S
(
HTTP_PARSER_GET_REQUEST,
HTTP_PARSER_POST_REQUEST,
HTTP_PARSER_REQUEST_CONT!NUE,
HTTP_PARSER_REQUEST_END,〃请求处理完成
HTTP_PAFISER_FIESPONSE,
HTTP_PARSER_RESPONSE_CONTINUE,
HTTP_PARSER_RETRANS_REQUEST,
};
7
Uint16_tusHttpStatus;〃H丁丁尸的龙回状态得
Uint32_t\JX^N曲C\ass\n6ex,〃归属的网站类型;结构化
Uint32_tulWebSitelndex;砥属的站点类型结构化
Structlist_headstKeyld;/*当前URL命中的关键词ID信息,采用freelist方式存储。*/
}busi_httpj3arser_t;
Typedefstructbusi_ftp_parser_s
(
Uint16_tusFtpStatus;/*即状态码*/
charftp_file_name[DATA_64BYTE_LEN];
uint8_tftp_trans_direct;/*传输方向*/
uint8_tftrans_mode;/*传输模式*/
uint32_tfile_size;/*文件大小*/
Tuple_13_tdatajp;/*数据连接ip信息*/
Unsignedshortintdata_port;/*数据连接端口信息*/
}busi_ftpj)arser_t;
Typedefstructbusi_dns_parser_s
Chardomain[DATA_64BYTE_LEN];/*DA/S城名7
Charresult_ip[DATA_64BYTE_LEN];/*CWS建海绩果7
}busi_dns_parser_t;
3.数据描述
1)HTTP业务全局FreeList变量
lib_freelist_t*g_pstBusiHttpFreeList=NULL;
2)DNS业务全局FreeList变量
lib_freelist_t*g_pstBusiDnsFreeList=NULL;
3)FTP业务全局FreeList变量
lib_freelist_t*g_pstBusiFtpFreeList=NULL;
4)VOIP业务全局FreeList变量
lib_freelist_t*g_pstBusiVoipFreeList=NULL;
5)EMAIL业务全局FreeList变量
lib_freelist_t*g_pstBusiEmailFreeList=NULL;
6)RTSP业务全局FreeList变量
lib_freelist_t*g_pstBusiRtspFreeList=NULL;
7)P2P业务全局FreeList变量
lib_freelist_t*g_pstBusiP2pFreeList=NULL;
8)GAME业务全局FreeList变量
lib_freelist_t*gjastBusiGameFreeList=NULL;
9)INSTANT业务全局FreeList变量
lib_freelist_t*g_pstBusilnstantFreeList=NULL;
2.2.2函数或流程描述
1.函数:业务节点freelist的创建
在进程初始化流程调用
lib_freelist_t*Iib_freelist_new(uint8_t*pucName,uint32_tulNodeSize,
uint32_tulThreshholdMin,uint32_tulThreshholdWarn,uint32_tulThreshholdMax)
2.函数:申请业务结点
void*lib_freelist_alloc_node(lib_freelist_t*pstFreelist);
3.函数:归还业务结点
voidlib_freelist_free_node(lib_freelist_t*pstFreelist,void*pstPtr);
2.3业务处理设计
2.3.1数据描述
1.结构体定义
1)业务处理函数结构体
typedefstructbusi_application_func_struct_s
(
〃各业务类型定义的业务解析函数指针。
void(*busi_ApplicationLayerProtocolParser)(ssn_t*,pdesc_t*);
oooooo,
}busi_application_func_struct_t;
/*
enumBUSI_PARSER_TYPE_E
(
BUSI_PARSER_TYPE_HTTP,
BUSI_PARSER_TYPE_DNS,
BUSI_PARSER_TYPE_FTP,
BUSI_PARSER_TYPE_EMAIL,
BUSI_PARSER_TYPE_VOIP,
BUSI_PARSER_TYPE_RTSP,
BUSI_PARSER_TYPE_P2P,
BUSI_PARSER_TYPE_GAME,
BUSI_PARSER_TYPEJNSTANT,
BUSI_PARSER_TYPE_OTHER,
BUSI_PARSER_TYPE_MAX,
);
*/
Application_func_struct_tg_busiParserFunc[BUSI_PARSER_TYPE_MAX];/*务盛"
务对应的处理函数结构体。*/
2)基本统计信息结构体
Typedefstructbusi_static_info_s
(
Uint64_tullUpTra什ic;/*上行流量*/
Uint64_tullDnTra什ic;/*下行流量*/
Uint64JullUpPkts;/*上行报文数*/
Uint64_tullDnPkts;/*下行报文数*/
Uint16_tusSsnCnt;
}busi_static_info_t;
3)会话上基本结构
Typedefstructssn_s
(
void*ps\BuWNode;/*指向具体的业务结点:初始为NULL*/
busi_static_info_t*pstStaticInfo;/*会话初始化对创建,初始化空间*1
}ssn_t;
2.数据描述
全局业务处理控制变量,通过命令行进行配置
Uint32Jg_u旧usiParserContro旧itMap;/*通过命令行投翊用位图的方式表示*/
3.处理流程
2.3.2函数
1.函数:会话处理业务流程
Function://ssn_work
Description://会话处理函数
Calls:
DataAccessed:
DataUpdated:
Input:ssn:会话信息结构,申请的业务结点存放到当前流的会话上。
Taskinfo_disp:dispacher线程描述结构
Pdesc:数据包描述结构
Output://无。
Return:H无
Others:
staticvoidssn_worker(pdesc_t*pstPdesc,ssn_t*pstSsn)
(
/*业务处理部分
/*调用DPT识别引擎,对流进行识别”
〃busi_DpiProc(dpi_ssn_t*dpi_ssn,dpi_pdesc_t*pdesc);
if(/*判断DPI识别是否结束*/)
(
/*DPl识别已经结束,明确当前会话的应用类型*/
If(/*判断当前会话是否己经进行过对应用信息的规则匹配*/)
(
/*没有对应用信息进行规则匹配7
COMPLKUP_PROC();/*调用规则匹配函数*/
/*判断是否有管控类策略命中*/
)
〃调用业务处理函数,进行业务处理
busi_DissectApplicationLayerProtocol(pdescj*pstPdesc,ssn_t
pstSsn);
)
*/
)
2.函数:业务解析处理函数
Function://busi_DissectApplicationLayerProtocol
Description:〃业务解析处理函数
Calls:
DataAccessed:
DataUpdated:
Input:pstSsn:会话信息结构,申请的业务结点存放到当前流的会话上。
pstPdesc:数据包描述结构
Output:“无。
Return:II无
Others:
Voidbusi_DissectApplicationLayerProtocol(pdesc_t*pstPdesc,ssn_t*pstSsn);
If(/*当前业务是否需要处理*/)
(
/*当前业务不需要处理返回*/
Return;
)
Switch"*判断当前业务处理状态*/)
(
Case初始状态:
/*根据DPI识别结果获取业务类型*/
_busi_ApplicationTypeJudgeProc(ssn);
if(/*判断业务类型是否获取成功*/)
(
/*如果获取失败,标记该会话后续不再进行处理*/
Return;
}/*判断当前业务是否进行处理7
If(!(g_ulBusiParserControlBitMap&业务类型))
(
/*如果当前业务不进行处理*/
/*标记该会话后续不再进行处理*/
Return;
)
Return_value=busi_GetFreeListNode(ssn,app_num,taskjdx);
if(return_value==、)/*业务结点获取失败*/
(
/*标记该会话后续不再进行处理*/
Return;
)
Break;
Case正常处理状态:
/*正常处理状态,继续做后续流程处理*/
Break;
Default:
Break;
)
/*调用具体的业务解析函数*/
g_busiParserFunc[/*)lk^-^S*/].application_layer_protocol_parser(taskinfo_disp,
ssn,pdesc);
/*判断是否符合策略匹配条件*/
//Judge_policy_complkup_proc(ssn);
/*对与HTTP业务,当HTTP请求解析完成或匹配到对应的关键词就进行规则匹配*/
/*当前只针对HTTP业务*/
busi_JudgePolicyComplkupFunc();
If(/*具备条件*/)
(
/*满足规则匹配条件*/
COMPLKUP_PROC();/*调用规则匹配函数*/
/*后续判断是否有满足管控类策略匹配,检查并执行动作。*/
/*匹配规则的条件提取顺序*/
)
return;
)
2.4基于业务处理的规则匹配
2.4.1数据描述
1.结构体定义
1)会话基本信息存储结构
/*用户组信息freelist结构体•/
Typedefstructusergroup_freelist_node_s
(
Uint32_tulUserGroupIndex;
Structlist_headstList;
}usergroup_freelist_node_t;
Typedeflib_user_freelist_node_s
(
Uint8_tucUserType;
Uint32_tulUserld;
Structlist_headstList;
}ib_user_freelist_node_t;
/*基本信息结构体,用来存储会话新建阶段获取基本信息,用来进行规则匹配*/
/*该结构体放到会话上*/
Typedefbusi_base_info_s
(
/*采用freelist的方式来存储*/
Structlist_headstUserlnfo;/*勿户一个会话可能会属于多个用户*/
structlist_headstUsergroupInfoList;/*用户级一个会话可能会属于多个用户
组。7
Uint32_tulLinkld;/*^/D7
Uint32_tulSrcAreald;
Uint32JulDstAreald;
}busi_base_info_t;
Typedefstructssn_s
busi_base_info_t*25a泡N。;/*会话初始化时创建,初始化空间*/
}ssn_t;
2)用户信息存储结构
/*用户信息传输结构体,该结构体主要用来策略解析模块向库文件安装模块传输用户信
息*/
Typedefstructlib_policy_userinfo_s
(
Uint8_tucUserName[USER_NAME_LEN];
Uint8_tucUserType;〃用户类型
tupleJ3_tstStartlp;
tupleJ3_tstEndlp;
}lib_policy_userinfo_t;
/*用户组信息传输结构体,该结构体主要用来策略解析模块向库文件安装模块传输用户
组信息*/
Typedefstructlib_policy_usergroup_s
(
Uint8JucUserName[USER_NAME_LEN];
Uint8_tucUserGroupName[USER_NAME_LEN];
}libjDolicy_usergroup_t;
Typedefstructusergroup_freelist_node_s
Uint32_tulUserGroupIndex;
Structlist_headstList;
}usergroup_freelist_node_t;
/*共享内存用户信息线性存储结构,用来存储用户与内部索引的对应关系*/
Typedefstructlib_userinfo_save_s
{
Uint8_tucUserName[USER_NAME_LEN];
structlist_headstUserGroupList;
Uint8_tubvpe:4,/*信息类型,是静态信息,还是动态信息*/
ucAttention:4/*该信息是否关注*I
Uint8_tucUserType;
}lib_userinfo_save_t;
3)用户组信息结构体
/•共享内存用户组信息线性存储结构,用来存储用户组与内部索引的对应关系*/
Typedefstructlib_userinfo_save_s
(
Uint8_tucUserGroupName[USER_NAME_LEN];
}lib_userinfo_save_t;
4)链路信息结构体
/*链路信息传输结构体,该结构体主要用来策略解析模块向库文件安装模块传输链路
信息*1
Typedefstructlib_FlowTrafficlnfo_s
(
Chardirection[BUSI_DATA_8BYTE_LEN];
Charcontent[CONTENT_LEN];
}lib_FlowTrafficlnfo_t;
Typedefstructlib_policy_linkinfo_s
(
Charlink_type[LINK_TYPE_LEN];/*对子同一台。尸/火能存在
一种类型的划分*/
Charlink_name[LINK_NAME_LEN];
Chardev_id[DEVJD_LEN];
lib_FlowTrafficlnfo_tpstFlowTrafficlnfo[2];
}libjDOlicy_linkinfo_t;
/*共享内存链路信息线性存储结构,用来存储链路与内部索引的对应关系*/
Typedefstructlib_linkinfo_save_s
Charlink_name[USER_NAME_LEN];
}lib_linkinfo_save_t;
/*链路信息查找表,以数组线性表的方式存储,以vlan_id或内部物理端口对应的id为数
组下标进行存储*/
Typedefstructlib_linkinfo_lookup_s
(
d\ndex;/*当前物理端口或vlanjd对应的链路在内部存储索引*/
}lib_linkinfo_lookup_t;
5)IP地址库结构体
/*IP地址库信息传输结构体,该结构体主要用来策略解析模块向IP地址库安装模块传
输信息*/
Typedefstruct/串eanameB*传输解析到的区域名信息*/
(
Uint8_tucAreaType;//表示区域类型:AS号或区域名
/*
enumAFIEA_TYPE_E
{
AREA_TYPE_AS”只有AS号
AREA_TYPE_NAME,//只有区域名
AREA_TYPE_NAMEJP,〃区域名与IP地址对应关系
AREA_TYPE_MAX,
};
*/
Uint8_tucAreaName[AREA_NAME_LEN];
TupleJ3_tipaddr;
}lib_policy_areaname_t;
/*共享内存用户信息线性存储结构,用来存储用户与内部索引的对应关系*/
Typedefstructlib_areainfo_save_s
(
Uint8_tucAreaName[USER_NAME_LEN];
Uint8_tucIntfoType:4,/*信息类型,是静态信息,还是动态信息*/
ucAttention;/*该信息是否关注*/
}lib_areainfo_save_t;
/*IP地址和用户的对应关系存储,调用动态信息同步模块接口*/
6)WEB分类库
/*WEB分类库信息传输结构体,该结构体主要用来策略解析模块向WEB分类安装模块
传输信息*/
Typedefstructlib_policy_webinfo_s/*H/EB班点信意、网站类型信息结构体*/
(
Uint8_tucInfoType;/*信息类型:站点信息;网站类型信息;URL归属信息;
域名归属信息*/
/*
enumWEBINFO_TYPE_E
(
WEBINFO_TYPE_WEBSITE,
WEBINFO_TYPE_WEBCLASS,
WEBINFO_TYPEJJRLINFO,
WEBINFO_TYPE_DOMAININFO,
WEBINFO_TYPE_MAX,
};
7
Uint8_tucWebSiteName[BUSI_DATA_8BYTE_LEN];
Uint8_tucWebClassName[BUSI_DATA_8BYTE_LEN];
Uint8_tucWeblnfo[BUSI_DATA_128BYTE_LEN];
}lib_policy_webinfo_t;
/*WEB分类库HASH存储结构,以URL为key值*/
/*采用模糊匹配*/
Typdefstructlib_webinf_hash_data_s
(
Unit32_tulWebSitelndex;
Unit32_tulWebClassIndex;
}lib_webinfo_hash_data_t;
/*WEB分类库信息线性存储结构,用来存储站点名与内部索引的对应关系,以内部索
引为类型*/
Typedefstructlib_websiteinfo_save_s
(
Uint8_tucWebSiteName[HTTP_WEBSITE_NAME_LEN];
}lib_websiteinfo_save_t;
/•用来存储站点类型名与内部索引的对应关系,以内部索引为类型*/
Typedefstructlib_webclassinfo_save_s
Uint8_tucWebClassName[HTTP_WEBCLASS_NAME_LEN];
}lib_webclassinfo_save_t;
7)关键词信息结构体
/*关键词信息传输结构体,该结构体主要用来策略解析模块向WEB分类安装
模块传输信息*/
Typedefstructlib_keyinfo_s
(
Uint32_tullCommandld;〃关键词对应的实际策略的Policyld;
Uint8_tucKeylndex;//当前关键词在策略中所属条件编号
L)int32_tullPolicyVersion;//关键词对应的实际策略的版本号
Uint8_tucKeylnfo[KEYINFO_LEN];
}lib_keyinfo_t;
/*用来存储站点类型名与内部索引的对应关系,以内部索引为类型*/
Typedefstructlib_keyinfo_save_s
(
Structlist_headstList;//用来存储关键词信息
}lib_keyinfo_save_t;
8)线性表结构
StructStruct;|Struct^蒯睡:
lib_xxxinfo_lib_xxxinfo_lib_xxxinfo_lib_xxxinfo_
save_tsave_tsave」save_t
StructStructStructStruct
lib_xxxinfo_lib_xxxinfo_lib_xxxinfo_lib_xxxinfo_
savetsavetsavetsavet
/*线性内部存储表结构*/
TypdefStructlib_xxxinfotable_s
(
Uint8_tucTableld;/*各库信息的内部版本号*/
Uint32_tullnfoCnt;/*记录当前线性表的使用的节点数*/
Lib_xxxinfo_save_t*pstxxxinfo;
}lib_xxxinfotable_t;
lib_xxxinfotable_t*g_pstXxxlnfotable[2];
2.数据描述:
1)全局FreeList表变量
/*全局Id存储FreeList变量*/
Typedefstructpolicy_interld_s
Structlist_headstList;
Policylnterld_tstPolicylnterlD;
}policy_interld_t;
lib_freelist_t*g_pstPolicylnterlDFreeList=NULL;
2)用户信息相关变量定义
Uint8_tg_ucUserLibTableld;〃记录当前正在使用的用户信息内部存储表的ID号。
Uint8_tg_ucUserLibTablePlcyld;〃当前正在使用的用户信息内部策略版本号,从。开
始。
Uint8_tg_ucllserLibTablePlcyNewld;〃当前用户信息内部最新策略版本号,从。开
始。
lib_userinfo_save_t*g_pstUserlnfoTablellsed;//当前正在使用的用户信息内部存储
表。
3)链路信息相关变量定义
Uint8」g_ucLinkLibTableld;〃记录当前正在使用的链路信息内部存储表的ID号。
Uint8_tg_ucLlnkLibTablePlcyld;//当前正在使用的链路信息内部策略版本号。
Uint8_tg_ucLlnkLibTablePlcyNewld;//当前链路信息内部最新策略版本号。
lib_linkinfo_save_t*gjostLinklnfoTablellsed;//记录当前正在使用的链路信息内部存
储表
4)IP地址库(区域)信息
Uint8_tg_ucAreaLibTableld;〃记录当前正在使用的区域信息内部存储表的ID号。
Uint8_tg_ucsAreaLibTablePlcyld;〃当前正在使用的链路信息内部策略版本号。
Uint8_tg_ucAreaLibTablePlcyNewld;〃当前链路信息内部最新策略版本号。
lib_areainfo_save_t*g_pstArealnfoTableUsed;//当前正在使用的区域信息内部存储
表。
5)WEB分类库
Uint8_tg_ucWebLibTableld;〃记录当前正在使用的Web分类信息内部存储表的ID号。
Uint8_tg_ucWebLibTablePlcyld;〃当前正在使用的Web分类信息内部策略版本号。
Uint8_tg_ucWebLibTablePlcyNewld;〃当前Web分类信息内部最新策略版本号。
lib_areainfo_save_t*g_pstWeblnfoTableUsed;//当前正在使用的Web分类信息内部
存储表。
6)关键词信息
Uint8_tg_ucWebLibTableld;//记录当前正在使用的Web分类信息内部存储表的ID
号。
Uint8_tg_ucKeyTablePlcyld;〃当前正在使用的关键词信息内部策略版本号。
Uint8_tg_ucKeyTablePlcyNewld;〃当前关键词信息信息内部最新策略版本号。
lib_key_acsearch_t*g_pstKeyAcSearchEgine;//当前正在使用的关键词匹配引擎。
7)相关库信息内部关联ID的计算方式
Uint32_txxxjnfo_index;/*xxx表示具体的库信息类型*/
高8位来表示当前使用的该类型库信息存储表的内部策略版本号;
低24位用来表示信息在当前存储表中的实际索引值。
/*转化为结构体*/
TypedefUnion
(
Struct
(
Uint32_tucPolicylnterVer:8,
ulPolicylnterlndex:24;
Jinterld;
Uint32_tall;
}Policylnterld_t;
3.处理流程
1)策略变更流程
更新相应类型库信息
获取当前未使用的内部将最新的版本号
;清理获取的未使用的的内部最新版本号.
策略解析模块存储表的ID号,通过更新到未使用表
|内部存储表空间,清将
策略发生变更jusXxxLibTablcld来判的结构变舜中
空所有数据g_usXxxLibTablePlcy
断ucTabelD
Newld自增I
用户与IP地址关系的安装,区域与IP地址关系的安装在HASH节点中存储的是
g_usXxxLibPlcyNewld;
策略切换流程
更新当前正在使用的
更新当前正在使用的内
内部策略版本号更新正在使用的库信
部存储表的ID号,
主备表切换消息g_usXxxLibTablcPlcykl为息内部存储表
g_usXxxLibTablekl更新为最g_usXxxLibTablePlcy
新的库信息存储装的ID号
Newld
3)规则匹配流程
会话处理和DPI识别阶段
记录用户在内部存储的2号(内前
1«木号♦实以内部索引值)
上记录用户蛆信息的结构
E4案・为zuu.
寓所熊用户信息记点到"让.以
式存储
HTTP业务处理
4)关联查询流程
处理结束
根据名称查询内部索引值
存在
要查询的库信息
(用户名、区域
名、链路名等)
根据内部索引值获取对应的库信息名称
2.4.2函数
1.函数:HASH算法
/*根据字符串获取Hash_key值的算法*/
Function://_busi_BkdrHashFunc
Description:〃根据字符串获取对应的HASH值
Calls:
DataAccessed:
DataUpdated:
Input:pucSt:字符串指针
ulHashBitMap:HASH表位图
Output:II无。
Return:II无
Others:
Uint32_t_busi_BkdrHashFunc(uint8_t*pucStr,uint32_tulHashBitMap)
Uint32_tulSeed=131;〃累乘因子31131131313131131313
Uint32_tulHash=0;
While(*pucStr!=0)
{
ulHash=(ulHash*ulSeed)+(*pucStr++);
)
Return(ulHash&ulHashBitmap)
)
2.函数:安装用户信息,并进行存储
Function://Hb_lnstallUserlnfoToLinearList
Description://安装用户信息到线性表中
Calls:
DataAccessed:
DataUpdated:
Input:userinfo:用户信息结构体
Output:H无°
Return:"无
Others:
Int32_tlib_lnstallllserlnfoToLinearList(lib_policy_userinfo_t*pstUserlnfo)
(
/*根据用户名查找在线性表中当前用户是否存在*/
If(当前用户存在)
(
Returnuserjndex;
)
/*不存在,添加用户名到索引表中,并返回用户内部索引*/
lf(linear_list==FULL)〃检查线性表是否处于FULL
(
Return;
)
Returnuser_new_index;
}
/*将用户信息安装到HASH存储表中,调用动态信息同步信息安装接口*/
DYNAMIC_INSTALL_USERINFO_API();
3.函数:安装区域信息
Function://lib_lnstallArealnfoToLinearList
Description://安装用户信息到线性表中
Calls:
DataAccessed:
DataUpdated:
Input:userinfo:用户信息结构体
Output:II无。
Return:“无
Others:
Int32_tlib_lnstallArealnfoToLinearList(lib_policy_areaname_t*pstAreaInfo)
(
)
/*将用户信息安装到HASH存储表中,调用动态信息同步信息安装接口*/
DYNAMIC」NSTALL_AREAINFO_API();
4.函数:安装链路信息
Function://Hb_lnstallLinklnfoToLinearList
Description:〃安装链路信息到线性表中
Calls:
DataAccessed:
DataUpdated:
Input:userinfo:用户信息结构体
Output:II无°
Return:II无
Others:
Intlib_lnstallLinklnfoToLinearList(lib_policy_linkinfo__tlinkinfo)
/*如果是vlan_id,则直接以vlan_id为线性索引值,进行安装*/
If(vlan_id)/*vlan_id&&vlanjd没有超过线性表的最大值*/
If(信息已存在)
Returnlink_old_index;
)
&ARRAY[vlan_id];
Returnlink_new_index;
)
If(物理口)
(
/*根据物理口名称,查找内部编号intfjd,以内部编号为线性索引值*/
If(信息已存在)
(
Returnlink_old_index;
)
&ARRAY[intf_id];
Returnlink_new_index;
}
)
5.函数:安装WEB分类库
Function://Hb_lnstallLinklnfoToLinearList(CP)
Description:〃安装链路信息到线性表中
Calls:
DataAccessed:
DataUpdated:
Input:userinfo:用户信息结构体
Output:II无。
Return:H无
Others:
Intlib_lnstallWeblnfoToLinearList(libjDolicy_webinfo_t*pstWebinfo)
(
/*判断是站点名称还是网站类型*/
if(站点名称信息)
(
/*安装到站点名称线性表中*/
Jib_installWebSitelnfoToLinearList(lib_policy_webinfo_tWebinfo);
)
If(网站类型分类信息)
/*安装到网站类型分类名称线性表中*/
Jib_installWebClasslnfoToLinearList(lib_policy_webinfo_tWebinfo);
)
)
6.获取:用户、用户组、链路信息、区域信息(会话处理阶段)
Function://busi_GetUserlnfo
Description://获取用户信息
Calls:
DataAccessed:
DataUpdated:
Input:ssn:会话信息结构,申请的业务结点存放到当前流的会话上
Output://无。
Return:“无
Others:
获取用户信息、用户组信息
Voidbusi_Getllserlnfo(ssn_t*ssn)
(
/*调用查询接口,查找归属的用户信息并存储*/
/*如果查不到对应的用户信息,则用户ID默认为Oxffff*/
DYNAMIC_API(DYNAMIC_STRUCT,func);
)
Function://busi_GetLinklnfo
Description://获取链路信息
Calls:
DataAccessed:
DataUpdated:
Input:ssn:会话信息结构,申请的业
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年全国企业事业单位考试之职业能力倾向测验考试重点黑金模拟题附答案995
- 2024年全国土地登记代理人之土地权利理论与方法考试历年考试题详细参考解析
- 2024年全国软件水平考试之中级信息系统监理师考试重点试卷(详细参考解析)
- DL∕T 1936-2018 配电自动化系统安全防护技术导则
- DL∕T 1835-2018 燃气轮机及联合循环机组启动调试导则
- DL∕T 1709.9-2017 智能电网调度控制系统技术规范 第9部分:软件测试
- 有关出纳的担保书范文
- 有关学生实习心得体会
- 三年级下册数学期中试卷人教版
- 有关学生实习报告锦集九篇
- (正式版)JB∕T 14735-2024 承压类奥氏体不锈钢铸件热处理规程
- 2024广西体育局部分直属事业单位招聘33人历年(高频重点提升专题训练)共500题附带答案详解
- 楼层梁局部加固工程施工方案
- 婚庆花艺服务合同样本
- 住建部劳务分包合同(2024版)
- 食堂食材配送服务各项管理制度
- 河南省安阳市滑县2023-2024学年八年级下册5月月考道德与法治试题(附答案)
- 9.19多项式除以单项式-练习-七年级数学沪教版(上海)上册
- 小学数学主题活动设计一年级《欢乐购物街》
- 2024年中国东方资产管理公司招聘笔试冲刺题(带答案解析)
- 小美满合唱五线谱总谱
评论
0/150
提交评论