#
2bbfbf80 |
| 28-Oct-2024 |
Mark Johnston <markj@FreeBSD.org> |
if_bridge: Mask MEXTPG if some members don't support it
Similar to how the network stack needs to use mb_unmapped_to_ext() to convert mbufs before passing them to an unsupported driver, if_bridge ne
if_bridge: Mask MEXTPG if some members don't support it
Similar to how the network stack needs to use mb_unmapped_to_ext() to convert mbufs before passing them to an unsupported driver, if_bridge needs to avoid passing M_EXTPG mbufs to interfaces that don't support them. Thus, clear IFCAP_MEXTPG on the bridge if any member interfaces don't handle unmapped mbufs.
PR: 278245 Reviewed by: jhb, gallatin MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D47294
show more ...
|
Revision tags: release/13.4.0 |
|
#
aa386085 |
| 28-Jun-2024 |
Zhenlei Huang <zlei@FreeBSD.org> |
net: Remove unneeded NULL check for the allocated ifnet
Change 4787572d0580 made if_alloc_domain() never fail, then also do the wrappers if_alloc(), if_alloc_dev(), and if_gethandle().
No functiona
net: Remove unneeded NULL check for the allocated ifnet
Change 4787572d0580 made if_alloc_domain() never fail, then also do the wrappers if_alloc(), if_alloc_dev(), and if_gethandle().
No functional change intended.
Reviewed by: kp, imp, glebius, stevek MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D45740
show more ...
|
Revision tags: release/14.1.0 |
|
#
73585176 |
| 25-Apr-2024 |
Zhenlei Huang <zlei@FreeBSD.org> |
if_bridge: Minor style fixes
And more comments on the #ifdef INET blocks to improve readability.
While here, revert the order of two prototypes to produce minimal diff compared to stable branches.
if_bridge: Minor style fixes
And more comments on the #ifdef INET blocks to improve readability.
While here, revert the order of two prototypes to produce minimal diff compared to stable branches.
MFC with: 65767e6126a7
show more ...
|
#
65767e61 |
| 23-Apr-2024 |
Lexi Winter <lexi@le-Fay.ORG> |
sys/net/if_bridge: support non-INET kernels
Reviewed by: imp Pull Request: https://github.com/freebsd/freebsd-src/pull/1159
|
#
ef84dd8f |
| 21-Apr-2024 |
Lexi Winter <lexi@le-Fay.ORG> |
if_bridge: clean up INET/INET6 handling
The if_bridge contains several instances of:
if (AF_INET code ... #ifdef INET6 AF_INET6 code ... #endif ) { ...
Clean this up by adding a couple
if_bridge: clean up INET/INET6 handling
The if_bridge contains several instances of:
if (AF_INET code ... #ifdef INET6 AF_INET6 code ... #endif ) { ...
Clean this up by adding a couple of macros at the top of the file that are conditionally defined based on whether INET and/or INET6 are enabled, which makes the code more readable and easier to maintain.
No functional change intended.
Reviewed by: zlei, markj MFC after: 1 week Pull Request: https://github.com/freebsd/freebsd-src/pull/1191
show more ...
|
#
319a5d08 |
| 01-Apr-2024 |
Eugene Grosbein <eugen@FreeBSD.org> |
if_bridge: use IF_MINMTU
Replace incorrect constant 576 with IF_MINMTU to check for minumum MTU. This unbreaks bridging tap interfaces with small mtu.
MFC after: 1 week
|
Revision tags: release/13.3.0, release/14.0.0 |
|
#
685dc743 |
| 16-Aug-2023 |
Warner Losh <imp@FreeBSD.org> |
sys: Remove $FreeBSD$: one-line .c pattern
Remove /^[\s*]*__FBSDID\("\$FreeBSD\$"\);?\s*\n/
|
#
fd7edfcd |
| 01-Jun-2023 |
Ben Wilber <ben@desync.com> |
bridge: fix lookup for untagged packets in bridge_transmit()
b0e38a1373 improved if_bridge's ability to cope with different VLANs, but it failed to update bridge_transmit() to cope with the new rule
bridge: fix lookup for untagged packets in bridge_transmit()
b0e38a1373 improved if_bridge's ability to cope with different VLANs, but it failed to update bridge_transmit() to cope with the new rule that untagged packets are treated as having VLAN ID 0 (rather than 1, as used to be the case).
Fix that oversight.
PR: 270559 Reviewed by: kp
show more ...
|
#
f3546eac |
| 18-May-2023 |
Kristof Provost <kp@FreeBSD.org> |
if_bridge: fix potential panic
When a new bridge_rtnode is added it is added with a NULL brt_dst. The brt_dst is set after the entry is added. This means there's a small window where another core co
if_bridge: fix potential panic
When a new bridge_rtnode is added it is added with a NULL brt_dst. The brt_dst is set after the entry is added. This means there's a small window where another core could also attempt to add this node, leading to the code attempting to log that the MAC addresses moved to a new interface. Aside from that being a spurious log entry it also panics, because obif is NULL (and we attempt to dereference it).
Avoid this by settings brt_dst before we insert the bridge_rtnode. Assert that obif is non-NULL, as an extra precaution.
Reported by: olivier@ Reviewed by: zlei@ Differential Revision: https://reviews.freebsd.org/D40147
show more ...
|
#
b0e38a13 |
| 07-Apr-2023 |
Kristof Provost <kp@FreeBSD.org> |
bridge: distinguish no vlan and vlan 1
The bridge treated no vlan tag as being equivalent to vlan ID 1, which causes confusion if the bridge sees both untagged and vlan 1 tagged traffic.
Use DOT1Q_
bridge: distinguish no vlan and vlan 1
The bridge treated no vlan tag as being equivalent to vlan ID 1, which causes confusion if the bridge sees both untagged and vlan 1 tagged traffic.
Use DOT1Q_VID_NULL when there's no tag, and fix up the lookup code by using 'DOT1Q_VID_RSVD_IMPL' to mean 'any vlan', rather than vlan 0. Note that we have to account for userspace expecting to use 0 as meaning 'any vlan'.
PR: 270559 Suggested by: Zhenlei Huang <zlei@FreeBSD.org> Reviewed by: philip, zlei Differential Revision: https://reviews.freebsd.org/D39478
show more ...
|
#
9af6f426 |
| 14-Apr-2023 |
Zhenlei Huang <zlei@FreeBSD.org> |
bridge: Use the %D identifier to format MAC address
It is shorter and more readable.
No functional change intended.
Reviewed by: kp Fixes: 2d3614fb132b bridge: Log MAC address port flapping MFC a
bridge: Use the %D identifier to format MAC address
It is shorter and more readable.
No functional change intended.
Reviewed by: kp Fixes: 2d3614fb132b bridge: Log MAC address port flapping MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D39542
show more ...
|
#
d862b165 |
| 10-Apr-2023 |
Mark Johnston <markj@FreeBSD.org> |
bridge: Add support for emulated netmap mode
if_bridge receives packets via a special interface, if_bridge_input, rather than by if_input. Thus, netmap's usual hooking of ifnet routines does not wo
bridge: Add support for emulated netmap mode
if_bridge receives packets via a special interface, if_bridge_input, rather than by if_input. Thus, netmap's usual hooking of ifnet routines does not work as expected. Instead, modify bridge_input() to pass packets directly to netmap when it is enabled. This applies to both locally delivered packets and forwarded packets.
When a netmap application transmits a packet by writing it to the host TX ring, the mbuf chain is passed to if_input, which ordinarily points to ether_input(). However, when transmitting via if_bridge, bridge_input() needs to see the packet again in order to decide whether to deliver or forward. Thus, introduce a new protocol flag, M_BRIDGE_INJECT, which 1) causes the packet to be passed to bridge_input() again after Ethernet processing, and 2) avoids passing the packet back to netmap. The source MAC address of the packet is used to determine the original "receiving" interface.
Reviewed by: vmaffione MFC after: 2 months Sponsored by: Zenarmor Sponsored by: OPNsense Sponsored by: Klara, Inc. Differential Revision: https://reviews.freebsd.org/D38066
show more ...
|
#
2d3614fb |
| 07-Apr-2023 |
Zhenlei Huang <zlei@FreeBSD.org> |
bridge: Log MAC address port flapping
MAC flapping occurs when a bridge receives packets with the same source MAC address on different member interfaces. The common reasons are: - user roams from o
bridge: Log MAC address port flapping
MAC flapping occurs when a bridge receives packets with the same source MAC address on different member interfaces. The common reasons are: - user roams from one bridge port to another - user has wrong network setup, bridge loops e.g. - someone set duplicated ethernet address on his/her nic - some bad guy / virus / trojan send spoofed packets
if_bridge currently updates the bridge routing entry silently hence it is hard to diagnose.
Emit logs when MAC address port flapping occurs to make it easier to diagnose.
Reviewed by: kp MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D39375
show more ...
|
Revision tags: release/13.2.0 |
|
#
82bbdde4 |
| 05-Apr-2023 |
Mark Johnston <markj@FreeBSD.org> |
bridge: Try to make the GRAB_OUR_PACKETS macro a bit more readable
- Let the compiler use constant folding to eliminate conditionals. - Fix some inconsistent whitespace.
No functional change intend
bridge: Try to make the GRAB_OUR_PACKETS macro a bit more readable
- Let the compiler use constant folding to eliminate conditionals. - Fix some inconsistent whitespace.
No functional change intended.
Reviewed by: zlei MFC after: 2 weeks Sponsored by: Klara, Inc. Differential Revision: https://reviews.freebsd.org/D38410
show more ...
|
#
66bdbcd5 |
| 03-Mar-2023 |
Alexander V. Chernikov <melifaro@FreeBSD.org> |
net: unify mtu update code
Subscribers: imp, ae, glebius
Differential Revision: https://reviews.freebsd.org/D38893
|
#
a2256150 |
| 14-Feb-2023 |
Gleb Smirnoff <glebius@FreeBSD.org> |
net: use pfil_mbuf_{in,out} where we always have an mbuf
This finalizes what has been started in 0b70e3e78b0.
Reviewed by: kp, mjg Differential revision: https://reviews.freebsd.org/D37976
|
#
3bc099eb |
| 07-Feb-2023 |
Mark Johnston <markj@FreeBSD.org> |
bridge: Make the ioctl table local to if_bridge.c
No functional change intended.
MFC after: 1 week Sponsored by: Klara, Inc.
|
#
2c2b37ad |
| 13-Jan-2023 |
Justin Hibbits <jhibbits@FreeBSD.org> |
ifnet/API: Move struct ifnet definition to a <net/if_private.h>
Hide the ifnet structure definition, no user serviceable parts inside, it's a netstack implementation detail. Include it temporarily
ifnet/API: Move struct ifnet definition to a <net/if_private.h>
Hide the ifnet structure definition, no user serviceable parts inside, it's a netstack implementation detail. Include it temporarily in <net/if_var.h> until all drivers are updated to use the accessors exclusively.
Reviewed by: glebius Sponsored by: Juniper Networks, Inc. Differential Revision: https://reviews.freebsd.org/D38046
show more ...
|
#
51088797 |
| 11-Dec-2022 |
Mark Johnston <markj@FreeBSD.org> |
bridge: Fix a potential memory leak in bridge_enqueue()
A comment at the beginning of the function notes that we may be transmitting multiple fragments as distinct packets. So, the function loops o
bridge: Fix a potential memory leak in bridge_enqueue()
A comment at the beginning of the function notes that we may be transmitting multiple fragments as distinct packets. So, the function loops over all fragments, transmitting each mbuf chain. If if_transmit fails, we need to free all of the fragments, but m_freem() only frees an mbuf chain - it doesn't follow m_nextpkt.
Change the error handler to free each untransmitted packet fragment, and count each fragment as a separate error since we increment OPACKETS once per fragment when transmission is successful.
Reviewed by: zlei, kp MFC after: 1 week Sponsored by: Klara, Inc. Differential Revision: https://reviews.freebsd.org/D37635
show more ...
|
Revision tags: release/12.4.0 |
|
#
22893e58 |
| 14-Oct-2022 |
Kristof Provost <kp@FreeBSD.org> |
bridge: default to not filtering L3
Change the default for net.link.bridge.pfil_member and net.link.bridge.pfil_bridge to zero.
That is, default to not calling layer 3 firewalls on the bridge or it
bridge: default to not filtering L3
Change the default for net.link.bridge.pfil_member and net.link.bridge.pfil_bridge to zero.
That is, default to not calling layer 3 firewalls on the bridge or its member interfaces.
With either of these enabled the bridge will, during L2 processing, remove the Ethernet header from packets, feed them to L3 firewalls, re-add the Ethernet header and send them out.
Not only does this interact very poorly with firewalls which defer packets, or reassemble and refragment IPv6, it also causes considerable confusion for users, because the firewall gets called in unexpected ways.
For example, a bridge which contains a bhyve tap and the host's LAN interface. We'd expect traffic between the LAN and bhyve VM to pass, no matter what (layer 3) firewall rules are set on the host. That's not the case as long as pfil_bridge or pfil_member are set.
Reviewed by: Zhenlei Huang MFC: never Differential Revision: https://reviews.freebsd.org/D37009
show more ...
|
#
91ebcbe0 |
| 22-Sep-2022 |
Alexander V. Chernikov <melifaro@FreeBSD.org> |
if_clone: migrate some consumers to the new KPI.
Convert most of the cloner customers who require custom params to the new if_clone KPI.
Reviewed by: kp Differential Revision: https://reviews.free
if_clone: migrate some consumers to the new KPI.
Convert most of the cloner customers who require custom params to the new if_clone KPI.
Reviewed by: kp Differential Revision: https://reviews.freebsd.org/D36636 MFC after: 2 weeks
show more ...
|
#
150486f6 |
| 29-Jul-2022 |
Zhenlei Huang <zlei.huang@gmail.com> |
Introduce and use the NET_EPOCH_DRAIN_CALLBACKS() macro
Reviewed by: melifao, kp Differential Revision: https://reviews.freebsd.org/D35968
|
#
1865ebfb |
| 25-Jun-2022 |
Kristof Provost <kp@FreeBSD.org> |
if_bridge: change MTU for new members
Rather than reject new bridge members because they have the wrong MTU change it to match the bridge. If that fails, reject the new interface.
PR: 264883 Differ
if_bridge: change MTU for new members
Rather than reject new bridge members because they have the wrong MTU change it to match the bridge. If that fails, reject the new interface.
PR: 264883 Different Revision: https://reviews.freebsd.org/D35597
show more ...
|
#
f7faa4ad |
| 04-Jun-2022 |
Gordon Bergling <gbe@FreeBSD.org> |
if_bridge(4): Fix a typo in a source code comment
- s/accross/across/
MFC after: 3 days
|
Revision tags: release/13.1.0 |
|
#
36637dd1 |
| 19-Feb-2022 |
Kristof Provost <kp@FreeBSD.org> |
bridge: Don't share broadcast packets
if_bridge duplicates broadcast packets with m_copypacket(), which creates shared packets. In certain circumstances these packets can be processed by udp_usrreq.
bridge: Don't share broadcast packets
if_bridge duplicates broadcast packets with m_copypacket(), which creates shared packets. In certain circumstances these packets can be processed by udp_usrreq.c:udp_input() first, which modifies the mbuf as part of the checksum verification. That may lead to incorrect packets being transmitted.
Use m_dup() to create independent mbufs instead.
Reported by: Richard Russo <toast@ruka.org> Reviewed by: donner, afedorov MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D34319
show more ...
|