2267 Commits

Author SHA1 Message Date
dwmalone
af76980ef5 Some people's 6to4 routers seem to have been blowing up because of
the unlocked route caching in if_stf. Add a mutex that protects
access to cached route. This seemed to fix problems for Pekka Savola.

Nick Sayer had similar problems, and in his case completly disabling
the route cache seemed to help. Add a sysctl net.link.stf.route_cache
that can be used to turn off route caching in if_stf.

PR:		122283
MFC after:	2 weeks
Tested by:	Pekka Savola, Nick Sayer.
2008-09-25 12:35:01 +00:00
thompsa
40cfead11a Fix clone destruction, can't use the simple api because that does not remove
the ifnet from cloner's list.  Expose if_clone_destroyif api to do this.

Submitted by:	sam
2008-09-20 19:38:37 +00:00
zec
12843f93b9 Move #defines for MRT-related constants from net/route.c to
net/route.h, because the vnet code will need those constants as
well.

Reviewed by:	bz
Approved by:	julian (mentor)
MFC after:	never
2008-09-20 09:09:25 +00:00
thompsa
3109451488 Move the protocol and port count checks to outside the loop, these conditions
can not change while we have the lock so no point retesting.
2008-09-18 20:56:35 +00:00
thompsa
ee03ce0fd8 Make sure there is at least one port to avoid divide by zero when choosing the
tx port.

PR:		kern/122794
MFC after:	3 days
2008-09-18 04:14:28 +00:00
julian
c2b5f4f30f Hey, committed the same typo twice! must be a record 2008-09-15 07:23:56 +00:00
julian
557d36f2a8 rewrite rt_check. Ztake into account that whiel teh rtentry is unlocked,
someone else might change it, so after we re-acquire the lock on it,
we need to check it is still valid. People have been panicing in this
function due to soem edge cases which I have hopefully removed.

Reviewed by:	keramida @
Obtained from:	 1 week
2008-09-15 04:14:53 +00:00
julian
87628fd213 come on Julian, make up if you're committing one change or the other.
fix braino
2008-09-14 10:22:37 +00:00
julian
4d475b063c Revert a part of the MRT commit that proved un-needed.
rt_check() in its original form proved to be sufficient and
rt_check_fib() can go away (as can its evil twin in_rt_check()).

I believe this does NOT address the crashes people have been seeing
in rt_check.

MFC after:	1 week
2008-09-14 08:19:48 +00:00
bms
11fabd36c2 Add a missing break statement; IFDATA_LINKSPECIFIC would fall through
to IFDATA_DRIVERNAME otherwise.

Reviewed by:	brooks
MFC after:	1 week
2008-09-10 13:08:37 +00:00
emax
60554f1baf Add new TAPGIFNAME tap(4) character device ioctl. This is a
convenient shortcut to obtain network interface name using
file descriptor for character device.

Obtained from:	NetBSD
MFC after:	1 week
2008-09-08 22:43:55 +00:00
thompsa
51f53f0bcf Put the bridge mac inheritance behind a sysctl with the default off as this
still needs all the edge cases fixed.

Submitted by:	Eygene Ryabinkin
2008-09-08 03:28:26 +00:00
julian
e9e8fc3c49 Be consistent about whether these multi-lined macros are separated by
a blank line. Some were, some weren't. Decide in favour of the line
as it matches what an inline would do, and it's easier to read.
2008-09-05 21:03:19 +00:00
brooks
49557993ec Wrap a line that became too long with the addition of V_.
(This file contains many more unwrapped or badly wrapped lines.)
2008-09-01 17:15:29 +00:00
jkim
a19823099f Make bpf_maxinsns visible from ng_bpf.c.
Pass me the pointyhat, please.
2008-08-29 20:34:06 +00:00
jkim
d7adfdf82f Fix the last missing parentheses for a return statement in bpf_filter.c. 2008-08-29 20:00:55 +00:00
jkim
ce90729ca7 More convergence towards style(9). 2008-08-29 19:32:04 +00:00
jkim
e94035c40c - Directly match code wherever possible instead of using macros.
- Macrofy bitmap table lookup.  Constify the table while I am here.
- Add missing continue statements in the for loop.

