Commit Graph

1964 Commits

Author SHA1 Message Date
dyoung
6917e4364d If we enter gre_output() without a route in the cache, call
rtcache_init() to try to fill the cache.  rtcache_check() was not
sufficient.
2007-02-23 06:10:40 +00:00
dyoung
9020519740 Destroy route cache before destroying the interface. 2007-02-23 04:20:02 +00:00
dyoung
fea99925e4 Cosmetic: use TAILQ_EMPTY, TAILQ_FOREACH. 2007-02-22 09:23:38 +00:00
thorpej
7cc07e11dc TRUE -> true, FALSE -> false 2007-02-22 06:16:03 +00:00
thorpej
712239e366 Replace the Mach-derived boolean_t type with the C99 bool type. A
future commit will replace use of TRUE and FALSE with true and false.
2007-02-21 22:59:35 +00:00
dyoung
58cb526fa7 Use __arraycount(). 2007-02-21 02:24:14 +00:00
dyoung
af8be3e751 Remove extraneous parentheses. bcopy -> memcpy. 2007-02-20 08:55:54 +00:00
dyoung
818fe8ed7b Remove unused #define SIN.
Constify.
2007-02-20 08:32:14 +00:00
dyoung
b700519db9 Remove unused #define SIN(). From he@. 2007-02-19 21:18:23 +00:00
dyoung
ba2aee81a0 Fix fallout from if_output constification. Thanks, Havard Eidnes,
for reporting the problem and testing my patch.
2007-02-19 21:17:03 +00:00
matt
58aa85753d Initialize routeswitch with structure initializers. 2007-02-18 22:46:32 +00:00
dyoung
3365b046ad Use satocsin to cast to const struct sockaddr_in *. 2007-02-18 07:17:48 +00:00
dogcow
27a0c93811 constify struct sockaddr. 2007-02-18 06:20:10 +00:00
dyoung
5493f188c7 KNF: de-__P, bzero -> memset, bcmp -> memcmp. Remove extraneous
parentheses in return statements.

Cosmetic: don't open-code TAILQ_FOREACH().

Cosmetic: change types of variables to avoid oodles of casts: in
   in6_src.c, avoid casts by changing several route_in6 pointers
   to struct route pointers.  Remove unnecessary casts to caddr_t
   elsewhere.

