aboutsummaryrefslogtreecommitdiff
path: root/sys/net/if_ethersubr.c
Commit message (Collapse)AuthorAgeFilesLines
...
* Rather than using hidden includes (with cicular dependencies),Bjoern A. Zeeb2008-12-021-0/+1
| | | | | | | | | | | | | | directly include only the header files needed. This reduces the unneeded spamming of various headers into lots of files. For now, this leaves us with very few modules including vnet.h and thus needing to depend on opt_route.h. Reviewed by: brooks, gnn, des, zec, imp Sponsored by: The FreeBSD Foundation Notes: svn path=/head/; revision=185571
* convert calls to IFQ_HANDOFF to if_transmitKip Macy2008-11-221-3/+1
| | | | Notes: svn path=/head/; revision=185164
* Change the initialization methodology for global variables scheduledMarko Zec2008-11-191-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | for virtualization. Instead of initializing the affected global variables at instatiation, assign initial values to them in initializer functions. As a rule, initialization at instatiation for such variables should never be introduced again from now on. Furthermore, enclose all instantiations of such global variables in #ifdef VIMAGE_GLOBALS blocks. Essentialy, this change should have zero functional impact. In the next phase of merging network stack virtualization infrastructure from p4/vimage branch, the new initialization methology will allow us to switch between using global variables and their counterparts residing in virtualization containers with minimum code churn, and in the long run allow us to intialize multiple instances of such container structures. Discussed at: devsummit Strassburg Reviewed by: bz, julian Approved by: julian (mentor) Obtained from: //depot/projects/vimage-commit2/... X-MFC after: never Sponsored by: NLnet Foundation, The FreeBSD Foundation Notes: svn path=/head/; revision=185088
* Retire the MALLOC and FREE macros. They are an abomination unto style(9).Dag-Erling Smørgrav2008-10-231-2/+2
| | | | | | | MFC after: 3 months Notes: svn path=/head/; revision=184205
* Step 1.5 of importing the network stack virtualization infrastructureMarko Zec2008-10-021-2/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | from the vimage project, as per plan established at devsummit 08/08: http://wiki.freebsd.org/Image/Notes200808DevSummit Introduce INIT_VNET_*() initializer macros, VNET_FOREACH() iterator macros, and CURVNET_SET() context setting macros, all currently resolving to NOPs. Prepare for virtualization of selected SYSCTL objects by introducing a family of SYSCTL_V_*() macros, currently resolving to their global counterparts, i.e. SYSCTL_V_INT() == SYSCTL_INT(). Move selected #defines from sys/sys/vimage.h to newly introduced header files specific to virtualized subsystems (sys/net/vnet.h, sys/netinet/vinet.h etc.). All the changes are verified to have zero functional impact at this point in time by doing MD5 comparision between pre- and post-change object files(*). (*) netipsec/keysock.c did not validate depending on compile time options. Implemented by: julian, bz, brooks, zec Reviewed by: julian, bz, brooks, kris, rwatson, ... Approved by: julian (mentor) Obtained from: //depot/projects/vimage-commit2/... X-MFC after: never Sponsored by: NLnet Foundation, The FreeBSD Foundation Notes: svn path=/head/; revision=183550
* Move CTASSERT of ether header sizes out of the header file and intoEd Maste2008-08-271-0/+5
| | | | | | | | | | | | | if_ethersubr.c. CTASSERT is implemented using a dummy typedef, which if used in a header file may conflict with another CTASSERT in a source file using that header. I'll make a note of this in CTASSERT's man page. Approved by: imp Notes: svn path=/head/; revision=182285
* Commit step 1 of the vimage project, (network stack)Bjoern A. Zeeb2008-08-171-3/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | virtualization work done by Marko Zec (zec@). This is the first in a series of commits over the course of the next few weeks. Mark all uses of global variables to be virtualized with a V_ prefix. Use macros to map them back to their global names for now, so this is a NOP change only. We hope to have caught at least 85-90% of what is needed so we do not invalidate a lot of outstanding patches again. Obtained from: //depot/projects/vimage-commit2/... Reviewed by: brooks, des, ed, mav, julian, jamie, kris, rwatson, zec, ... (various people I forgot, different versions) md5 (with a bit of help) Sponsored by: NLnet Foundation, The FreeBSD Foundation X-MFC after: never V_Commit_Message_Reviewed_By: more people than the patch Notes: svn path=/head/; revision=181803
* Add missing braces in #if 0ed code.Antoine Brodin2008-05-101-1/+2
| | | | | | | | Approved by: rwatson (mentor) MFC after: 1 month Notes: svn path=/head/; revision=178920
* Add an option (compiled out by default)Julian Elischer2008-04-291-0/+2
| | | | | | | | | | | | to profile outoing packets for a number of mbuf chain related parameters e.g. number of mbufs, wasted space. probably will do with further work later. Reviewed by: various Notes: svn path=/head/; revision=178674
* back out last change as Sam believes that it breaks multicast - need to ↵Kip Macy2008-03-201-2/+1
| | | | | | | revisit after following up with pyun Notes: svn path=/head/; revision=177436
* Don't re-initialize the interface if it is already running.Kip Macy2008-03-201-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This one line change makes the following code found in many ethernet device drivers (at least em, igb, ixgbe, and cxgb) gratuitous case SIOCSIFADDR: if (ifa->ifa_addr->sa_family == AF_INET) { /* * XXX * Since resetting hardware takes a very long time * and results in link renegotiation we only * initialize the hardware only when it is absolutely * required. */ ifp->if_flags |= IFF_UP; if (!(ifp->if_drv_flags & IFF_DRV_RUNNING)) { EM_CORE_LOCK(adapter); em_init_locked(adapter); EM_CORE_UNLOCK(adapter); } arp_ifinit(ifp, ifa); } else error = ether_ioctl(ifp, command, data); break; Notes: svn path=/head/; revision=177433
* Move IFF_NEEDSGIANT warning from if_ethersubr.c to if.c so it is displayedRobert Watson2008-03-071-2/+0
| | | | | | | | | | | | | for all network interfaces, not just ethernet-like ones. Upgrade it to a louder WARNING and be explicit that the flag is obsolete. Support for IFF_NEEDSGIANT will be removed in a few months (see arch@ for details) and will not appear in 8.0. Upgrade if_watchdog to a WARNING. Notes: svn path=/head/; revision=176906
* 1) dummynet_io() declaration has changed.Oleg Bulyzhin2007-11-061-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2) Alter packet flow inside dummynet: allow certain packets to bypass dummynet scheduler. Benefits are: - lower latency: if packet flow does not exceed pipe bandwidth, packets will not be (up to tick) delayed (due to dummynet's scheduler granularity). - lower overhead: if packet avoids dummynet scheduler it shouldn't reenter ip stack later. Such packets can be fastforwarded. - recursion (which can lead to kernel stack exhaution) eliminated. This fix long existed panic, which can be triggered this way: kldload dummynet sysctl net.inet.ip.fw.one_pass=0 ipfw pipe 1 config bw 0 for i in `jot 30`; do ipfw add 1 pipe 1 icmp from any to any; done ping -c 1 localhost 3) Three new sysctl nodes are added: net.inet.ip.dummynet.io_pkt - packets passed to dummynet net.inet.ip.dummynet.io_pkt_fast - packets avoided dummynet scheduler net.inet.ip.dummynet.io_pkt_drop - packets dropped by dummynet P.S. Above comments are true only for layer 3 packets. Layer 2 packet flow is not changed yet. MFC after: 3 month Notes: svn path=/head/; revision=173399
* Merge first in a series of TrustedBSD MAC Framework KPI changesRobert Watson2007-10-241-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | from Mac OS X Leopard--rationalize naming for entry points to the following general forms: mac_<object>_<method/action> mac_<object>_check_<method/action> The previous naming scheme was inconsistent and mostly reversed from the new scheme. Also, make object types more consistent and remove spaces from object types that contain multiple parts ("posix_sem" -> "posixsem") to make mechanical parsing easier. Introduce a new "netinet" object type for certain IPv4/IPv6-related methods. Also simplify, slightly, some entry point names. All MAC policy modules will need to be recompiled, and modules not updates as part of this commit will need to be modified to conform to the new KPI. Sponsored by: SPARTA (original patches against Mac OS X) Obtained from: TrustedBSD Project, Apple Computer Notes: svn path=/head/; revision=172930
* Use a uint16_t type for the vlan tag rather an int.Andrew Thompson2007-10-181-1/+1
| | | | Notes: svn path=/head/; revision=172777
* The bridging output function puts the mbuf directly on the interfaces sendAndrew Thompson2007-10-181-0/+28
| | | | | | | | | | | | | | | | | | | queue so the output network card must support the same tagging mechanism as how the frame was input (prepended Ethernet header tag or stripped HW mflag). Now the vlan Ethernet header is _always_ stripped in ether_input and the mbuf flagged, only only network cards with VLAN_HWTAGGING enabled would properly re-tag any outgoing vlan frames. If the outgoing interface does not support hardware tagging then readd the vlan header to the front of the frame. Move the common vlan encapsulation in to ether_vlanencap(). Reported by: Erik Osterholm, Jon Otterholm MFC after: 1 week Notes: svn path=/head/; revision=172770
* Remove DIAG code that discards oversized packets.Julian Elischer2007-09-141-14/+0
| | | | | | | | | There has been general consensus that this was a bad idea/ Approved by: re (bmah) Notes: svn path=/head/; revision=172170
* First in a series of changes to remove the now-unused Giant compatibilityRobert Watson2007-07-271-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | framework for non-MPSAFE network protocols: - Remove debug_mpsafenet variable, sysctl, and tunable. - Remove NET_NEEDS_GIANT() and associate SYSINITSs used by it to force debug.mpsafenet=0 if non-MPSAFE protocols are compiled into the kernel. - Remove logic to automatically flag interrupt handlers as non-MPSAFE if debug.mpsafenet is set for an INTR_TYPE_NET handler. - Remove logic to automatically flag netisr handlers as non-MPSAFE if debug.mpsafenet is set. - Remove references in a few subsystems, including NFS and Cronyx drivers, which keyed off debug_mpsafenet to determine various aspects of their own locking behavior. - Convert NET_LOCK_GIANT(), NET_UNLOCK_GIANT(), and NET_ASSERT_GIANT into no-op's, as their entire behavior was determined by the value in debug_mpsafenet. - Alias NET_CALLOUT_MPSAFE to CALLOUT_MPSAFE. Many remaining references to NET_.*_GIANT() and NET_CALLOUT_MPSAFE are still present in subsystems, and will be removed in followup commits. Reviewed by: bz, jhb Approved by: re (kensmith) Notes: svn path=/head/; revision=171613
* Link pf 4.1 to the build:Max Laier2007-07-031-1/+3
| | | | | | | | | | | - move ftp-proxy from libexec to usr.sbin - add tftp-proxy - new altq mtag link Approved by: re (kensmith) Notes: svn path=/head/; revision=171173
* Use if_capenable to allow LRO enabled drivers to bypassAndrew Gallatin2007-06-121-1/+2
| | | | | | | the MTU check in ether_input(). Notes: svn path=/head/; revision=170632
* Move the oversize ethernet frame size check into DIAGNOSTIC,Andrew Gallatin2007-06-111-0/+2
| | | | | | | | | | | as was proposed when it was originally added. This allows LRO to work on non-DIAGNOSTIC kernels without consuming any mbuf flags. Discussed with: sam Notes: svn path=/head/; revision=170567
* Back out the previous commit which added an M_LRO mbuf flagAndrew Gallatin2007-06-111-2/+1
| | | | | | | | to defeat the mtu check in ether_input. Mbuf flags are too scarce. Discussed with: sam Notes: svn path=/head/; revision=170565
* Allow drivers, such as cxgb and mxge, which support LRO to bypassAndrew Gallatin2007-06-111-1/+2
| | | | | | | | | the MTU check in ether_input() on LRO merged frames. Discussed with: kmacy Notes: svn path=/head/; revision=170560
* Sync ether_ioctl() with ioctl(2) and ifnet.if_ioctlYaroslav Tykhiy2007-05-291-1/+1
| | | | | | | | | | | | | | as to the type of the command argument: int -> u_long. These types have different widths in the 64-bit world. Add a note to UPDATING because the change breaks KBI on 64-bit platforms. Discussed on: -net, -current Reviewed by: bms, ru Notes: svn path=/head/; revision=170097
* Rename the trunk(4) driver to lagg(4) as it is too similar to vlan trunking.Andrew Thompson2007-04-171-6/+6
| | | | | | | | | | | | | | The name trunk is misused as the networking term trunk means carrying multiple VLANs over a single connection. The IEEE standard for link aggregation (802.3 section 3) does not talk about 'trunk' at all while it is used throughout IEEE 802.1Q in describing vlans. The lagg(4) driver provides link aggregation, failover and fault tolerance. Discussed on: current@ Notes: svn path=/head/; revision=168793
* Add the trunk(4) driver for providing link aggregation, failover and faultAndrew Thompson2007-04-101-0/+14
| | | | | | | | | | | | | | | | | | | | tolerance. This driver allows aggregation of multiple network interfaces as one virtual interface using a number of different protocols/algorithms. failover - Sends traffic through the secondary port if the master becomes inactive. fec - Supports Cisco Fast EtherChannel. lacp - Supports the IEEE 802.3ad Link Aggregation Control Protocol (LACP) and the Marker Protocol. loadbalance - Static loadbalancing using an outgoing hash. roundrobin - Distributes outgoing traffic using a round-robin scheduler through all active ports. This code was obtained from OpenBSD and this also includes 802.3ad LACP support from agr(4) in NetBSD. Notes: svn path=/head/; revision=168561
* Fix a typo, and update a comment.Bruce M Simpson2007-03-221-3/+2
| | | | | | | Submitted by: yar Notes: svn path=/head/; revision=167816
* Make the m_pullup() diagnostic message compile-time conditional on DIAGNOSTIC.Bruce M Simpson2007-03-201-0/+2
| | | | | | | Requested by: glebius Notes: svn path=/head/; revision=167740
* Clean up the ether_input() path by using the M_PROMISC flag.Bruce M Simpson2007-03-191-120/+125
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Main points of this change: * Drop frames immediately if the interface is not marked IFF_UP. * Always trim off the frame checksum if present. * Always use M_VLANTAG in preference to passing 802.1Q frames to consumers. * Use __func__ consistently for KASSERT(). * Use the M_PROMISC flag to detect situations where ether_input() may reenter itself on the same call graph with the same mbuf which was promiscuously received on behalf of subsystems such as netgraph, carp, and vlan. * 802.1P frames (that is, VLAN frames with an ID of 0) will now be passed to layer 3 input paths. * Deal with the special case for CARP in a sane way. This is a significant rewrite of code on the critical path. Please report any issues to me if they arise. Frames will now only pass through dummynet if M_PROMISC is cleared, to avoid problems with re-entry. The handling of CARP needs to be revisited architecturally. The M_PROMISC flag may potentially be demoted to a link-layer flag only as it is in NetBSD, where the idea originated. Discussed on: net Idea from: NetBSD Reviewed by: yar MFC after: 1 month Notes: svn path=/head/; revision=167716
* Use ETHER_BPF_MTAP() instead of BPF_MTAP() here. It's possibleChristian S.J. Peron2007-02-221-2/+3
| | | | | | | | | | incoming packets have had their 802.1Q tags processed by the hardware, resulting in them being stripped from the packets, and placed on the mbuf. This fixes the processing of 802.1Q tags when hardware offload of 802.1Q tags is enabled. Notes: svn path=/head/; revision=166888
* Note that rev. 1.221 introduced a local workaround for a general problem.Yaroslav Tykhiy2006-12-241-0/+4
| | | | | | | | | | Add a pointer to the relevant PR for future reference. The whole comment will be OK to remove as soon as the general solution is applied. PR: kern/105943 Notes: svn path=/head/; revision=165522
* Fix an oscure bug triggered by a recent change in kern_socket.c.Luigi Rizzo2006-12-081-1/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | The symptoms were that outgoing DHCP requests for diskless kernels had the IP header corrupt. After long investigations, the source of the problem was found in ether_output() - for SIMPLEX interfaces and broadcast traffic, a copy of the packet is passed back to the kernel through if_simloop(). However if_simloop() modifies the mbuf, while the copy obtained through m_copym() is a readonly one. The bug has been there forever, but it has been triggered only recently by a change in sosend_dgram() which passed down mbufs with sufficient space to prepend the header. This fix is trivial - use m_dup() instead of m_copy() to create the copy. As an alternative, we could try and modify if_simloop() to play safely with readonly mbufs, but i don't think it is worthwhile because 1) this is a relatively infrequent code path so we do not need to worry too much about performance, and 2) the cost of doing an extra m_pullup in if_simloop() is probably the same as doing the copy of the cluster, anyways. MFC after: 1 week Notes: svn path=/head/; revision=165008
* Currently, drivers that support hardware offload of VLAN tagChristian S.J. Peron2006-11-181-0/+40
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | processing are forced to toggle this functionality when the card is put in and out of promiscuous mode. The main reason for this is because the hardware strips the VLAN tag, making it impossible for the tag information to show up in network diagnostic tools like tcpdump(1). This change introduces ether_vlan_mtap(), which is called if the mbuf has M_VLANTAG set. VLAN information is extracted from the mbuf and inserted into a stack allocated ether vlan header which is then inserted through the bpf machinery via bpf_mtap2(). The original mbuf's data pointer and lengths are temporarily adjusted to eliminate the original Ethernet header for the duration of the tap operation. This should have no long term effects on the mbuf. Also, define a new macro, ETHER_BPF_MTAP which should be used by drivers which support hardware offload of VLAN tag processing. The fixes for the relevant drivers will follow shortly. Discussed with: rwatson, andre, jhb (and others) Much feedback from: sam, ru MFC after: 1 month [1] [1] The version that is eventually MFCed will be somewhat different then this, as there has been significant work done to the VLAN code in HEAD. Notes: svn path=/head/; revision=164396
* Complete break-out of sys/sys/mac.h into sys/security/mac/mac_framework.hRobert Watson2006-10-221-1/+2
| | | | | | | | | | | | | | | | begun with a repo-copy of mac.h to mac_framework.h. sys/mac.h now contains the userspace and user<->kernel API and definitions, with all in-kernel interfaces moved to mac_framework.h, which is now included across most of the kernel instead. This change is the first step in a larger cleanup and sweep of MAC Framework interfaces in the kernel, and will not be MFC'd. Obtained from: TrustedBSD Project Sponsored by: SPARTA Notes: svn path=/head/; revision=163606
* Move the bridge hook after the loopback check so that IFF_SIMPLEX is honouredAndrew Thompson2006-08-251-8/+8
| | | | | | | | | on member interfaces. This makes us the same as OpenBSD/NetBSD. MFC after: 3 days Notes: svn path=/head/; revision=161626
* Remove the dependency of bridgestp.h on if_bridgevar.h by moving a couple ofAndrew Thompson2006-07-271-1/+0
| | | | | | | private structures to if_bridge.c. Notes: svn path=/head/; revision=160769
* Fixing compilation bustage: net/if_bridgevar.h depends on net/bridgestp.h.Tai-hwa Liang2006-07-271-0/+1
| | | | Notes: svn path=/head/; revision=160735
* Unbreak byte counters when network interfaces are in monitor mode byChristian S.J. Peron2006-03-031-8/+8
| | | | | | | | | | | | | re-organizing the monitor return logic. We perform interface monitoring checks after we have determined if the CRC is still on the packet, if it is, m_adj() is called which will adjust the packet length. This ensures that we are not including CRC lengths in the byte counters for each packet. Discussed with: andre, glebius Notes: svn path=/head/; revision=156246
* Properly initialize args structure before passing it to ipfw_chk(): havingOleg Bulyzhin2006-02-031-0/+1
| | | | | | | | | | | uninitialized args.inp is unhealthy for uid/gid/jail ipfw rules. PR: kern/92589 Approved by: glebius (mentor) MFC after: 1 week Notes: svn path=/head/; revision=155268
* Merge the //depot/user/yar/vlan branch into CVS. It contains some collectiveGleb Smirnoff2006-01-301-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | work by yar, thompsa and myself. The checksum offloading part also involves work done by Mihail Balikov. The most important changes: o Instead of global linked list of all vlan softc use a per-trunk hash. The size of hash is dynamically adjusted, depending on number of entries. This changes struct ifnet, replacing counter of vlans with a pointer to trunk structure. This change is an improvement for setups with big number of VLANs, several interfaces and several CPUs. It is a small regression for a setup with a single VLAN interface. An alternative to dynamic hash is a per-trunk static array with 4096 entries, which is a compile time option - VLAN_ARRAY. In my experiments the array is not an improvement, probably because such a big trunk structure doesn't fit into CPU cache. o Introduce an UMA zone for VLAN tags. Since drivers depend on it, the zone is declared in kern_mbuf.c, not in optional vlan(4) driver. This change is a big improvement for any setup utilizing vlan(4). o Use rwlock(9) instead of mutex(9) for locking. We are the first ones to do this! :) o Some drivers can do hardware VLAN tagging + hardware checksum offloading. Add an infrastructure for this. Whenever vlan(4) is attached to a parent or parent configuration is changed, the flags on vlan(4) interface are updated. In collaboration with: yar, thompsa In collaboration with: Mihail Balikov <mihail.balikov interbgc.com> Notes: svn path=/head/; revision=155051
* Return mbuf pointer or NULL from ip_fastforward() as the mbuf pointerAndre Oppermann2006-01-181-1/+1
| | | | | | | | | | | | | | may have changed by m_pullup() during fastforward processing. While this is a bug it is actually never triggered in real world situations and it is not remotely exploitable. Found by: Coverity Prevent(tm) Coverity ID: CID780 Sponsored by: TCP/IP Optimization Fundraise 2005 Notes: svn path=/head/; revision=154518
* 1) remove useless check of loop_copy - corresponding code was removed inOleg Bulyzhin2005-12-221-5/+5
| | | | | | | | | | | rev. 1.70 five years ago. 2) convert loop_copy to "non-negative" flag Approved by: glebius (mentor) MFC after: 2 weeks Notes: svn path=/head/; revision=153640
* Change from a callback in if_ethersubr to using EVENTHANDLER in order to detachAndrew Thompson2005-12-171-7/+0
| | | | | | | | | | span ports when they disappear. The span port does not have a pointer to the softc so revert r1.31 and bring back the softc linked-list. MFC after: 2 weeks Notes: svn path=/head/; revision=153494
* Purge layer specific mbuf flags on layer crossings to avoid confusingAndre Oppermann2005-11-181-0/+3
| | | | | | | | | upper or lower layers. Sponsored by: TCP/IP Optimization Fundraise 2005 Notes: svn path=/head/; revision=152583
* - Store pointer to the link-level address right in "struct ifnet"Ruslan Ermilov2005-11-111-8/+7
| | | | | | | | | | | | | rather than in ifindex_table[]; all (except one) accesses are through ifp anyway. IF_LLADDR() works faster, and all (except one) ifaddr_byindex() users were converted to use ifp->if_addr. - Stop storing a (pointer to) Ethernet address in "struct arpcom", and drop the IFP2ENADDR() macro; all users have been converted to use IF_LLADDR() instead. Notes: svn path=/head/; revision=152315
* - Make IFP2ENADDR() a pointer to IF_LLADDR() rather than anotherRuslan Ermilov2005-11-111-10/+5
| | | | | | | | | | | copy of Ethernet address. - Change iso88025_ifattach() and fddi_ifattach() to accept MAC address as an argument, similar to ether_ifattach(), to make this work. Notes: svn path=/head/; revision=152296
* Further clean up the bridge hooks in if_ethersubr.c and ng_ether.cAndrew Thompson2005-10-141-14/+5
| | | | | | | | | - move the function pointer definitions to if_bridgevar.h - move most of the logic to the new BRIDGE_INPUT and BRIDGE_OUTPUT macros - remove unneeded functions from if_bridgevar.h and sort a little. Notes: svn path=/head/; revision=151305
* From 101 ways to panic your kernel.Andrew Thompson2005-10-131-0/+8
| | | | | | | | | Use bridge_ifdetach() to notify the bridge that a member has been detached. The bridge can then remove it from its interface list and not try to send out via a dead pointer. Notes: svn path=/head/; revision=151301
* Consolidate two adjacent conditional blocksJulian Elischer2005-10-131-5/+1
| | | | | | | | | | I actually believe the code in question should be elsewhere (in the preceding function). MFC after: 1 week Notes: svn path=/head/; revision=151298
* Remove a stale comment.Ruslan Ermilov2005-10-131-1/+0
| | | | Notes: svn path=/head/; revision=151288