Functionally it should be the last remaining fix from:

PR:		kern/89752
MFC after:	1 month
2008-08-29 19:10:51 +00:00
jkim
4d92376beb Simplify jump instruction range checks.
MFC after:	1 month
2008-08-29 01:47:45 +00:00
jfv
e4ffb4bcce Fix to bug kern/126850. Only dispatch event hander if the
interface had a parent (was attached).

Reviewed by: EvilSam
MFC after: 1 week
2008-08-28 22:05:19 +00:00
jkim
ced9379138 Check invalid BPF codes from bpf_validate(9).
Note that it is not critical because bpf_filter(9) returns zero
when it encounters invalid code at run time.

MFC after:	1 month
2008-08-28 22:00:21 +00:00
jkim
84b37f6437 Validate scratch memory addresses for BPF_STX and BPF_LDX|BPF_MEM.
A badly written filter was able to reference invalid addresses,
even cause kernel crash.

MFC after:	3 days
2008-08-28 17:49:37 +00:00
jkim
841dbb1bff Initialize scratch memory for JIT-compiled filter when it is allocated.
Previously it may have contained unnecessary (even sensitive) data from
the previous allocation.
As a (good) side effect, scratch memory may be used to store the previous
filter state(s) safely because it is allocated and freed with filter itself.
However, use it carefully because bpf_filter(9) does not have this behavior.

MFC after:	3 days
2008-08-28 16:40:51 +00:00
emaste
9fc003a762 Move CTASSERT of ether header sizes out of the header file and into
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
2008-08-27 17:10:37 +00:00
jkim
e41f677c9f Move empty filter handling to MI source.
MFC after:	3 days
2008-08-26 21:06:31 +00:00
jkim
e8ca7cbe6f Revert the previous commit to fix buildworld for now.
We have constified 'struct bpf_insn *' for bpf_filter(9) and bpf_validate(9)
since r1.19 but they conflict with pcap.h from libpcap.
2008-08-26 16:12:49 +00:00
jkim
2663616430 Make sys/net/bpf_filter.c build cleanly on user land. 2008-08-26 00:09:26 +00:00
jkim
e21d933237 Fix a typo in copyrights. 2008-08-25 20:43:13 +00:00
jkim
04660c9464 Embed scratch memory in the filter structure.
MFC after:	3 days
2008-08-25 20:39:56 +00:00
imp
4561fa447e MFp4:
Remove all the OtherBSD ifdefs.  They are very out of date at this
point.  OtherBSD doesn't use this file verbatim, and they don't have
FreeBSD ifdefs in their code.

Reviewed by:	bms@, joerg@
2008-08-24 20:40:00 +00:00
bz
4e18e7c8f4 Make the checks for ptp interfaces in ifa_ifwithdstaddr() and
ifa_ifwithnet() look more similar by comparing the pointer to NULL
in both cases.

MFC after:	3 months
2008-08-24 11:03:43 +00:00
thompsa
fb39793d41 ifnet_setbyindex() is only used locally, go back to being static. 2008-08-20 05:00:18 +00:00
kmacy
01940f4e65 Fix build 2008-08-20 03:14:48 +00:00
julian
0592958505 A bunch of formatting fixes brough to light by, or created by the Vimage commit
a few days ago.
2008-08-20 01:05:56 +00:00
jkim
137ba6a238 - Make these files compilable on user land.
- Update copyrights and fix style(9).
2008-08-18 18:59:33 +00:00
bz
1021d43b56 Commit step 1 of the vimage project, (network stack)
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
2008-08-17 23:27:27 +00:00
thompsa
acfcaf8c4d LRO combined packets can actually be bridged as long as all the interfaces also
support TSO, this can always be disabled manually if undesirable.

