/* Gets ip_vs_conn associated with supplied parameters in the ip_vs_conn_tab. Called for pkts coming from OUTside-to-INside. s_addr, s_port: pkt source address (foreign host) d_addr, d_port: pkt dest address (load balancer)  */
static struct ip_vs_conn* __ip_vs_conn_in_get(int af, int protocol, const union nf_inet_addr *s_addr, __be16 s_port, const union nf_inet_addr *d_addr, __be16 d_port)
/* Gets ip_vs_conn associated with supplied parameters in the ip_vs_conn_tab. Called for pkts coming from OUTside-to-INside. s_addr, s_port: pkt source address (foreign host) d_addr, d_port: pkt dest address (load balancer)  */
static struct ip_vs_conn* __ip_vs_conn_in_get(int af, int protocol, const union nf_inet_addr *s_addr, __be16 s_port, const union nf_inet_addr *d_addr, __be16 d_port)
{
	unsigned hash;
	struct ip_vs_conn *cp;
	hash = ip_vs_conn_hashkey(af, protocol, s_addr, s_port);
	ct_read_lock(hash);
	list_for_each_entry(cp, &ip_vs_conn_tab[hash], c_list) {
		if (cp->af == af &&
		    ip_vs_addr_equal(af, s_addr, &cp->caddr) &&
		    ip_vs_addr_equal(af, d_addr, &cp->vaddr) &&
		    s_port == cp->cport && d_port == cp->vport &&
		    ((!s_port) ^ (!(cp->flags & IP_VS_CONN_F_NO_CPORT))) &&
		    protocol == cp->protocol) {
			atomic_inc(&cp->refcnt);
			ct_read_unlock(hash);
			return cp;
		}
	}
	ct_read_unlock(hash);
	return NULL;
}