It turns out that packets sent directly to a device through
SOCK_PACKET sockets don't set the skb->protocol field,
and as a result any such packets get dropped by the PPP driver.
This breaks diald under some circumstances.
The following patch fixes the problem.
--- CUT HERE --------------------------------------------------------------
--- linux/net/ipv4/packet.c.orig Thu Mar 14 00:12:10 1996
+++ linux/net/ipv4/packet.c Thu Mar 14 00:12:57 1996
@@ -183,6 +183,7 @@
skb->sk = sk;
skb->free = 1;
+ skb->protocol = htons(ETH_P_IP);
memcpy_fromiovec(skb_put(skb,len), msg->msg_iov, len);
skb->arp = 1; /* No ARP needs doing on this (complete) frame */
--- CUT HERE --------------------------------------------------------------
-- eric
---------------------------------------------------------------------------
Eric Schenk www: http://www.cs.toronto.edu/~schenk
Department of Computer Science email: schenk@cs.toronto.edu
University of Toronto