Problems with kernel sockets

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




2.4.18-3 kernel

I'm developing a virtual network interface driver that tunnels
PPP over a UDP socket, and I've managed to get myself kinda stuck.
I'm hoping someone can poke me into the right direction.

I used the PPPoE kernel implementation as a reference model. The pppd
loads a shared library as a plugin. The plugin opens a socket and sends
a couple ioctls down to my driver. The driver creates a new net_device
and overloads the socket's send/recv methods.

The ppp driver will call my ppp_xmit() function when it has a frame for me
to send. I'd like to direct the frame to my datagram socket. Likewise,
when I read a frame off the socket, I'll pass it up to the ppp driver.

 o Incoming data is getting stuck in the socket's Rcv-Q.
   The pppd does a select, but never reads the data off the socket.
   strace shows the select() statement is properly formed and has the
   socket's file descriptor in the read set.

 o Sending doesn't seem to work so well, either. The ppp driver passes
   me an sk_buff. I've tried copying the data into a msghdr structure
   and calling udp_sendmsg directly. That crashes the system - hard.
   Nothing gets written to disk or console, so I'm at a loss to debug it,

   I've tried using dev_queue_xmit() to send the data. That successfully
   enqueues the sk_buff onto the packet scheduler (the device in question
   being my virtual device - not eth), but there are no signs that it goes
   anywhere else from there. I haven't been able to pinpoint in the kernel
   source where the packet is supposed to be dequeued and sent.

I know this is a vague request...I'm just hoping someone can point me 
somewhere in the right direction.

Thanks in advance.

--
Gary Cote
gary@cotecorner.com 

-
: send the line "unsubscribe linux-net" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Netdev]     [Ethernet Bridging]     [Linux 802.1Q VLAN]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Git]     [Bugtraq]     [Yosemite News and Information]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux PCI]     [Linux Admin]     [Samba]

  Powered by Linux