LinuxQuestions.org
Review your favorite Linux distribution.
Home Forums Tutorials Articles Register
Go Back   LinuxQuestions.org > Forums > Linux Forums > Linux - Networking
User Name
Password
Linux - Networking This forum is for any issue related to networks or networking.
Routing, network cards, OSI, etc. Anything is fair game.

Notices


Reply
  Search this Thread
Old 04-27-2006, 01:05 AM   #1
venkatesh111
Member
 
Registered: Mar 2006
Posts: 34

Rep: Reputation: 15
group the outgoing skb's into single skb and then send grouped skb.


hi, every one

My task : im trying to group the outgoing skb's into single skb and then send grouped skb.

To achive grouping, i have written grouping code inside ip_output.c(/usr/src/linux-2.4.20-8/net/ipv4/ip_output.c) im calling this function in ip_finish_output2()

ie inside if (hh) condition

if (hh) {
read_lock_bh(&hh->hh_lock);

memcpy(skb->data - 16, hh->hh_data, 16);
read_unlock_bh(&hh->hh_lock);
//skb_push(skb, hh->hh_len);
grouping(skb); /*********** This is where im calling my function*****/
/********i have defined it before ip_finish_output2()***/
} else if (dst->neighbour)
return dst->neighbour->output(skb);

/* remaining ip_finish_output2() code continues here......*/

i have provide the actuall diff code of original ip_output() and my ip_output() at the end.

i put my ip_output.c in /usr/src/linux2.4.20-8/net/ipv4 then recompiled my kernel using fallowing commands:
1) make
2) make modules
3) make modules_install
4) make install

kernel compilation was successful!!!!!!!!!!!!!!!!

then i tried to boot my new kernel ie my custom kernel there was some error page while starting ip_tables but it continued..

finally,

actual PROBLEM what im facing is:

login screen appeares

i enterd as root

then i enterd my password

then 2 to three icons showed up indicating start up of my kernel but suddenly a window popedup saying GNOME could not start some of theams sounds could not b started..........
and many more msgs and it needs to b closed so i closed it and had to restart my previous kernel

i hope my problem statement is clear......


the diff code:

[root@localhost root]# diff -cbp ip_output.c.original ip_output.c
*** ip_output.c.original 2002-11-29 05:23:15.000000000 +0530
--- ip_output.c 2006-04-27 01:29:52.000000000 +0530
*************** int ip_build_and_send_pkt(struct sk_buff
*** 157,167 ****
output_maybe_reroute);
}

static inline int ip_finish_output2(struct sk_buff *skb)
{
struct dst_entry *dst = skb->dst;
struct hh_cache *hh = dst->hh;
!
#ifdef CONFIG_NETFILTER_DEBUG
nf_debug_ip_finish_output2(skb);
#endif /*CONFIG_NETFILTER_DEBUG*/
--- 157,202 ----
output_maybe_reroute);
}

+ static inline int grouping(struct sk_buff *skb)
+ {
+ struct sk_buff *skb_tmp=NULL;
+ static int i=1;
+ char *c;
+ struct dst_entry *dst = skb->dst;
+ struct hh_cache *hh = dst->hh;
+
+ if(i==1)
+ {
+ skb_tmp=skb;
+ i++;
+ printk("\n\n FIRST PACKET........");
+ return 0;
+ }else if(i==5)
+ {
+ read_lock_bh(&hh->hh_lock);
+ printk("\n\n FIFTH PACKET, LOCKED........");
+ memcpy(skb_tmp->data - 16, skb->data, 16);
+ read_unlock_bh(&hh->hh_lock);
+ printk("\n\n FIFTH PACKET, UNLOCKED........");
+ skb_push(skb_tmp, hh->hh_len);
+ return hh->hh_output(skb_tmp);
+ }
+ else {
+ printk("\n\n THIS IS PACKET NUMBER: %d",i);
+ c=skb_put(skb_tmp, skb->nh.iph->tot_len);
+ memcpy(c, skb, skb->nh.iph->tot_len);
+ printk("\n\n COPIED TO sbk_tmp........");
+ i++;
+ kfree_skb(skb);
+ return 0;
+ }
+
+ }
static inline int ip_finish_output2(struct sk_buff *skb)
{
struct dst_entry *dst = skb->dst;
struct hh_cache *hh = dst->hh;
! int i=0;
#ifdef CONFIG_NETFILTER_DEBUG
nf_debug_ip_finish_output2(skb);
#endif /*CONFIG_NETFILTER_DEBUG*/
*************** static inline int ip_finish_output2(stru
*** 170,178 ****
read_lock_bh(&hh->hh_lock);
memcpy(skb->data - 16, hh->hh_data, 16);
read_unlock_bh(&hh->hh_lock);
! skb_push(skb, hh->hh_len);
! return hh->hh_output(skb);
! } else if (dst->neighbour)
return dst->neighbour->output(skb);

if (net_ratelimit())
--- 205,213 ----
read_lock_bh(&hh->hh_lock);
memcpy(skb->data - 16, hh->hh_data, 16);
read_unlock_bh(&hh->hh_lock);
! //skb_push(skb, hh->hh_len);
! grouping(skb);
! }else if (dst->neighbour)
return dst->neighbour->output(skb);

if (net_ratelimit())
[root@localhost root]#


messages in /var/log/messages were:


