Simple program use /dev/tap
maksim.yevmenkin at savvis.net
Fri Jul 29 19:56:15 GMT 2005
>>>As I want to learn how to use /dev/tap in freebsd,
>>>looking for a simple application that written for
>>>/dev/tap. OpenVPN is a bit too complicated for a
>>>newbie to get start. Can anyone tell me a link or
>>>reference for some of these examples?
>>There are examples that come with the distribution
> Is this only for tun device?
> How much difference between tun and tap in terms of
> programming when using the device?
>>(and this question would be better suited for
>>if for any FreBSD=specific list at all)
> Sorry, I currently don't have access to the
> frebsd.misc newsgroup, so I need to post the question
this type of question comes up quite often. its really simple: a single
read(2) call on /dev/tapX will return entire ethernet frame (if any)
received by tap interface (minus ethernet crc). a single write(2) call
on /dev/tapX will put entire ethernet frame (w/out ethernet crc) onto
tap interface outgoing queue.
so, the "buf" parameter to the write(2) call on /dev/tapX device should
point to a buffer with *complete* ethernet frame, including ethernet
header and payload. payload could be IP packet, but it does not have to
be. any protocol that uses ethernet as transport can be tunneled with
tap(4) (i.e. ipx).
the above is true for tun(4) with exception that tun(4) operates on IP
packets. so you have to write/read complete IP packets to/from /dev/tun.
More information about the freebsd-stable