?? ip_vs_ctl.c.txt
字號:
any problems, send mails to sindybear@163.com
相關文件
service的概念主要是提供某種服務,也就是說現在的集群系統支持不支持這種服務,
一個服務的主要的組成部分是協議類型,ip地址,端口號這三個數據。例如,如果服務其支持
tcp/ip協議的ip地址為202.113.20.1的端口號為32的服務。
ip_vs_service_get(__u32 fwmark, __u16 protocol, __u32 vaddr, __u16 vport)
if (fwmark) {
svc = __ip_vs_svc_fwm_get(fwmark); //如果fwmark哈希表中存在這種服務????
if (svc)
goto out; //就直接返回
}
svc = __ip_vs_service_get(protocol, vaddr, vport); //從hash表中查找是否存在這種服務
if (svc == NULL
&& protocol == IPPROTO_TCP
&& atomic_read(&ip_vs_ftpsvc_counter)
&& (vport == FTPDATA || ntohs(vport) >= PROT_SOCK)) {
svc = __ip_vs_service_get(protocol, vaddr, FTPPORT); //看是否是ftp服務
}
…… //檢查是否是null服務????
__ip_vs_service_get(__u16 protocol, __u32 vaddr, __u16 vport)
hash = ip_vs_svc_hashkey(protocol, vaddr, vport); //得到哈希鍵
l = &ip_vs_svc_table[hash]; //得到哈希頭指針
for (e=l->next; e!=l; e=e->next) { //遍歷
svc = list_entry(e, struct ip_vs_service, s_list); //得到service結構
if ((svc->addr == vaddr)
&& (svc->port == vport)
&& (svc->protocol == protocol)) {
/* HIT */
atomic_inc(&svc->usecnt);
return svc; //如果所有的條件都符合,返回。
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -