Commit Graph

235 Commits

Author SHA1 Message Date
elad
b2eb9a5389 Consistent usage of KAUTH_GENERIC_ISSUSER. 2007-01-04 19:07:03 +00:00
joerg
eb04733c4e Introduce new helper functions to abstract the route caching.
rtcache_init and rtcache_init_noclone lookup ro_dst and store
the result in ro_rt, taking care of the reference counting and
calling the domain specific route cache.
rtcache_free checks if a route was cashed and frees the reference.
rtcache_copy copies ro_dst of the given struct route, checking that
enough space is available and incrementing the reference count of the
cached rtentry if necessary.
rtcache_check validates that the cached route is still up. If it isn't,
it tries to look it up again. Afterwards ro_rt is either a valid again
or NULL.
rtcache_copy is used internally.

Adjust to callers of rtalloc/rtflush in the tree to check the sanity of
ro_dst first (if necessary). If it doesn't fit the expectations, free
the cache, otherwise check if the cached route is still valid. After
that combination, a single check for ro_rt == NULL is enough to decide
whether a new lookup needs to be done with a different ro_dst.
Make the route checking in gre stricter by repeating the loop check
after revalidation.
Remove some unused RADIX_MPATH code in in6_src.c. The logic is slightly
changed here to first validate the route and check RTF_GATEWAY
afterwards. This is sementically equivalent though.
etherip doesn't need sc_route_expire similiar to the gif changes from
dyoung@ earlier.

Based on the earlier patch from dyoung@, reviewed and discussed with
him.
2006-12-15 21:18:52 +00:00
is
74a405e314 Avoid overlapping struct assignment for FDDI. Should fix netiso like in the
Ethernet case.
2006-12-10 12:34:42 +00:00
dyoung
c308b1c661 Here are various changes designed to protect against bad IPv4
routing caused by stale route caches (struct route).  Route caches
are sprinkled throughout PCBs, the IP fast-forwarding table, and
IP tunnel interfaces (gre, gif, stf).

Stale IPv6 and ISO route caches will be treated by separate patches.

Thank you to Christoph Badura for suggesting the general approach
to invalidating route caches that I take here.

Here are the details:

Add hooks to struct domain for tracking and for invalidating each
domain's route caches: dom_rtcache, dom_rtflush, and dom_rtflushall.

Introduce helper subroutines, rtflush(ro) for invalidating a route
cache, rtflushall(family) for invalidating all route caches in a
routing domain, and rtcache(ro) for notifying the domain of a new
cached route.

Chain together all IPv4 route caches where ro_rt != NULL.  Provide
in_rtcache() for adding a route to the chain.  Provide in_rtflush()
and in_rtflushall() for invalidating IPv4 route caches.  In
in_rtflush(), set ro_rt to NULL, and remove the route from the
chain.  In in_rtflushall(), walk the chain and remove every route
cache.

In rtrequest1(), call rtflushall() to invalidate route caches when
a route is added.

In gif(4), discard the workaround for stale caches that involves
expiring them every so often.

Replace the pattern 'RTFREE(ro->ro_rt); ro->ro_rt = NULL;' with a
call to rtflush(ro).

Update ipflow_fastforward() and all other users of route caches so
that they expect a cached route, ro->ro_rt, to turn to NULL.

Take care when moving a 'struct route' to rtflush() the source and
to rtcache() the destination.

In domain initializers, use .dom_xxx tags.

