主要是昨天在搞Hacking Linux Network Stack的时候,发现里面的代码,不能够在2.6.22下编译通过,并且提示找不到nh这个成员,我猜想一定是结构体发生了变化。查看/include/linux/skbuff.h发现没有了原先的联合h,nh和mac。
    union {
        struct tcphdr    *th;
        struct udphdr    *uh;
        struct icmphdr    *icmph;
        struct igmphdr    *igmph;
        struct iphdr    *ipiph;
        struct ipv6hdr    *ipv6h;
        unsigned char    *raw;
    } h;
    union {
        struct iphdr    *iph;
        struct ipv6hdr    *ipv6h;
        struct arphdr    *arph;
        unsigned char    *raw;
    } nh;
    union {
          unsigned char     *raw;
    } mac;
换成了    
    sk_buff_data_t        transport_header;
    sk_buff_data_t        network_header;
    sk_buff_data_t        mac_header;
本身我并不是很支持联合的使用,即使它能够节省内存,但是实际运行时候还是有一定的时空开销的。这一改变将会导致很多程序不能够在2.6.22下使用,比如VMWare;几乎所有的网卡驱动需要打patch。感觉从2.6.18之后的变化比较大,看Kernel还是选择2.6.18比较合适。
另外,ktime替换掉了jiffies,这也算是网络部分改变比较大的一个地方了。
                  	
				
