summaryrefslogtreecommitdiffstats
path: root/sys/net/if_bridge.c (follow)
Commit message (Collapse)AuthorAgeFilesLines
...
* Kill IP_ROUTETOETHER.mpi2015-07-161-5/+4
| | | | | | | | | This pseudo-option is a hack to support return-rst on bridge(4). It passes Ethernet information via a "struct route" through ip_output(). "struct route" is slowly dying... ok claudio@, benno@
* m_freem() can handle NULL, do not check for this condition beforehands.deraadt2015-07-151-5/+3
| | | | ok stsp mpi
* Unify the check for up & running between all pseudo-drivers.mpi2015-07-021-2/+2
|
* By design if_input_process() needs to hold a reference on the receivingmpi2015-07-021-8/+5
| | | | | | | | | ifp in order to access its ifih handlers. So get rid of if_get() in the various ifih handlers we know the ifp is live at this point. ok dlg@
* Rename if_output() into if_enqueue() to avoid confusion with commentsmpi2015-06-301-2/+2
| | | | | | talking about (*ifp->if_output)(). ok claudio@, dlg@
* Move the specialized m_copym2() preserving the alignment of the payloadmpi2015-06-301-62/+44
| | | | | | | | after the Ethernet header in its own function and use it in bridge_input(). This should fix alignment issues kettenis@ is seeing. ok bluhm@, claudio@
* Properly deliver broadcast-like packets to the network stack.mpi2015-06-251-15/+16
| | | | | | | | | | In bridge(4) speak, broadcast-like packets are Ethernet Multicast frames or Unicast for which the destination is unknown. It makes sense to not retransmit broadcast-like packets on the interface they were received but they still must be delivered to the network stack. Problem reported by and ok jasper@
* Move brige(4)'s output hook outside of ether_output().mpi2015-06-251-2/+4
| | | | | | | | | | | This fix some weird bridge(4) configurations involving pseudo-drivers stacked on top of interfaces in a bridge. Also simplifies the loop prevention logic to match bridge's input path. Instead of using a tag per port/bridge simply flag output mbufs to make sure only one copy per bridge go through bridge_output(). ok bluhm@, claudio@
* Increment if_ipackets in if_input().mpi2015-06-241-4/+1
| | | | | | | Note that pseudo-drivers not using if_input() are not affected by this conversion. ok mikeb@, kettenis@, claudio@, dlg@
* Adapt bridge(4) to the new if_input() framework.mpi2015-06-231-49/+20
| | | | | | | | | | | | Move bridge_input() outside of ether_input() in order to duplicate packets flowing through a bridge port before applying any transformation on mbufs. This saves a various m_adj(9)/M_PREPEND(9) dances and remove the bridge(4) hack from vlan(4). Tested by mxb <mxb AT alumni DOT chalmers DOT se> and kettenis@ ok bluhm@
* Store a unique ID, an interface index, rather than a pointer to thempi2015-06-161-3/+10
| | | | | | | | | | | | | | | receiving interface in the packet header of every mbuf. The interface pointer should now be retrieved when necessary with if_get(). If a NULL pointer is returned by if_get(), the interface has probably been destroy/removed and the mbuf should be freed. Such mechanism will simplify garbage collection of mbufs and limit problems with dangling ifp pointers. Tested by jmatthew@ and krw@, discussed with many. ok mikeb@, bluhm@, dlg@
* Remove superfluous splnet() protection.mpi2015-06-121-21/+6
| | | | ok lteo@
* Move away from using hzto(9); OK dlgmikeb2015-06-111-27/+5
|
* Merge multiple copies of the code doing VLAN tag insertion back intompi2015-06-081-45/+1
| | | | | | vlan_start(). ok sthen@, phessler@
* Use if_input() instead of ether_input_mbuf().mpi2015-06-021-38/+17
| | | | ok jasper@, bluhm@
* Do not change "rcvif" without goint through if_input() again otherwisempi2015-05-181-7/+4
| | | | | | | | the handlers on the new interface won't be executed. Tested by < mxb AT alumni.chalmers DOT se> ok dlg@
* Introduce if_output(), a function do to the last steps before enqueuingmpi2015-05-151-8/+4
| | | | | | | | a packet on the sending queue of an interface. Tested by many, thanks a lot! ok dlg@, claudio@
* fix indentationjsg2015-05-071-6/+6
| | | | ok miod@
* Use ether_input() as default input packet handler and do the necessarympi2015-05-041-42/+52
| | | | | | | | | m_adj(9) to keep bridge(4) working while other pseudo-drivers are converted to if_input(). Tested by mxb <mxb AT alumni DOT chalmers DOT se>, thanks! ok henning@
* Stubs and support code for NIC-enabled IPsec bite the dust.mikeb2015-04-171-17/+1
| | | | No objection from reyk@, OK markus, hshoexer
* Move one "#ifdef NVLAN" chunk needed only if you're running bridge(4) onmpi2015-04-131-5/+32
| | | | | | | | | | | | to of vlan(4) from ether_input() to bridge_input(). One of the goal of the if_input() plumbing is to stop doing all possible pseudo-drivers checks on every packets. There's no reason that even if you're not running a bridge(4) you've to run this code. This change also will also makes it easier to convert vlan(4) to if_input(). Reviewed by Rafael Zalamena and mikeb@, ok markus@
* Do not pass an `ifp' argument to interface input handlers since itmpi2015-04-071-4/+4
| | | | | | might be overwritten by pseudo-drivers. ok dlg@, henning@
* earlier rev 1.112 sys/net/if_vlan.c corrects the mapping of 802.1pbenno2015-02-061-3/+8
| | | | | | prio from the vlan header to our pf priority levels. This fixes the mapping in the bridge code. ok henning
* convert to using siphashtedu2014-12-221-32/+6
|
* unifdef INET in net code as a precursor to removing the pretend option.tedu2014-12-191-19/+1
| | | | | long live the one true internet. ok henning mikeb
* Repair VLAN tagging in the bridge output pathmikeb2014-12-041-16/+32
| | | | | | | | | | | | Since bridge_output/bridge_ifenqueue replace ether_output that does VLAN tagging and call into if_start directly we need to make sure that tag has been set by the bridge. XXX This abuses "if_output == vlan_output" check, but hopefully XXX vlan(4) will use a distinct if_type someday and this code XXX will be improved. Discussed with henning and Rafael Zalamena, ok henning
* move arc4random prototype to systm.h. more appropriate for most codetedu2014-11-181-4/+1
| | | | to include that than rdnvar.h. ok deraadt dlg
* remove uneeded route.h includesjsg2014-09-081-2/+1
| | | | ok miod@ mpi@
* Fewer <netinet/in_systm.h> !mpi2014-07-221-2/+1
|
* add a size argument to free. will be used soon, but for now default to 0.tedu2014-07-121-13/+13
| | | | after discussions with beck deraadt kettenis.
* bpf code surgery / shuffling / simplification.henning2014-07-091-6/+4
| | | | | | | | | | | | | | | the various bpf_mtap_* are very similiar, they differ in what (and to some extent how) they prepend something, and what copy function they pass to bpf_catchpacket. use an internal _bpf_mtap as "backend" for bpf_mtap and friends. extend bpf_mtap_hdr so that it covers all common cases: if dlen is 0, nothing gets prepended. copy function can be given, if NULL the default bpf_mcopy is used. adjust the existing bpf_mtap_hdr users to pass a NULL ptr for the copy fn. re-implement bpf_mtap_af as simple wrapper for bpf_mtap_hdr. re-implement bpf_mtap_ether using bpf_map_hdr re-implement bpf_mtap_pflog as trivial bpf_mtap_hdr wrapper ok bluhm benno
* kill altq bits here as wellhenning2014-04-191-10/+1
|
* "struct pkthdr" holds a routing table ID, not a routing domain one.mpi2014-04-141-4/+4
| | | | | | | | | | | | | | Avoid the confusion by using an appropriate name for the variable. Note that since routing domain IDs are a subset of the set of routing table IDs, the following idiom is correct: rtableid = rdomain But to get the routing domain ID corresponding to a given routing table ID, you must call rtable_l2(9). claudio@ likes it, ok mikeb@
* clearing the _CSUM_IN_OK flags is now utterly pointless, was only done forhenning2014-01-241-4/+2
| | | | statistics sideeffects before. ok lteo naddy
* since the cksum rewrite the counters for hardware checksummed packetshenning2014-01-231-8/+8
| | | | | | | | | | are are lie, since the software engine emulates hardware offloading and that is later indistinguishable. so kill the hw cksummed counters. introduce software checksummed packet counters instead. tcp/udp handles ip & ipvshit, ip cksum covered, 6 has no ip layer cksum. as before we still have a miscounting bug for inbound with pf on, to be fixed in the next step. found by, prodding & ok naddy
* Do not use the multicast macro IFP_TO_IA() to check if an interface hasmpi2013-10-281-5/+7
| | | | | | a configured IPv4 address but iterates on its private list instead. ok deraadt@
* The header file netinet/in_var.h included netinet6/in6_var.h. Thisbluhm2013-10-171-1/+2
| | | | | | | created a bunch of useless dependencies. Remove this implicit inclusion and do an explicit #include <netinet6/in6_var.h> when it is needed. OK mpi@ henning@
* Just use sockaddr_union instead of a handcrafted version and renamereyk2013-10-131-16/+12
| | | | | bridge_tunnelupdate to a more generic name bridge_copyaddr. No functional change.
* Import vxlan(4), the virtual extensible local area network tunnelreyk2013-10-131-14/+107
| | | | | | | | | interface. VXLAN is a UDP-based tunnelling protocol for overlaying virtualized layer 2 networks over layer 3 networks. The implementation is based on draft-mahalingam-dutt-dcops-vxlan-04 and has been tested with other implementations in the wild. put it in deraadt@
* give tagname2tag and its siblings an extra "create" parameter. if 1, ithenning2013-10-121-2/+2
| | | | | behaves like before and creates the mapping if needed. if 0, lookup only. looked over by many, ok phessler sthen
* No need to include if_vlan_var.h twice.mpi2013-08-211-3/+1
|
* sync the bridge_broadcast comment with realitymikeb2013-08-051-3/+2
|
* Move bridge_broadcast and subsequently all IPsec SPD lookup code outmikeb2013-07-311-12/+10
| | | | | | | | of the IPL_NET. pf_test should be no longer called under IPL_NET as well. The problem became evident after the related issue was brought up by David Hill <dhill at mindcry ! org>. With input from and OK mpi. Tested by David and me.
* put the cksum diff back, of course with the bug fixed where we couldhenning2013-06-261-10/+9
| | | | | | | | | | | | | | | | | | | | | under some circumstances repair broken checksums on the way. ok ryan naddy mikeb . redo most of the protocol (tcp/udp/...) checksum handling -assume we have hardware checksum offloading. stop mucking with the checksum in most of the stack -stop checksum mucking in pf, just set a "needs checksumming" flag if needed -in all output pathes, very late, if we figure out the outbound interface doesn't have hw cksum offloading, do the cksum in software. this especially makes the bridge path behave like a regular output path -little special casing for bridge still required until the broadcast path loses its disgusting shortcut hacks, but at least it's in one place now and not all over the stack in6_proto_cksum_out mostly written by krw@ started at k2k11 in iceland more than 1.5 years ago - yes it took that long, this stuff is everything but easy. this happens to fix the infamous pf rdr bug that made us turn off proto cksum offloading on almost all interface drivers.
* code that calls timeout functions should include timeout.htedu2013-03-281-1/+2
| | | | | slipped by on i386, but the zaurus doesn't automagically pick it up. spotted by patrick
* do not include machine/cpu.h from a .c file; it is the responsibility ofderaadt2013-03-281-2/+1
| | | | | .h files to pull it in, if needed ok tedu
* no need for a lot of code to include proc.htedu2013-03-281-2/+1
|
* Remove various read-only *maxlen variables and use IFQ_MAXLEN directly.mpi2013-03-261-2/+2
| | | | ok beck@, mikeb@
* change LIST_END to literal NULL for clarity.tedu2013-03-151-13/+13
| | | | ok claudio mpi
* Change interface and span interface lists from LIST to TAILQ.camield2013-01-231-30/+29
| | | | | | | | | | | | | This way the configuration order is preserved. Order matters because MAC address are not unique: vlan interfaces can have the same MAC as their parent. Frames destined for the bridge itself are now delivered to the first-configured interface that matches the MAC instead of the last-configured. This means that the bridge behavior does not suddenly change anymore when adding a vlan interface. ok henning reyk (a while ago)