Commit Graph

496 Commits

Author SHA1 Message Date
sg
060a1fc727 patch #8481 Fix a couple of c&p mistakes in the error prints 2015-02-11 21:39:45 +01:00
sg
28783abbe2 fixed bug #43094 "The function tcpip_input() forget to handle IPv6" 2015-02-11 21:36:46 +01:00
sg
7ff9825f55 started to implement fullduplex sockets/netconns (note that this is highly unstable yet!) 2015-02-11 21:18:15 +01:00
sg
6c3f6cfd89 netconn/socket api: fixed bug #44225 "closing TCP socket should time out eventually", implemented task #6930 "Implement SO_LINGER": closing TCP sockets times out after 20 seconds or after the configured SND_TIMEOUT or depending on the linger settings; fixed that netconn_close/netconn_delete still used message passing for LWIP_TCPIP_CORE_LOCKING==1 2015-02-10 22:15:54 +01:00
sg
ec68aaf43b fixed that SHUT_RD followed by SHUT_WR was different to SHUT_RDWR, fixed return value of lwip_netconn_do_close on unconnected netconns 2015-01-27 21:28:39 +01:00
goldsimon
24df78bcbc fixed that lwip_netconn_do_delconn() did not set msg->err on success (just introduced that bug this weekend...) 2015-01-20 14:01:16 +01:00
sg
05aa0ad114 netconn_delete(): check for errors returned by lwip_netconn_do_delconn() and don't call netconn_free() on error 2015-01-17 21:54:17 +01:00
sg
5ceaed291f fixed bug #43361 select() crashes with stale FDs 2015-01-17 21:02:58 +01:00
sg
c1804810d8 allow enabling socket API without (public) netconn API - netconn API is still used by sockets, but keeping it private (static) should allow better compiler optimizations 2015-01-17 14:42:50 +01:00
sg
5d2e93e5f0 fixed bug #40788 "lwip_setsockopt_internal() crashes" by rewriting set/getsockopt functions to combine checks with the actual code and add more NULL checks; this also fixes that CORE_LOCKING used message passing for set/getsockopt. 2015-01-17 14:18:27 +01:00
Sylvain Rochet
91356d2d03 PPPAPI, added const modifier on auth strings 2014-12-24 19:05:19 +01:00
goldsimon
a883fe7b8e sockets.c: fixed assert check after changing type of sock->select_waiting to unsigned 2014-12-17 16:21:44 +01:00
sg
7ca4fd817e - fixed bug #43797 set/getsockopt: SO_SNDTIMEO/SO_RCVTIMEO take int as option but should take timeval (LWIP_SO_SNDRCVTIMEO_STANDARD==0 can be used to revert to the old 'winsock' style behaviour);
- Fixed implementation of SO_ACCEPTCONN to just look at the pcb state;
- cleaned up the SO/SOF defines (only 3 left a ip_pcb level);
2014-12-10 21:46:49 +01:00
sg
8e13bcd43d fixed indentation 2014-12-10 21:24:02 +01:00
sg
cacdbb5262 added option LWIP_NETCONN_SEM_PER_THREAD to use a semaphore per thread instead of using one per netconn and per select call 2014-12-10 20:45:01 +01:00
goldsimon
1bf2e313f6 sockets.c: fixed using unsigned constant 'FIONBIO' in switch on (signed) long 2014-12-08 15:01:18 +01:00
goldsimon
2809405164 lwip_socket_init() is not needed any more -> compatibility define 2014-11-06 14:14:58 +01:00
sg
d6fbe2a5ad fixed bugs #41495 Possible threading issue in select() and #43278
event_callback() handle context switch when calling sys_sem_signal()
2014-10-28 22:28:50 +01:00
goldsimon
aecbce283d fixed bug #38219 Assert on TCP netconn_write with sndtimeout set 2014-10-21 11:09:07 +02:00
Simon Goldschmidt
33237419c1 Parts of patch #8397 Typos corrected in comments and text outputs 2014-09-18 21:15:13 +02:00
Simon Goldschmidt
9f48488d87 minor: fixed coding style in pppapi.h/.c 2014-09-16 21:57:52 +02:00
Simon Goldschmidt
4b9883a573 DNS: does not support IPv6, may return a name cased different than the request (when multiple requests are combined to one) 2014-09-15 21:56:29 +02:00
Simon Goldschmidt
3c40d93f36 fixed bug #43110 (call getpeername() before listen() will cause a error) by re-sorting the error numbers and letting listen() continue on ERR_CONN 2014-09-02 22:34:53 +02:00
Simon Goldschmidt
4335e99f2e netconn_gethostbyname() needs to check for name length when LWIP_MPU_COMPATIBLE==1 2014-09-02 21:40:05 +02:00
Simon Goldschmidt
5c37c63cef fixed bug #42117 lwip_fcntl does not set errno 2014-09-02 21:08:30 +02:00
Sylvain Rochet
7fe7e1e984 Merge branch 'ppp-new'
Based from pppd 2.4.5, released 2009-11-17, with huge changes to match
code size and memory requirements for embedded devices, including:
- Gluing together the previous low-level PPP code in lwIP to pppd 2.4.5, which
  is more or less what pppd sys-* files are, so that we get something working
  using the unix port.