Pave the way for eliminating address family-specific route caches:
   soon, struct route will not embed a sockaddr, but it will hold
   a reference to an external sockaddr, instead.  We will set the
   destination sockaddr using rtcache_setdst().  (I created a stub
   for it, but it isn't used anywhere, yet.)  rtcache_free() will
   free the sockaddr.  I have extracted from rtcache_free() a helper
   subroutine, rtcache_clear().  rtcache_clear() will "forget" a
   cached route, but it will not forget the destination by releasing
   the sockaddr.  I use rtcache_clear() instead of rtcache_free()
   in rtcache_update(), because rtcache_update() is not supposed
   to forget the destination.

Constify:

   1 Introduce const accessor for route->ro_dst, rtcache_getdst().

   2 Constify the 'dst' argument to ifnet->if_output().  This
     led me to constify a lot of code called by output routines.

   3 Constify the sockaddr argument to protosw->pr_ctlinput.  This
     led me to constify a lot of code called by ctlinput routines.

   4 Introduce const macros for converting from a generic sockaddr
     to family-specific sockaddrs, e.g., sockaddr_in: satocsin6,
     satocsin, et cetera.
2007-02-17 22:34:07 +00:00
dyoung
3267be0b29 Cosmetic: don't open-code LIST_FOREACH(). Remove extraneous
parentheses.  Bzero -> memset.  Shorten staircase in rt_timer_add().
2007-02-17 07:50:49 +00:00
dyoung
7cfeb3c2ed Clean this code up some.
Extract subroutine rn_delete1() to ease RADIX_MPATH integration,
should we ever do that.

Remove RN_DEBUG code that does not compile.

Join some lines of the type

        type var1;
        type var2;
        type var3;

making

        type var1, var2, var3.

Break lines of the type if (expr) stmt1; else stmt2; so that normal
people can read them.
2007-02-17 07:46:38 +00:00
bouyer
53bfe8e81c Drop M_PROMISC before passing the packet to a carp device, for the same
reason it's dropped before passing to bridge: when a vlan interface is
in promisc mode, it will loop the packet back to ether_input() with
M_PROMISC set, and when carp calls ether_input again the flag is still
there and the packet is dropped. If the carp interface doesn't take
the packet M_PROMISC is set just after is needed anyway.
Tested on a box with multiple carp on vlans, no comments about this patch
on tech-net@
2007-01-29 22:13:14 +00:00
cbiere
bcfa6c3c08 Use be16dec() and be32dec() instead of reimplementing them. 2007-01-27 07:16:01 +00:00
cbiere
6b77c2af74 Use a plain memcpy() instead of alignment- and endian-specific hacks. 2007-01-27 07:12:16 +00:00
dyoung
2115f7da2f Fix the check for a routing loop. 2007-01-26 19:32:32 +00:00
dyoung
832c31b2c6 Mark some shared variables as volatile. 2007-01-26 03:01:32 +00:00
isaki
7525ed1e40 Install <net/if_pflog.h>. 2007-01-13 14:13:53 +00:00
mouse
8fb29141e0 Hook srt into the rest of the kernel build machinery, so it works to
just uncomment the pseudo-device line (which arguably should go into
other ports' GENERICs too, and at some point may).

OKed by perry.
2007-01-11 05:36:29 +00:00
bouyer
9403f4d239 Don't define dropanyway: label unless ISO or NETATALK is defined. Fix
kern/35364 by Gene ENonymous
2007-01-06 20:38:14 +00:00
joerg
8632294e2e Add a debug option for the route cache to help tracing down issues
like PR 35272 and 35318. When the kernel is compiled with
-DRTCACHE_DEBUG, all rtcache entries are logged to a list with the place
they got initialised. This allows overwrites, double inits and other
manual messing to be detected.
2007-01-05 16:40:08 +00:00
mouse
9707fdff94 Add workarounds for include-file bugs exposed by this file. (Ideal, of
course, would be to fix the include-file bugs; that may follow later.)
2007-01-05 06:32:48 +00:00
elad
b2eb9a5389 Consistent usage of KAUTH_GENERIC_ISSUSER. 2007-01-04 19:07:03 +00:00
wiz
0b5301abc7 Add RCS Id. 2006-12-29 10:39:59 +00:00
mouse
ebc746c114 Very first import of the source-address-based routing pseudo-device,
before any cleanup at all, per discussion with perry@.
2006-12-29 04:20:14 +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
christos
5abf774808 initialize error, cause gcc3 says so. 2006-12-10 23:12:37 +00:00
is
dc12fff4c3 Explain XID magic constants, correcting the format ID 2006-12-10 14:52:29 +00:00
is
8812d0414b oops, forgot lan_hdr_len length offset 2006-12-10 14:49:43 +00:00
is
e80820a117 oops, forgot the m_adj 2006-12-10 14:47:40 +00:00
is
9c9b34873f was wrong magic constant. no functional change. 2006-12-10 14:45:09 +00:00
is
d227658f6b Avoid overlapping struct assignment, like in the Ethernet and FDDI cases. 2006-12-10 14:39:03 +00:00
is
60ee96c865 Explain llc XID magic constants, correcting the XID header format tag. 2006-12-10 14:21:32 +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
is
287d53b453 explain XID constants, and fix a wrong one 2006-12-10 11:39:43 +00:00
is
1f15d00952 define some more magic LLC constants 2006-12-10 11:35:36 +00:00
is
29b0f75d10 comment on llc class 2006-12-10 10:51:11 +00:00
dyoung
cf7bb443ac Straggler from last: convert to rtflush(). 2006-12-09 06:32:58 +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
joerg
b49bdf49d7 Deinline rt_get_ifa. Keep it in route.c as it is part of the routing
API, even though rtsock.c is the only user right now.
2006-12-07 19:37:08 +00:00
joerg
d87b42b41f Deinline rt_replace_ifa and move rt_set_ifa and rt_set_ifa1 to
route.c as they are not used outside that file.
2006-12-07 19:20:14 +00:00
dyoung
627864e36f Per discussion on tech-net@, discard the address-munging hack that
let one create a tunnel with equal inner and outer destination IP
numbers.  Update gre(4) documentation for this change.

Extract subroutine  gre_update_route() from gre_compute_route(),
and always call it in gre_output() to freshen the route for
tunnel-encapsulated packets.
2006-12-04 02:40:15 +00:00
dyoung
31730224f4 In gre_clone_destroy,
1 use splnet() to synchronize gre clone destruction with interrupts,
  and
2 wait to call if_detach() until after joining the gre kernel
  thread.
2006-12-04 01:49:47 +00:00
dyoung
e45f67b8b4 Extract subroutines rn_walkfirst() and rn_walknext() from rn_walktree().
No functional change intended.

Add some new diagnostic code, bracketed by #ifdef RN_DEBUG, that
uses the two new subroutines to walk and print a tree.

XXX The format of the diagnostic print-outs needs improvement.
2006-12-04 01:45:50 +00:00
dyoung
7e5a475027 Replace the temporary variable ndst with rt_key(rt). This will
simplify the application of RADIX_MPATH patches.

No functional change intended.
2006-12-04 00:56:44 +00:00
dyoung
8a5a3d2d66 Paranoid protection against use after free: in rtfree(), set rt_ifa
and rt_ifp to NULL.
2006-12-04 00:52:47 +00:00
dyoung
b0520122af Cosmetic: remove extra empty line. 2006-12-04 00:48:59 +00:00
dyoung
626b8f05e2 Fix spelling, s/straglers/stragglers/. 2006-12-03 19:17:41 +00:00
dyoung
7b85ed030b In if_rt_walktree(), make absolutely certain not to leave a dangling
pointer, rt_ifp, from an rtentry to an interface that we are going
to destroy.
2006-12-02 20:48:13 +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
wiz
fa34b615d2 Correct spelling of "immediate(ly)". From Zafer. 2006-11-24 21:23:07 +00:00
rpaulo
bc3d08297a The change I committed to etherip was wrong. ether_snprintf doesn't make
sense when chaning the MAC address of the virtual interface as pointed
out by Hans himself.
So, introduce ether_nonstatic_aton() and make etherip(4) and tap(4) use it.
2006-11-24 01:04:30 +00:00
yamt
809ec70bcf implement ipv6 TSO.
partly from Matthias Scheler.  tested by him.
2006-11-23 19:41:58 +00:00
rpaulo
74b7608af9 Remove extra prototype. 2006-11-23 04:20:54 +00:00
rpaulo
5423539f94 New EtherIP driver based on tap(4) and gif(4) by Hans Rosenfeld.
Notable changes:
	* Fixes PR 34268.
	* Separates the code from gif(4) (which is more cleaner).
	* Allows the usage of STP (Spanning Tree Protocol).
	* Removed EtherIP implementation from gif(4)/tap(4).

Some input from Christos.
2006-11-23 04:07:07 +00:00
dyoung
43778cd2ec "Reform" TAILQ usage:
Obey the TAILQ abstraction while removing ifaddrs from an interface
in if_detach; just restart the loop after removing one or more
ifaddrs from the interface.

Convert a bunch of for (ifa = TAILQ_FIRST(); ifa; ifa = TAILQ_NEXT())
loops to TAILQ_FOREACH().

Remove some superfluous parentheses while I am here.
2006-11-20 04:09:25 +00:00
dyoung
33f672908d Correct the length of the TTL argument to setsockopt(IPPROTO_IP,
IP_TTL).
2006-11-16 22:58:00 +00:00
dyoung
51a6c2e769 Cosmetic: s/g_proto/sc_proto/.
(Straggler from last commit affecting net/if_gre.c, netinet/ip_gre.c.)
2006-11-16 22:32:38 +00:00
dyoung
641edc65f1 Cosmetic: s/g_proto/sc_proto/. Remove superfluous parentheses and
curly braces.
2006-11-16 22:26:35 +00:00
christos
168cd830d2 __unused removal on arguments; approved by core. 2006-11-16 01:32:37 +00:00
dyoung
2ed50f892c make the routing socket report the right source address in RTM_GET
responses when a source-address selection policy is in use.
2006-11-13 19:16:01 +00:00
dyoung
00aa0b8d95 Fix bugs in rt_get_ifa() and put aside the sequence number stuff,
which isn't ready for primetime yet.
2006-11-13 19:14:30 +00:00
dyoung
e362cfc96f In rtalloc(), release our reference to the prior rtentry before
referencing a new rtentry.
2006-11-13 17:51:02 +00:00
dyoung
a25eaede91 Add a source-address selection policy mechanism to the kernel.
Also, add ioctls SIOCGIFADDRPREF/SIOCSIFADDRPREF to get/set preference
numbers for addresses.  Make ifconfig(8) set/display preference
numbers.

To activate source-address selection policies in your kernel, add
'options IPSELSRC' to your kernel configuration.

Miscellaneous changes in support of source-address selection:

        1 Factor out some common code, producing rt_replace_ifa().

        2 Abbreviate a for-loop with TAILQ_FOREACH().

        3 Add the predicates on IPv4 addresses IN_LINKLOCAL() and
          IN_PRIVATE(), that are true for link-local unicast
          (169.254/16) and RFC1918 private addresses, respectively.
          Add the predicate IN_ANY_LOCAL() that is true for link-local
          unicast and multicast.

        4 Add IPv4-specific interface attach/detach routines,
          in_domifattach and in_domifdetach, which build #ifdef
          IPSELSRC.

See in_getifa(9) for a more thorough description of source-address
selection policy.
2006-11-13 05:13:38 +00:00
dyoung
0787046d01 Change lengthy ((struct sockaddr_in *)x) to satosin(x). 2006-11-04 07:13:19 +00:00
dyoung
f6cb813915 Remove unused variables. 2006-11-04 06:41:48 +00:00
dyoung
cce119d20c Expand the comment concerning gre_kick().
Shorten the code in gre_compute_route() that flips the least
significant bit of the tunnel address.  No functional change.
2006-11-04 06:38:05 +00:00
martin
567f8e3fe9 Do not truncate the last char from a remote error message 2006-11-01 12:10:06 +00:00
yamt
d566a2d50f make agr headers include lock.h and queue.h by themselves. 2006-10-29 22:14:14 +00:00
yamt
fb3b846458 agr_setconfig: ensure ifname is NUL terminated. PR/34894 from Michael Pounov. 2006-10-29 11:38:56 +00:00
christos
78a48d28a3 Use strncpy to copy out interface names so that the trailing part of the
buffer is zeroed, and check for overflow.
2006-10-27 15:33:11 +00:00
elad
74482de29f Kill a couple of KAUTH_GENERIC_ISSUSER usages.
I had to refactor the code a bit, I hope it's okay.
2006-10-26 15:11:22 +00:00
elad
f808f29d05 Kill KAUTH_GENERIC_ISSUSER use. 2006-10-25 22:56:14 +00:00
elad
adf8d7aab2 Introduce KAUTH_REQ_NETWORK_SOCKET_OPEN, to check if opening a socket is
allowed. It takes three int * arguments indicating domain, type, and
protocol. Replace previous KAUTH_REQ_NETWORK_SOCKET_RAWSOCK with it (but
keep it still).

Places that used to explicitly check for privileged context now don't
need it anymore, so I replaced these with XXX comment indiacting it for
future reference.

Documented and updated examples as well.
2006-10-25 22:49:22 +00:00
elad
0a57b5966b Kill some KAUTH_GENERIC_ISSUSER uses. 2006-10-25 20:28:45 +00:00
christos
a4b205c85a don't leak kernel variable declarations to userland. 2006-10-22 20:55:09 +00:00
christos
1536848b53 fix typo. 2006-10-22 19:21:26 +00:00
christos
f6c67772ca use strlcpy instead of strncpy or bcopy to copy the interface name. 2006-10-22 18:24:02 +00:00
pooka
80b7c62e48 be appropriately const poisonous 2006-10-22 13:25:54 +00:00
uebayasi
3d643c0f73 const static -> static const 2006-10-22 03:39:43 +00:00
dogcow
372e6ef309 now that we have -Wno-unused-parameter, back out all the tremendously ugly
code to gratuitously access said parameters.
2006-10-17 18:21:29 +00:00
dyoung
ca38b620b0 Two bug fixes:
If gre_socreate1() cannot find out the socket's address, exit with
an error.  Before, it could exit *without* an error.

If gre_thread1() finds that it is without a valid socket (i.e., so
== NULL) but the configuration is "unchanged" (in initial state),
force reconfiguration.  This prevents a crash when we try to bring
up a GRE over UDP interface whose UDP endpoints have never been
specified.
2006-10-15 06:36:54 +00:00
dyoung
755be14a30 Cosmetic: join lines to conserve vertical space. 2006-10-15 06:28:53 +00:00
dogcow
2023789a40 More -Wunused fallout. sprinkle __unused when possible; otherwise, use the
do { if (&x) {} } while (/* CONSTCOND */ 0);
construct as suggested by uwe in <20061012224845.GA9449@snark.ptc.spbu.ru>.
2006-10-13 16:53:35 +00:00
hannken
1dac4c24ec More __unused (COMPAT_OSOCK not defined). 2006-10-13 10:29:41 +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
dyoung
52f0206b50 Bug fix: do not try to destroy a NULL socket. Stops the kernel
from crashing when a GRE over UDP instance of gre(4) is destroyed
before its socket is created/delegated.
2006-10-09 17:54:23 +00:00
peter
9fc3877a2a Remove unneeded usage of LIST_*.
ok cube@
2006-10-09 10:46:00 +00:00
martin
0efa9c8ed3 Make lo* always have the IFF_RUNNING flag set, to apease some
SNMP apps. Fixes PR kern/11830.
2006-10-08 23:19:32 +00:00
tls
8cc016b4bc Protect calls to pool_put/pool_get that may occur in interrupt context
with spl used to protect other allocations and frees, or datastructure
element insertion and removal, in adjacent code.

It is almost unquestionably the case that some of the spl()/splx() calls
added here are superfluous, but it really seems wrong to see:

	s=splfoo();
	/* frob data structure */
	splx(s);
	pool_put(x);

and if we think we need to protect the first operation, then it is hard
to see why we should not think we need to protect the next.  "Better
safe than sorry".

It is also almost unquestionably the case that I missed some pool
gets/puts from interrupt context with my strategy for finding these
calls; use of PR_NOWAIT is a strong hint that a pool may be used from
interrupt context but many callers in the kernel pass a "can wait/can't
wait" flag down such that my searches might not have found them.  One
notable area that needs to be looked at is pf.

See also:

http://mail-index.netbsd.org/tech-kern/2006/07/19/0003.html
http://mail-index.netbsd.org/tech-kern/2006/07/19/0009.html
2006-10-05 17:35:19 +00:00
oster
75642ab7ae It is not sufficient for MINDEX to just 'return 0' if the MINDEX macro
is going to be used from within m_xhalf() and m_xword().  In using
MINDEX in those cases, we must set *err to '1' *before* calling MINDEX
just in case MINDEX does decide to 'return', and causes the function
to return 0 with an un-set err value.  A consequence of this fix is
that we can cleanup a couple of (now) unneeded goto's.  Problem found
by inspection whilst searching for the cause of a different panic.

Also: pavel@ noted the following:
				if (merr != 0)
 					return 0;
was missing from after a call to m_xhalf(), so fix that too.

src/regress/sys/net/bpf/out-of-bounds now passes the regression test.

Ok'ed by pavel@.
2006-10-04 20:47:43 +00:00
elad
51afb61202 PR/19795: Joel Wilsson: net_osdep.h is lying.
Sync comment with reality, thanks for the patch!
2006-09-23 15:17:58 +00:00
elad
83a5239b28 Remove ugly (void *) casts from network scope authorization wrapper and
calls to it.

While here, adapt code for system scope listeners to avoid some more
casts (forgotten in previous run).

Update documentation.
2006-09-19 21:42:29 +00:00
elad
5f7169ccb1 First take at security model abstraction.
- Add a few scopes to the kernel: system, network, and machdep.

- Add a few more actions/sub-actions (requests), and start using them as
  opposed to the KAUTH_GENERIC_ISSUSER place-holders.

- Introduce a basic set of listeners that implement our "traditional"
  security model, called "bsd44". This is the default (and only) model we
  have at the moment.

- Update all relevant documentation.

- Add some code and docs to help folks who want to actually use this stuff:

  * There's a sample overlay model, sitting on-top of "bsd44", for
    fast experimenting with tweaking just a subset of an existing model.

    This is pretty cool because it's *really* straightforward to do stuff
    you had to use ugly hacks for until now...

  * And of course, documentation describing how to do the above for quick
    reference, including code samples.

All of these changes were tested for regressions using a Python-based
testsuite that will be (I hope) available soon via pkgsrc. Information
about the tests, and how to write new ones, can be found on:

	http://kauth.linbsd.org/kauthwiki

NOTE FOR DEVELOPERS: *PLEASE* don't add any code that does any of the
following:

  - Uses a KAUTH_GENERIC_ISSUSER kauth(9) request,
  - Checks 'securelevel' directly,
  - Checks a uid/gid directly.

(or if you feel you have to, contact me first)

This is still work in progress; It's far from being done, but now it'll
be a lot easier.

Relevant mailing list threads:

http://mail-index.netbsd.org/tech-security/2006/01/25/0011.html
http://mail-index.netbsd.org/tech-security/2006/03/24/0001.html
http://mail-index.netbsd.org/tech-security/2006/04/18/0000.html
http://mail-index.netbsd.org/tech-security/2006/05/15/0000.html
http://mail-index.netbsd.org/tech-security/2006/08/01/0000.html
http://mail-index.netbsd.org/tech-security/2006/08/25/0000.html

Many thanks to YAMAMOTO Takashi, Matt Thomas, and Christos Zoulas for help
stablizing kauth(9).

Full credit for the regression tests, making sure these changes didn't break
anything, goes to Matt Fleming and Jaime Fournier.

Happy birthday Randi! :)
2006-09-08 20:58:56 +00:00
dogcow
f2d329dca0 remove more vestiges of CCITT, LLC, HDLC, NS, and NSIP. 2006-09-07 02:40:31 +00:00
dyoung
8db36d06c3 Don't use IFQ_ macros on an ifqueue. Fixes a compilation error
reported by christos.
2006-09-03 06:10:06 +00:00
christos
44dddc087f use c99 initializers 2006-09-03 05:08:18 +00:00
cube
207af46910 Add a note about the use of CTL_CREATE in sysctl_createv, otherwise the
code can be confusing.
2006-09-01 16:28:53 +00:00
dyoung
9cc1c09a17 Rename gre_softc member sc_sp to sc_soparm to fix NetBSD/alpha
compiles, where some other system header #defines sc_sp.

In gre_ioctl, GREDSOCK case, do not try to delete sc_fp if it is
NULL.

Move GREDSOCK and GRESSOCK definitions to where the other GRE ioctls
are defined.

Remove #ifdef GRESSOCK, it's unnecessary now that the feature is
complete.
2006-09-01 01:34:05 +00:00
dyoung
47be766fd3 Add a mode to gre(4) that sends GRE tunnel packets in UDP datagrams.
Fix MOBILE encapsulation.  Add many debugging printfs (mainly
concerning UDP mode).  Clean up the gre(4) code a bit.  Add the
capability to setup UDP tunnels to ifconfig.  Update documentation.

In UDP mode, gre(4) puts a GRE header onto transmitted packets,
and hands them to a UDP socket for transmission.  That is, the
encapsulation looks like this: IP+UDP+GRE+encapsulated packet.

There are two ways to set up a UDP tunnel.  One way is to tell the
source and destination IP+port to gre(4), and let gre(4) create
the socket.  The other way to create a UDP tunnel is for userland
to "delegate" a UDP socket to the kernel.
2006-08-31 17:46:16 +00:00
christos
514b3fccd7 fix initializer 2006-08-30 17:00:15 +00:00
christos
378a57007e fix initializers. 2006-08-30 16:58:38 +00:00
christos
3ed5fa0441 Fix initializers. 2006-08-30 16:57:59 +00:00
christos
a3b3beb093 fully initialize IF_CLONE_INITIALIZER 2006-08-30 16:41:08 +00:00
christos
6d637b500d add missing initializer 2006-08-28 00:09:28 +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
adrianp
3d8cbc06ba A problem has been identified in the in-kernel PPP code shared by ISDN PPP
interfaces ippp(4) and pppoe(4). Insufficient checking of options presented
by the peer may cause writing of copies of the malicious input beyond the
end of a buffer allocated for that purpose.

Issue found by pavel@
Fix from martin@

This is SA2006-019 (CVE-2006-4304)
2006-08-23 20:02:23 +00:00
pavel
8bf13164fe defflag PPPOE_SERVER and PPPOE_TERM_UNKNOWN_SESSIONS. 2006-08-05 17:20:54 +00:00
martin
f1dc5b61db Fix typo in comment 2006-08-04 23:18:53 +00:00
christos
224c697f91 Patch from Dheeraj S, inspired by the following FreeBSD change:
Rather than calling mircotime() in catchpacket(), make catchpacket()
take a timeval indicating when the packet was captured. Move
microtime() to the calling functions and grab the timestamp as soon
as we know that we're going to call catchpacket at least once.

This means that we call microtime() once per matched packet, as
opposed to once per matched packet per bpf listener. It also means
that we return the same timestamp to all bpf listeners, rather than
slightly different ones.

It would be more accurate to call microtime() even earlier for all
packets, as you have to grab (1+#listener) locks before you can
determine if the packet will be logged. You could always grab a
timestamp before the locks, but microtime() can be costly, so this
didn't seem like a good idea.

(I guess most ethernet interfaces will have a bpf listener these
days because of dhclient. That means that we could be doing two bpf
locks on most packets going through the interface.)
2006-07-26 13:54:13 +00:00
ad
f474dceb13 Use the LWP cached credentials where sane. 2006-07-23 22:06:03 +00:00
martin
dee43775e6 Small simplification, pointed out by Christian Hattemer in private mail. 2006-07-13 23:43:13 +00:00
martin
81b2f47532 Do not automagically UP the interface when setting the address.
Together with previous ifconfig changes, this fixes PR 30694, at
least for pppoe (and other sppp based) interfaces.
2006-07-13 14:04:50 +00:00
tsutsui
79d3d94bff KNF. 2006-07-08 18:32:53 +00:00
yamt
7d19947ffd make a multiple inclusion protection macro match with the filename. 2006-07-08 05:57:41 +00:00
yamt
85d844ab45 agr_ioctl: wrap a long line after kauth merge. 2006-07-08 05:56:48 +00:00
tron
d700257e96 Make this build with GCC 4.x. 2006-06-27 10:45:09 +00:00
yamt
8dc7b19627 add a comment on if_agrprivate. 2006-06-25 07:50:00 +00:00
drochner
9d26b198b5 remove dependency on "agr" to make "struct ifnet" independant of the
kernel configuration, avoids kernel/userland mismatches, ok by christos
2006-06-23 19:02:51 +00:00
uwe
59d7f20391 Do not instal net/if_pppvar.h, net/if_slvar.h and net/if_stripvar.h.
The former two are no longer necessary as slstats is no more
and pppstats now uses an ioctl instead of rummaging through kmem.
The latter has nothign interesting for the userland, but uses
struct bintime that I'm about to hide under #ifdef _KERNEL.

A bunch of remaining <net/if_*.h> headers is pretty useless to the
userland too, but ... someone else's yag to shave...
2006-06-18 21:02:16 +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
ragge
cb7f51a59d Add IFM_10G_SR and IFM_10G_CX4, to keep in sync with FreeBSD.
Kindly requested by Gleb Smirnoff at FreeBSD.
2006-06-03 12:43:28 +00:00
elad
4ea6eb36cb add sysctl for routing stats 2006-05-27 23:08:11 +00:00
christos
c52ff7f9d5 Fixes from David Boggs; in his words:
/sys/net/if_spppvar.h says:

	"Lower layer drivers that are always ready to communicate
	(like hardware HDLC) can shortcut pp_up from pp_tls,
	and pp_down from pp_tlf."

	When I follow those instructions, I get a kernel stack
	overflow as soon as I open the HDLC device.

	Here is the loop:
	 sppp_ioctl calls sppp_lcp_open
	 sppp_lcp_open calls sppp_open_event
	 sppp_open_event calls sppp_lcp_tls
	 sppp_lcp_tls calls pp_tls
	 pp_tls is the SHORTCUT to sppp_lcp_up
	 sppp_lcp_up calls spp_lcp_open
	 ...and around we go until the stack overflows.

	The fix is to reverse the order of the action (tls)
	and the state change (from INITIAL to STARTING) in
	sppp_open_event.

	There is a similar loop during closing:
	 sppp_ioctl calls sppp_lcp_close
	 sppp_lcp_close calls sppp_close_event
	 spp_close_event calls sppp_lcp_tlf
	 sppp_lcp_tlf calls pp_tlf
	 pp_tlf is the SHORTCUT to sppp_lcp_down
	 sppp_lcp_down calls sppp_lcp_close
	 ...and around we go until the stack overflows.

	The fix is to reverse the order of the action (tlf)
	and the state change (from STARTING to INITIAL) in
	sppp_close_event.

	Separately, while I was discovering this, I noticed
	that pp_tlf was being called unconditionally rather
	than first checking to see if it is NULL.  pp_tlf
	is a callout from sppp to the hdlc device driver.
	Elsewhere in sppp, this is always checked for NULL
	before calling it, and the comments in if_spppvar.h
	imply that filling it in is optional.

	From spppvar.h:
	"These functions need to be filled in by the lower layer
	(hardware) drivers if they request notification from the
	PPP layer whether the link is actually required."
	This clearly says that pp_tlf and pp_tls are optional
	and so sppp must check before calling them.
2006-05-21 05:09:13 +00:00
liamjfoy
4876c304b1 Integrate Common Address Redundancy Procotol (CARP) from OpenBSD
'pseudo-device	carp'

Thanks to: joerg@ christos@ riz@ and others who tested
Ok: core@
2006-05-18 09:05:49 +00:00
yamt
fd1132d079 include sys/kauth.h for kauth_authorize_generic. 2006-05-15 09:07:59 +00:00
elad
874fef3711 integrate kauth. 2006-05-14 21:19:33 +00:00
christos
103d2f520c XXX: GCC uninitialized. 2006-05-14 05:30:31 +00:00
christos
d04095abaa Comment out packed attributes that gcc 4 does not like. 2006-05-14 02:45:45 +00:00
mrg
126f7e1139 since ar_tha() can return NULL, don't pass it directly to functions
that expect real addresses.  explicitly KASSERT() that it is not
NULL in the kernel and just avoid using it userland.

(the kernel could be more defensive about this, but, until now it
would have just crashed anyway.)
2006-05-12 01:20:33 +00:00
mrg
084c052803 quell GCC 4.1 uninitialised variable warnings.
XXX: we should audit the tree for which old ones are no longer needed
after getting the older compilers out of the tree..
2006-05-10 21:53:14 +00:00
dyoung
2d794b9ed5 Remove needless "link state changed to DOWN/UP" message. 2006-05-01 18:17:42 +00:00
tron
ed14057f29 Adapt maximum MTU permitted on pppoe(4) interfaces to the MTU of the
connected ethernet interface.
2006-04-27 20:04:26 +00:00
tron
7604b6a404 Don't allow to connect a non ethernet interface to a PPPoE interface. 2006-04-27 13:19:04 +00:00
simonb
22d1f42229 One __KERNEL_RCSID() should be enough for this file. 2006-04-22 04:58:49 +00:00
christos
667e91e30f Add an empty attach function. Reported by David Boggs 2006-04-20 17:03:35 +00:00
christos
74e3aa75eb Perry reports that buf can be NULL, so deal with it. 2006-04-19 15:13:34 +00:00
rpaulo
994567415c Fix another typo... I must be on drugs... 2006-04-18 19:30:49 +00:00
christos
17db7d5dd6 Don't use KASSERT, return an error instead to fix the build. 2006-04-15 04:45:01 +00:00
christos
a302c8092d Coverity CID 2728: Add KASSERT before NULL deref. 2006-04-15 02:38:19 +00:00
christos
d3b0d78d54 Coverity CID 1193: Add KASSERT before negative array deref. 2006-04-15 02:35:22 +00:00
christos
e1b8701a82 Coverity CID 1147: Protect against NULL deref. 2006-04-15 02:27:25 +00:00
christos
ef31177b25 Coverity CID 1146: Protect against NULL deref. 2006-04-15 02:26:17 +00:00
christos
2973de5c38 Coverity CID 1145: Protect against NULL deref. 2006-04-15 02:25:24 +00:00
christos
bd7ea99daf Don't try to free a NULL mbuf. 2006-04-15 02:22:44 +00:00
christos
29a12667b7 Coverity CID 855: Add a KASSERT for null route from successful rtrequest. 2006-04-15 02:19:00 +00:00
christos
3a59edd545 Coverity CID 854: Add KASSERT before deref. 2006-04-15 02:14:44 +00:00
christos
36d8e665b9 Coverity CID 853: Prevent NULL deref. 2006-04-15 02:07:34 +00:00
christos
c0b744d148 Coverity CID 756: Remove bogus NULL checks. 2006-04-15 02:03:36 +00:00
christos
e7bb1b7128 Coverity CID 755: Protect against NULL deref. 2006-04-15 02:01:50 +00:00
christos
4bb7462638 PR/33231: Anraud Degroote: Miscellaneous cleanups in the route code:
- use of 0 instead of NULL
    - questionnable macros
2006-04-10 19:06:37 +00:00
rpaulo
58e5792e6a IFHEAD and PREPADDR are mutually exclusive. From FreeBSD. 2006-04-08 12:14:42 +00:00
rpaulo
b5d1102290 Add another bit from FreeBSD that I forgot: in tun_output, don't try to send
an AF_INET packet if TUN_IFHEAD is not set.
From FreeBSD and spotted (again) by DEGROOTE Arnaud.
2006-04-04 15:43:23 +00:00
rpaulo
ca98b087a8 Fix a if-clause botched in a previous revision now that we have TUN_IFHEAD.
Spotted by DEGROOTE Arnaud <degroote@enseirb.fr>.
2006-04-04 11:33:15 +00:00
rpaulo
11a20f0dec Change the number of TUN[GS]IFHEAD to avoid collision with if_pp.
Noticed by Simon Burge.
2006-04-04 11:23:59 +00:00
rpaulo
0dcbc9b794 Implement TUN_IFHEAD, the missing piece that was breaking old applications. 2006-04-03 23:29:39 +00:00
rpaulo
782e550804 Add missing break tunwrite() which was causing EAFNOSUPPORT to be
returned, thus making IPv6 support broken.
!@#$%^...
2006-03-29 19:29:00 +00:00
thorpej
2be6494fc9 Use device_cfdata(). 2006-03-29 04:16:44 +00:00
thorpej
39cd836ee1 Use device_unit(). 2006-03-28 17:38:24 +00:00
christos
cbff0fb84a Add a new function called ether_snprintf() which takes an external buffer
and a length. The buffer should be 3 * addrlen.
Remove local tap_ether_sprintf(), and use ether_snprintf() instead.
2006-03-16 15:57:59 +00:00
christos
cbf41b4afc Remove duplicate and slightly different declaration of ether_sprintf, which
really should be in if_ether.h like all the other ether_ functions.
2006-03-16 15:56:28 +00:00
lukem
a1f606d3fd Use the SI capitalization for "Hz", "kHz", and "MHz" in comments and strings.
Add a space between numbers and Hz unit.
2006-03-08 23:46:22 +00:00
msaitoh
1e5874b3c2 fix memory leak when resetting the source address and destination address. 2006-03-08 03:09:33 +00:00
rpaulo
d5648da4c6 Some minor KNF. 2006-03-03 19:57:37 +00:00
rpaulo
ece0242b47 Fix typo in comment. 2006-03-03 19:46:35 +00:00
christos
02b2f1b2b5 Provide ppp like statistics instead of grovelling through the kernel
symbols.
2006-03-02 17:20:07 +00:00
rpaulo
a0814a3043 Add full support for IPv6 tunnels. From DEGROOTE Arnaud in PR 32944.
The PR submitter and the PR handler were unable to test this code
using Teredo userland clients such as Miredo. However, the PR handler
dumped and analyzed some of the packets produced by Miredo and they
seemed fine.
(On a side note: I was unable to setup Teredo in Windows XP and the
problem seemed similar to what I currently see in NetBSD: lack of
replies from the Teredo relay).
2006-02-28 00:38:35 +00:00
drochner
be8cb1f8b9 add missing DLTs from the libpcap-0.9.4 distribution 2006-02-27 14:22:26 +00:00
drochner
4cf9c4d0dc fix bpf_validate():
a missing "break" caused any bpf filter containing
a division to be rejected
2006-02-27 11:42:58 +00:00
wiz
1ad8067cb3 Fix typos, reported by Alexey Dobriyan ("Gathered from Linux"),
forwarded by jmc@openbsd.
2006-02-25 00:58:34 +00:00
pooka
833be9a435 comment police: p_dupfd is now known as l_dupfd and lives in struct lwp 2006-02-24 12:54:48 +00:00
rpaulo
08d09ff6c5 In sysctl_iflist() don't assume TAILQ_FIRST() will never be NULL.
Prevents crash found by Uwe and fix confirmed working by Jeff Ito (all
on tech-net).
2006-02-21 22:01:17 +00:00
perry
fbae48b901 Change "inline" back to "__inline" in .h files -- C99 is still too
new, and some apps compile things in C89 mode. C89 keywords stay.

As per core@.
2006-02-16 20:17:12 +00:00
bjh21
24b46da494 Make Econet code compile again. 2006-02-12 10:32:46 +00:00
wiz
9037345f22 Add a /* CONSTCOND */ for lint. 2006-02-07 20:10:48 +00:00
rpaulo
be72809857 Add preliminary/not tested support for IPv6. 2006-02-05 16:44:55 +00:00
cube
97047d48dd Properly dispose of cfdata memory when unloading the tap(4) LKM. 2006-02-01 05:51:58 +00:00
martin
0975a4b449 Make sure error messages (received from the access concentrator) are
zero terminated.
2006-01-31 23:50:15 +00:00
rpaulo
219ca2b318 Replace the comment that came from if_loop.c many years ago by
something that matches reality.
2006-01-31 22:27:15 +00:00
christos
f0551e03f4 PR/32676: Yves-Emmanuel JUTARD: faithprefix should only be defined with INET6 2006-01-31 17:15:20 +00:00
jdolecek
8ce024013a fix VLAN_ATTACHED() macro, it was always true due to condition bug
Fixes PR kern/32645 by Pavel Cahyna
2006-01-29 09:57:59 +00:00
rpaulo
e4a54dec0a Reflect reality (ktrace-lwp). 2006-01-28 01:49:58 +00:00
rpaulo
78678b130a Better support of IPv6 scoped addresses.
- most of the kernel code will not care about the actual encoding of
  scope zone IDs and won't touch "s6_addr16[1]" directly.
- similarly, most of the kernel code will not care about link-local
  scoped addresses as a special case.
- scope boundary check will be stricter.  For example, the current
  *BSD code allows a packet with src=::1 and dst=(some global IPv6
  address) to be sent outside of the node, if the application do:
    s = socket(AF_INET6);
    bind(s, "::1");
    sendto(s, some_global_IPv6_addr);
  This is clearly wrong, since ::1 is only meaningful within a single
  node, but the current implementation of the *BSD kernel cannot
  reject this attempt.
- and, while there, don't try to remove the ff02::/32 interface route
  entry in in6_ifdetach() as it's already gone.

This also includes some level of support for the standard source
address selection algorithm defined in RFC3484, which will be
completed on in the future.

From the KAME project via JINMEI Tatuya.
Approved by core@.
2006-01-21 00:15:35 +00:00
christos
4dde6a6d1b Make sure that breq is also cleared (from Xin LI) 2006-01-17 13:23:02 +00:00
christos
a94f0325fe zlib 1.2.3 changed the include protection variable names; adjust. 2006-01-14 20:17:12 +00:00
christos
81a0859118 prepare for userland compilation. 2006-01-14 18:58:05 +00:00
christos
1482d7ce1c Make sure we initialize all structs to 0; from Xin LI 2006-01-09 13:04:38 +00:00
perry
23917a5e48 #ifdef _KERNEL some function prototypes and an inline function
definition.

XXX It may be that this file needs more namespace cleaning (or the
files that include it, like if.h, might need it.)
2006-01-04 21:10:09 +00:00
yamt
95b350ea52 ppp_dequeue: fix a mbuf leak/packet loss introduced by rev.1.104. 2006-01-02 01:42:36 +00:00
christos
fffd2322a9 make this compile with no INET option 2005-12-28 09:08:20 +00:00
christos
cab48fd783 PR/5901: Felix A. Croes: PPP fast queue blocks traffic at normal priority.
Applied fix, similar to the one suggested in the PR. We use a counter to
limit the number of consecutive packets accepted from the fast queue. This
number can be set via ioctl, but this has not been implemented. Since there
are only 2 queues other proposed solutions such as ALTQ are overkill and
they have not been implemented in the past 7 years. Now LCP echos can be
used to detect that the line is up.
2005-12-28 08:13:24 +00:00
rpaulo
7eace3f40d Kill BPF_KERN_FILTER. Seems like it died with the new pppd import.
No replies from tech-kern@, but who introduced this option 8 years ago
(Christos) said it's ok to remove it.
2005-12-26 15:45:48 +00:00
perry
0f0296d88a Remove leading __ from __(const|inline|signed|volatile) -- it is obsolete. 2005-12-24 20:45:08 +00:00
rpaulo
08ac963d6f Correct typo in comments. 2005-12-14 22:46:52 +00:00
rpaulo
43bb9c133c Fix previous commit: ABS, IND and MSH are valid codes. 2005-12-14 20:33:46 +00:00
christos
49743c0da1 argument type conflict. 2005-12-14 00:28:08 +00:00
rpaulo
7174b22dd3 In bpf_validate(), get rid of bpf_maxbufsize test as there are other
clients of bpf_filter(), like if_ppp, that are not limited by
bpf_maxbufsize. The same check is done at the run time, so there is no
problem created.

Noticed by Guy Harris in private email.
2005-12-13 23:53:49 +00:00
thorpej
63eac52bac ANSI function decls and application of static. 2005-12-11 23:05:24 +00:00
christos
b41db3f2c3 Protect zlib.h with the same symbol as userland.
XXX: We should either not install this, or have only one copy.
2005-12-11 19:15:38 +00:00
christos
95e1ffb156 merge ktrace-lwp. 2005-12-11 12:16:03 +00:00
elad
976bf6cfdd Multiple inclusion protection, as suggested by christos@ on tech-kern@
few days ago.
2005-12-10 23:21:38 +00:00
christos
a8ffde9f61 make the ALTQ macros statement-line, by wrapping them in do {} while (0) 2005-12-06 02:56:25 +00:00
rpaulo
5eb6226d2b Oops, the previous revision had a wrong pre-processor #if clause. 2005-12-05 22:38:40 +00:00
rpaulo
7246666eed Make the bpf_maxbufsize a constant when bpfilter pseudo-device is not
present in the kernel config, thus fixing the build. Problem reported
by Havard Eidnes. Solution proposed by Christos, thanks.
2005-12-05 21:46:00 +00:00
rpaulo
fe7fedbe4c PR 32198: bpf_validate() needs to do more checks, from Otto Moerbeek/OpenBSD
via Guy Harris.
Problems like out-of-bounds read/write in filter machine operations
were fixed.
2005-11-30 23:14:38 +00:00
rpaulo
5a418776bf More KNF. C99 uintXX_t types. 2005-11-30 22:40:59 +00:00
rpaulo
940d1d8665 Replace u_intXX_t by their C99 counterparts. 2005-11-30 16:47:58 +00:00
rpaulo
33ea9f9f29 Fix typo in comment found by Guy Harris (PR 32198). 2005-11-30 12:54:42 +00:00
rpaulo
6d95f3bed8 KNF. ANSYfy. de-P(). 2005-11-30 12:52:23 +00:00
thorpej
7d00e1aff3 Overhaul how TTY line disciplines are handled:
- Replace references to linesw[0] with a ttyldisc_default() function
  that returns the default ("termios") line discipline.
- The linesw[] array is gone, replaced by a linked list.
- ttyldisc_add() and ttyldisc_remove() have been replaced by
  ttyldisc_attach() and ttyldisc_detach().
- Things that provide line disciplines are now responsible for
  registering those disciplines with the system.  The linesw
  structures are no longer declared in tty_conf.c
- Line disciplines are now refcounted; a lookup causes a reference to
  be held.  ttyldisc_release() releases the reference.  Attempts to
  detach an in-use line discipline result in EBUSY.
- Fix function signature lossage in if_sl.c, if_strip.c, and tty_tb.c
  that was masked by the old tty_conf.c
- tty_init() is no longer necessary; delete it and its call from main().
2005-11-27 05:35:52 +00:00
yamt
11aa556068 fix a typo in a comment. 2005-11-23 09:43:37 +00:00
yamt
9a01903be3 correct SADB_X_MIGRATE. pointed by Francis Dupont. 2005-10-29 15:05:13 +00:00
yamt
78e012015b add some #if 0'ed out SADB_X_* definitions found in kame tree
to avoid conflicting numbers.
2005-10-25 06:12:49 +00:00
christos
86497ecc9f It is now ``later''. Follow cgd's 1993 wish and move struct osockaddr
and struct omsghdr to a compat header.
2005-09-24 15:52:03 +00:00
rpaulo
dc5a3ff210 Use ANSI function declarations everywhere and a consistent indentation on
them.
2005-09-05 18:32:24 +00:00
martin
ebe6c135ee Fix bogus uninitialized variable warning ifdef PPPOE_SERVER.
Noticed by Marcin Jessa on current-users.
2005-08-31 00:00:26 +00:00
yamt
2e85eff671 - introduce M_MOVE_PKTHDR and use it where appropriate.
intended to be mostly API compatible with openbsd/freebsd.
- remove a glue #define in netipsec/ipsec_osdep.h.
2005-08-18 00:30:58 +00:00
yamt
03661e8f33 include callout.h explicitly. 2005-08-12 10:02:31 +00:00
kiyohara
bbebe4a265 Using DLT_APPLE_IP_OVER_IEEE1394. 2005-08-06 14:09:54 +00:00
rpaulo
2fcfc4c276 Implemented the kernel part of BPF statistics and BPF peers, net.bpf.stats
and net.bpf.peers sysctls respectively.

A new structure was added to describe the external (user viewable)
representation of a BPF file; a new entry was added to the bpf_d
structure to store the PID of the calling process; a simple_lock was added
to protect the insert/removal from the net.bpf.peers sysctl handler.

This idea came from FreeBSD (Christian S.J. Peron) but while it is
implemented with sysctl's it differs a bit.

Reviewed by: christos@ and atatat@ (who gave me the tip for the net.bpf.peers
sysctl helper function).
2005-08-04 19:30:47 +00:00
dyoung
1d1035405a Add members ifr_buf, ifr_buflen to ifreq for specifying the location
and size of a userland buffer.  The kernel shall not copyout more
than ifr_buflen bytes to ifr_buf.  For future ioctls that use
ifr_buf and ifr_buflen instead of ifr_data, the kernel can return
a larger struct in the future than when the ioctl is introduced,
without breaking ABI compatibility, provided that the size, order,
and semantics of the fields at the front of the struct does not
change.
2005-07-27 06:36:15 +00:00
gdt
b0239c745e Add PR_PURGEIF flag for protocols to indicate that the protocol might
store a struct ifnet *, and define it for udp/tcp/rawip for INET and
INET6.  When deleting a struct ifnet, invoke PRU_PURGEIF on all
protocols marked with PR_PURGEIF.  Closes PR kern/29580 (mine).
2005-07-19 12:58:24 +00:00
kiyohara
c1a84a4d12 ieee1394 import from FreeBSD. 2005-07-11 15:29:05 +00:00
seanb
262c8cc8a7 - Rearranged layout of struct bridge_iflist slightly to
make members naturally aligned.
- This saves 8 bytes worth of pad.
2005-06-28 20:09:44 +00:00
christos
853504efa1 Add some casts to appease lint 2005-06-28 15:33:27 +00:00
christos
bbfb3b7295 Names could be const. 2005-06-26 21:18:00 +00:00
christos
305da7ae35 de-lint some pointer casts. 2005-06-26 20:55:44 +00:00
mlelstv
d23f1d6e16 expire cached route. Fixes PR 22792. 2005-06-26 10:39:21 +00:00
peter
26b3362b67 Missing m_freem() in bpf_write. PR/29138. 2005-06-22 10:36:16 +00:00
dyoung
9063402978 Resolve conflicts in importation of 18-May-2005 ath(4) / net80211(9)
from FreeBSD.  Introduce compatibility shims (sys/dev/ic/ath_netbsd.[ch],
sys/net80211/ieee80211_netbsd.[ch]).  Update drivers (an, atu, atw,
awi, ipw, iwi, rtw, wi) for the new net80211(9) API.
2005-06-22 06:14:51 +00:00
atatat
df13e3579e Change the rest of the sysctl subsystem to use const consistently.
The __UNCONST macro is now used only where necessary and the RW macros
are gone.  Most of the changes here are consumers of the
sysctl_createv(9) interface that now takes a pair of const pointers
which used not to be.
2005-06-20 02:49:18 +00:00
peter
6cfd105f3a Use 'pattr' consistently in the IFQ_* macros. 2005-06-19 11:34:42 +00:00
christos
137b9bc57b 30393/Miles Nordin: PF/ALTQ does not work on ppp(4) interfaces
This is because the mbuf chain created did not have a header.
2005-06-11 22:26:42 +00:00
bouyer
79824021ea As ether_input() is always called at IPL_NET, there is no need to
protect the IF_* operations with splnet()/splx().
2005-06-10 11:11:38 +00:00
bouyer
5ce57a0010 call (ifp->if_input) at splnet(). ifp->if_input points to ether_input()
which doesn't raise the IPL itself in all cases.
Should also fix PR 29546 (the pkgsrc kernel module needs to be updated).
2005-06-10 10:28:17 +00:00
atatat
420d91208b Properly fix the constipated lossage wrt -Wcast-qual and the sysctl
code.  I know it's not the prettiest code, but it seems to work rather
well in spite of itself.
2005-06-09 02:19:59 +00:00
martin
71d020f371 Since we decided "const struct mbuf *" would not do the right thing (tm),
remove ~all const from mbuf pointers.
2005-06-06 06:06:50 +00:00
he
eae41d3752 Fix -Wcast-qual warning. 2005-06-05 22:31:40 +00:00
tron
c86b2622dd Change the first argument of the encapsulation check function from
"const struct mbuf *" to "struct mbuf *". Without this change the
actual implementation cannot even use m_copydata() on the mbuf chain
which is broken.
2005-06-02 15:21:35 +00:00
tron
41dcb3a310 Remove type casts and lint directives which are now longer necessary
because the first argument of m_copydata() is "const struct mbuf *" now.
2005-06-02 10:54:58 +00:00
jdc
9e2e82eb16 Fix this properly by renaming the conflicting variables. 2005-06-01 19:45:34 +00:00
jdc
ee08c5a2f0 Remove extraneous definition of struct llc (found by shadow warning). 2005-06-01 19:38:13 +00:00
yamt
a45d9db267 -Wno-shadow for some pf files.
IMO there is no point to fix them in our tree.
2005-06-01 14:15:46 +00:00
yamt
9019b2a550 make lacp_timer_funcs static. 2005-06-01 13:34:48 +00:00
yamt
88b65022bb constify. 2005-06-01 11:25:01 +00:00
christos
6c547ba0c6 change casts back to char * and explain why. 2005-05-31 01:47:24 +00:00
christos
f954cf7e94 Add a CLLADDR macro which is the same as LLADDR only const. Make both macros
return void pointers.
2005-05-30 22:11:47 +00:00
christos
9a118943bd bcopy -> memcpy
bcmp -> memcmp
and remove casts.
2005-05-30 04:17:59 +00:00
christos
333e176687 - sprinkle const
- remove unneeded casts
- use more mem*() instead of b*() funcs.
2005-05-29 21:22:52 +00:00
christos
48aa099255 PR/30285: Mile Nordin: incorrect permission check joining/leaving multicast
groups.
2005-05-20 16:23:05 +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
matt
56bbae8802 rate limit the printfs for oversized ethernet packets. 2005-05-02 21:20:27 +00:00
yamt
330cc0a11e split IFCAP_CSUM_xxx to IFCAP_CSUM_xxx_Rx and IFCAP_CSUM_xxx_Tx. 2005-05-02 15:34:31 +00:00
martin
3cde73812d Fix typo, from C. Plasschaert in PR kern/30069. 2005-04-27 07:48:02 +00:00
martin
691a804898 As noted by Christophe Plasschaert on tech-kern, g/c never used
idletimeout configuration ioctls.
2005-04-27 07:45:52 +00:00
christos
72ad9c4bc4 no point in assigning to ifq twice. 2005-03-31 21:19:35 +00:00
christos
200dc55908 fix compiling with -DALTQ 2005-03-31 21:14:52 +00:00
explorer
fcc0a1f852 Fix error with ifq not being set before use. Explicitly set it to NULL just before it may be set to the fastq, since if this becomes a loop (and in one case already is) this will always work. ifq_enqueue2() is designed to handle this case. 2005-03-31 17:07:39 +00:00
christos
d7ec95d370 factor out the interface queueing code into two functions. One used by
the non point-to-point interfaces that has one queue, and one used by
the point to point interfaces that has two queues. No functional changes.
XXX: The ALTQ stuff makes the code ugly.
XXX: More cleanup to come
2005-03-31 15:48:13 +00:00
is
a0c9bc9616 Add IPv6 over GRE (contributed by Gert Doering in PR 29150). 2005-03-30 16:34:54 +00:00
cube
bc5ea6f651 Set bit 0x2 of the first byte of the generated MAC address, to indicate it
is a locally administered address.  Pointed out by Ignatios Souvatzis.
2005-03-24 22:20:35 +00:00
agc
dd93d335d3 Fix the spelling of Bill Studenmund's name - noticed from the licences
on the Sony PSP as found in:

	http://www.scei.co.jp/psp-license/pspnet.txt
2005-03-20 07:47:29 +00:00
thorpej
6f219f734d Define IFFBITS and IFCAPBITS here in <net/if.h>. Taken from ifconfig. 2005-03-20 02:51:33 +00:00
yamt
5240b887db add agr(4), a pseudo network device driver for link aggregation. 2005-03-18 11:11:50 +00:00
kleink
513c158344 A couple of <sys/select.h>-related changes:
* Factor out struct selinfo and its header dependencies into its own header,
  <sys/selinfo.h>, to avoid namespace pollution.
* Include <sys/selinfo.h> in user-visible headers where necessary.
2005-03-17 20:39:17 +00:00
yamt
0c03ee5404 vlan_input: add a missing EVL_VLANOFTAG in the case of hw offloading. 2005-03-17 10:33:28 +00:00
tron
e561507a1f Add support for changing the MTU to stf(4). 2005-03-11 13:28:25 +00:00
matt
4acc1b7c25 Add beginning of TCP Segment Offload support. 2005-03-06 00:08:30 +00:00
jonathan
fba9c4c1b9 Increase default value for IFQ_MAXLEN from 50 to 256.
The value of 50 dates back to 4.3BSD and 10Mbit interfaces.
Gigabit interfaces are 100x faster, and by observation, when heavy
interrupt mitigation is enabled, gigabit interfaces can enqueue 40 packets
or more in a single hardware interrupt.  So IFQ_MAXLEN of 256 is adequate
for at least four gigabit interfaces.

Increasing IFQ_MAXLEN discussed and approved, in priniciple, circa Apr 2004.
The value is sysctl'able, so the default is no longer so critical,
but (imho) best to tune for high-performane systems by default.
2005-02-28 18:44:45 +00:00
perry
f07677dd81 nuke trailing whitespace 2005-02-26 22:45:09 +00:00
christos
24db4c5a14 Re-arrange code slightly to avoid code duplication and allow to bail
out faster without doing de-capsulation work. From FreeBSD.
2005-02-21 21:37:22 +00:00
jdolecek
4c60443769 expose the new VLAN macros only within kernel 2005-02-20 15:41:48 +00:00
jdolecek
8b0dfe8d52 add several VLAN tagging related macros, to reduce code duplication
in various ethernet adapter drivers and improve code consistency; mostly
FreeBSD-compatible, with exception of VLAN_OUTPUT_TAG(), which takes
(struct ethercom *) rather than (struct ifnet *) as first parameter
since the information cannot be extracted via (struct ifnet)

also add VLAN_ATTACHED(ec), which tests if any VLAN is attached to the
ethernet device
2005-02-20 15:29:03 +00:00
cube
55dc3e11f4 Add a couple of protocols (from ppp-2.4.3). 2005-02-20 10:23:13 +00:00
cube
a8a27dce29 Add MPPE definitions (from ppp-2.4.3). 2005-02-20 10:22:26 +00:00
christos
be3704c73f pass the flag to fdclone. 2005-02-12 23:14:03 +00:00
manu
5c217c1a67 Add support for IPsec Network Address Translator traversal (NAT-T), as
described by RFC 3947 and 3948.
2005-02-12 12:31:07 +00:00
he
2a8a7aabd7 Fix "unused local variable" warning/error if compiling without
bridge support by making variable declaration conditional.  Found
while compiling for shark.
2005-02-01 12:13:51 +00:00
kim
c9f56c04dc Add RFC 3378 EtherIP support, ported from OpenBSD to NetBSD by
Hans Rosenfeld (rosenfeld at grumpf.hope-2000.org)

This change makes it possible to add gif interfaces to bridges, which
will then send and receive IP protocol 97 packets. Packets are Ethernet
frames with an EtherIP header prepended.
2005-01-31 23:49:36 +00:00
matt
53fdea69cb Switch to using ifa for ifaddr's instead of ia (which are traditionally
used for in_ifaddr's) which could lead to confusion.
2005-01-25 17:22:08 +00:00
tron
ed9b5b2073 Fix cut and paste error in last commit. 2005-01-25 11:20:37 +00:00
ragge
9bb19bb2e0 Do not cast simple_lock() to (void). It may be a do { } while() macro,
and then compilation fails.  Found by Håvard Eidnes.
2005-01-25 09:57:15 +00:00
matt
027c11539b Add IFNET_FOREACH and IFADDR_FOREACH macros and start using them. 2005-01-24 21:25:09 +00:00
enami
f1b6d58e81 To fix bad pointer dereference on start up when gif is used,
- Allow rn_init() to be called multiple times, but do nothing except the
  first call.
- Include opt_inet.h so that #ifdef INET works.
- Call rn_init() from encap_init() explicitly rather than depending on the
  order of initialization.
2005-01-24 04:46:49 +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
cube
d76d637295 s/PF_LINK/AF_LINK/ because that way it makes sense. 2005-01-22 07:33:56 +00:00
martin
5e83f0d7e8 Remove deleted interfaces from the instance list (inspired by an OpenBSD
change). While there, fix a comment.
2005-01-19 15:05:55 +00:00
cube
755855a1f9 Make this LKM-friendly by using _KERNEL_OPT and having a prototype for the
sysctl setup function.
2005-01-19 10:18:40 +00:00
itojun
5377005da8 ESP AESCTR got an official protocol number
http://www.iana.org/assignments/isakmp-registry
2005-01-14 04:11:55 +00:00
yamt
d502f705e1 ifioctl: don't use super user priviledge unless it's needed. 2005-01-09 12:18:46 +00:00
cube
da24800d8c Install net/if_tap.h. 2005-01-08 22:28:51 +00:00
cube
0615d0207e Addition of tap(4).
NAME
     tap - virtual Ethernet device

SYNOPSIS
     pseudo-device tap

DESCRIPTION
     The tap driver allows the creation and use of virtual Ethernet devices.
     Those interfaces appear just as any real Ethernet NIC to the kernel, but
     can also be accessed by userland through a character device node in order
     to read frames being sent by the system or to inject frames.

     In that respect it is very similar to what tun(4) provides, but the added
     Ethernet layer allows easy integration with machine emulators or virtual
     Ethernet networks through the use of bridge(4) with tunneling.

``Qui tacet consentire videtur.''
2005-01-08 22:27:54 +00:00
yamt
6292485301 constify broadcastaddr. 2005-01-08 03:18:18 +00:00
yamt
d06c4aee84 remove an unused member, enm_ec from ether_multi. 2005-01-08 03:13:09 +00:00
yamt
f276045e22 add ETHERTYPE_SLOWPROTOCOLS. (0x8809) 2005-01-07 12:37:55 +00:00
reinoud
486e5e2819 Fixup of bad patch made by me; the #ifdef ought to be also including ISO
rather than being removed. Also fixed a small comment about the scope of
#if's.

This code is a but ugly IMHO but as long as we dont have to change it ....
2004-12-30 15:38:50 +00:00
reinoud
533a9f0186 Remove conditional around label. Its allways used in the code and thus not
explicitly only for the protocols indicated by the #if

Allthough its unlikely a kernel will be build without NET_INET, it will
fail compilation here when NET_INET is not defined.
2004-12-29 17:57:19 +00:00
itojun
b97cc48910 whitespace 2004-12-22 05:11:24 +00:00
dyoung
a8699ab9a4 As pointed out by Greg Troxel, ifmedia_entrys were allocated with
malloc_type M_IFADDR and freed with malloc_type M_DEVBUF.  This
causes a panic(9) in DIAGNOSTIC kernels.  Add malloc_type M_IFMEDIA
and use it for both malloc'ing and free'ing ifmedia_entrys.
2004-12-08 20:37:43 +00:00
martin
0a72984c77 Factor out softc cleanup after loss of session into pppoe_clear_softc.
Use this when loosing the ethernet interface (when it deataches).
Fixes PR kern/28375.
2004-12-08 07:43:29 +00:00
itojun
bc4b33d8be reqid (for unique policy) is u_int16_t quantity. from markus@openbsd 2004-12-06 08:05:26 +00:00
christos
64573a67d7 Sprinkle #ifdef INET to make a GENERIC kernel compile with INET undefined. 2004-12-06 02:59:23 +00:00
christos
6d413e70c4 pasto: simple_lock -> simple_unlock. 2004-12-05 15:03:13 +00:00
peter
42fc7edb33 Use ANSI function decls, change a few 0 to NULL. 2004-12-05 15:02:30 +00:00
peter
cf47c76c1b Don't forget to call bpfdetach in the clone destroy function.
While here, add a missing static and change some spaces to tabs.
2004-12-05 15:00:47 +00:00
he
8194ddc3a5 Fix what must have been an omission: missing brace and a leftover
use of `i', which is no longer defined.  Fixes build problem for ports
not defining __HAVE_GENERIC_SOFT_INTERRUPTS.
2004-12-05 14:56:50 +00:00
he
fdd8e7a3e5 Fix an obvious typo: scf -> sc. Discovered while compiling for x68k. 2004-12-05 13:32:03 +00:00
christos
d2773f76b5 fix compilation issues. my kernel did not have strip... 2004-12-05 06:53:33 +00:00
christos
f08ea58021 clonify strip and sl. 2004-12-05 05:43:04 +00:00
christos
7a05522334 void in arg prototype. 2004-12-05 05:42:19 +00:00
christos
f11e795a0f Make ppp a cloning device. Based on the work of Quentin Garnier. 2004-12-05 04:15:16 +00:00
peter
e3ceb08f8d Remove redundant conditional; NTUN is always 1 when this file is compiled.
Also remove tun.h include, since it's no longer needed.
2004-12-04 23:22:58 +00:00
peter
4f51481269 Fix a typo in Bill Studenmund's name. 2004-12-04 23:03:33 +00:00
peter
b9c49ebff1 Change ifc_destroy to return an int instead of void, so that it
can pass back errors to ifconfig.
2004-12-04 18:31:43 +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
christos
0146482549 Clonify bpf. I am not changing /dev/bpfX -> /dev/bpf until all userland
programs have been fixed.
2004-11-30 04:28:43 +00:00
skrll
4979a4d3be Re-order the inclusion of opt_pfil_hooks so PFIL_HOOKS gets set properly. 2004-11-28 17:16:10 +00:00
martin
e07d3f82e7 Add a pfil(9) hook to get notified when interfaces detach.
When the ethernet interface of a pppoe pseudo-interface detaches, remove
the association and mark the pppoe interface down.
This should fix PR kern/28375.
2004-11-28 11:44:36 +00:00
wiz
95f9af9926 Apply patch from PR 23990 by Greg Troxel (s/AF_DLI/AF_LINK/ in a comment):
<net/if_dl.h> defines struct sockaddr_dl.  On the line defining member
"sdl_family" (which overlaps "sa_family" in struct sockaddr), the
comment says AF_DLI.

But,
1) AF_DLI is said to be a DEC Direct data link interface
   (sys/socket.h)
2) The kernel actually sends sockaddr_dl structs with AF_LINK.
2004-11-20 00:53:13 +00:00
dsl
de3f63a902 Add prototypes for functions that convert media to/from strings.
In libutil/if_media.c (moved from ifconfig.c so that they can be shared
in crunched binaries)
2004-11-11 20:34:30 +00:00
christos
fbbeedbe63 PR/27286: Tom Ivar Helbekkmo: Allow RTM_GET to work with RTA_IFA|RTA_IFP set.
Quiting Tom: The problem is the special case of an RTM_GET message
that wants interface information included in the response, and
therefore include the RTA_IFA or RTA_IFP (or both) flags in the
bitmask that says what addresses are supplied in the message.  For
the RTM_GET message, it doesn't make sense to supply addresses
other than the one you're asking about, so those two other bits
are, in that specific case, overloaded with this meaning.

There is code in sys/net/rtsock.c to handle the case, but at some
time, extra sanity checking of the received message was added, that
failed to take this possibility into account.

The patch, is needed for the Asterisk software PBX to work properly
when it has multiple interfaces active: it needs to ask the kernel
for the IP address of the interface that will be used to communicate
with a given host.
2004-10-23 19:13:22 +00:00
dsl
43dde40d82 Put spaces either side of '|' for clarity ('|' looks too much like 'I' or 'l') 2004-10-16 11:11:04 +00:00
tron
8982fe0346 Backout last two revision:
1.) There is objection against this change by at least one developer.
2.) These changes cause repeatable system lockups and crashes for
    at least four people.
2004-10-07 20:06:58 +00:00
bad
2a256a96ac Interfaces that do checksum offloading indicate the checksum status of
received packets in csum_flags in the packet header.  Packets that are
forwarded over the bridge need to have csum_flags cleared before being
put on the output queue.  Do so in bridge_enqueue().

Discussed with Jason Thorpe.

Fixes PR kern/27007 and the first part of PR kern/21831.
2004-10-06 10:01:00 +00:00
itojun
6c66b599bb use ifunit() 2004-10-06 03:49:03 +00:00
itojun
dd505f6f10 call dom_ifattach[] at consistent state. before this commit, dom_ifattach[]
was called after interface attach is completely done for non-cloning interface,
and from within if_attach() for cloning interface (which was wrong).
2004-10-06 02:44:32 +00:00
christos
557877d024 Only enable BRIDGE_IPF code if PFIL_HOOKS is enabled. 2004-10-05 03:36:45 +00:00
christos
a9703830cd Fix problem in previous commit; we need to create a new sockaddr. 2004-09-30 00:14:05 +00:00
christos
efff5f0097 PR/22849: Sean Boudreau: rtrequest() w/ RTM_DELETE not honouring netmask
as it does w/ RTM_ADD.
2004-09-29 21:19:33 +00:00
dyoung
e2727a9d0b Add several new DLTs. From tcpdump.org. 2004-09-28 03:34:21 +00:00
yamt
0a9623de9c call PFIL_IFADDR hooks where appropriate. 2004-09-18 16:04:41 +00:00
tron
139c8b8dfc Pass correct "mbuf" pointer to BPF framework. 2004-08-20 07:46:21 +00:00
enami
9e4955fd5e Fix compilation error introduced by prevoius commit. 2004-08-20 00:37:07 +00:00
christos
0f7d471853 Factor out the hand-crafting of mbufs from the interface files. Reviewed by
gimpy. XXX: I could have used bpf_mtap2 on some of the new functions, but I
chose not to, because I just wanted to do what amounts to a code move.
2004-08-19 20:58:23 +00:00
christos
396c380971 - ansify
- remove unnecessary casts
- change caddr_t to void *
- no functional change.
2004-08-19 18:33:24 +00:00
itojun
682ddb0274 initialize max_keylen for ip_encap.c earlier 2004-08-17 07:05:34 +00:00
enami
e3ad2a7b68 Don't refuse to attach an interface even if it is down so that one can
capture the very first packet when an interface is up.
2004-08-05 03:58:58 +00:00
yamt
0370fc7128 - rename PFIL_NEWIF to PFIL_IFNET, and handle interface detach events
as well.
- use it for pf(4).

mostly from Peter Postma.  PR/26403.
2004-07-27 12:22:59 +00:00
mycroft
7f1170d9a9 Add ETHERTYPE_PAE. 2004-07-23 05:13:15 +00:00
yamt
7fcbdfb1fe pfil_run_hooks: don't dereference 'mp' unless it's a pointer. 2004-07-18 11:36:04 +00:00
mycroft
7cd90d66b7 If the parent interface is not IFF_RUNNING, do not call its start function.
This prevent a variety of fun panics, and therefore fixes PR 12932, PR 17561,
and PR 18376...

XXX
...however this is most definitely a hack.  The real problem here is that there
is no callback to notify a "client" interface like vlan when a "parent"
interface's status changes, and therefore the vlan interface is always
IFF_RUNNING.  This allows packets to be queued on vlan interface at any time.
We can't simply leave the packets on the vlan interface, either, because there
is no callback to dequeue them.  And last, since it's always IFF_RUNNING, if
we just *toss* the packets, we lose gratuitous ARPs and DAD packets.

"This needs work," but at least it no longer bleeds.
2004-07-08 19:09:12 +00:00
dyoung
225bd76ac3 I changed pppoutput to use M_PREPEND. pppoutput was duplicating
the functionality of M_PREPEND, but with a bug: m_pkthdr.len was
not updated in pppoutput as it is in M_PREPEND.

Also, replace the loop that measures the length of the mbuf chain
with a call to m_length.

This fixes a PR from an anonymous bug reporter.  Thank you, anonymous
bug reporter.  Thanks, Itojun, for bringing the anonymous bug report
to my attention.
2004-07-03 18:11:33 +00:00
jonathan
5249b5a2a5 Rename MBUFTRACE helper function m_claim() to m_claimm(),
for consistency with M_FREE() and m_freem().  Affected files:

sys/mbuf.h
kern/uipc_socket2.c
kern/uipc_mbuf.c
net/if_ethersubr.c
netatalk/ddp_input.c
nfs/nfs_socket.c
2004-06-24 04:15:50 +00:00
itojun
ffe2ca6827 fix "includes" for pfvar.h 2004-06-22 14:29:45 +00:00
itojun
a225f02f05 foundation for PF 2004-06-22 14:04:04 +00:00
itojun
047170b1cc prepare PF-related hooks. reviewed by matt, perry, christos 2004-06-22 12:50:41 +00:00