summaryrefslogtreecommitdiffstats
path: root/sys/net/if_spppsubr.c
Commit message (Collapse)AuthorAgeFilesLines
* Fix a misplaced break statement within a switch that accidentally madejoerg2002-05-101-1/+1
| | | | | | | | | | it into an "#ifdef INET6" block. This caused a (harmless but annoying) EINVAL return value to be sent even though the operation completed successfully. PR: kern/37786 Submitted by: Ari Suutari <ari.suutari@syncrontech.com>,David Malone <dwmalone@maths.tcd.ie> MFC after: 1 day
* "pointers are not permitted as case values", so force the macros to ints.obrien2002-05-011-2/+2
|
* Change callers of mtx_init() to pass in an appropriate lock type name. Injhb2002-04-041-2/+2
| | | | | | | most cases NULL is passed, but in some cases such as network driver locks (which use the MTX_NETWORK_LOCK macro) and UMA zone locks, a name is used. Tested on: i386, alpha, sparc64
* Implement an option to administratively disable the negotiation ofjoerg2001-12-301-7/+50
| | | | | | | | | | | | | | | | | IPv6 on an sppp interface. In an IPv6-enabled kernel, every IPv6 interface automatically gets an IPv6 address assigned (and IPv6 multicast packets sent at initialization time). For sppp links where we know our remote peer wouldn't support IPv6 at all, there's no point in attempting to negotiate IPV6CP (or to even dial out for an IPv6 packet at all for dial-on-demand interfaces). I wish there were a more generic way to administratively disable IPv6 on an interface instead. ume told me there isn't. While i was at it, converted both, enable_vj and enable_ipv6 into flag bits in struct sppp (enable_vj used to be an int of its own). MFC after: 1 month
* Merge last-minute fix from the i4b file made by gj:joerg2001-12-301-2/+4
| | | | | | | Protect mtx_init() invocations with mtx_intialized() checks to avoid a reported panic. MFC after: 1 month
* We explicitly close LCP when going to state CLOSED, so we better openjoerg2001-12-301-0/+4
| | | | | | | | it again when going from INITIAL to STARTING. This has been done for passive or auto-conecting interfaces always, but not for permanent ones. Obtained from: NetBSD (rev 1.32)
* run IPCP only if we have IPv4 in kerneljoerg2001-12-301-1/+7
| | | | | Obtained from: NetBSD (rev 1.19) MFC after: 1 month
* Fix a long-standing blatant bug where the operator precedence betweenjoerg2001-12-301-4/+4
| | | | | | | | & and && has been botched. This was likely the cause for some havoc with various negotiation cases of sppp in the past. Obtained from: NetBSD (rev 1.13) MFC after: 1 week
* Fix compilation without INET (though not really tested yet withoutjoerg2001-12-301-6/+10
| | | | | | | INET). Obtained from: NetBSD (rev 1.12) MFC after: 1 month
* Add the `packed' attribute to structures which describe wire protocoljoerg2001-12-301-4/+4
| | | | | | | data formats. Obtained from: NetBSD (rev 1.6) MFC after: 1 month
* Extend the hack where 0.0.0.1 meant `any address for remote isjoerg2001-12-301-2/+2
| | | | | | | acceptable' to addresses 0.0.0.*. This allows for multiple such interfaces. MFC after: 1 month
* Fix the handling of VJ uncompression. Unfortunately, tcp_uncompress()joerg2001-12-301-14/+39
| | | | | | | | | | | | | | | | | | | | makes the implied assumption there were another 128 bytes of space in front of the packet handed off to it... which is not the case for sppp. This could easily end up in corrupting random memory. This fix is about the same as revs 1.6, 1.8, and 1.9 from our i4b_ispppsubr.c. Also fixed IPCP option negotiation to zero out the options when starting IPCP. Otherwise, if negotiation parameters change between various IPCP startups, it could happen that old options would still be requested (this happened if VJ was turned off, and ended up in half off the link still negotiating for VJ compression). IMHO, the base system's sppp is now feature-wise up to date with the one in the i4b part of the tree, so the latter can be disabled. MFC after: 1 month
* Convert sppp_params() to use a malloced structure in order to reducejoerg2001-12-281-45/+65
| | | | | | | | kernel stack usage. This effectively merges rev 1.3 of i4b's i4b_ispppsubr.c. MFC after: 1 month
* Fix my breakage to the low-level hardware sync drivers brought by thejoerg2001-12-281-25/+26
| | | | | | | | | | | | inclusion of VJ compression into sppp. Now, instead of the need to include this and that and everything plus the kitchensink in each of those drivers, struct sppp uses struct slcompress as an opaque structure only referenced by a pointer. The actual structure is then malloced at initialization time. While i was at it, also fixed a bug where received VJ packets would only be recognized if INET6 was defined.
* Implement timestamps so i4b/driver/i4b_isppp.c can derive the idlejoerg2001-12-281-4/+25
| | | | | | | | | | | | time from the PPP packets sent. This effectively merges rev 1.2 of the old i4b_ispppsubr.c, with the exception that i eventually ended up in debugging and fixing it so the idle time is now really detected. ;-) (The version in i4b simply doesn't work right since it still accounts for incoming LCP echo packets which it is supposed to ignore for idle time considerations...) Obtained from: i4b MFC after: 1 month
* Break out the relevant fields from struct sppp into a structjoerg2001-12-271-1/+7
| | | | | | | | | | | | sppp_parms that are needed for the SPPPIO[GS]DEFS ioctl commands. This allows it to keep struct sppp inside #ifdef _KERNEL (where it belongs), and prevents userland programs that wish to include <net/if_sppp.h> from including the earth, the hell, and the universe before the are able to resolve all the kernel-internal stuff that's in struct sppp. Discussed with: hm MFC after: 1 month
* Make the LCP restart timer configurable.joerg2001-12-271-9/+20
| | | | | | | | | This (effectively) merges rev 1.36 of i4b's old if_spppsubr.c, albeit in a slightly different manner (we export the timer in millisecond values as exposed to tick values from/to userland). Obtained from: i4b MFC after: 1 month
* Implement VJ header compression for sppp.joerg2001-12-271-5/+153
| | | | | | | | | | This is the logical merge of rev 1.32 of i4b's old if_spppsubr.c (which was based on PR misc/11767), plus (i4b) rev 1.6 of i4b's if_ispppsubr.c, albeit with numerous stylistic and cosmetic changes. PR: misc/11767 Submitted by: i4b, Joachim Kuebart MFC after: 1 month
* Don't log RXJ+ protocol rejects unless we are in debug mode. (RXJ-joerg2001-12-261-6/+7
| | | | | events are always logged.) This stops sppp from spamming the syslog files in case the remote peer is not configured to negotiate IPv6.
* Ignore (and silently conf-ack) conf-reqs for an Async-Control-joerg2001-12-261-11/+15
| | | | | | | Character-Map. RFC 1662 demands it for the sake of async to sync PPP protocol converters (like Win9* :). This merges rev 1.26/1.27 of the old i4b sppp changes.
* For SIOCSIFADDR, don't call if_up() since it would attempt to add thejoerg2001-12-261-1/+2
| | | | | | | | | route to the destination twice. Now that brian has fixed route.c to no longer accept this second route, this long-standing nuisance became a showstopper bug for sppp users. In retrospect, this is the same fix as the one in rev 1.78 of if_sl.c; most likely the original version of sppp has been cloned from SLIP. ;-)
* Update the hash table when sppp mucks directly with the interface address.jlemon2001-10-011-0/+4
|
* If LCP proto-rej is received, drop the protocol mentioned by the message.ume2001-07-311-1/+59
| | | | | | | | This is to be friendly with non-IPv6 peer (If the peer complains due to lack of IPv6CP, drop IPv6CP). This basically implements "RXJ+" state transition in the RFC. Obtained from: NetBSD
* Fix warning: 848: warning: label `nosupport' defined but not usedpeter2001-06-151-1/+0
|
* Make compilable. addlog(...) was replaced with log(-1, ...)ume2001-06-131-18/+18
| | | | Reported by: peter
* Restore the code wrongly nuked by previous commit.ume2001-06-121-0/+1
| | | | | | | | Following changed was made by previous commit: - IPV6CP supporting in kernel level ppp from NetBSD. Submitted by: y.shirasaki@ntt.com
* Sync with recent KAME.ume2001-06-111-22/+773
| | | | | | | | | | | | | | | | | | This work was based on kame-20010528-freebsd43-snap.tgz and some critical problem after the snap was out were fixed. There are many many changes since last KAME merge. TODO: - The definitions of SADB_* in sys/net/pfkeyv2.h are still different from RFC2407/IANA assignment because of binary compatibility issue. It should be fixed under 5-CURRENT. - ip6po_m member of struct ip6_pktopts is no longer used. But, it is still there because of binary compatibility issue. It should be removed under 5-CURRENT. Reviewed by: itojun Obtained from: KAME MFC after: 3 weeks
* Move the decision whether we want to request authentication from ourjoerg2001-04-081-8/+8
| | | | | | | peer out from sppp_lcp_open() to sppp_lcp_up(). For one, this makes things look more symmetrical to sppp_lcp_close(), and somehow it also just occurred to me that an Up event following the open caused the value of the authentication option to be clobbered.
* This is another MFC candidate.joerg2001-03-251-2/+2
| | | | | | | | | | | Fix a serious bug in sppp where anyone could obtain a successful PAP authentication by supplying a null password. I've only stumpled across the PR while browsing for all sppp-related PRs. Should we also file a security advisory for this? PR: 21592 Submitted by: <dli@3bc.de> Dirk Liebke
* (MFC candidate, see below).joerg2001-03-231-0/+14
| | | | | | | | | | | | | | | | | | | | When we get an Open event in stopped state, experience shows that this is usually means we've somehow missed a previous Down event. This has occasionally bitten people for the IPCP layer with ISDN, apparently a previously aborted IPCP negotiation must have caused this. As a bandaid, we quickly pretent a Down event by advancing to starting state; this effectively implements the `restart' option mentioned in RFC 1663. While i'm not yet fully convinced this is the best thing to do (and is fully compliant with RFC 1661), i've seen a number of reports here on the German mailing lists where people have been bitten by the previous behaviour which usually causes quickly looping ISDN reconnects (thus loss of money...), and where just this patch fixes the problem. For this, i'd even like to see it MFC'd if possible. Submitted by: Helmut Kreft <kreft@zeus.ai-lab.fh-furtwangen.de>
* Use <sys/queue.h> macro api rather than fondle its implementation detals.phk2001-02-031-4/+4
| | | | | Created with: /usr/bin/sed Reviewed by: /sbin/md5
* Various fixes to make leased line operation more robust. On lcp_up, startjhay2000-12-191-49/+100
| | | | | | | | | to negotiate from scratch. Make leased lines survive being put into loopback mode. Bits and pieces and ideas taken from PRs 11238 and 21771. Make it a module so that it can be kldloaded. Whitespace cleanup. (Can be ignored with "cvs diff -b".) PR: 11238 and 21771 (bits and pieces)
* Make log(-1, ...) do what addlog(...) did.phk2000-11-261-89/+89
| | | | | | | | Replace all uses of addlog(...) with log(-1, ...) Remove bogus "register" keywords in subr_prf.c Make log() return void.
* Lock down the network interface queues. The queue mutex must be obtainedjlemon2000-11-251-53/+16
| | | | | | | | | | | | | | before adding/removing packets from the queue. Also, the if_obytes and if_omcasts fields should only be manipulated under protection of the mutex. IF_ENQUEUE, IF_PREPEND, and IF_DEQUEUE perform all necessary locking on the queue. An IF_LOCK macro is provided, as well as the old (mutex-less) versions of the macros in the form _IF_ENQUEUE, _IF_QFULL, for code which needs them, but their use is discouraged. Two new macros are introduced: IF_DRAIN() to drain a queue, and IF_HANDOFF, which takes care of locking/enqueue, and also statistics updating/start if necessary.
* * Use sys/sys/random.h rather than a i386 specific one.obrien2000-04-241-4/+1
| | | | | * There was nothing that should be machine dependant about i386/isa/random_machdep.c, so it is now sys/kern/kern_random.c.
* Clean up some loose ends in the network code, including the X.25 and ISOpeter2000-02-131-23/+0
| | | | | | | #ifdefs. Clean out unused netisr's and leftover netisr linker set gunk. Tested on x86 and alpha, including world. Approved by: jkh
* udp IPv6 support, IPv6/IPv4 tunneling support in kernel,shin1999-12-071-1/+18
| | | | | | | | | | packet divert at kernel for IPv6/IPv4 translater daemon This includes queue related patch submitted by jburkhol@home.com. Submitted by: queue related patch from jburkhol@home.com Reviewed by: freebsd-arch, cvs-committers Obtained from: KAME project
* When getting a RCN event in state ACK_RCVD, RFC 1661 demands that wejoerg1999-10-291-1/+1
| | | | | | | go to REQ_SENT (and we probably should also log this since it should only happen in a cross-linked connection). Submitted by: Mark Tinguely <tinguely@plains.NoDak.edu>
* $Id$ -> $FreeBSD$peter1999-08-281-1/+1
|
* rganize the various modes (CISCO/AUTO/DEMAND/LEASED) a little bit better,phk1999-03-301-27/+48
| | | | | | centralize the code. Remember to call TLF/TLS on the hardware in CISCO mode.
* Misplaces brace puts important code into debug section.phk1999-02-231-5/+5
| | | | | Reviewed by: phk Submitted by: Stefan Bethke <stefan.bethke@hanse.de>
* Remove all the #ifdef notyet stuff, it is probably never going to happenphk1999-02-191-77/+27
| | | | | | | | | | | | | | in the first place. Use 3sec timeout as recommended. Reorder some debug messages. Label som of the 0x%x in debug messages Make sppp_print_bytes() use %*D and handle zero length. If we don't have MAGIC numbers, don't yell loopback if 0 == 0
* Update sppp support to i4b level. This includes the new spppcontrolphk1998-12-271-33/+115
| | | | program to set PPP options like authentication with.
* More isdn4bsd convergence: cleanup log messages.phk1998-12-261-18/+24
|
* Converge further on the isdn4bsd version of this file.phk1998-12-261-27/+25
|
* clean up more timeout/untimeout portability stuff.phk1998-12-261-34/+19
| | | | make sure flags and stuff are set sensibly.
* Straigthen out the use of the tls and tlf callbacks.phk1998-12-161-9/+14
| | | | | | | | | Not tested on the if_sr, if_cx and if_ar drivers, but expected to work just the same as it used to. Any users of these drivers (or even better: donors of hardware for them) please contact phk@freebsd.org so we can test the next batch of changes to if_sppp.
* *** empty log message ***phk1998-12-111-7/+12
|
* Examine all occurrences of sprintf(), strcat(), and str[n]cpy()archie1998-12-041-6/+6
| | | | | | | | | | | | | | for possible buffer overflow problems. Replaced most sprintf()'s with snprintf(); for others cases, added terminating NUL bytes where appropriate, replaced constants like "16" with sizeof(), etc. These changes include several bug fixes, but most changes are for maintainability's sake. Any instance where it wasn't "immediately obvious" that a buffer overflow could not occur was made safer. Reviewed by: Bruce Evans <bde@zeta.org.au> Reviewed by: Matthew Dillon <dillon@apollo.backplane.com> Reviewed by: Mike Spengler <mks@networkcs.com>
* Minor cleanup: kill a couple of unused variables, and a couple ofjoerg1998-10-061-3/+7
| | | | | | uninitialized variables. Obtained from: The isdn4bsd project (partially)
OpenPOWER on IntegriCloud