📄 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 + -