在多个proxy和软交换的情况下,对record-route和route一直都是蒙查查。只好先中断开发,请我们的协议高手看看,PS说他要仔细看看RFC
3261。有点空闲,将ETH_P_ALL的问题详细说清楚。
ETH_P_ALL含有各种类型,但是我们在具体处理不同类型是,需采用不同的方式,大致上分为2类。一类是设备需要解析的,需要送到上层分析或者需要进行转发的数据包,例如ETH_P_ALL,ETH_P_ARP等等,一类包属于在混杂模式下捕获,不需送到上层处理,需要终结的一类。
在我们采用ETH_P_ALL时,我们很难确定网络的情况(不采用混杂模式除外),我们不一定能对每个数据包采用正确的方式处理,导致系统死机。下面给出一个例子,假设机器不分析vlan,也就是ETH_P_8021Q属于和ETH_P_IP不同处理的方式,蓝色表示使用ETH_P_8021Q的情况,可以在例子中看到区别:
struct packet_type ourpt, *ippt = NULL;
init_module(){
……
struct packet_type *temp;
ourpt.type = htons(ETH_P_IP);
ourpt.type =
htons(ETH_P_8021Q);
ourpt