Commit Graph

42 Commits

Author SHA1 Message Date
martin a3248903e4 Backout previous, I'm on crack obviously. 2003-03-01 15:50:15 +00:00
martin b15e7fee31 Initialize sc to NULL, it could be used uninitialized otherwise when
searching for our sc by host unique tag.
2003-03-01 15:24:36 +00:00
aymeric 038e238665 when looking up a Host-Uniq tag, do not consider NULL as a valid
(struct pppoe_softc *). Although we do not generate such tags, other hosts
could and some actually do.
2003-03-01 15:10:13 +00:00
martin fd690f8523 PADT is always send with ethertype PPPOE_DISCOVERY, no matter if we
have reached session state or not.

Fixes PR kern/20203 by Shoichi Miyake.
2003-02-04 20:52:23 +00:00
thorpej 882dec6ba3 Test callout_pending(), not callout_active(), and eliminate now-unnecessary
callout_deactivate() calls.
2003-02-03 23:50:59 +00:00
martin 2e5336f7a8 Fix broken error handling in case M_PREPEND fails.
Noticed by Matthias Scheeler.
2003-01-07 20:02:10 +00:00
martin 501da0e586 In do not call pppoe_abort_connect if we fail to send the initial PADI
packet - there is nothing to abort.
In pppoe_abort_connect rearange state handling slightly to avoid calls
to the PPP LCP state machine get into an infinite recursion.

This should fix the symptoms of PR kern/19500, but does not touch the
real cause for the lossage described there.
2002-12-25 11:54:33 +00:00
martin adb5933cbb Apply patch from Todd Vierling in PR kern/17665:
remove a test that has been obsoleted by the authentication failure
counter - enter slow retry mode always, not only if we already transfered
data successfully (the test was designed to disable retries when the
initial authentication setting was not correct, the auth failure counter
does this job better).
2002-09-01 18:06:59 +00:00
martin ac83580ea9 Add an option PPPOE_TERM_UNKNOWN_SESSIONS to forcefully disconnect sessions
we don't know anything about with a PADT packet.

Use with care, this is pretty dangerous and will kill all userland PPPoE
implementations. Therefore it is not enabled by default nor added as
a commented out option to GENERIC kernels.

