summaryrefslogtreecommitdiffstats
path: root/sys/netinet/if_ether.c
Commit message (Collapse)AuthorAgeFilesLines
* I didn't notice it right away, but check the right length too.ru2003-12-231-1/+1
|
* Fix a problem introduced in revision 1.84: m_pullup() does notru2003-12-231-5/+7
| | | | | necessarily return the same mbuf chain so we need to recompute mtod() consumers after pulling up.
* replace explicit changes to rt_refcnt by RT_ADDREF and RT_REMREFsam2003-11-081-1/+1
| | | | | | | macros that expand to include assertions when the system is built with INVARIANTS Supported by: FreeBSD Foundation
* o add a flags parameter to netisr_register that is used to specifysam2003-11-081-1/+1
| | | | | | | | | | | | | | | | whether or not the isr needs to hold Giant when running; Giant-less operation is also controlled by the setting of debug_mpsafenet o mark all netisr's except NETISR_IP as needing Giant o add a GIANT_REQUIRED assertion to the top of netisr's that need Giant o pickup Giant (when debug_mpsafenet is 1) inside ip_input before calling up with a packet o change netisr handling so swi_net runs w/o Giant; instead we grab Giant before invoking handlers based on whether the handler needs Giant o change netisr handling so that netisr's that are marked MPSAFE may have multiple instances active at a time o add netisr statistics for packets dropped because the isr is inactive Supported by: FreeBSD Foundation
* Replace the if_name and if_unit members of struct ifnet with new membersbrooks2003-10-311-11/+10
| | | | | | | | | | | | | if_xname, if_dname, and if_dunit. if_xname is the name of the interface and if_dname/unit are the driver name and instance. This change paves the way for interface renaming and enhanced pseudo device creation and configuration symantics. Approved By: re (in principle) Reviewed By: njl, imp Tested On: i386, amd64, sparc64 Obtained From: NetBSD (if_xname)
* Overhaul routing table entry cleanup by introducing a new rtexpungesam2003-10-301-8/+3
| | | | | | | | | | | | routine that takes a locked routing table reference and removes all references to the entry in the various data structures. This eliminates instances of recursive locking and also closes races where the lock on the entry had to be dropped prior to calling rtrequest(RTM_DELETE). This also cleans up confusion where the caller held a reference to an entry that might have been reclaimed (and in some cases used that reference). Supported by: FreeBSD Foundation
* Locking for updates to routing table entries. Each rtentry gets a mutexsam2003-10-041-32/+53
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | that covers updates to the contents. Note this is separate from holding a reference and/or locking the routing table itself. Other/related changes: o rtredirect loses the final parameter by which an rtentry reference may be returned; this was never used and added unwarranted complexity for locking. o minor style cleanups to routing code (e.g. ansi-fy function decls) o remove the logic to bump the refcnt on the parent of cloned routes, we assume the parent will remain as long as the clone; doing this avoids a circularity in locking during delete o convert some timeouts to MPSAFE callouts Notes: 1. rt_mtx in struct rtentry is guarded by #ifdef _KERNEL as user-level applications cannot/do-no know about mutex's. Doing this requires that the mutex be the last element in the structure. A better solution is to introduce an externalized version of struct rtentry but this is a major task because of the intertwining of rtentry and other data structures that are visible to user applications. 2. There are known LOR's that are expected to go away with forthcoming work to eliminate many held references. If not these will be resolved prior to release. 3. ATM changes are untested. Sponsored by: FreeBSD Foundation Obtained from: BSD/OS (partly)
* Shorten 'bad gateway' AF_LINK message.bms2003-10-031-1/+1
| | | | Submitted by: green
* Make arp_rtrequest()'s 'bad gateway' messages slightly more informative,bms2003-10-031-1/+4
| | | | | | to aid me in tracking down LLINFO inconsistencies in the routing table. Discussed with: fenner
* Only delete the route if arplookup() tried to create it. Do not deletebms2003-10-031-8/+13
| | | | | | | | | RTF_STATIC routes. Do not check for RTF_HOST so as to avoid being DoSed when an RTF_GENMASK route exists in the table. Add a more verbose comment about exactly what this code does. Submitted by: ru
* By popular demand, added the "static ARP" per-interface option.ru2003-10-011-2/+4
|
* Fix a logic error in the check to see if arplookup() should free the route.bms2003-09-241-2/+1
| | | | | Noticed by: Mike Hogsett Reviewed by: ru
* Fix a bug in arplookup(), whereby a hostile party on a locallybms2003-09-231-6/+14
| | | | | | | | attached network could exhaust kernel memory, and cause a system panic, by sending a flood of spoofed ARP requests. Approved by: jake (mentor) Reported by: Apple Product Security <product-security@apple.com>
* Update netisr handling; Each SWI now registers its queue, and all queuejlemon2003-03-041-42/+31
| | | | | | | | | | drain routines are done by swi_net, which allows for better queue control at some future point. Packets may also be directly dispatched to a netisr instead of queued, this may be of interest at some installations, but currently defaults to off. Reviewed by: hsu, silby, jayanth, sam Sponsored by: DARPA, NAI Labs
* Back out M_* changes, per decision of the TRB.imp2003-02-191-1/+1
| | | | Approved by: trb
* Avoid multiply for preemptive arp calculation since it hits everyorion2003-02-081-6/+7
| | | | | | ethernet packet sent. Prompted by: Jeffrey Hsu <hsu@FreeBSD.org>
* MFS 1.64.2.22: Re-enable non pre-emptive ARP requests.orion2003-02-041-14/+15
| | | | | Submitted by: "Diomidis Spinellis" <dds@aueb.gr> PR: kern/46116
* Avoid lock order reversal by expanding the scope of thehsu2003-01-281-15/+5
| | | | AF_INET radix tree lock to cover the ARP data structures.
* Remove M_TRYWAIT/M_WAITOK/M_WAIT. Callers should use 0.alfred2003-01-211-1/+1
| | | | Merge M_NOWAIT/M_DONTWAIT into a single flag M_NOWAIT.
* SMP locking for ARP.hsu2003-01-171-6/+21
|
* Clear the target hardware address field when generating an ARP request.tmm2003-01-101-0/+1
| | | | | Reviewed by: nectar MFC after: 1 week
* Introduce support for Mandatory Access Control and extensiblerwatson2002-07-311-0/+5
| | | | | | | | | | kernel access control. When generating an ARP query, invoke a MAC entry point to permit the MAC framework to label its mbuf appropriately for the interface. Obtained from: TrustedBSD Project Sponsored by: DARPA, NAI Labs
* Solve the 'unregistered netisr 18' information notice with a sledgehammer.peter2002-06-201-4/+7
| | | | | | Register the ISR early, but do not actually kick off the timer until we see some activity. This still saves us from running the arp timers on a system with no network cards.
* Reset token-ring source routing control field on receipt of ethernet framekbyanc2002-05-151-0/+1
| | | | | without source routing information. This restores the behaviour in this scenario to that of prior to my last commit.
* Move ISO88025 source routing information into sockaddr_dl's sdl_datakbyanc2002-05-071-8/+7
| | | | | | | | | | | | | | | | | | | | | | | | field. This returns the sdl_data field to a variable-length field. More importantly, this prevents a easily-reproduceable data-corruption bug when the interface name plus the hardware address exceed the sdl_data field's original 12 byte limit. However, token-ring interfaces may still overflow the new sdl_data field's 46 byte limit if the interface name exceeds 6 characters (since 6 characters for interface name plus 6 for hardware address plus 34 for source routing = the size of sdl_data). Further refinements could overcome this limitation but would break binary compatibility; this commit only addresses fixing the bug for commonly-occuring cases without breaking binary compatibility with the intention that the functionality can be MFC'ed to -stable. See message ID's (both send to -arch): 20020421013332.F87395-100000@gateway.posi.net 20020430181359.G11009-300000@gateway.posi.net for a more thorough description of the bug addressed and how to reproduce it. Approved by: silence on -arch and -net Sponsored by: NTT Multimedia Communications Labs MFC after: 1 week
* Change callers of mtx_init() to pass in an appropriate lock type name. Injhb2002-04-041-1/+1
| | | | | | | most cases NULL is passed, but in some cases such as network driver locks (which use the MTX_NETWORK_LOCK macro) and UMA zone locks, a name is used. Tested on: i386, alpha, sparc64
* Send periodic ARP requests when ARP entries for hosts we are sendingorion2002-03-201-0/+15
| | | | | | | | | | to are about to expire. This prevents high packet rate flows from experiencing packet drops at the sender following ARP cache entry timeout. PR: kern/25517 Reviewed by: luigi MFC after: 7 days
* Remove __P.alfred2002-03-191-9/+9
|
* Minor style fix.jlemon2001-12-131-2/+2
|
* Fixed remotely exploitable DoS in arpresolve().ru2001-12-051-1/+3
| | | | | | | | | Easily exploitable by flood pinging the target host over an interface with the IFF_NOARP flag set (all you need to know is the target host's MAC address). MFC after: 0 days
* If we are bridging, fall back to using any inet address in the system,jlemon2001-10-251-4/+9
| | | | | | irrespective of receive interface, as a last resort. Submitted by: ru
* Only examine inet addresses of the interface. This was broken in r1.83,jlemon2001-10-201-2/+4
| | | | with the result that the system would reply to an ARP request of 0.0.0.0
* Pull post-4.4BSD change to sys/net/route.c from BSD/OS 4.2.ru2001-10-171-3/+3
| | | | | | | | | | | | | | | | | | | | Have sys/net/route.c:rtrequest1(), which takes ``rt_addrinfo *'' as the argument. Pass rt_addrinfo all the way down to rtrequest1 and ifa->ifa_rtrequest. 3rd argument of ifa->ifa_rtrequest is now ``rt_addrinfo *'' instead of ``sockaddr *'' (almost noone is using it anyways). Benefit: the following command now works. Previously we needed two route(8) invocations, "add" then "change". # route add -inet6 default ::1 -ifp gif0 Remove unsafe typecast in rtrequest(), from ``rtentry *'' to ``sockaddr *''. It was introduced by 4.3BSD-Reno and never corrected. Obtained from: BSD/OS, NetBSD MFC after: 1 month PR: kern/28360
* bring in ARP support for variable length link level addressesfjoe2001-10-141-99/+155
| | | | | | | Reviewed by: jdp Approved by: jdp Obtained from: NetBSD MFC after: 6 weeks
* Add a hash table that contains the list of internet addresses, and usejlemon2001-09-291-17/+24
| | | | | this in place of the in_ifaddr list when appropriate. This improves performance on hosts which have a large number of IP aliases.
* Fix sysctl comment field, s/the the/then thealfred2001-09-041-1/+1
| | | | Pointed out by: ru
* Allow disabling of "arp moved" messages.alfred2001-09-031-6/+12
| | | | Submitted by: Stephen Hurd <deuce@lordlegacy.org>
* Do not perform arp send/resolve on an interface marked NOARP.jlemon2001-06-151-1/+9
| | | | | PR: 25006 MFC after: 2 weeks
* Add a missing m_pullup() before a mtod() in in_arpinput().yar2001-03-271-0/+6
| | | | | PR: kern/22177 Reviewed by: wollman
* Sync with the bridge/dummynet/ipfw code already tested in stable.luigi2001-02-101-9/+4
| | | | | In ip_fw.[ch] change a couple of variable and field names to avoid having types, variables and fields with the same name.
* Fix bad patch from a few days ago. It broke some bridging.julian2001-02-051-9/+10
|
* Mechanical change to use <sys/queue.h> macro API instead ofphk2001-02-041-3/+3
| | | | | | | fondling implementation details. Created with: sed(1) Reviewed by: md5(1)
* Make the code act the same in the case of BRIDGE being defined, but notjulian2001-02-031-16/+26
| | | | | | | turned on, and the case of it not being defined at all. i.e. Disabling bridging re-enables some of the checks it disables. Submitted by: "Rogier R. Mulhuijzen" <drwilco@drwilco.net>
* provide a sysctl 'net.link.ether.inet.log_arp_wrong_iface' to allow onealfred2001-01-061-0/+7
| | | | | | | | to supress logging when ARP replies arrive on the wrong interface: "/kernel: arp: 1.2.3.4 is on dc0 but got reply from 00:00:c5:79:d0:0c on dc1" the default is to log just to give notice about possibly incorrectly configured networks.
* Lock down the network interface queues. The queue mutex must be obtainedjlemon2000-11-251-1/+12
| | | | | | | | | | | | | | before adding/removing packets from the queue. Also, the if_obytes and if_omcasts fields should only be manipulated under protection of the mutex. IF_ENQUEUE, IF_PREPEND, and IF_DEQUEUE perform all necessary locking on the queue. An IF_LOCK macro is provided, as well as the old (mutex-less) versions of the macros in the form _IF_ENQUEUE, _IF_QFULL, for code which needs them, but their use is discouraged. Two new macros are introduced: IF_DRAIN() to drain a queue, and IF_HANDOFF, which takes care of locking/enqueue, and also statistics updating/start if necessary.
* Extra sanity check when arp proxyall is enabled. Don't send an arpdwmalone2000-07-131-0/+26
| | | | | | | | | | reply if the requesting machine isn't on the interface we believe it should be. Prevents arp wars when you plug cables in the wrong way around. PR: 9848 Submitted by: Ian Dowse <iedowse@maths.tcd.ie> Not objected to by: wollman
* Back out the previous change to the queue(3) interface.jake2000-05-261-2/+2
| | | | | | It was not discussed and should probably not happen. Requested by: msmith and others
* Change the way that the queue(3) structures are declared; don't assume thatjake2000-05-231-2/+2
| | | | | | | | the type argument to *_HEAD and *_ENTRY is a struct. Suggested by: phk Reviewed by: phk Approved by: mdodd
* PR: kern/17872wes2000-04-111-10/+3
| | | | Submitted by: csg@waterspout.com (C. Stephen Gunn)
* Peter Johnson found another log() call without a trailing newline.joerg2000-03-291-1/+1
| | | | | | | All three of them have been introduced in rev 1.64, so i guess i've got all of them now. :) Submitted by: Peter Johnson <locke@mcs.net>
OpenPOWER on IntegriCloud