⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ip_vs_ctl.c.txt

📁 这是一个牛人的linux学习内核时分析内核的笔记
💻 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 + -