- Merged some patchs from lwIP Git repository which add interesting features
  or fix bugs.
- Merged some patchs from Debian pppd package which add interesting features
  or fix bugs.
- Ported PPP timeout handling to the lwIP timers system
- Disabled all the PPP code using filesystem access, replaced in necessary cases
  to configuration variables.
- Disabled all the PPP code forking processes.
- Removed IPX support, lwIP does not support IPX.
- Ported and improved random module from the previous PPP port.
- Removed samba TDB (file-driven database) usage, because it needs a filesystem.
- MS-CHAP required a DES implementation, we added the latest PolarSSL DES
  implementation which is under a BSD-ish license.
- Also switched to PolarSSL MD4,MD5,SHA1 implementations, which are meant to be
  used in embedded devices with reduced memory footprint.
- Removed PPP configuration file parsing support.
- Added macro definition EAP_SUPPORT to make EAP support optional.
- Added macro definition CHAP_SUPPORT to make CHAP support optional.
- Added macro definition MSCHAP_SUPPORT to make MSCHAP support optional.
- Added macro definition PAP_SUPPORT to make PAP support optional.
- Cleared all Linux syscall calls.
- Disabled demand support using a macro, so that it can be ported later.
- Disabled ECP support using a macro, so that it can be ported later.
- Disabled CCP support using a macro, so that it can be ported later.
- Disabled CBCP support using a macro, so that it can be ported later.
- Disabled LQR support using a macro, so that it can be ported later.
- Print packet debug feature optional, through PRINTPKT_SUPPORT
- Removed POSIX signal usage.
- Fully ported PPPoS code from the previous port.
- Fully ported PPPoE code from the previous port.
- Fully ported VJ compression protocol code from the previous port.
- Removed all malloc()/free() use from PPP, replaced by stack usage or PBUF.
- Disabled PPP server support using a macro, so that it can be ported later.
- Switched all PPP debug to lwIP debug system.
- Created PPP Control Block (PPP PCB), removed PPP unit integer everywhere,
  removed all global variables everywhere, did everything necessary for
  the PPP stack to support more than one PPP session (pppd only support
  one session per process).
- Removed the statically allocated output buffer, now using PBUF.
- Improved structure size of all PPP modules, deep analyze of code to reduce
  variables size to the bare minimum. Switched all boolean type (char type in
  most architecture) to compiler generated bitfields.
- Added PPP IPv6 support, glued lwIP IPv6 support to PPP.
- Now using a persistent netif interface which can then be used in lwIP
  functions requiring a netif.
- Now initializing PPP in lwip_init() function.
- Reworked completely the PPP state machine, so that we don't end up in
  anymore in inconsistent state, especially with PPPoE.
- Improved the way we handle PPP reconnection after disconnect, cleaning
  everything required so that we start the PPP connection again from a
  clean state.
- Added PPP holdoff support, allow the lwIP user to wait a little bit before
  reconnecting, prevents connection flood, especially when using PPPoL2TP.
- Added PPPoL2TP LAC support (a.k.a. UDP tunnels), adding a VPN client
  feature to lwIP, L2TP being a widely used tunnel protocol.