KNF here and there.
2006-12-09 05:33:04 +00:00
dyoung
857f0ccbed KNF. 2006-12-06 00:50:34 +00:00
dyoung
d7a8741d84 KNF. 2006-12-06 00:39:56 +00:00
is
f70b506cfb use m_adj instead of explicit pointer manipulation 2006-12-05 16:36:14 +00:00
is
a1f6d5cc3f explain magic constant 2006-12-05 16:33:56 +00:00
is
4fe0853ea1 Typo in comment. 2006-12-04 15:14:45 +00:00
dyoung
a291eaf06c KNF. 2006-12-04 02:53:17 +00:00
dyoung
c8485f3e10 Remove superfluous parentheses. 2006-12-03 21:56:30 +00:00
is
07e04d08c3 Remove an overlapping struct copy from ether_input, which caused address
corruption for incoming netiso packets with recent (at least NetBSD-3 and
later) compilers. This is done in a way that the copy is avoided totally.
Code path tested with tcp+udp/ipv4+ipv6, arp and ISO cltp/clnp.
Visually ok'd by Christos@.
2006-12-01 18:43:40 +00:00
is
9f6b10c456 Check parameters to avoid potential panic root user.
Patch checked by chopps@.
2006-11-24 12:47:43 +00:00
christos
168cd830d2 __unused removal on arguments; approved by core. 2006-11-16 01:32:37 +00:00
elad
47dc01744a Kill some KAUTH_GENERIC_ISSUSER. 2006-10-25 23:40:57 +00:00
christos
4d595fd7b1 - sprinkle __unused on function decls.
- fix a couple of unused bugs
- no more -Wno-unused for i386
2006-10-12 01:30:41 +00:00
dogcow
55ddfc9aae change the MOWNER_INIT define to take two args; fix extant struct mowner
decls to use it. Makes options MBUFTRACE compile again and not whinge about
missing structure declarations. (Also makes initialization consistent.)
2006-10-10 21:49:14 +00:00
dogcow
f2d329dca0 remove more vestiges of CCITT, LLC, HDLC, NS, and NSIP. 2006-09-07 02:40:31 +00:00
christos
2c3642e00f use c99 initializers 2006-09-03 06:53:08 +00:00
christos
47be5467d6 Fix initializers 2006-08-30 19:20:48 +00:00
christos
45c427c7fb fix initializers 2006-08-30 15:32:23 +00:00
christos
976bcd112b add missing initializers 2006-08-30 01:08:43 +00:00
christos
5ea9cdc590 fix incomplete initializers 2006-08-29 23:40:14 +00:00
matt
2c65982795 Make sure any inclusion of <netccitt/*.h> is protected by opt_ccitt.h and
CCITT.
2006-08-25 19:46:04 +00:00
matt
6c8fa3224e One step closer to loadable domains. Store pointers to a domain's soft
interrupt queues so if_detach can remove packets to removed interfaces from
them.  This eliminates a lot of conditional ugly code in if.c
2006-08-25 19:33:50 +00:00
ad
f474dceb13 Use the LWP cached credentials where sane. 2006-07-23 22:06:03 +00:00
kardel
de4337ab21 merge FreeBSD timecounters from branch simonb-timecounters
- struct timeval time is gone
  time.tv_sec -> time_second
- struct timeval mono_time is gone
  mono_time.tv_sec -> time_uptime
- access to time via
	{get,}{micro,nano,bin}time()
	get* versions are fast but less precise
- support NTP nanokernel implementation (NTP API 4)
- further reading:
  Timecounter Paper: http://phk.freebsd.dk/pubs/timecounter.pdf
  NTP Nanokernel: http://www.eecis.udel.edu/~mills/ntp/html/kern.html
2006-06-07 22:33:33 +00:00
elad
874fef3711 integrate kauth. 2006-05-14 21:19:33 +00:00
mrg
82b8b3f44f #include <sys/protosw.h> for isosw[] extern. 2006-05-11 01:14:55 +00:00
christos
5cd6dae082 Coverity CID 1157: Move deref after check. 2006-04-15 00:03:56 +00:00
christos
9202171a37 Coverity CID 1158: Add a KASSERT to appease coverity. 2006-04-15 00:01:50 +00:00
christos
4364818c59 Coverity CID 1159: Prevent NULL deref. 2006-04-14 23:56:20 +00:00
christos
2b7ed695ce Coverity CID 860: Prevent NULL deref. 2006-04-14 23:53:53 +00:00
christos
5994b27932 compile with no options INET 2005-12-28 09:18:46 +00:00
christos
95e1ffb156 merge ktrace-lwp. 2005-12-11 12:16:03 +00:00
elad
0db637f40e Multiple inclusion protection, as suggested by christos@ on tech-kern@
few days ago.
2005-12-11 00:01:36 +00:00
dsl
d12c019f70 For some peverse reason the ISO code has to have the same template for
it's iso_pcbconnect() as the IP stack.
2005-11-16 20:44:19 +00:00
christos
3ebd13b60c - use memcpy instead of bcopy.
- constify.
2005-05-31 01:37:06 +00:00
christos
ee1e2f8883 deal with const cast-aways. 2005-05-30 22:14:52 +00:00
christos
d276a994d2 - sprinkle const
- remove unnecessary casts
- change some b*() to mem*()
2005-05-29 21:27:45 +00:00
christos
7cdea212c0 No 0x in front of %p... 2005-05-22 15:54:45 +00:00
christos
362a4a0bd5 Yes, it was a cool trick >20 years ago to use "0123456789abcdef"[a] to
implement, xtoa(), but I think defining the samestring 50 times is a bit
too much. Defined HEXDIGITS and hexdigits in subr_prf.c and use it...
2005-05-17 04:14:57 +00:00
perry
bcfcddbac1 nuke trailing whitespace 2005-02-26 22:31:44 +00:00
martin
7719036ed6 Avoid use of freed memory. Reported by Ted Unangst on tech-kern. 2005-02-24 08:29:23 +00:00
simonb
3cebd9325e White space nit- don't put a space before/after increment/decrement
operators.
2005-02-11 06:21:21 +00:00
matt
d341be30f4 Change initialzie of domains to use link sets. Switch to using STAILQ.
Add a convenience macro DOMAIN_FOREACH to interate through the domain.
2005-01-23 18:41:56 +00:00
peter
396b87b8c2 Convert lo(4) to a clonable device.
This also removes the loif array and changes all code to use the new
lo0ifp pointer which points to the lo0 ifnet structure.

Approved by christos.
2004-12-04 16:10:25 +00:00
matt
11ccf29a76 remove #else clause of #if __STDC__ 2004-04-25 21:13:13 +00:00
matt
e50668c7fa Constify protosw arrays. This can reduce the kernel .data section by
over 4K (if all the network protocols) are loaded.
2004-04-22 01:01:40 +00:00
matt
fd2a977729 Add #include "opt_iso.h" if not already there.
Make these compile cleanly when TPCONS is defined.
2004-04-21 23:19:49 +00:00