融合idc信息安全管理系统-业务框架处理详细设计说明书_第1页
融合idc信息安全管理系统-业务框架处理详细设计说明书_第2页
融合idc信息安全管理系统-业务框架处理详细设计说明书_第3页
融合idc信息安全管理系统-业务框架处理详细设计说明书_第4页
融合idc信息安全管理系统-业务框架处理详细设计说明书_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目录

目录.................................................................................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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论