- 论坛徽章:
- 0
|
1. 建立2个hash数组:hash_lan,hash_wan,数组中的每个元素维护一张结构体链表头,结构体中必须的元素:source_ip,source_port,nat_ip,nat_port
2. 外出数据包 Hash 表创建:
Unsigned short hash_create_and _find(unsigned int source_ip, unsigned short source_port, unsigned int nat_ip);
以 source_ip,source_port 计算hash值,以该值为索引取得hash_lan中的一张结构体链表头,以 source_ip,source_port检索该结构体链表,若有匹配的,则返回结构体中的nat_port值;若无则新建结构体,在其中保存source_ip,source_port,nat_ip及新分配的nat_port值,并将该结构体插入链表中,再以nat_port,nat_ip计算hash值,在hash_out中获取一张结构体链表头,新建结构体,在其中保存source_ip,source_port,nat_ip及nat_port值并将该结构体插入链表中。
这个比较急啊,请哪位老兄帮一下 |
|