From 63518eccca27064285cf2e680510ba9a4c3e2231 Mon Sep 17 00:00:00 2001 From: Yaroslav Tykhiy Date: Mon, 26 Mar 2007 04:39:18 +0000 Subject: [PATCH] Introduce a new toy interface, edsc(4). It's a discard interface imitating an Ethernet device, so vlan(4) and if_bridge(4) can be attached to it for testing and benchmarking purposes. Its source can be an introduction to the anatomy of a network interface driver due to its simplicity as well as to a bunch of comments in it. --- share/man/man4/Makefile | 1 + share/man/man4/edsc.4 | 111 +++++++++++++++++++++++++++++++++++ sys/conf/NOTES | 3 + sys/conf/files | 1 + sys/modules/Makefile | 1 + sys/modules/if_edsc/Makefile | 8 +++ 6 files changed, 125 insertions(+) create mode 100644 share/man/man4/edsc.4 create mode 100644 sys/modules/if_edsc/Makefile diff --git a/share/man/man4/Makefile b/share/man/man4/Makefile index 753564e9be89..2cd45c454137 100644 --- a/share/man/man4/Makefile +++ b/share/man/man4/Makefile @@ -67,6 +67,7 @@ MAN= aac.4 \ dpt.4 \ dummynet.4 \ ed.4 \ + edsc.4 \ ef.4 \ ehci.4 \ em.4 \ diff --git a/share/man/man4/edsc.4 b/share/man/man4/edsc.4 new file mode 100644 index 000000000000..dc52009bd22b --- /dev/null +++ b/share/man/man4/edsc.4 @@ -0,0 +1,111 @@ +.\" Copyright (c) 1983, 1991, 1993 +.\" The Regents of the University of California. All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" From: @(#)lo.4 8.1 (Berkeley) 6/5/93 +.\" $FreeBSD$ +.\" +.Dd March 25, 2007 +.Dt EDSC 4 +.Os +.Sh NAME +.Nm edsc +.Nd Ethernet discard network interface +.Sh SYNOPSIS +.Cd "device edsc" +.Sh DESCRIPTION +The +.Nm +interface is a software discard mechanism which may be +used for performance analysis and software testing. +It imitates an Ethernet device, which +allows for its use in conjunction with such drivers as +.Xr if_bridge 4 +and +.Xr vlan 4 . +.Pp +As with other network interfaces, an +.Nm +interface must have network addresses assigned for each address family +with which it is to be used. +These addresses may be set or changed with the +.Dv SIOCSIFADDR +.Xr ioctl 2 +or +.Xr ifconfig 8 +utility. +.Pp +Each +.Nm +interface is created at runtime using interface cloning. +This is most easily done with the +.Xr ifconfig 8 +.Cm create +command or using the +.Va cloned_interfaces +variable in +.Xr rc.conf 5 . +.Sh SEE ALSO +.Xr ioctl 2 , +.Xr arp 4 , +.Xr if_bridge 4 , +.Xr inet 4 , +.Xr intro 4 , +.Xr vlan 4 , +.Xr rc.conf 5 , +.Xr arp 8 , +.Xr ifconfig 8 +.Sh HISTORY +The +.Nm +device was derived from the +.Xr disc 4 +device and first appeared in +.Fx 7.0 . +This manpage was adapted from +.Xr disc 4 . +.Sh CAVEATS +Since outgoing packets are just discarded by +.Nm , +ARP requests stay unreplied. +Consequently, an IP packet cannot be sent via +.Nm +until a static +.Xr arp 4 +entry is created for its next hop using +.Xr arp 8 . +.Pp +Initially an +.Nm +interface has a zero link level address. +It can be changed with +.Xr ifconfig 8 +.Cm lladdr +if needed. diff --git a/sys/conf/NOTES b/sys/conf/NOTES index 88086cb55904..5bd3493e08e7 100644 --- a/sys/conf/NOTES +++ b/sys/conf/NOTES @@ -737,6 +737,8 @@ device mn # Munich32x/Falc54 Nx64kbit/sec cards. # The `disc' device implements a minimal network interface, # which throws away all packets sent and never receives any. It is # included for testing purposes. This shows up as the `ds' interface. +# The `edsc' device implements a minimal Ethernet interface, +# which discards all packets sent and receives none. # The `tap' device is a pty-like virtual Ethernet interface # The `tun' device implements (user-)ppp and nos-tun # The `gif' device implements IPv6 over IP4 tunneling, @@ -782,6 +784,7 @@ device sppp #Generic Synchronous PPP device loop #Network loopback device device bpf #Berkeley packet filter device disc #Discard device (ds0, ds1, etc) +device edsc #Ethernet discard device device tap #Virtual Ethernet driver device tun #Tunnel driver (ppp(8), nos-tun(8)) device sl #Serial Line IP diff --git a/sys/conf/files b/sys/conf/files index 9bc7efbdfd0d..6c7069e916fa 100644 --- a/sys/conf/files +++ b/sys/conf/files @@ -1532,6 +1532,7 @@ net/if_atmsubr.c optional atm net/if_bridge.c optional if_bridge net/if_clone.c standard net/if_disc.c optional disc +net/if_edsc.c optional edsc net/if_ef.c optional ef net/if_enc.c optional enc net/if_ethersubr.c optional ether diff --git a/sys/modules/Makefile b/sys/modules/Makefile index dff387d35735..53daa7864b83 100644 --- a/sys/modules/Makefile +++ b/sys/modules/Makefile @@ -103,6 +103,7 @@ SUBDIR= ${_3dfx} \ ${_ie} \ if_bridge \ if_disc \ + if_edsc \ if_ef \ if_faith \ if_gif \ diff --git a/sys/modules/if_edsc/Makefile b/sys/modules/if_edsc/Makefile new file mode 100644 index 000000000000..af2704b942a9 --- /dev/null +++ b/sys/modules/if_edsc/Makefile @@ -0,0 +1,8 @@ +# $FreeBSD$ + +.PATH: ${.CURDIR}/../../net + +KMOD= if_edsc +SRCS= if_edsc.c + +.include