Hello, I apologize for the (perhaps stupid) question, but I am new to kernel internals, and would like to know how can a sniffer read whole packets, I mean including the link layer header. In the receive path, this is done in the net_rx_action(), but in the transmit path? I know that there is a function called dev_queue_xmit_nit() for this, but how can a driver add a link layer header to a packet before this function gets called? The hard_start_xmit() of the driver is, in fact, called after the dev_queue_xmit_nit(), (in the function dev_queue_xmit() ). I know ethernet headers can be captured, e.g. by Ethereal, but they are taken from a cache and added in the ip layer, if I remember well, before the dev_queue_xmit() is called. I think I'm missing something important about the subject, but I hope someone will answer me. Thank you in advance, Lanfranco - : 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