Apr 27 00:41:33 localhost kernel: ip_tables: (C) 2000-2002 Netfilter core team
Apr 27 00:41:33 localhost kernel:
Apr 27 00:41:33 localhost kernel:
Apr 27 00:41:33 localhost kernel: FIRST PACKET........<7>ip_finish_output2: No header cache and no neighbour!
Apr 27 00:41:33 localhost kernel:
Apr 27 00:41:33 localhost kernel:
Apr 27 00:41:33 localhost kernel: THIS IS PACKET NUMBER: 2<1>Unable to handle kernel NULL pointer dereference at virtual address 00000060
Apr 27 00:41:33 localhost kernel: printing eip:
Apr 27 00:41:33 localhost kernel: c02202d8
Apr 27 00:41:33 localhost kernel: *pde = 00000000
Apr 27 00:41:33 localhost kernel: Oops: 0000
Apr 27 00:41:31 localhost sysctl: kernel.core_uses_pid = 1
Apr 27 00:41:31 localhost network: Setting network parameters: succeeded
Apr 27 00:41:31 localhost network: Bringing up loopback interface: succeeded
Apr 27 00:41:33 localhost kernel: sg sr_mod ide-scsi scsi_mod ide-cd cdrom nls_iso8859-1 nls_cp437 vfat fat keybdev mousedev hid input ehci-hcd usb-ohci usbcore ext3 jbd
Apr 27 00:41:33 localhost kernel: CPU: 0
Apr 27 00:41:33 localhost kernel: EIP: 0060:[<c02202d8>] Not tainted
Apr 27 00:41:33 localhost kernel: EFLAGS: 00010282
Apr 27 00:41:33 localhost kernel:
Apr 27 00:41:33 localhost kernel: EIP is at grouping [kernel] 0x38 (2.4.20-8custom)
Apr 27 00:41:33 localhost kernel: eax: 0000001b ebx: d6eac000 ecx: 00000001 edx: c032f96c
Apr 27 00:41:33 localhost kernel: esi: c1f81340 edi: d7c195c0 ebp: d7c195c0 esp: d6eadd2c
Apr 27 00:41:33 localhost kernel: ds: 0068 es: 0068 ss: 0068
Apr 27 00:41:33 localhost kernel: Process rpc.statd (pid: 2748, stackpage=d6ead000)
Apr 27 00:41:33 localhost kernel: Stack: c028d8cd 00000002 d79247ec d6eac000 c1f81340 d7c195c0 00000000 c021feff
Apr 27 00:41:33 localhost kernel: d7c195c0 c1f81358 00000010 d6e7bec0 d7c195c0 d7c195c0 c021ea89 d7c195c0
Apr 27 00:41:33 localhost kernel: d79247e4 d6eade1c 00000008 00000038 d6eade30 d79247d4 d79247d0 c021f611
Apr 27 00:41:33 localhost kernel: Call Trace: [<c021feff>] ip_finish_output2 [kernel] 0x8b (0xd6eadd48))
Apr 27 00:41:34 localhost kernel: [<c021ea89>] ip_output [kernel] 0x65 (0xd6eadd64))
Apr 27 00:41:34 localhost kernel: [<c021f611>] ip_build_xmit [kernel] 0x28d (0xd6eadd88))
Apr 27 00:41:34 localhost kernel: [<c023c46f>] udp_sendmsg [kernel] 0x277 (0xd6eaddc0))
Apr 27 00:41:34 localhost kernel: [<c023c060>] udp_getfrag [kernel] 0x0 (0xd6eaddc8))
Apr 27 00:41:34 localhost kernel: [<c0244116>] inet_sendmsg [kernel] 0x42 (0xd6eade5c))
Apr 27 00:41:34 localhost kernel: [<c01fbbb4>] sock_sendmsg [kernel] 0x78 (0xd6eade70))
Apr 27 00:41:34 localhost kernel: [<c01fcd3f>] sys_sendto [kernel] 0xe3 (0xd6eadeb4))
Apr 27 00:41:34 localhost kernel: [<c01fc5e8>] sock_create [kernel] 0xb0 (0xd6eadf28))
Apr 27 00:41:34 localhost kernel: [<c024301a>] inet_setsockopt [kernel] 0x36 (0xd6eadf3c))
Apr 27 00:41:34 localhost kernel: [<c01fcf54>] sys_setsockopt [kernel] 0x70 (0xd6eadf54))
Apr 27 00:41:34 localhost kernel: [<c01fd679>] sys_socketcall [kernel] 0x18d (0xd6eadf80))
Apr 27 00:41:34 localhost kernel: [<c010971b>] system_call [kernel] 0x33 (0xd6eadfc0))
Apr 27 00:41:34 localhost kernel:
Apr 27 00:41:34 localhost kernel:
Apr 27 00:41:34 localhost kernel: Code: 8b 1d 60 00 00 00 8b 4d 20 8b 3d 84 00 00 00 85 db 0f b7 51

there were other similar errors in /var/log/messages



thanks in advance

venkatesh
 
  


Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off



Similar Threads
Thread Thread Starter Forum Replies Last Post
Help required. Skb recieve causing kernel crash !!! bhuvan007 Linux - General 1 01-09-2006 06:19 AM
what should be size of preallocated skb in nic driver enthusiast_abdul Linux - Networking 1 01-08-2006 07:42 AM
Only allowing users in a single group to ssh from internet eggi Linux - Security 4 12-19-2005 11:06 AM
Unable to process skb in my own handler imransadat Programming 4 03-04-2005 12:18 PM
rename a group of files to a single extention Lleb_KCir Linux - General 9 02-20-2005 12:40 AM

LinuxQuestions.org > Forums > Linux Forums > Linux - Networking

All times are GMT -5. The time now is 06:22 AM.

Main Menu
Advertisement
My LQ
Write for LQ
LinuxQuestions.org is looking for people interested in writing Editorials, Articles, Reviews, and more. If you'd like to contribute content, let us know.
Main Menu
Syndicate
RSS1  Latest Threads
RSS1  LQ News
Twitter: @linuxquestions
Open Source Consulting | Domain Registration