soft

soft

NGINX 模块开发 ip hash 方式

static ngx_uint_t get_ip_addr_crc(ngx_connection_t* c, int algorithm) {

    ngx_int_t ip_type = c->sockaddr->sa_family;// r->connection->sockaddr->sa_family;
    if (ip_type == AF_INET) {
        //struct sockaddr_in* ip = (struct sockaddr_in*)(r->connection->sockaddr);
        struct sockaddr_in* ip = (struct sockaddr_in*)(c->sockaddr);
        char* addr = inet_ntoa(ip->sin_addr);
        if (1 == algorithm)
        {
            return ngx_hash_key((u_char*)addr, ngx_strlen(addr));
        }
        else if (2 == algorithm) {
            return ngx_murmur_hash2((u_char*)addr, ngx_strlen(addr));
        }
        else if (3 == algorithm) {
            return ngx_crc32_short((u_char*)addr, ngx_strlen(addr));
        }

    }   
    return 0;
}


发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

联系我 331434376    15629529961