- Switched all used PPP types to lwIP types (u8t, u16t, u32t, ...)
- Added PPP API "sequential" thread-safe API, based from NETIFAPI.
2014-05-22 21:25:58 +02:00
Simon Goldschmidt
695e001984 lwip_gethostbyname: fixed using uninitialized variable when LWIP_DNS_API_HOSTENT_STORAGE==1 2014-05-15 21:17:41 +02:00
Sylvain Rochet
d9e2edd1df Merge branch 'master' into ppp-new 2014-05-05 20:55:18 +02:00
goldsimon
e4ddd6cb6d Multiple fixes found by coverity scan 2014-04-30 12:22:31 +02:00
Sylvain Rochet
ca7769e041 Merge branch 'master' into ppp-new 2014-04-12 01:25:00 +02:00
Simon Goldschmidt
3f016fcc5a Multiple small/minor issues: bug #36492 Static Analysis on code 1.4.0 2014-04-06 21:43:37 +02:00
Sylvain Rochet
a38e5a44ec Merge branch 'master' into ppp-new 2014-03-14 20:48:12 +01:00
Simon Goldschmidt
c065427ebe fixed bug #35928 BSD sockets functions must set errno for POSIX-compliance (patch by Mason) 2014-03-11 20:53:44 +01:00
Simon Goldschmidt
c60635855d fixed bug #38404 getpeeraddr returns success on unconnected/listening TCP sockets 2014-02-27 21:28:15 +01:00
Simon Goldschmidt
2666d6df90 fixed bug #41729 Some socket functions return Exyz instead of -1 2014-02-27 20:57:37 +01:00
Sylvain Rochet
75ef1278e6 Merge branch 'master' into ppp-new 2014-02-21 20:37:10 +01:00
Simon Goldschmidt
fc158ad5c0 Fixed netconn_gethostbyname for LWIP_MPU_COMPATIBLE: removed invalid check on 'addr', copy 'name' since it could be located on the caller's stack 2014-02-21 09:04:39 +01:00
Sylvain Rochet
d7ba4bbb9b Merge branch 'master' into ppp-new 2014-02-21 00:39:29 +01:00
Simon Goldschmidt
9572db262c Fixed bug #39718: disconnecting an UDP socket reports an error 2014-02-20 22:32:57 +01:00
Simon Goldschmidt
515e4b9187 fixed bug #39882 No function shall set errno to 0 2014-02-20 22:23:40 +01:00
Simon Goldschmidt
4d774e275d netconn::recv_avail: forgot one line 2014-02-20 22:01:13 +01:00
Simon Goldschmidt
a2d6a50dff fixed bug #41499 netconn::recv_avail can overflow 2014-02-20 21:55:11 +01:00
Simon Goldschmidt
a375ea4ee2 Minor: coding style cleanups... 2014-02-20 20:09:33 +01:00
Grant Erickson
d74464e091 Add RFC3542-style checksum compuation on raw, IPv6 sockets
This patch adds support for RFC3542-style checksum computation on raw,
IPv6 sockets via the IPV6_CHECKSUM socket option.

This allows the development of application-layer utilities such as
ping6 which are unable to compute the raw packet checksum without a
prior knowledge of the source address selection.
2014-02-20 20:01:37 +01:00
Simon Goldschmidt
e2c2afbbe0 patch #7885: modification of api modules to support FreeRTOS-MPU (don't pass stack-pointers to other threads) (based on patch by Artem Pisarenko) 2014-02-20 19:50:17 +01:00
Sylvain Rochet
87cfd930e4 Merge branch 'master' into ppp-new 2014-01-17 00:48:55 +01:00
Simon Goldschmidt
2cf5eec62f patch by Thomas Faber: patch #8241: Fix implicit declaration of ip_input with LWIP_TCPIP_CORE_LOCKING_INPUT disabled 2014-01-14 21:32:45 +01:00
Sylvain Rochet
4fda366b67 PPP, added PPP notify phase support
PPP notify phase support, using compile-time PPP_NOTIFY_PHASE macro.

This can be used for example to set a LED pattern depending on the
current phase of the PPP session.

Callback example:

static void ppp_notify_phase_cb(ppp_pcb *pcb, u8_t phase, void *ctx) {
  switch(phase) {
      case PPP_PHASE_DEAD:  /* Kept off */
      case PPP_PHASE_MASTER:
        /* LED Off */
        break;
      case PPP_PHASE_INITIALIZE:  /* Session opened */
        /* LED FastBlink */
        break;
      case PPP_PHASE_RUNNING:  /* Session running */
        /* LED On */
        break;
      default:
        /* LED SlowBlink */
   }
}
2013-04-30 15:16:09 +02:00
Sylvain Rochet
3fe5a99dab Merge branch 'master' into ppp-new 2013-04-25 00:36:12 +02:00
Simon Goldschmidt
097bc4c622 patch #8008 Fix a potential null pointer dereference in assert 2013-04-24 22:28:22 +02:00