I need help to hook L2 packet from network.

This is a discussion on I need help to hook L2 packet from network. within the Linux Networking forums, part of the Linux Forums category; Hello all. I need help to hook Ethernet packet. The proprietary packet received from network. This is an IP packet ...


Go Back   Usenet Forums > Linux Forums > Linux Networking

FAQ Members List Calendar Search Today's Posts Mark Forums Read
  #1 (permalink)  
Old 07-02-2008
Michael
 
Posts: n/a
Default I need help to hook L2 packet from network.

Hello all.
I need help to hook Ethernet packet.
The proprietary packet received from network. This is an IP packet
with extended L2 header, i.e. the packet has two L2 header + l3 header
+ .... . I need to hook this packet, remove extended l2 header and
return packet to regular process. Could you help me and advise how can
I do this. Is it possible with standard IP stack hooking process?

TIA
Michael
Reply With Quote
  #2 (permalink)  
Old 07-02-2008
Tejas Kokje
 
Posts: n/a
Default Re: I need help to hook L2 packet from network.

On Jul 2, 4:02*am, Michael <michael.rabi...@gmail.com> wrote:
> Hello all.
> I need help to hook Ethernet packet.
> The proprietary packet received from network. This is an IP packet
> with extended L2 header, i.e. the packet has two L2 header + l3 header
> + .... . I need to hook this packet, remove extended l2 header and
> return packet to regular process. Could you help me and advise how can
> I do this. Is it possible with standard IP stack hooking process?
>
> TIA
> Michael


I am assuming that you need to write (or modify) a program to do this
on Linux. Also, by "hook" I assume you mean that you want to capture
and process that ethernet packet (or frame to be precise).

In that case, you can use SOCK_PACKET type of socket. You can create
socket like this

sd=socket(AF_INET, SOCK_PACKET, htons(ETH_P_ALL));

This will enable sniffing on data link layer. But remember, that you
are sniffing all L2 packets(ETH_P_ALL) on a given subnet and that
packets are copied verbatim to userspace (with all headers). Hence if
LAN is really busy, it can bring system down to its knees. You can use
ETH_P_IP or ETH_P_ARP if you know these are the types you are
interested (check linux/if_ether.h).

Moreover, this type of socket does not support kernel buffering &
filtering. So single read() will return only one ethernet frame.
Search web for SOCK_PACKET and you will come across plenty of good
tutorials.

Cheers,
Tejas Kokje

Reply With Quote
Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

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 Off
[IMG] code is Off
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On



All times are GMT +1. The time now is 10:59 AM.


Powered by vBulletin® Version 3.7.3
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.0.0