




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
目錄
目錄.................................................................................2
1皿...............................................................................4
2詳細(xì)設(shè)計(jì)...........................................................................4
2.1全局常用宏定義.................................................................4
2.2業(yè)務(wù)鏈表管理詳細(xì)設(shè)計(jì)...........................................................4
2.2.1數(shù)據(jù)描述....................................................................4
2.2.2函數(shù)或流程描述..............................................................7
2.3業(yè)務(wù)處理設(shè)計(jì)....................................................................7
2.3.1數(shù)據(jù)描述.....................................................................7
232函數(shù).........................................................................9
2.4基于業(yè)務(wù)處理的規(guī)則匹配........................................................12
2.4.1數(shù)據(jù)描述...................................................................12
2.4.2函數(shù)........................................................................23
2.5錯(cuò)誤處理和調(diào)試手段............................................................31
2.5.1命令行......................................................................31
關(guān)鍵詞:
摘要:
縮略語(yǔ)清單:〈對(duì)本文所用縮略語(yǔ)進(jìn)行說(shuō)明,要求提供每個(gè)縮略語(yǔ)的英文全名和中文解釋。>
縮略語(yǔ)英文全名中文解釋
1簡(jiǎn)介
2詳細(xì)設(shè)計(jì)
2.1全局常用宏定義
1.數(shù)據(jù)長(zhǎng)度宏定義
#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
該處定義的宏為業(yè)務(wù)處理整體模塊設(shè)計(jì)所引用,除非必要在設(shè)計(jì)與實(shí)現(xiàn)流程中禁止采用數(shù)字,涉
及數(shù)據(jù)長(zhǎng)度引用的地方均采用宏定義。
2.2業(yè)務(wù)鏈表管理詳細(xì)設(shè)計(jì)
2.2.1數(shù)據(jù)描述
1.處理流程
該業(yè)務(wù)初始處理失敗,后愎
不再處理?xiàng)壪⑻幚頎顟B(tài)
2.結(jié)構(gòu)體定義
當(dāng)前數(shù)據(jù)結(jié)構(gòu)是根據(jù)當(dāng)前系統(tǒng)需求來(lái)添加的,后續(xù)如需變更請(qǐng)?jiān)诋?dāng)前變量后需添加;請(qǐng)不
要變更結(jié)構(gòu)體已有成員的字節(jié)長(zhǎng)度以及變量名。
Typedefstructbusi_http_parser_s
(
Uint32_tulHttpInfoTempBitMap;/*臨時(shí)位圖,用來(lái)表示在當(dāng)前數(shù)據(jù)包處理流程
中,新增的信息*/
Uint32_tulHttpInfoB讓Map;展物存■息位圖,用來(lái)標(biāo)示,當(dāng)前處理已提取到哪些完
整信息。
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;/*動(dòng)態(tài)申請(qǐng)內(nèi)存*/
Uint8_t*pucHttpUrl;/*動(dòng)態(tài)申請(qǐng)內(nèi)存*/
Uint8_t*pucHttpCookie;/*動(dòng)態(tài)申請(qǐng)內(nèi)存*/
Uint8_t*pucHttpUseragent;/*動(dòng)態(tài)申請(qǐng)內(nèi)存*/
Uint8JucHttpParserStatus;〃H丁丁尸處理狀態(tài)
/*
enumBUSI_HTTP_PAFISER_STATUS_S
(
HTTP_PARSER_GET_REQUEST,
HTTP_PARSER_POST_REQUEST,
HTTP_PARSER_REQUEST_CONT!NUE,
HTTP_PARSER_REQUEST_END,〃請(qǐng)求處理完成
HTTP_PAFISER_FIESPONSE,
HTTP_PARSER_RESPONSE_CONTINUE,
HTTP_PARSER_RETRANS_REQUEST,
};
7
Uint16_tusHttpStatus;〃H丁丁尸的龍回狀態(tài)得
Uint32_t\JX^N曲C\ass\n6ex,〃歸屬的網(wǎng)站類(lèi)型;結(jié)構(gòu)化
Uint32_tulWebSitelndex;砥屬的站點(diǎn)類(lèi)型結(jié)構(gòu)化
Structlist_headstKeyld;/*當(dāng)前URL命中的關(guān)鍵詞ID信息,采用freelist方式存儲(chǔ)。*/
}busi_httpj3arser_t;
Typedefstructbusi_ftp_parser_s
(
Uint16_tusFtpStatus;/*即狀態(tài)碼*/
charftp_file_name[DATA_64BYTE_LEN];
uint8_tftp_trans_direct;/*傳輸方向*/
uint8_tftrans_mode;/*傳輸模式*/
uint32_tfile_size;/*文件大小*/
Tuple_13_tdatajp;/*數(shù)據(jù)連接ip信息*/
Unsignedshortintdata_port;/*數(shù)據(jù)連接端口信息*/
}busi_ftpj)arser_t;
Typedefstructbusi_dns_parser_s
Chardomain[DATA_64BYTE_LEN];/*DA/S城名7
Charresult_ip[DATA_64BYTE_LEN];/*CWS建海績(jī)果7
}busi_dns_parser_t;
3.數(shù)據(jù)描述
1)HTTP業(yè)務(wù)全局FreeList變量
lib_freelist_t*g_pstBusiHttpFreeList=NULL;
2)DNS業(yè)務(wù)全局FreeList變量
lib_freelist_t*g_pstBusiDnsFreeList=NULL;
3)FTP業(yè)務(wù)全局FreeList變量
lib_freelist_t*g_pstBusiFtpFreeList=NULL;
4)VOIP業(yè)務(wù)全局FreeList變量
lib_freelist_t*g_pstBusiVoipFreeList=NULL;
5)EMAIL業(yè)務(wù)全局FreeList變量
lib_freelist_t*g_pstBusiEmailFreeList=NULL;
6)RTSP業(yè)務(wù)全局FreeList變量
lib_freelist_t*g_pstBusiRtspFreeList=NULL;
7)P2P業(yè)務(wù)全局FreeList變量
lib_freelist_t*g_pstBusiP2pFreeList=NULL;
8)GAME業(yè)務(wù)全局FreeList變量
lib_freelist_t*gjastBusiGameFreeList=NULL;
9)INSTANT業(yè)務(wù)全局FreeList變量
lib_freelist_t*g_pstBusilnstantFreeList=NULL;
2.2.2函數(shù)或流程描述
1.函數(shù):業(yè)務(wù)節(jié)點(diǎn)freelist的創(chuàng)建
在進(jìn)程初始化流程調(diào)用
lib_freelist_t*Iib_freelist_new(uint8_t*pucName,uint32_tulNodeSize,
uint32_tulThreshholdMin,uint32_tulThreshholdWarn,uint32_tulThreshholdMax)
2.函數(shù):申請(qǐng)業(yè)務(wù)結(jié)點(diǎn)
void*lib_freelist_alloc_node(lib_freelist_t*pstFreelist);
3.函數(shù):歸還業(yè)務(wù)結(jié)點(diǎn)
voidlib_freelist_free_node(lib_freelist_t*pstFreelist,void*pstPtr);
2.3業(yè)務(wù)處理設(shè)計(jì)
2.3.1數(shù)據(jù)描述
1.結(jié)構(gòu)體定義
1)業(yè)務(wù)處理函數(shù)結(jié)構(gòu)體
typedefstructbusi_application_func_struct_s
(
〃各業(yè)務(wù)類(lèi)型定義的業(yè)務(wù)解析函數(shù)指針。
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];/*務(wù)盛"
務(wù)對(duì)應(yīng)的處理函數(shù)結(jié)構(gòu)體。*/
2)基本統(tǒng)計(jì)信息結(jié)構(gòu)體
Typedefstructbusi_static_info_s
(
Uint64_tullUpTra什ic;/*上行流量*/
Uint64_tullDnTra什ic;/*下行流量*/
Uint64JullUpPkts;/*上行報(bào)文數(shù)*/
Uint64_tullDnPkts;/*下行報(bào)文數(shù)*/
Uint16_tusSsnCnt;
}busi_static_info_t;
3)會(huì)話(huà)上基本結(jié)構(gòu)
Typedefstructssn_s
(
void*ps\BuWNode;/*指向具體的業(yè)務(wù)結(jié)點(diǎn):初始為NULL*/
busi_static_info_t*pstStaticInfo;/*會(huì)話(huà)初始化對(duì)創(chuàng)建,初始化空間*1
}ssn_t;
2.數(shù)據(jù)描述
全局業(yè)務(wù)處理控制變量,通過(guò)命令行進(jìn)行配置
Uint32Jg_u舊usiParserContro舊itMap;/*通過(guò)命令行投翊用位圖的方式表示*/
3.處理流程
2.3.2函數(shù)
1.函數(shù):會(huì)話(huà)處理業(yè)務(wù)流程
Function://ssn_work
Description://會(huì)話(huà)處理函數(shù)
Calls:
DataAccessed:
DataUpdated:
Input:ssn:會(huì)話(huà)信息結(jié)構(gòu),申請(qǐng)的業(yè)務(wù)結(jié)點(diǎn)存放到當(dāng)前流的會(huì)話(huà)上。
Taskinfo_disp:dispacher線(xiàn)程描述結(jié)構(gòu)
Pdesc:數(shù)據(jù)包描述結(jié)構(gòu)
Output://無(wú)。
Return:H無(wú)
Others:
staticvoidssn_worker(pdesc_t*pstPdesc,ssn_t*pstSsn)
(
/*業(yè)務(wù)處理部分
/*調(diào)用DPT識(shí)別引擎,對(duì)流進(jìn)行識(shí)別”
〃busi_DpiProc(dpi_ssn_t*dpi_ssn,dpi_pdesc_t*pdesc);
if(/*判斷DPI識(shí)別是否結(jié)束*/)
(
/*DPl識(shí)別已經(jīng)結(jié)束,明確當(dāng)前會(huì)話(huà)的應(yīng)用類(lèi)型*/
If(/*判斷當(dāng)前會(huì)話(huà)是否己經(jīng)進(jìn)行過(guò)對(duì)應(yīng)用信息的規(guī)則匹配*/)
(
/*沒(méi)有對(duì)應(yīng)用信息進(jìn)行規(guī)則匹配7
COMPLKUP_PROC();/*調(diào)用規(guī)則匹配函數(shù)*/
/*判斷是否有管控類(lèi)策略命中*/
)
〃調(diào)用業(yè)務(wù)處理函數(shù),進(jìn)行業(yè)務(wù)處理
busi_DissectApplicationLayerProtocol(pdescj*pstPdesc,ssn_t
pstSsn);
)
*/
)
2.函數(shù):業(yè)務(wù)解析處理函數(shù)
Function://busi_DissectApplicationLayerProtocol
Description:〃業(yè)務(wù)解析處理函數(shù)
Calls:
DataAccessed:
DataUpdated:
Input:pstSsn:會(huì)話(huà)信息結(jié)構(gòu),申請(qǐng)的業(yè)務(wù)結(jié)點(diǎn)存放到當(dāng)前流的會(huì)話(huà)上。
pstPdesc:數(shù)據(jù)包描述結(jié)構(gòu)
Output:“無(wú)。
Return:II無(wú)
Others:
Voidbusi_DissectApplicationLayerProtocol(pdesc_t*pstPdesc,ssn_t*pstSsn);
If(/*當(dāng)前業(yè)務(wù)是否需要處理*/)
(
/*當(dāng)前業(yè)務(wù)不需要處理返回*/
Return;
)
Switch"*判斷當(dāng)前業(yè)務(wù)處理狀態(tài)*/)
(
Case初始狀態(tài):
/*根據(jù)DPI識(shí)別結(jié)果獲取業(yè)務(wù)類(lèi)型*/
_busi_ApplicationTypeJudgeProc(ssn);
if(/*判斷業(yè)務(wù)類(lèi)型是否獲取成功*/)
(
/*如果獲取失敗,標(biāo)記該會(huì)話(huà)后續(xù)不再進(jìn)行處理*/
Return;
}/*判斷當(dāng)前業(yè)務(wù)是否進(jìn)行處理7
If(!(g_ulBusiParserControlBitMap&業(yè)務(wù)類(lèi)型))
(
/*如果當(dāng)前業(yè)務(wù)不進(jìn)行處理*/
/*標(biāo)記該會(huì)話(huà)后續(xù)不再進(jìn)行處理*/
Return;
)
Return_value=busi_GetFreeListNode(ssn,app_num,taskjdx);
if(return_value==、)/*業(yè)務(wù)結(jié)點(diǎn)獲取失敗*/
(
/*標(biāo)記該會(huì)話(huà)后續(xù)不再進(jìn)行處理*/
Return;
)
Break;
Case正常處理狀態(tài):
/*正常處理狀態(tài),繼續(xù)做后續(xù)流程處理*/
Break;
Default:
Break;
)
/*調(diào)用具體的業(yè)務(wù)解析函數(shù)*/
g_busiParserFunc[/*)lk^-^S*/].application_layer_protocol_parser(taskinfo_disp,
ssn,pdesc);
/*判斷是否符合策略匹配條件*/
//Judge_policy_complkup_proc(ssn);
/*對(duì)與HTTP業(yè)務(wù),當(dāng)HTTP請(qǐng)求解析完成或匹配到對(duì)應(yīng)的關(guān)鍵詞就進(jìn)行規(guī)則匹配*/
/*當(dāng)前只針對(duì)HTTP業(yè)務(wù)*/
busi_JudgePolicyComplkupFunc();
If(/*具備條件*/)
(
/*滿(mǎn)足規(guī)則匹配條件*/
COMPLKUP_PROC();/*調(diào)用規(guī)則匹配函數(shù)*/
/*后續(xù)判斷是否有滿(mǎn)足管控類(lèi)策略匹配,檢查并執(zhí)行動(dòng)作。*/
/*匹配規(guī)則的條件提取順序*/
)
return;
)
2.4基于業(yè)務(wù)處理的規(guī)則匹配
2.4.1數(shù)據(jù)描述
1.結(jié)構(gòu)體定義
1)會(huì)話(huà)基本信息存儲(chǔ)結(jié)構(gòu)
/*用戶(hù)組信息freelist結(jié)構(gòu)體?/
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;
/*基本信息結(jié)構(gòu)體,用來(lái)存儲(chǔ)會(huì)話(huà)新建階段獲取基本信息,用來(lái)進(jìn)行規(guī)則匹配*/
/*該結(jié)構(gòu)體放到會(huì)話(huà)上*/
Typedefbusi_base_info_s
(
/*采用freelist的方式來(lái)存儲(chǔ)*/
Structlist_headstUserlnfo;/*勿戶(hù)一個(gè)會(huì)話(huà)可能會(huì)屬于多個(gè)用戶(hù)*/
structlist_headstUsergroupInfoList;/*用戶(hù)級(jí)一個(gè)會(huì)話(huà)可能會(huì)屬于多個(gè)用戶(hù)
組。7
Uint32_tulLinkld;/*^/D7
Uint32_tulSrcAreald;
Uint32JulDstAreald;
}busi_base_info_t;
Typedefstructssn_s
busi_base_info_t*25a泡N。;/*會(huì)話(huà)初始化時(shí)創(chuàng)建,初始化空間*/
}ssn_t;
2)用戶(hù)信息存儲(chǔ)結(jié)構(gòu)
/*用戶(hù)信息傳輸結(jié)構(gòu)體,該結(jié)構(gòu)體主要用來(lái)策略解析模塊向庫(kù)文件安裝模塊傳輸用戶(hù)信
息*/
Typedefstructlib_policy_userinfo_s
(
Uint8_tucUserName[USER_NAME_LEN];
Uint8_tucUserType;〃用戶(hù)類(lèi)型
tupleJ3_tstStartlp;
tupleJ3_tstEndlp;
}lib_policy_userinfo_t;
/*用戶(hù)組信息傳輸結(jié)構(gòu)體,該結(jié)構(gòu)體主要用來(lái)策略解析模塊向庫(kù)文件安裝模塊傳輸用戶(hù)
組信息*/
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;
/*共享內(nèi)存用戶(hù)信息線(xiàn)性存儲(chǔ)結(jié)構(gòu),用來(lái)存儲(chǔ)用戶(hù)與內(nèi)部索引的對(duì)應(yīng)關(guān)系*/
Typedefstructlib_userinfo_save_s
{
Uint8_tucUserName[USER_NAME_LEN];
structlist_headstUserGroupList;
Uint8_tubvpe:4,/*信息類(lèi)型,是靜態(tài)信息,還是動(dòng)態(tài)信息*/
ucAttention:4/*該信息是否關(guān)注*I
Uint8_tucUserType;
}lib_userinfo_save_t;
3)用戶(hù)組信息結(jié)構(gòu)體
/?共享內(nèi)存用戶(hù)組信息線(xiàn)性存儲(chǔ)結(jié)構(gòu),用來(lái)存儲(chǔ)用戶(hù)組與內(nèi)部索引的對(duì)應(yīng)關(guān)系*/
Typedefstructlib_userinfo_save_s
(
Uint8_tucUserGroupName[USER_NAME_LEN];
}lib_userinfo_save_t;
4)鏈路信息結(jié)構(gòu)體
/*鏈路信息傳輸結(jié)構(gòu)體,該結(jié)構(gòu)體主要用來(lái)策略解析模塊向庫(kù)文件安裝模塊傳輸鏈路
信息*1
Typedefstructlib_FlowTrafficlnfo_s
(
Chardirection[BUSI_DATA_8BYTE_LEN];
Charcontent[CONTENT_LEN];
}lib_FlowTrafficlnfo_t;
Typedefstructlib_policy_linkinfo_s
(
Charlink_type[LINK_TYPE_LEN];/*對(duì)子同一臺(tái)。尸/火能存在
一種類(lèi)型的劃分*/
Charlink_name[LINK_NAME_LEN];
Chardev_id[DEVJD_LEN];
lib_FlowTrafficlnfo_tpstFlowTrafficlnfo[2];
}libjDOlicy_linkinfo_t;
/*共享內(nèi)存鏈路信息線(xiàn)性存儲(chǔ)結(jié)構(gòu),用來(lái)存儲(chǔ)鏈路與內(nèi)部索引的對(duì)應(yīng)關(guān)系*/
Typedefstructlib_linkinfo_save_s
Charlink_name[USER_NAME_LEN];
}lib_linkinfo_save_t;
/*鏈路信息查找表,以數(shù)組線(xiàn)性表的方式存儲(chǔ),以vlan_id或內(nèi)部物理端口對(duì)應(yīng)的id為數(shù)
組下標(biāo)進(jìn)行存儲(chǔ)*/
Typedefstructlib_linkinfo_lookup_s
(
d\ndex;/*當(dāng)前物理端口或vlanjd對(duì)應(yīng)的鏈路在內(nèi)部存儲(chǔ)索引*/
}lib_linkinfo_lookup_t;
5)IP地址庫(kù)結(jié)構(gòu)體
/*IP地址庫(kù)信息傳輸結(jié)構(gòu)體,該結(jié)構(gòu)體主要用來(lái)策略解析模塊向IP地址庫(kù)安裝模塊傳
輸信息*/
Typedefstruct/串eanameB*傳輸解析到的區(qū)域名信息*/
(
Uint8_tucAreaType;//表示區(qū)域類(lèi)型:AS號(hào)或區(qū)域名
/*
enumAFIEA_TYPE_E
{
AREA_TYPE_AS”只有AS號(hào)
AREA_TYPE_NAME,//只有區(qū)域名
AREA_TYPE_NAMEJP,〃區(qū)域名與IP地址對(duì)應(yīng)關(guān)系
AREA_TYPE_MAX,
};
*/
Uint8_tucAreaName[AREA_NAME_LEN];
TupleJ3_tipaddr;
}lib_policy_areaname_t;
/*共享內(nèi)存用戶(hù)信息線(xiàn)性存儲(chǔ)結(jié)構(gòu),用來(lái)存儲(chǔ)用戶(hù)與內(nèi)部索引的對(duì)應(yīng)關(guān)系*/
Typedefstructlib_areainfo_save_s
(
Uint8_tucAreaName[USER_NAME_LEN];
Uint8_tucIntfoType:4,/*信息類(lèi)型,是靜態(tài)信息,還是動(dòng)態(tài)信息*/
ucAttention;/*該信息是否關(guān)注*/
}lib_areainfo_save_t;
/*IP地址和用戶(hù)的對(duì)應(yīng)關(guān)系存儲(chǔ),調(diào)用動(dòng)態(tài)信息同步模塊接口*/
6)WEB分類(lèi)庫(kù)
/*WEB分類(lèi)庫(kù)信息傳輸結(jié)構(gòu)體,該結(jié)構(gòu)體主要用來(lái)策略解析模塊向WEB分類(lèi)安裝模塊
傳輸信息*/
Typedefstructlib_policy_webinfo_s/*H/EB班點(diǎn)信意、網(wǎng)站類(lèi)型信息結(jié)構(gòu)體*/
(
Uint8_tucInfoType;/*信息類(lèi)型:站點(diǎn)信息;網(wǎng)站類(lèi)型信息;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分類(lèi)庫(kù)HASH存儲(chǔ)結(jié)構(gòu),以URL為key值*/
/*采用模糊匹配*/
Typdefstructlib_webinf_hash_data_s
(
Unit32_tulWebSitelndex;
Unit32_tulWebClassIndex;
}lib_webinfo_hash_data_t;
/*WEB分類(lèi)庫(kù)信息線(xiàn)性存儲(chǔ)結(jié)構(gòu),用來(lái)存儲(chǔ)站點(diǎn)名與內(nèi)部索引的對(duì)應(yīng)關(guān)系,以?xún)?nèi)部索
引為類(lèi)型*/
Typedefstructlib_websiteinfo_save_s
(
Uint8_tucWebSiteName[HTTP_WEBSITE_NAME_LEN];
}lib_websiteinfo_save_t;
/?用來(lái)存儲(chǔ)站點(diǎn)類(lèi)型名與內(nèi)部索引的對(duì)應(yīng)關(guān)系,以?xún)?nèi)部索引為類(lèi)型*/
Typedefstructlib_webclassinfo_save_s
Uint8_tucWebClassName[HTTP_WEBCLASS_NAME_LEN];
}lib_webclassinfo_save_t;
7)關(guān)鍵詞信息結(jié)構(gòu)體
/*關(guān)鍵詞信息傳輸結(jié)構(gòu)體,該結(jié)構(gòu)體主要用來(lái)策略解析模塊向WEB分類(lèi)安裝
模塊傳輸信息*/
Typedefstructlib_keyinfo_s
(
Uint32_tullCommandld;〃關(guān)鍵詞對(duì)應(yīng)的實(shí)際策略的Policyld;
Uint8_tucKeylndex;//當(dāng)前關(guān)鍵詞在策略中所屬條件編號(hào)
L)int32_tullPolicyVersion;//關(guān)鍵詞對(duì)應(yīng)的實(shí)際策略的版本號(hào)
Uint8_tucKeylnfo[KEYINFO_LEN];
}lib_keyinfo_t;
/*用來(lái)存儲(chǔ)站點(diǎn)類(lèi)型名與內(nèi)部索引的對(duì)應(yīng)關(guān)系,以?xún)?nèi)部索引為類(lèi)型*/
Typedefstructlib_keyinfo_save_s
(
Structlist_headstList;//用來(lái)存儲(chǔ)關(guān)鍵詞信息
}lib_keyinfo_save_t;
8)線(xiàn)性表結(jié)構(gòu)
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
/*線(xiàn)性?xún)?nèi)部存儲(chǔ)表結(jié)構(gòu)*/
TypdefStructlib_xxxinfotable_s
(
Uint8_tucTableld;/*各庫(kù)信息的內(nèi)部版本號(hào)*/
Uint32_tullnfoCnt;/*記錄當(dāng)前線(xiàn)性表的使用的節(jié)點(diǎn)數(shù)*/
Lib_xxxinfo_save_t*pstxxxinfo;
}lib_xxxinfotable_t;
lib_xxxinfotable_t*g_pstXxxlnfotable[2];
2.數(shù)據(jù)描述:
1)全局FreeList表變量
/*全局Id存儲(chǔ)FreeList變量*/
Typedefstructpolicy_interld_s
Structlist_headstList;
Policylnterld_tstPolicylnterlD;
}policy_interld_t;
lib_freelist_t*g_pstPolicylnterlDFreeList=NULL;
2)用戶(hù)信息相關(guān)變量定義
Uint8_tg_ucUserLibTableld;〃記錄當(dāng)前正在使用的用戶(hù)信息內(nèi)部存儲(chǔ)表的ID號(hào)。
Uint8_tg_ucUserLibTablePlcyld;〃當(dāng)前正在使用的用戶(hù)信息內(nèi)部策略版本號(hào),從。開(kāi)
始。
Uint8_tg_ucllserLibTablePlcyNewld;〃當(dāng)前用戶(hù)信息內(nèi)部最新策略版本號(hào),從。開(kāi)
始。
lib_userinfo_save_t*g_pstUserlnfoTablellsed;//當(dāng)前正在使用的用戶(hù)信息內(nèi)部存儲(chǔ)
表。
3)鏈路信息相關(guān)變量定義
Uint8」g_ucLinkLibTableld;〃記錄當(dāng)前正在使用的鏈路信息內(nèi)部存儲(chǔ)表的ID號(hào)。
Uint8_tg_ucLlnkLibTablePlcyld;//當(dāng)前正在使用的鏈路信息內(nèi)部策略版本號(hào)。
Uint8_tg_ucLlnkLibTablePlcyNewld;//當(dāng)前鏈路信息內(nèi)部最新策略版本號(hào)。
lib_linkinfo_save_t*gjostLinklnfoTablellsed;//記錄當(dāng)前正在使用的鏈路信息內(nèi)部存
儲(chǔ)表
4)IP地址庫(kù)(區(qū)域)信息
Uint8_tg_ucAreaLibTableld;〃記錄當(dāng)前正在使用的區(qū)域信息內(nèi)部存儲(chǔ)表的ID號(hào)。
Uint8_tg_ucsAreaLibTablePlcyld;〃當(dāng)前正在使用的鏈路信息內(nèi)部策略版本號(hào)。
Uint8_tg_ucAreaLibTablePlcyNewld;〃當(dāng)前鏈路信息內(nèi)部最新策略版本號(hào)。
lib_areainfo_save_t*g_pstArealnfoTableUsed;//當(dāng)前正在使用的區(qū)域信息內(nèi)部存儲(chǔ)
表。
5)WEB分類(lèi)庫(kù)
Uint8_tg_ucWebLibTableld;〃記錄當(dāng)前正在使用的Web分類(lèi)信息內(nèi)部存儲(chǔ)表的ID號(hào)。
Uint8_tg_ucWebLibTablePlcyld;〃當(dāng)前正在使用的Web分類(lèi)信息內(nèi)部策略版本號(hào)。
Uint8_tg_ucWebLibTablePlcyNewld;〃當(dāng)前Web分類(lèi)信息內(nèi)部最新策略版本號(hào)。
lib_areainfo_save_t*g_pstWeblnfoTableUsed;//當(dāng)前正在使用的Web分類(lèi)信息內(nèi)部
存儲(chǔ)表。
6)關(guān)鍵詞信息
Uint8_tg_ucWebLibTableld;//記錄當(dāng)前正在使用的Web分類(lèi)信息內(nèi)部存儲(chǔ)表的ID
號(hào)。
Uint8_tg_ucKeyTablePlcyld;〃當(dāng)前正在使用的關(guān)鍵詞信息內(nèi)部策略版本號(hào)。
Uint8_tg_ucKeyTablePlcyNewld;〃當(dāng)前關(guān)鍵詞信息信息內(nèi)部最新策略版本號(hào)。
lib_key_acsearch_t*g_pstKeyAcSearchEgine;//當(dāng)前正在使用的關(guān)鍵詞匹配引擎。
7)相關(guān)庫(kù)信息內(nèi)部關(guān)聯(lián)ID的計(jì)算方式
Uint32_txxxjnfo_index;/*xxx表示具體的庫(kù)信息類(lèi)型*/
高8位來(lái)表示當(dāng)前使用的該類(lèi)型庫(kù)信息存儲(chǔ)表的內(nèi)部策略版本號(hào);
低24位用來(lái)表示信息在當(dāng)前存儲(chǔ)表中的實(shí)際索引值。
/*轉(zhuǎn)化為結(jié)構(gòu)體*/
TypedefUnion
(
Struct
(
Uint32_tucPolicylnterVer:8,
ulPolicylnterlndex:24;
Jinterld;
Uint32_tall;
}Policylnterld_t;
3.處理流程
1)策略變更流程
更新相應(yīng)類(lèi)型庫(kù)信息
獲取當(dāng)前未使用的內(nèi)部將最新的版本號(hào)
;清理獲取的未使用的的內(nèi)部最新版本號(hào).
策略解析模塊存儲(chǔ)表的ID號(hào),通過(guò)更新到未使用表
|內(nèi)部存儲(chǔ)表空間,清將
策略發(fā)生變更jusXxxLibTablcld來(lái)判的結(jié)構(gòu)變舜中
空所有數(shù)據(jù)g_usXxxLibTablePlcy
斷ucTabelD
Newld自增I
用戶(hù)與IP地址關(guān)系的安裝,區(qū)域與IP地址關(guān)系的安裝在HASH節(jié)點(diǎn)中存儲(chǔ)的是
g_usXxxLibPlcyNewld;
策略切換流程
更新當(dāng)前正在使用的
更新當(dāng)前正在使用的內(nèi)
內(nèi)部策略版本號(hào)更新正在使用的庫(kù)信
部存儲(chǔ)表的ID號(hào),
主備表切換消息g_usXxxLibTablcPlcykl為息內(nèi)部存儲(chǔ)表
g_usXxxLibTablekl更新為最g_usXxxLibTablePlcy
新的庫(kù)信息存儲(chǔ)裝的ID號(hào)
Newld
3)規(guī)則匹配流程
會(huì)話(huà)處理和DPI識(shí)別階段
記錄用戶(hù)在內(nèi)部存儲(chǔ)的2號(hào)(內(nèi)前
1?木號(hào)?實(shí)以?xún)?nèi)部索引值)
上記錄用戶(hù)蛆信息的結(jié)構(gòu)
E4案?為zuu.
寓所熊用戶(hù)信息記點(diǎn)到"讓.以
式存儲(chǔ)
HTTP業(yè)務(wù)處理
4)關(guān)聯(lián)查詢(xún)流程
處理結(jié)束
根據(jù)名稱(chēng)查詢(xún)內(nèi)部索引值
存在
要查詢(xún)的庫(kù)信息
(用戶(hù)名、區(qū)域
名、鏈路名等)
根據(jù)內(nèi)部索引值獲取對(duì)應(yīng)的庫(kù)信息名稱(chēng)
2.4.2函數(shù)
1.函數(shù):HASH算法
/*根據(jù)字符串獲取Hash_key值的算法*/
Function://_busi_BkdrHashFunc
Description:〃根據(jù)字符串獲取對(duì)應(yīng)的HASH值
Calls:
DataAccessed:
DataUpdated:
Input:pucSt:字符串指針
ulHashBitMap:HASH表位圖
Output:II無(wú)。
Return:II無(wú)
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.函數(shù):安裝用戶(hù)信息,并進(jìn)行存儲(chǔ)
Function://Hb_lnstallUserlnfoToLinearList
Description://安裝用戶(hù)信息到線(xiàn)性表中
Calls:
DataAccessed:
DataUpdated:
Input:userinfo:用戶(hù)信息結(jié)構(gòu)體
Output:H無(wú)°
Return:"無(wú)
Others:
Int32_tlib_lnstallllserlnfoToLinearList(lib_policy_userinfo_t*pstUserlnfo)
(
/*根據(jù)用戶(hù)名查找在線(xiàn)性表中當(dāng)前用戶(hù)是否存在*/
If(當(dāng)前用戶(hù)存在)
(
Returnuserjndex;
)
/*不存在,添加用戶(hù)名到索引表中,并返回用戶(hù)內(nèi)部索引*/
lf(linear_list==FULL)〃檢查線(xiàn)性表是否處于FULL
(
Return;
)
Returnuser_new_index;
}
/*將用戶(hù)信息安裝到HASH存儲(chǔ)表中,調(diào)用動(dòng)態(tài)信息同步信息安裝接口*/
DYNAMIC_INSTALL_USERINFO_API();
3.函數(shù):安裝區(qū)域信息
Function://lib_lnstallArealnfoToLinearList
Description://安裝用戶(hù)信息到線(xiàn)性表中
Calls:
DataAccessed:
DataUpdated:
Input:userinfo:用戶(hù)信息結(jié)構(gòu)體
Output:II無(wú)。
Return:“無(wú)
Others:
Int32_tlib_lnstallArealnfoToLinearList(lib_policy_areaname_t*pstAreaInfo)
(
)
/*將用戶(hù)信息安裝到HASH存儲(chǔ)表中,調(diào)用動(dòng)態(tài)信息同步信息安裝接口*/
DYNAMIC」NSTALL_AREAINFO_API();
4.函數(shù):安裝鏈路信息
Function://Hb_lnstallLinklnfoToLinearList
Description:〃安裝鏈路信息到線(xiàn)性表中
Calls:
DataAccessed:
DataUpdated:
Input:userinfo:用戶(hù)信息結(jié)構(gòu)體
Output:II無(wú)°
Return:II無(wú)
Others:
Intlib_lnstallLinklnfoToLinearList(lib_policy_linkinfo__tlinkinfo)
/*如果是vlan_id,則直接以vlan_id為線(xiàn)性索引值,進(jìn)行安裝*/
If(vlan_id)/*vlan_id&&vlanjd沒(méi)有超過(guò)線(xiàn)性表的最大值*/
If(信息已存在)
Returnlink_old_index;
)
&ARRAY[vlan_id];
Returnlink_new_index;
)
If(物理口)
(
/*根據(jù)物理口名稱(chēng),查找內(nèi)部編號(hào)intfjd,以?xún)?nèi)部編號(hào)為線(xiàn)性索引值*/
If(信息已存在)
(
Returnlink_old_index;
)
&ARRAY[intf_id];
Returnlink_new_index;
}
)
5.函數(shù):安裝WEB分類(lèi)庫(kù)
Function://Hb_lnstallLinklnfoToLinearList(CP)
Description:〃安裝鏈路信息到線(xiàn)性表中
Calls:
DataAccessed:
DataUpdated:
Input:userinfo:用戶(hù)信息結(jié)構(gòu)體
Output:II無(wú)。
Return:H無(wú)
Others:
Intlib_lnstallWeblnfoToLinearList(libjDolicy_webinfo_t*pstWebinfo)
(
/*判斷是站點(diǎn)名稱(chēng)還是網(wǎng)站類(lèi)型*/
if(站點(diǎn)名稱(chēng)信息)
(
/*安裝到站點(diǎn)名稱(chēng)線(xiàn)性表中*/
Jib_installWebSitelnfoToLinearList(lib_policy_webinfo_tWebinfo);
)
If(網(wǎng)站類(lèi)型分類(lèi)信息)
/*安裝到網(wǎng)站類(lèi)型分類(lèi)名稱(chēng)線(xiàn)性表中*/
Jib_installWebClasslnfoToLinearList(lib_policy_webinfo_tWebinfo);
)
)
6.獲取:用戶(hù)、用戶(hù)組、鏈路信息、區(qū)域信息(會(huì)話(huà)處理階段)
Function://busi_GetUserlnfo
Description://獲取用戶(hù)信息
Calls:
DataAccessed:
DataUpdated:
Input:ssn:會(huì)話(huà)信息結(jié)構(gòu),申請(qǐng)的業(yè)務(wù)結(jié)點(diǎn)存放到當(dāng)前流的會(huì)話(huà)上
Output://無(wú)。
Return:“無(wú)
Others:
獲取用戶(hù)信息、用戶(hù)組信息
Voidbusi_Getllserlnfo(ssn_t*ssn)
(
/*調(diào)用查詢(xún)接口,查找歸屬的用戶(hù)信息并存儲(chǔ)*/
/*如果查不到對(duì)應(yīng)的用戶(hù)信息,則用戶(hù)ID默認(rèn)為Oxffff*/
DYNAMIC_API(DYNAMIC_STRUCT,func);
)
Function://busi_GetLinklnfo
Description://獲取鏈路信息
Calls:
DataAccessed:
DataUpdated:
Input:ssn:會(huì)話(huà)信息結(jié)構(gòu),申請(qǐng)的業(yè)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 糧食產(chǎn)業(yè)鏈韌性及其空間演化規(guī)律的研究
- 中國(guó)古代詩(shī)詞欣賞與解讀課程教案
- 持續(xù)評(píng)估與反饋機(jī)制在集團(tuán)化辦學(xué)效提升中的作用
- 雪兒作文500字(11篇)
- 高技術(shù)行業(yè)對(duì)就業(yè)市場(chǎng)的影響與挑戰(zhàn)
- 全球能源轉(zhuǎn)型趨勢(shì)對(duì)學(xué)科布局的影響
- 提升中醫(yī)醫(yī)院服務(wù)能力的設(shè)施改造方案
- 2025年小學(xué)語(yǔ)文期末考試試題及答案
- 2025年歷史文化與現(xiàn)代文明的交融能力綜合考試試卷及答案
- 2025年能源與動(dòng)力工程師考試試題及答案
- 第五單元《面積》(教學(xué)設(shè)計(jì))-【大單元教學(xué)】三年級(jí)數(shù)學(xué)下冊(cè)同步備課系列(人教版)
- 閱讀認(rèn)知策略的跨學(xué)科研究框架構(gòu)建
- 摜蛋考試試題及答案
- GA/T 2159-2024法庭科學(xué)資金數(shù)據(jù)清洗規(guī)程
- DB63-T 2129-2023 鹽湖資源開(kāi)發(fā)標(biāo)準(zhǔn)體系
- 企業(yè)風(fēng)險(xiǎn)管理-戰(zhàn)略與績(jī)效整合(中文版-雷澤佳譯)
- 業(yè)務(wù)學(xué)習(xí)踝關(guān)節(jié)骨折
- 實(shí)景演出制作合同協(xié)議
- 迅鐳激光切割機(jī)操作培訓(xùn)
- JJF 2241-2025電子停車(chē)計(jì)時(shí)收費(fèi)表校準(zhǔn)規(guī)范
- 人文關(guān)懷示范病房工作分享課件
評(píng)論
0/150
提交評(píng)論