Thread: [Netnice-commitlog] netnice : linux-netnice/net/ipv4 af_inet.c,1.1.1.1,1.1.1.1.2.1 ip_output.c,1.1.1
Status: Alpha
Brought to you by:
taost6
From: bhatt k. m. <rou...@us...> - 2006-02-16 13:12:14
|
Update of /cvsroot/netnice/linux-netnice/net/ipv4 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19888/net/ipv4 Modified Files: Tag: patch1 af_inet.c ip_output.c raw.c tcp_ipv4.c udp.c Log Message: patch1 initial netnice patch applied to linux kernel version 2.6.15. developers please do not commit to the main branch directly. keep it clean. create separate branches for experimental patches. the procedure is cvs co linux-netnice [hack hack & hack till you are satisfied] //create a tag cvs tag -b "tag-name" cvs update -r "tag-name" cvs commit this way you won't end up commiting to the main tree thanks --Kartikey BHATT Index: udp.c =================================================================== RCS file: /cvsroot/netnice/linux-netnice/net/ipv4/udp.c,v retrieving revision 1.1.1.1 retrieving revision 1.1.1.1.2.1 diff -u -d -r1.1.1.1 -r1.1.1.1.2.1 --- udp.c 16 Feb 2006 11:07:13 -0000 1.1.1.1 +++ udp.c 16 Feb 2006 13:11:50 -0000 1.1.1.1.2.1 @@ -982,6 +982,23 @@ #endif } +#ifdef CONFIG_NETNICE +int vif_process_udp_ipv4(struct sk_buff *skb, struct sock *sk) +{ + int ret; + + if ((ret = sock_queue_rcv_skb(sk,skb)) < 0) { + UDP_INC_STATS_BH(UDP_MIB_INERRORS); + kfree_skb(skb); + sock_put(sk); + } + UDP_INC_STATS_BH(UDP_MIB_INDATAGRAMS); + sock_put(sk); + + return ret; +} +#endif + /* returns: * -1: error * 0: success @@ -1038,6 +1055,10 @@ skb->ip_summed = CHECKSUM_UNNECESSARY; } +#ifdef CONFIG_NETNICE + return vif_input_incoming(skb, sk, vif_process_udp_ipv4); +#endif + if (sock_queue_rcv_skb(sk,skb)<0) { UDP_INC_STATS_BH(UDP_MIB_INERRORS); kfree_skb(skb); @@ -1151,8 +1172,11 @@ if (sk != NULL) { int ret = udp_queue_rcv_skb(sk, skb); +#ifdef CONFIG_NETNICE + do {} while (0); +#else sock_put(sk); - +#endif /* a return value > 0 means to resubmit the input, but * it it wants the return to be -protocol, or 0 */ Index: af_inet.c =================================================================== RCS file: /cvsroot/netnice/linux-netnice/net/ipv4/af_inet.c,v retrieving revision 1.1.1.1 retrieving revision 1.1.1.1.2.1 diff -u -d -r1.1.1.1 -r1.1.1.1.2.1 --- af_inet.c 16 Feb 2006 11:07:22 -0000 1.1.1.1 +++ af_inet.c 16 Feb 2006 13:11:50 -0000 1.1.1.1.2.1 @@ -112,6 +112,9 @@ #ifdef CONFIG_IP_MROUTE #include <linux/mroute.h> #endif +#ifdef CONFIG_NETNICE +#include <linux/vif.h> +#endif DEFINE_SNMP_STAT(struct linux_mib, net_statistics) __read_mostly; @@ -1224,6 +1227,10 @@ if(init_ipv4_mibs()) printk(KERN_CRIT "inet_init: Cannot init ipv4 mibs\n"); ; + +#ifdef CONFIG_NETNICE + vif_init(); +#endif ipv4_proc_init(); Index: raw.c =================================================================== RCS file: /cvsroot/netnice/linux-netnice/net/ipv4/raw.c,v retrieving revision 1.1.1.1 retrieving revision 1.1.1.1.2.1 diff -u -d -r1.1.1.1 -r1.1.1.1.2.1 --- raw.c 16 Feb 2006 11:07:10 -0000 1.1.1.1 +++ raw.c 16 Feb 2006 13:11:50 -0000 1.1.1.1.2.1 @@ -239,7 +239,6 @@ static int raw_rcv_skb(struct sock * sk, struct sk_buff * skb) { /* Charge it to the socket. */ - if (sock_queue_rcv_skb(sk, skb) < 0) { /* FIXME: increment a raw drops counter here */ kfree_skb(skb); @@ -249,6 +248,14 @@ return NET_RX_SUCCESS; } +#ifdef CONFIG_NETNICE +int vif_process_raw_ipv4(struct sk_buff *skb, struct sock *sk) +{ + raw_rcv_skb(sk, skb); + return 0; +} +#endif + int raw_rcv(struct sock *sk, struct sk_buff *skb) { if (!xfrm4_policy_check(sk, XFRM_POLICY_IN, skb)) { @@ -258,6 +265,10 @@ skb_push(skb, skb->data - skb->nh.raw); +#ifdef CONFIG_NETNICE + return vif_input_incoming(skb, sk, vif_process_raw_ipv4); +#endif + raw_rcv_skb(sk, skb); return 0; } Index: tcp_ipv4.c =================================================================== RCS file: /cvsroot/netnice/linux-netnice/net/ipv4/tcp_ipv4.c,v retrieving revision 1.1.1.1 retrieving revision 1.1.1.1.2.1 diff -u -d -r1.1.1.1 -r1.1.1.1.2.1 --- tcp_ipv4.c 16 Feb 2006 11:07:14 -0000 1.1.1.1 +++ tcp_ipv4.c 16 Feb 2006 13:11:50 -0000 1.1.1.1.2.1 @@ -1182,6 +1182,28 @@ goto discard; } +#ifdef CONFIG_NETNICE +int vif_process_tcp_ipv4(struct sk_buff *skb, struct sock *sk) +{ + int ret = 0; + + skb->dev = NULL; + + bh_lock_sock(sk); + + if (!sock_owned_by_user(sk)) { + if (!tcp_prequeue(sk, skb)) + ret = tcp_v4_do_rcv(sk, skb); + } else + sk_add_backlog(sk, skb); + bh_unlock_sock(sk); + + sock_put(sk); + + return ret; +} +#endif + /* * From tcp_input.c */ @@ -1242,6 +1264,10 @@ if (sk_filter(sk, skb, 0)) goto discard_and_relse; +#ifdef CONFIG_NETNICE + return vif_input_incoming(skb, sk, vif_process_tcp_ipv4); +#endif + skb->dev = NULL; bh_lock_sock(sk); Index: ip_output.c =================================================================== RCS file: /cvsroot/netnice/linux-netnice/net/ipv4/ip_output.c,v retrieving revision 1.1.1.1 retrieving revision 1.1.1.1.2.1 diff -u -d -r1.1.1.1 -r1.1.1.1.2.1 --- ip_output.c 16 Feb 2006 11:07:04 -0000 1.1.1.1 +++ ip_output.c 16 Feb 2006 13:11:50 -0000 1.1.1.1.2.1 @@ -190,10 +190,18 @@ memcpy(skb->data - hh_alen, hh->hh_data, hh_alen); read_unlock_bh(&hh->hh_lock); skb_push(skb, hh->hh_len); +#ifdef CONFIG_NETNICE + return vif_input_outgoing(skb, hh->hh_output); +#else return hh->hh_output(skb); +#endif } else if (dst->neighbour) - return dst->neighbour->output(skb); - +#ifdef CONFIG_NETNICE + return vif_input_outgoing(skb, dst->neighbour->output); +#else + return dst->neighbour->output(skb); +#endif + if (net_ratelimit()) printk(KERN_DEBUG "ip_finish_output2: No header cache and no neighbour!\n"); kfree_skb(skb); |