Virtual device driver programming
Julian Elischer
julian at elischer.org
Fri Jun 23 19:00:41 UTC 2006
Robert Watson wrote:
>
> On Fri, 23 Jun 2006, Johnny Choque wrote:
>
>> I'm interested in programming a virtual network device driver -Linux
>> concept- on a FreeBSD box. The idea behind of this sort of interface
>> is the following:
>>
>> "From the kernel's point of view, a network interface is a software
>> object that can process outgoing packets, and the actual transmission
>> mechanism remains hidden inside the interface driver. Even though
>> most interfaces are associated to physical devices (or, for the
>> loopback interface, to a software-only data loop), it is possible to
>> design network interface drivers that rely on other interfaces to
>> perform actual packet transmission. The idea of a ``virtual''
>> interface can be useful to implement special-purpose processing on
>> data packets while avoiding to hack with the network subsystem of the
>> kernel."
>>
>> I know that is not too complicated to program this sort of
>> functionality in linux but I would like to do it over freebsd, has
>> anybody some idea on how could I start doing it? I've been searching
>> in the freebsd handbook but I haven't found anything really relevant.
>
>
> tap(4) and tun(4) describe pseudo-devices you can use to instantiate
> ethernet and tunnel interfaces from user space. Programs attach to
> pseudo-devices, and using read/write operations on the pseudo-device,
> can receive and generate packets on the network interface. In kernel,
> the ifnet(9) API is used to implement network interfaces -- nothing in
> the API requires that the under-side of a network interface be
> hardware. In fact, a great many network types without underlying
> hardware have been implemented, including the loopback interface,
> encapsulation interfaces, and the tap/tun interface
> drivers.
>
there is also gif(4) as well
and if that is not enough the netgraph system gives you a toolkit to
make your own kernel based
virtual network interfaces.
(ng_iface, ng_ether, ng_eiface (and others))
> Robert N M Watson
> Computer Laboratory
> University of Cambridge
> _______________________________________________
> freebsd-hackers at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
> To unsubscribe, send any mail to
> "freebsd-hackers-unsubscribe at freebsd.org"
More information about the freebsd-hackers
mailing list