Home | History | Annotate | Download | only in net
History log of /src/sys/net/bridgestp.c
RevisionDateAuthorComments
 1.27  05-Jul-2024  rin sys: Drop redundant NULL check before m_freem(9)

m_freem(9) safely has accepted NULL argument at least since 4.2BSD:
https://www.tuhs.org/cgi-bin/utree.pl?file=4.2BSD/usr/src/sys/sys/uipc_mbuf.c

Compile-tested on amd64/ALL.

Suggested by knakahara@
 1.26  28-Feb-2018  ozaki-r branches: 1.26.40;
Remove an obsolete assertion too (fix build)

bif_refs was removed when migrated to use psref.
 1.25  28-Feb-2018  ozaki-r Sweep obsolete BRIDGE_MPSAFE (it's always on now)
 1.24  09-Mar-2017  ozaki-r Remove unnecessary splnet
 1.23  10-Jun-2016  ozaki-r branches: 1.23.2; 1.23.4;
Introduce m_set_rcvif and m_reset_rcvif

The API is used to set (or reset) a received interface of a mbuf.
They are counterpart of m_get_rcvif, which will come in another
commit, hide internal of rcvif operation, and reduce the diff of
the upcoming change.

No functional change.
 1.22  19-Apr-2016  ozaki-r Apply psref(9) to bridge(4)

Note that there is an issue that ioctls for an interface and a destruction
of the interface can run in parallel and it causes race conditions on
bridge as well (it rarely happens). The issue will be addressed in the
interface common code (if.c).
 1.21  11-Apr-2016  ozaki-r Fix usage of pslist(9)

Pointed out by riastradh@.
 1.20  11-Apr-2016  ozaki-r Use pslist(9) in bridge(4)

This adds missing memory barriers to list operations for pserialize.
 1.19  15-Feb-2016  ozaki-r Simplify bridge(4)

Thanks to introducing softint-based if_input, the entire bridge code now
never run in hardware interrupt context. So we can simplify the code.

- Remove spin mutexes
- They were needed because some code of bridge could run in
hardware interrupt context
- We now need only an adaptive mutex for each shared object
(a member list and a forwarding table)
- Remove pktqueue
- bridge_input is already in softint, using another softint
(for bridge_forward) is useless
- Packet distribution should be down at device drivers
 1.18  31-Dec-2014  ozaki-r Use pserialize in bridge

This change enables lockless accesses to bridge member lists.
See locking notes in a comment to know how pserialize and
mutexes are used.

This change also provides support for softint-based interrupt
handling; pserialize readers can run in both HW interrupt and
softint contexts.

As usual, pserialize is used only when NET_MPSAFE on.
 1.17  14-Jul-2014  ozaki-r branches: 1.17.4;
Make bridge MPSAFE

- Introduce BRIDGE_MPSAFE
- It's enabled only when NET_MPSAFE is defined
in if.h or the kernel config
- Add iflist and rtlist mutex locks
- Locking iflist is performance sensitive,
so it's not used when !BRIDGE_MPSAFE
- Add bif object reference counting
- It enables fine-grain locking for bridge member lists
by allowing to not hold a lock during touching a bif
- bridge_release_member is added to decrement the
reference count
- A condition variable is added to do bridge_delete_member
gracefully
- Add if_bridgeif to ifnet
- It's a shortcut to a bif object of a bridge member
- It reduces a bif lookup cost and so lock contention on iflist
- Make bridgestp MPSAFE too
 1.16  18-Jun-2014  ozaki-r Make local functions static

This change unveiled some functions are unused. Remove some and
comment out the others.

No functional change.
 1.15  17-Jun-2014  ozaki-r Restructure ether_input and bridge_input

The network stack of NetBSD is well organized and
layered. A packet reception is processed from a
lower layer to an upper layer one by one. However,
ether_input and bridge_input are not structured so.
bridge_input is called inside ether_input.

The new structure replaces ifnet#if_input of a bridge
member with bridge_input when the member is attached.
So a packet goes straight on a packet reception via
a bridge, bridge_input => ether_input => ip_input.

The change is part of a patch of Lloyd Parkes submitted
in PR 48104. Unlike the patch, the change doesn't
intend to change the behavior of the packet processing.
Another patch will fix PR 48104.
 1.14  18-Jan-2009  mrg branches: 1.14.24; 1.14.38;
Fix multiple problems:

* A sign extension error creating the bridge ID corrupted the
priority (always making it the maximum).
* Do not catch STP packets on an interface for which STP is not
enabled -- it's a violation of the spec, and causes STP to fail on
neighboring bridges.
* An optimization to bstp_input() -- some information is already
known when we call it.

contributed anonymously.
 1.13  25-Dec-2007  perry branches: 1.13.10; 1.13.18;
Convert many of the uses of __attribute__ to equivalent
__packed, __unused and __dead macros from cdefs.h
 1.12  26-Aug-2007  dyoung branches: 1.12.2; 1.12.8; 1.12.10; 1.12.14;
Constify: LLADDR -> CLLADDR. I'm aiming here to make it easier to
identify sockaddr_dl abuse that remains in the kernel, especially
the potential for overwriting memory past the end of a sockaddr_dl
with, e.g., memcpy(LLADDR(), ...).

Use sockaddr_dl_setaddr() in a few places.
 1.11  04-Mar-2007  christos branches: 1.11.2; 1.11.10; 1.11.14;
Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.10  16-Nov-2006  christos branches: 1.10.4;
__unused removal on arguments; approved by core.
 1.9  12-Oct-2006  christos - sprinkle __unused on function decls.
- fix a couple of unused bugs
- no more -Wno-unused for i386
 1.8  15-Apr-2006  christos branches: 1.8.8; 1.8.10;
Coverity CID 2728: Add KASSERT before NULL deref.
 1.7  11-Dec-2005  christos branches: 1.7.4; 1.7.6; 1.7.8; 1.7.10; 1.7.12;
merge ktrace-lwp.
 1.6  26-Feb-2005  perry branches: 1.6.4;
nuke trailing whitespace
 1.5  28-Nov-2003  keihan branches: 1.5.8; 1.5.10;
s/netbsd.org/NetBSD.org/g
 1.4  16-Sep-2003  jdc Adapt to account for bridge_enqueue()'s extra parameter.
 1.3  03-Feb-2003  thorpej branches: 1.3.2;
Test callout_pending(), not callout_active(), and eliminate now-unnecessary
callout_deactivate() calls.
 1.2  12-Nov-2001  lukem add RCSIDs
 1.1  17-Aug-2001  thorpej branches: 1.1.2; 1.1.4;
Add support for building Ethernet bridges, based on Jason Wright's
bridge driver from OpenBSD, although the bridge code has been *heavily*
modified by me (the 802.1D code remains mostly unchanged from the
original).
 1.1.4.3  10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.1.4.2  25-Aug-2001  thorpej Merge Aug 24 -current into the kqueue branch.
 1.1.4.1  17-Aug-2001  thorpej file bridgestp.c was added on branch kqueue on 2001-08-25 06:16:56 +0000
 1.1.2.3  14-Nov-2001  nathanw Catch up to -current.
 1.1.2.2  24-Aug-2001  nathanw Catch up with -current.
 1.1.2.1  17-Aug-2001  nathanw file bridgestp.c was added on branch nathanw_sa on 2001-08-24 00:12:05 +0000
 1.3.2.4  04-Mar-2005  skrll Sync with HEAD.

Hi Perry!
 1.3.2.3  21-Sep-2004  skrll Fix the sync with head I botched.
 1.3.2.2  18-Sep-2004  skrll Sync with HEAD.
 1.3.2.1  03-Aug-2004  skrll Sync with HEAD
 1.5.10.1  19-Mar-2005  yamt sync with head. xen and whitespace. xen part is not finished.
 1.5.8.1  29-Apr-2005  kent sync with -current
 1.6.4.4  21-Jan-2008  yamt sync with head
 1.6.4.3  03-Sep-2007  yamt sync with head.
 1.6.4.2  30-Dec-2006  yamt sync with head.
 1.6.4.1  21-Jun-2006  yamt sync with head.
 1.7.12.1  24-May-2006  tron Merge 2006-05-24 NetBSD-current into the "peter-altq" branch.
 1.7.10.1  19-Apr-2006  elad sync with head.
 1.7.8.1  24-May-2006  yamt sync with head.
 1.7.6.1  22-Apr-2006  simonb Sync with head.
 1.7.4.1  09-Sep-2006  rpaulo sync with head
 1.8.10.2  10-Dec-2006  yamt sync with head.
 1.8.10.1  22-Oct-2006  yamt sync with head
 1.8.8.1  18-Nov-2006  ad Sync with head.
 1.10.4.1  12-Mar-2007  rmind Sync with HEAD.
 1.11.14.1  03-Sep-2007  jmcneill Sync with HEAD.
 1.11.10.1  03-Sep-2007  skrll Sync with HEAD.
 1.11.2.1  09-Oct-2007  ad Sync with head.
 1.12.14.1  02-Jan-2008  bouyer Sync with HEAD
 1.12.10.1  26-Dec-2007  ad Sync with head.
 1.12.8.1  18-Feb-2008  mjf Sync with HEAD.
 1.12.2.1  09-Jan-2008  matt sync with HEAD
 1.13.18.1  19-Jan-2009  skrll Sync with HEAD.
 1.13.10.1  04-May-2009  yamt sync with head.
 1.14.38.1  10-Aug-2014  tls Rebase.
 1.14.24.2  03-Dec-2017  jdolecek update from HEAD
 1.14.24.1  20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.17.4.5  28-Aug-2017  skrll Sync with HEAD
 1.17.4.4  09-Jul-2016  skrll Sync with HEAD
 1.17.4.3  22-Apr-2016  skrll Sync with HEAD
 1.17.4.2  19-Mar-2016  skrll Sync with HEAD
 1.17.4.1  06-Apr-2015  skrll Sync with HEAD
 1.23.4.1  21-Apr-2017  bouyer Sync with HEAD
 1.23.2.1  20-Mar-2017  pgoyette Sync with HEAD
 1.26.40.1  02-Aug-2025  perseant Sync with HEAD

RSS XML Feed