lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Tue, 20 Nov 2012 16:51:03 +0200 From: Rami Rosen <roszenrami@...il.com> To: Dmitry Kravkov <dmitry@...adcom.com> Cc: netdev@...r.kernel.org Subject: Re: question about eth_header Hi, I think that you should call skb_reset_mac_header() before calling eth_hdr() and that skb_reset_mac_header() should not be inside eth_hdr(). Following is explanation: In the RX path, when we get a packet in the driver, what essentially happens is that at this point, we have a pointer to the packet buffer in skb->data, and its length in skb->len. With ethernet packets, the driver will call eth_type_trans(); please look at ethernet drivers code. eth_type_trans() indeed sets the MAC header pointer by calling skb_reset_mac_header() on the skb. Afterwards, the eth_type_trans() will advance skb->data by 14, the size of the Ethernet header, and decrease skb->len by calling skb_pull_inline(skb, ETH_HLEN). In case you are wondering why the skb_reset_mac_header() is not inside the eth_hdr(), I think that the reason is that, once skb_reset_mac_header() on the skb was called, there are cases when we want to make several calls eth_hdr() without each time again resetting the mac header, for example, in the bridging code. There is no reason to doing it in terms of performance. rgs, Rami Rosen http://ramirose.wix.com/ramirosen On Tue, Nov 20, 2012 at 3:44 PM, Dmitry Kravkov <dmitry@...adcom.com> wrote: > Hi, > > I am trying to use eth_hdr() but it looks like it doesn't point to mac > header (mac header is present at skb->data). Shouldn't > skb_reset_mac_header() be called inside eth_header()? > > Thanks. > > > > > -- > To unsubscribe from this list: send the line "unsubscribe netdev" in > the body of a message to majordomo@...r.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists