2002-11-08 06:06:05

by Colin Burnett

[permalink] [raw]
Subject: pure raw eth sockets

I'm at a complete road block here and I appreciate any help!

I'm trying to write a packet generator that generates a packet down to the
destination/src mac address of an eth frame. However, nothing I find seems to
explain how to do this let alone if it is possible. As example (for
familiarity), implementing a RARP client (and server). I first create a socket:

socket(PF_INET, SOCK_PACKET, ETH_P_RARP)

After generating an entire packet (eth frame + RARP request) and sending it via
sendto, tcpdump shows that my packet was encapsulated as the data for an IP
packet. Definitely not what I want and I suspect it is because I'm passing the
PF_INET domain (it assuming IP?).

So how would I go about implement sending a RARP request (obviously I'm doing
something wrong or assuming something wrong)? Or more generally, how do I get
pure raw socket access?
--


Colin Burnett


2002-11-08 06:37:45

by Chris Friesen

[permalink] [raw]
Subject: Re: pure raw eth sockets

Colin Burnett wrote:

> socket(PF_INET, SOCK_PACKET, ETH_P_RARP)

I believe you want something more like:

socket(PF_PACKET, SOCK_RAW, htons(ETH_P_RARP));

Try doing a man on "packet".

Chris



--
Chris Friesen | MailStop: 043/33/F10
Nortel Networks | work: (613) 765-0557
3500 Carling Avenue | fax: (613) 765-2986
Nepean, ON K2H 8E9 Canada | email: [email protected]

2002-11-08 08:07:55

by Willy Tarreau

[permalink] [raw]
Subject: Re: pure raw eth sockets

On Fri, Nov 08, 2002 at 12:12:44AM -0600, Colin Burnett wrote:
> I'm at a complete road block here and I appreciate any help!
>
> I'm trying to write a packet generator that generates a packet down to the
> destination/src mac address of an eth frame. However, nothing I find seems to
> explain how to do this let alone if it is possible. As example (for
> familiarity), implementing a RARP client (and server). I first create a socket:

I wrote a tool which works exactly like this, to test network equipments to
limits. It's slightly commented, and relatively basic. You can download it
there :

http://w.ods.org/tools/ethforge/

Just a tip: don't start it without args, by default it will bomb as many
packets as possible on your network! Read it first :-)

Cheers,
Willy