NAME
bridge – Ethernet bridge and IPv4 tunnel

SYNOPSIS
bind –a #Bb /net
/net/bridge
b/ctl
/net/bridge
b/cache
/net/bridge
b/log
/net/bridge
b/stats
/net/bridge
b/n
/net/bridgeb/n/ctl
/net/bridge
b/n/local
/net/bridge
b/n/status

DESCRIPTION
The bridge device bridges (copies) packets amongst Ethernet interfaces. The number b in the bind is optional and selects a particular bridge (default 0).

The /net/bridge0 directory contains ctl, cache, log, and stats files, and numbered subdirectories for each physical interface.

Opening the ctl file reserves an interface. The file descriptor returned from the open(2) will point to the control file, ctl, of the newly allocated interface. Reading ctl returns a text string representing the number of the interface. Writing ctl alters aspects of the interface. The possible ctl messages are: bind ether port ownhash ethmed
Treat the device mounted at ethmed (e.g., /net/ether0) as an Ethernet medium and associate it with this bridge (forward its packets to the other interfaces associated with this bridge) as port. Ownhash is an `owner hash'.
bind tunnel port ownhash tun ethmed
Treat the device mounted at tun as a network tunnel (of IPv4 in IPv4), and the device mounted at ethmed as an Ethernet medium, and associate them with this bridge (forward its packets to the other interfaces associated with this bridge) as port. Also read packets from the tun interface and write them to the ethmed interface. Such tunnels have an MTU of 1400 bytes.
unbind type port [ownhash]
Disassociate the interface associated with port from this bridge. Type must be ether or tunnel.
cacheflushClear the cache of (destination MAC address, port) tuples.
delay delay0 delayn
Set the delay0 and delayn parameters. delay0 is the constant microsecond delay per packet and delayn is the microsecond delay per byte.
set option    Set bridge option. The only known option is tcpmss, which limits the TCP Maximum Segment Size of TCP packets passing through to 1300 bytes.
clear optionClear bridge option.

Reading stats returns statistics about the bridge.

Reading the log file returns data from the bridge's log and will block at end of file awaiting new data.

Reading the cache file prints the cache of (destination MAC address, port) tuples, one entry per line. The format is: the destination MAC (e.g., Ethernet) address in hex, port number, count of packets from this address, count of packets to this address, expiry time in seconds since the epoch, and e for expired entries or v for valid entries.

In a connection subdirectory, ctl and local don't do anything, but status returns a one–line status summary.

EXAMPLES
Set up a network bridge between two Ethernets (#l0 and #l1).
bind –a '#B' /net
bind –a '#l1' /net
echo 'bind ether outer 0 /net/ether0' >/net/bridge0/ctl
echo 'bind ether inner 0 /net/ether1' >/net/bridge0/ctl

SEE ALSO
ip(3)

SOURCE
/sys/src/9/port/devbridge.c

BUGS
Understands but won't tunnel nor fragment IPv6.

Currently works in 9 but not 9k kernels.

Copyright © 2025 Plan 9 Foundation