Index: ring_packet.c =================================================================== --- ring_packet.c (revision 3422) +++ ring_packet.c (working copy) @@ -208,7 +208,11 @@ static int remove_from_cluster(struct sock *sock, struct ring_opt *pfr); /* Extern */ +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24)) extern struct sk_buff *ip_defrag(struct sk_buff *skb, u32 user); +#else /* 2.6.24 and above */ +extern int ip_defrag(struct sk_buff *skb, u32 user); +#endif /* ********************************** */ @@ -359,9 +363,13 @@ /* Returns new sk_buff, or NULL */ static struct sk_buff *ring_gather_frags(struct sk_buff *skb) { +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24)) + if(ip_defrag(skb, IP_DEFRAG_RING)) +#else skb = ip_defrag(skb, IP_DEFRAG_RING); if(skb) +#endif ip_send_check(ip_hdr(skb)); return(skb); @@ -525,7 +533,11 @@ static void ring_proc_init(void) { +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24)) ring_proc_dir = proc_mkdir("pf_ring", proc_net); +#else /* 2.6.24 and above */ + ring_proc_dir = proc_mkdir("pf_ring", init_net.proc_net); +#endif if(ring_proc_dir) { ring_proc_dir->owner = THIS_MODULE; @@ -558,7 +570,11 @@ printk("[PF_RING] removed /proc/net/pf_ring/info\n"); if(ring_proc_dir != NULL) { +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24)) remove_proc_entry("pf_ring", proc_net); +#else /* 2.6.24 and above */ + remove_proc_entry("pf_ring", init_net.proc_net); +#endif printk("[PF_RING] deregistered /proc/net/pf_ring\n"); } } @@ -1636,7 +1652,11 @@ /* ********************************** */ +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24)) static int ring_create(struct socket *sock, int protocol) +#else /* 2.6.24 and above */ +static int ring_create(struct net *net, struct socket *sock, int protocol) +#endif { struct sock *sk; struct ring_opt *pfr; @@ -1667,10 +1687,12 @@ #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)) #if (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,11)) sk = sk_alloc(PF_RING, GFP_KERNEL, 1, NULL); -#else +#elif (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24)) // BD: API changed in 2.6.12, ref: // http://svn.clkao.org/svnweb/linux/revision/?rev=28201 sk = sk_alloc(PF_RING, GFP_ATOMIC, &ring_proto, 1); +#else /* 2.6.24 and above */ + sk = sk_alloc(net, PF_RING, GFP_ATOMIC, &ring_proto); #endif #else /* Kernel 2.4 */ @@ -1946,7 +1968,11 @@ printk("[PF_RING] searching device %s\n", sa->sa_data); #endif +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24)) if((dev = __dev_get_by_name(sa->sa_data)) == NULL) { +#else /* 2.6.24 and above */ + if((dev = __dev_get_by_name(&init_net, sa->sa_data)) == NULL) { +#endif #if defined(RING_DEBUG) printk("[PF_RING] search failed\n"); #endif @@ -2465,7 +2491,11 @@ #endif write_lock(&pfr->ring_rules_lock); +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24)) pfr->reflector_dev = dev_get_by_name(devName); +#else /* 2.6.24 and above */ + pfr->reflector_dev = dev_get_by_name(&init_net, devName); +#endif write_unlock(&pfr->ring_rules_lock); #if defined(RING_DEBUG)