The main reason is that the Code in Hacking Linux Network Stack was not compiled in 2.6.22 yesterday and the member nh cannot be found, I guess the struct must have changed. Check/include/linux/skbuff. h and find that the original combination of h, nh, and mac is absent.
Union {
Struct tcphdr * th;
Struct udphdr * uh;
Struct icmphdr * icmph;
Struct igmphdr * igmph;
Struct iphdr * ipiph;
Struct listen 6hdr * Listen 6 h;
Unsigned char * raw;
} H;
Union {
Struct iphdr * iph;
Struct listen 6hdr * Listen 6 h;
Struct arphdr * arph;
Unsigned char * raw;
} Nh;
Union {
Unsigned char * raw;
} Mac;
Changed
Sk_buff_data_t transport_header;
Sk_buff_data_t network_header;
Sk_buff_data_t mac_header;
In itself, I am not very supportive of joint use. Even if it can save memory, there is still a certain amount of space-time overhead in actual operation. This change will make many programs unavailable in 2.6.22, such as VMWare. patch is required for almost all Nic drivers. It seems that the changes since 2.6.18 are relatively large. It is more appropriate to select 2.6.18 as the Kernel.
In addition, the ktime replaces the jiffies, which is also a big change in the network.