But it is highly usefull if you have a fixed IP, an ISP that does not use
LCP echo requests for link monitoring and you want to recover quickly after
a crash or otherwise ungracefull disconnect.
2002-09-01 17:21:40 +00:00
tron 56999645f0 Fix typo in a comment. 2002-08-25 19:21:47 +00:00
yamt a113bc6fa4 - free buf when unneeded.
- pass a consistent type to free(9).
2002-06-22 17:41:23 +00:00
yamt f6849cb26f fix loop condition.
(don't skip last tag)
2002-06-22 16:56:11 +00:00
itojun f16149934e avoid unneeded call to m_pullup 2002-06-22 11:46:16 +00:00
itojun 9f260b4865 do not require PPPoE control packet to be put into a single mbuf.
reviewed/tested by ymmt
2002-06-22 11:37:48 +00:00
itojun 32e2727406 more style 2002-06-22 05:59:27 +00:00
itojun 98171fbccc style 2002-06-22 05:54:14 +00:00
itojun a028d35cfd more KNF. warn about mbuf misuse (passing pointer outside of mbuf is dangerous) 2002-06-22 05:52:00 +00:00
itojun e94ae067d1 tabify. minor KNF 2002-06-22 05:33:42 +00:00
martin e4998611e9 Fix copyright notice. 2002-04-14 12:24:26 +00:00
martin b94047688f Avoid noise from the kernel if we have pseudo-device pppoe configured
but not used and a userland PPPoE pkg sends/receives PPPoE packets.
2002-03-04 15:15:05 +00:00
martin fe97d3f7c3 Clear M_BCAST and M_MCAST flags on mbufs before passing them down to the
ethernet driver - just in case it would look at them and do the wrong
thing.
2002-02-24 17:11:53 +00:00
martin e8aa4b2c2a Fix typo in comment. 2002-02-10 15:13:43 +00:00
martin 727264d2c9 Avoid any non-error output for normal operations, only print those
messages if the interface is set to debug.
2002-02-01 13:50:00 +00:00
martin 6446e841ec Tweak the slow-but-persistent connection reestablishment timeout, retrying
is not realy expensive - do it once every minute.

Prevent the MTU from being set bigger than what we can handle.
2002-02-01 13:40:16 +00:00
kleink c095bf1b6d As discussed with Aymeric, <machine/intr.h> is always required, so don't
make its inclusion conditional.
2002-01-14 16:10:33 +00:00
aymeric 8cae495fc0 Don't include machine/types.h (my fault in previous commit)
Reported by Klaus Klein.
2002-01-14 16:04:44 +00:00
aymeric 24443412ff include machine/types.h
include machine/intr.h if defined(__HAVE_GENERIC_SOFT_INTERRUPTS)
It makes this file compile for the amiga.
2002-01-13 10:57:57 +00:00
martin 99772f59c4 Move net/if_sppp.h to net/if_spppvar.h, create a new net/if_sppp.h
containing the userland visible thinks (i.e. ioctl definitions).

Remove all (both) old ioctls, as they had a brain dead API and made keeping
binary compatibility more or less impossible.

Replace by several new ioctls. While there, remove any arbitrary limits
(resulting from the old, broken ioctls) and allow any length of names
and passwords.
2002-01-04 12:21:24 +00:00
martin b2bd90b630 Cleanup softc more completely on "ifconfig down", but only if we are
currently in a connection reestablishement state.

The previouse (incomplete/unconditional) cleanup confused the state machine.
2001-12-16 23:53:31 +00:00
martin 729b826ecd Fix packet accounting (now netstat -i and netstat -ib show reasonable
values).

Implement a secondary connection-reestablishement mode, which is only
entered after (1) we have successfully transfered payload data over this
connection and (2) if initial retries did not reestablish a session.
In this mode we retry (infrequently) forever, until adminstrator stops
us (by "ifconfig ppppoe0 down"). XXX - need to display this mode in
pppoectl.

It is now possible to pull the DSL modems plug for say 15 minutes, plug
it back in again and just wait. The connection will be reestablished within
three minutes.
2001-12-16 11:40:52 +00:00
martin 7801c694b0 Enable additional error messages for the discovery phase, clarify some
others. Change one timeout slightly - we need to make all others user
settable.
2001-12-15 20:43:31 +00:00
martin 8b3d9b9497 Enable active LCP keepalive handling in the PPP layer, the PPPoE layer
itself has no means to detect broken connections.
2001-12-10 23:23:24 +00:00
martin 0099682916 Now that everything works without LINK1 set, do not set it by default.
While here, remove an unnecessary splnet()/splx() pair.
2001-12-10 00:24:12 +00:00
martin 6e766675c6 Fail early when trying to identify a pppoe interface softc (from a
HOST UNIQUE token) and our list of interfaces is empty. Without this
test an unitinalized pointer may be dereferenced.
2001-12-01 18:25:23 +00:00
lukem 64a432d965 remove unnecessary #if NFOO > 0 .... #endif wrappers 2001-11-13 00:49:35 +00:00
lukem 34d65a3414 add RCSIDs 2001-11-12 23:49:33 +00:00
martin d1f0e4f6e4 Don't call if_alloc_sadl when creating the pppoe interface, it's called
from sppp_attach.
When destroying the interface, call sppp_detach for proper cleanup.
This avoids a crash from the slow timeout handler for no longer existing
interfaces (spotted by Rémi Zara).
2001-10-28 09:48:20 +00:00
martin 308d03266a Make this interface cloning. 2001-09-04 20:41:32 +00:00
martin 74f0920eda Take into account the two byte PPP protocol discrimator following the PPPoE
header when calculating the MTU. Ooops...

Thanks to Mario Kemper for noting this.
2001-06-24 20:35:50 +00:00
martin 91a63a0595 Protect interface queue manipulations by splnet(). Splsoftnet() is not
enough.
2001-06-18 12:32:47 +00:00
itojun 4d51fe368b change the meaning of ifnet.if_lastchange to meet RFC1573 ifLastChange.
follows BSD/OS practice and ucd-snmp code (FreeBSD does it for specific
interfaces only).

was: if_lastchange get updated on every packet transmission/receipt.
now: if_lastchange get updated when IFF_UP is changed.
2001-06-14 05:44:23 +00:00
martin b5b75a7d19 Add an in-kernel PPPoE (ppp over ethernet, RFC 2516) implementation,
based on the existing net/if_spppsubr.c stuff.

While there are completely userland (bpf based) implementations available,
those have a vastly larger per packet overhead thus causing major CPU
overhead and higher latency. On an i386 base router, running a 486DX at 50MHz
my line (768kBit/s downstream) was limited to something (varying) between 10
and 20 kByte/s effective download rate. With this implementation I get full
bandwidth (~85kByte/s).

This is client side only. Arguably the right way to add full PPPoE support
(including server side) would be a variation of the ppp line discipline and
appropriate modifications to pppd. I promise every help I can give to anyone
doing that - but I needed this realy fast. Besids, on low memory NAT boxes
with typically a single PPPoE connection, this implementation is more
lightweight than a pppd based one, which nicely fits my needs.
2001-04-29 09:50:36 +00:00