SWITCH(4) | Device Drivers Manual | SWITCH(4) |
switch
— network
switch pseudo device
pseudo-device switch
#include <sys/types.h>
#include <net/if.h>
#include <netinet/in.h>
#include <netinet/if_ether.h>
#include <net/if_bridge.h>
The switch
driver provides a network
interface pseudo-device. The interface is the forwarding part of a network
switch and it works along with a controller, usually
switchd(8) or
switchctl(8), through the
device /dev/switchN. The
switch
device and the controller communicate using
the OpenFlow 1.3 protocol.
A switch
interface is created using
ifconfig switch
N
create
or by opening the character device
/dev/switchN.
/dev/switchN is the OpenFlow channel of the interface switchN. It is used for exchanging OpenFlow messages. The device behaves like a stream, which means that a read(2) may return one or more OpenFlow messages depending on the number of bytes requested. It may also read the message partially (e.g. read(2) the OpenFlow message header and then the complete message). The same applies to write(2) calls, so it may send one or more OpenFlow messages with a single write or use more than one write(2) calls to send a single message.
A switch
interface responds to all of the
ioctl(2) calls specific to
other interfaces listed in
netintro(4).
The following
ioctl(2) calls and their
structures are commonly used by switch
and
bridge(4):
The following
ioctl(2) calls are used only
by the switch
interface, as defined in
<sys/sockio.h>
:
SIOCBRDGADDL
struct ifbreq *SIOCSWGDPID
SIOCSWSDPID
struct ifbrparamSIOCSWGMAXFLOW
struct ifbrparamSIOCSWGMAXGROUP
struct ifbrparamSIOCSWSPORTNO
struct ifbreqIf open fails, errno(2) may be set to one of:
bridge(4), inet(4), inet6(4), vether(4), hostname.if(5), ifconfig(8), netstart(8), switchctl(8), switchd(8)
Open Networking Foundation (ONF), OpenFlow Switch Specification, Version 1.3.5 (Protocol version 0x04), March 26, 2015.
The switch
driver first appeared in
OpenBSD 6.1.
The switch
driver was written by
Kazuya Goda
<goda@openbsd.org>.
October 24, 2017 | OpenBSD-6.4 |