Pointed out by:		gallatin
2008-08-16 23:59:17 +00:00
ed
c392c35035 Change bpf(4) to use the cdevpriv API.
Right now the bpf(4) driver uses the cloning API to generate /dev/bpf%u.
When an application such as tcpdump needs a BPF, it opens /dev/bpf0,
/dev/bpf1, etc. until it opens the first available device node. We used
this approach, because our devfs implementation didn't allow
per-descriptor data.

Now that we can, make it use devfs_get_cdevpriv() to obtain the private
data. To remain compatible with the existing implementation, add a
symlink from /dev/bpf0 to /dev/bpf. I've already changed libpcap to
compile with HAVE_CLONING_BPF, which makes it use /dev/bpf. There may be
other applications in the base system (dhclient) that use the loop to
obtain a valid bpf.

Discussed on:	src-committers
Approved by:	csjp
2008-08-13 15:41:21 +00:00
vanhu
72791f9bc1 Increase statistic counters for enc0 interface when enabled
and processing IPSec traffic.

Approved by:	gnn (mentor)
MFC after:	1 week
2008-08-12 09:05:01 +00:00
antoine
ba030d52ce Make "1000baseT" the description and "1000baseTX" the alias for
IFM_1000_T instead of the reverse.  It is possible FreeBSD doesn't
even support 1000baseTX.
This changes ifconfig(8) output.

Requested by:	gavin@ and bms@
See also:	http://docs.freebsd.org/cgi/mid.cgi?20050307191901.H32508
2008-08-01 22:13:39 +00:00
antoine
f5bceca63e Remove trailing ';' in BPFD_LOCK_ASSERT macro.
MFC after:	1 month
X-MFC-to:	stable/7, stable/6 has it right
2008-08-01 22:08:14 +00:00
csjp
471e3f43d5 Annotate why we do not call BPF_CHECK_DIRECTION() in this tapping routine.
There is no way for the caller to tell us which direction this packet is
going.  With the bpf_mtap{2} routines, we can check the interface pointer.

MFC after:	2 weeks
2008-08-01 21:38:46 +00:00
rwatson
f06c4502bb Remove further trailing white space. 2008-08-01 09:41:45 +00:00
jhb
4ffedc310b Trim some noise from some #ifdef's. This had leaked into the compat32
support for bpf(4) due to hacks in the Y! tree for a truss32 binary
(since superseded by native support for 32-bit binaries in truss itself).

MFC after:	1 week
2008-07-30 21:01:51 +00:00
julian
4c1af4639a Add the ability to add new addresses for interfacesto just one FIB
(Other more specific related options will follow)
This allows one to set multiple p2p links to the same place
and select which to use by having each in different FIBS.
2008-07-27 01:29:28 +00:00
trhodes
bb98de1145 Fill in BPF sysctl descriptions.
Reviewed by:	csjp
2008-07-25 23:58:09 +00:00
julian
739989a3ea Add support for actually sending WCCP return packets via GRE.
This MAY be combined by a clever person with the 'key' code recently
added, however a cursary glance suggest that it would be safer to just keep
the patches as it is unlikely that the two modes would be used together
and the separate patch has been extensively tested.

Obtained from:	 here and there
MFC after:	1 week
2008-07-20 21:45:15 +00:00
jkim
5faf505c39 Allow injecting big packets via bpf(4) up to min(MTU, 16K-byte).
MFC after:	1 week
2008-07-14 22:41:48 +00:00
jfv
188dc0a4d4 Add event notification at attach/detach so the NIC
is able to detect it and do hardware filtering.
2008-07-14 18:40:21 +00:00
rwatson
ee5ac1d2dd Rather than checking for a NULL so_pcb in raw_attach(), assert that
it's non-NULL, as all callers can and should already do the required
checking.  Update comments a bit more to talk about rawcb allocation
for consumers.

Reviewed by:	bz
MFC after:	3 weeks
2008-07-09 18:41:31 +00:00