goldsimon
f3dbd986cb
Task #7410 : Removed the need to include core header files in api.h (ip/tcp/udp/raw.h) to hide the internal implementation from netconn api applications.
2007-11-06 20:31:28 +00:00
fbernon
ecce865cfe
api.h, api_lib.c, api_msg.c, sockets.c, opt.h: add SO_RCVBUF option for UDP & RAW netconn. You need to set LWIP_SO_RCVBUF=1 in your lwipopts.h (it's disabled by default). Netconn API users can use the netconn_recv_bufsize macro to access it. This is a first release which have to be improve for TCP. Note it used the netconn::recv_avail which need to be more "thread-safe" (note there is already the problem for FIONREAD with lwip_ioctl/ioctlsocket).
2007-11-02 10:37:08 +00:00
fbernon
cbe9b050a9
sockets.h, sockets.c, api.h, api_lib.c, api_msg.h, api_msg.c, tcp.h, tcp_out.c: Integrate "patch #6250 : MSG_MORE flag for send". MSG_MORE is used at socket api layer, NETCONN_MORE at netconn api layer, and TCP_WRITE_FLAG_MORE at raw api layer. This option enable to delayed TCP PUSH flag on multiple "write" calls. Note that previous "copy" parameter for "write" APIs is now called "apiflags".
2007-11-01 17:37:50 +00:00
fbernon
7077d51f1f
api.h, api_lib.c, api_msg.c: Add macro API_EVENT in the same spirit than TCP_EVENT_xxx macros to get a code more readable. It could also help to remove some code (like we have talk in "patch #5919 : Create compile switch to remove select code"), but it could be done later.
2007-10-24 12:09:18 +00:00
goldsimon
270c7c1110
Removed check for conn->err for functions whose counterparts in api_msg.c also do the check (1. remove redundant code, 2. check is better done in tcpip thread context)
2007-10-22 20:01:16 +00:00
goldsimon
2d3a64815f
Minor coding style fixes, added comment
2007-10-22 19:59:52 +00:00
fbernon
649d43c2c5
Minor change (define DHCP_COARSE_TIMER_MSECS - using DHCP_COARSE_TIMER_SECS - to use milliseconds like all others timers)
2007-10-15 21:31:42 +00:00
fbernon
cf998b7bf8
Minor fix (remove warning)
2007-10-10 08:13:58 +00:00
goldsimon
199648ff37
Changed initialization: many init functions are not needed any more since we now rely on the compiler initializing global and static variables to zero!
2007-10-09 19:59:56 +00:00
goldsimon
b1a4b00091
Preprocessor statements have to start at the beginning of a line for old compilers!
2007-10-09 19:30:17 +00:00
goldsimon
c1c9983cfe
Removed <warning: potential uninitialized reference to
...
"buf" in function "lwip_recvfrom">
2007-10-09 19:29:54 +00:00
fbernon
87e16a8f47
sockets.c, api.h, api_lib.c: First step to fix "bug #20900 : Potential crash error problem with netconn_peer & netconn_addr". VERY IMPORTANT: this change cause an API breakage for netconn_peer, since a parameter type change. Any compiler should cause an error without any changes in yours netconn_peer calls (so, it can't be a "silent change"). It also reduce a little bit the footprint for socket layer (lwip_getpeername & lwip_getsockname use now a common lwip_getaddrname function since netconn_peer & netconn_addr have the same parameters).
2007-10-07 17:26:54 +00:00
goldsimon
cb71d6d393
Moved ethernet_input from tcpip.c to etharp.c so all netifs (or ports) can use it.
2007-10-05 14:00:48 +00:00
fbernon
79c00be516
netifapi.h, netifapi.c: add function netifapi_netif_set_default. Change the common function to reduce a little bit the footprint (for all functions using only the "netif" parameter).
2007-10-05 13:34:48 +00:00
fbernon
949efb414a
netifapi.h, netifapi.c: add functions netifapi_netif_set_up, netifapi_netif_set_down, netifapi_autoip_start and netifapi_autoip_stop. Use a common function to reduce a little bit the footprint (for all functions using only the "netif" parameter).
2007-10-03 16:54:27 +00:00
fbernon
2bdd916b06
udp.h, udp.c, sockets.c: Changes for " #20503 IGMP Improvement". Add IP_MULTICAST_IF option in socket API, and a new field "multicast_ip" in "struct udp_pcb" (for netconn and raw API users), only if LWIP_IGMP=1. Add getsockopt processing for IP_MULTICAST_TTL and IP_MULTICAST_IF.
2007-09-15 15:19:41 +00:00
fbernon
95f2d48ac4
Avoid to lost previous error codes in sockets.c and api_lib.c.
2007-09-13 15:03:42 +00:00
fbernon
c265fa3331
Add missing #if/#endif to fix build problems with:
...
#define NO_SYS 0
#define LWIP_SOCKET 0
#define LWIP_NETCONN 0
2007-09-12 09:19:43 +00:00
fbernon
1c6e31173d
Add missing include files.
2007-09-09 22:34:55 +00:00
fbernon
8205737fdb
sockets.c, ip.h, api.h, tcp.h: declare a "struct ip_pcb" which only contains IP_PCB. Add in the netconn's "pcb" union a "struct ip_pcb *ip;" (no size change). Use this new field to access to common pcb fields (ttl, tos, so_options, etc...). Enable to access to these fields with LWIP_TCP=0.
2007-09-07 23:47:02 +00:00
fbernon
e3cd1ac1f9
Minor changes (but in lot of files): add #if/#endif for options where they could miss. #if LWIP_xxx if always put after #include "lwip/opt.h" (note this one indirectly include cc.h). Move others includes inside #if/#endif block.
2007-09-07 23:01:59 +00:00
fbernon
90a3f88c08
Change parameters list for sys_thread_new (see "task #7252 : Create sys_thread_new_ex()"). Two new parameters have to be provided: a task name, and a task stack size. For this one, since it's platform dependant, you could define the best one for you in your lwipopts.h. For port maintainers, you can just add these new parameters in your sys_arch.c file, and but it's not mandatory, use them in your OS specific functions.
2007-09-05 16:14:28 +00:00
fbernon
62b4741b19
Changes for " #20503 IGMP Improvement". Initialize igmp_mac_filter to NULL in netif_add (this field should be set in the netif's "init" function). Use the "imr_interface" field (for socket layer) and/or the "interface" field (for netconn layer), for join/leave operations. The igmp_join/leavegroup first parameter change from a netif to an ipaddr. This field could be a netif's ipaddr, or "any" (same meaning than ip_addr_isany).
2007-09-03 14:53:18 +00:00
fbernon
245bce04d1
Add netbuf.h, netbuf.c, Change api.h, api_lib.c: #7249 "Split netbuf functions from api/api_lib". Now netbuf API is independant of netconn, and can be used with other API (application based on raw API, or future "socket2" API). Ports maintainers just have to add src/api/netbuf.c in their makefile/projects.
2007-08-30 16:55:10 +00:00
fbernon
cd208314e0
igmp.h, igmp.c, tcpip.c, init.c, netif.c: change igmp_init and add igmp_start. igmp_start is call inside netif_add. Now, igmp initialization is in the same spirit than the others modules. Modify some IGMP debug traces.
2007-08-29 21:12:32 +00:00
fbernon
da7b5135de
Minor Fix (ident)
2007-08-29 20:50:53 +00:00
fbernon
48db3a3e92
Add init.h, init.c, Change opt.h, tcpip.c: Task #7213 "Add a lwip_init function" Add lwip_init function to regroup all modules initializations, and to provide a place to add code for task #7142 "Sanity check user-configurable values". Ports maintainers should remove direct initializations calls from their code, and add init.c in their makefiles. Note that lwip_init() function is called inside tcpip_init, but can also be used by raw api users since all calls are disabled when matching options are disabled. Also note that their is new options in opt.h, you should configure in your lwipopts.h (they are enabled per default).
2007-08-29 08:11:06 +00:00
fbernon
7182fb8fb0
tcpip.c: Fix TCPIP_MSG_INPKT processing: now, tcpip_input can be used for any kind of packets. These packets are considered like Ethernet packets (payload pointing to ethhdr) if the netif got the NETIF_FLAG_ETHARP flag. Else, packets are considered like IP packets (payload pointing to iphdr).
2007-08-29 07:51:20 +00:00
fbernon
54c1025ec0
First fix for "bug #20900 : Potential crash error problem with netconn_peer & netconn_addr". Introduce NETCONN_LISTEN netconn_state and remove obsolete ones (NETCONN_RECV & NETCONN_ACCEPT).
2007-08-27 10:08:53 +00:00
marcbou
180e6d2c75
Reset the callbacks and arg (conn) to NULL in do_close_internal(), because
...
TCP callbacks in api_msg.c can under certain circumstances be called with an
invalid conn pointer after the connection has been closed (and conn has been
freed).
2007-08-26 23:58:33 +00:00
fbernon
42f3c24fc4
tcpip.h, tcpip.c, ethernetif.c, opt.h: remove options ETHARP_TCPIP_INPUT & ETHARP_TCPIP_ETHINPUT, now, only "ethinput" code is supported, even if the name is tcpip_input (we keep the name of 1.2.0 function).
2007-08-22 10:04:35 +00:00
fbernon
c4b97a1710
Forget to rename this line (pbuf->flgs->pbuf->flags)
2007-08-22 08:47:48 +00:00
fbernon
885695fa67
Minor changes (tabs)
2007-08-17 10:46:07 +00:00
fbernon
e0bf309bb5
Add raw_init in tcpip_init + minor changes (tabs, ident, coding style...)
2007-08-17 09:57:37 +00:00
marcbou
d907bcd57a
lwip_recvfrom() tweaks.
2007-08-17 05:55:24 +00:00
marcbou
0167bbb89a
Per Frederic's suggestion, renamed
...
[MEMP_[NUM_]]TCPIP_MSG to [MEMP_[NUM_]]TCPIP_MSG_API
and
[MEMP_[NUM_]]TCPIP_MSG_INPUT to [MEMP_[NUM_]]TCPIP_MSG_INPKT.
Added defines in opt.h for temporary compatibility with older lwipopts.h.
2007-08-17 02:46:43 +00:00
fbernon
2be122875a
Minor changes (tabs, ident, coding style...)
2007-08-17 00:30:27 +00:00
marcbou
c517f6daf9
Backed out lwip_close() change after discussion with Frederic.
2007-08-16 23:09:04 +00:00
marcbou
07223bf5ef
Backed out last change to netconn_delete() after discussion with Frederic.
2007-08-16 23:06:42 +00:00
marcbou
c81d0f3393
fix ethernet_input() return code warning.
2007-08-16 20:50:43 +00:00
marcbou
4236699052
Split pbuf flags in pbuf type and flgs.
...
Improved lwip_recvfrom(). TCP push now propagated.
2007-08-16 20:22:15 +00:00
marcbou
a3c3f47e17
lwip_close(): call netconn_delete() under socksem to properly handle
...
concurrent closes.
2007-08-16 20:08:33 +00:00
marcbou
17f07a36ef
netconn_delete(): unblock potentially waiting recv.
2007-08-16 20:03:23 +00:00
marcbou
1b98df4a0d
Added distinct memp (MEMP_TCPIP_MSG_INPUT) for input packets to prevent
...
floods from consuming all of MEMP_TCPIP_MSG and starving other message types.
2007-08-16 19:49:08 +00:00
marcbou
58bfb0458e
Added PPPoE support to ethernet_input()
2007-08-16 19:16:03 +00:00
marcbou
0b4402ebc8
lwip_accept(): check netconn_peer() error return.
2007-08-16 18:29:37 +00:00
marcbou
d64b3f21e6
Initialize newconn->state to NETCONN_NONE in accept_function;
...
otherwise it was left to NETCONN_CLOSE and sent_tcp() could prematurely
close the connection.
2007-08-16 18:24:29 +00:00
marcbou
931fcfd0f5
Added PPPoE support and various PPP improvements.
2007-08-16 18:12:20 +00:00
fbernon
9152d6671c
Comments Fix for Doxygen documentation
2007-08-09 22:21:44 +00:00
fbernon
11c94b6566
Minor fix (spaces)
2007-08-09 10:51:26 +00:00
fbernon
fdc4c25e67
Minor fix (warnings on unused args, wrong type, cast u32_t to u16_t...)
2007-08-01 13:41:31 +00:00
fbernon
083134bc12
Minor fix (warning when LWIP_DEBUG is undefined)
2007-07-29 09:25:19 +00:00
fbernon
b8b04271b5
Minor fix (warning, linker helper) signaled by Bill Florac
2007-07-29 08:11:33 +00:00
goldsimon
f4036e8352
Another fix for bug #20021 : by not returning an error if tcp_output fails in tcp_close, the code in do_close_internal gets simpler (tcp_output is called again later from tcp timers).
2007-07-25 19:24:27 +00:00
goldsimon
f9c30017b0
Fixed bug #20429 : use the new pbuf_copy_partial instead of the old copy_from_pbuf, which illegally modified the given pbuf; Introduced pbuf_copy_partial, making netbuf_copy_partial use this function.
2007-07-25 18:53:45 +00:00
fbernon
a1d8335a8c
Fix do_delconn when used with LWIP_TCPIP_CORE_LOCKING=1 on "non-TCP" connections...
2007-07-24 17:27:48 +00:00
goldsimon
62c3de30b9
Fix bug #20480 : Check the pcb passed to tcp_listen() for the correct state (must be CLOSED).
2007-07-24 07:41:55 +00:00
fbernon
6a452951f5
api_msg.c: Fix bug #20318 : api_msg "recv" callbacks don't call pbuf_free in all error cases.
2007-07-13 14:28:15 +00:00
fbernon
a891854ef5
Fix bug #20315 : possible memory leak problem if tcp_listen failed, because current code doesn't follow rawapi.txt documentation.
2007-07-13 13:59:11 +00:00
fbernon
5d872b26a1
sockets.c: Fix a possible problem because any new socket can't be created during the "close" (which can be "long" since fix for bug #20021 ).
2007-07-04 21:13:25 +00:00
goldsimon
eb875de67e
Added assertions where PBUF_RAM pbufs are used and an assumption is made that this pbuf is in one piece (i.e. not chained). These assumptions clash with the possibility of converting to fully pool-based pbuf implementations, where PBUF_RAM pbufs might be chained.
2007-07-03 20:28:35 +00:00
goldsimon
2a77b9fcc7
Bug in last version (fix to close problems): netconn thread might get active before calling its callback, so conn was already deallocated.
2007-07-03 20:20:33 +00:00
goldsimon
9a4a5b1816
Final fix for bug #20021 and some other problems when closing tcp netconns: removed conn->sem, less context switches when closing, both netconn_close and netconn_delete should safely close tcp connections.
2007-07-03 19:29:59 +00:00
fbernon
b6750de9e8
sockets.h, sockets.c: Implement MSG_PEEK flag for recv/recvfrom functions.
2007-06-30 13:24:11 +00:00
fbernon
af71292aba
Minor fix (extra spaces)
2007-06-29 13:37:33 +00:00
goldsimon
d73ca29a07
Fixed minor indentation fault
2007-06-28 10:29:13 +00:00
fbernon
d6fbe45296
netifapi.h, netifapi.c, tcpip.h, tcpip.c: Update code to handle the option LWIP_TCPIP_CORE_LOCKING, and do some changes to be coherent with last modifications in api_lib/api_msg (use pointers and not type with table, etc...)
2007-06-28 10:11:05 +00:00
fbernon
dd1cd5e491
sockets.c: process NETCONN_RAW connections with LWIP_TCPIP_CORE_LOCKING=1
2007-06-28 09:56:37 +00:00
goldsimon
6f93a8f091
Set the err_to_errno_table to be const
2007-06-26 17:38:52 +00:00
goldsimon
bb9e9e5480
Changed the expression of LWIP_ERROR to the same as for LWIP_ASSERT
2007-06-22 20:50:21 +00:00
goldsimon
065b8c945b
Added ASSERT to check that lwip_send(to) is not called for length not fitting into u16_t (for UDP & RAW sockets)
2007-06-21 19:58:31 +00:00
goldsimon
f49fc35f55
Converted the length argument of netconn_write (and therefore also api_msg_msg.msg.w.len) from u16_t into int to be able to send a bigger buffer than 64K with one time (mainly used from lwip_send).
2007-06-21 19:32:26 +00:00
goldsimon
67795ad26e
Corrected do_write for LWIP_TCPIP_CORE_LOCKING=1
2007-06-21 19:14:02 +00:00
goldsimon
2aef8bad55
Moved the nagle algorithm from netconn_write/do_write into a define (tcp_output_nagle) in tcp.h to provide it to raw api users, too.
2007-06-21 18:55:09 +00:00
goldsimon
9f05cabf87
Fixed bug #20021 : Moved sendbuf-processing in netconn_write from api_lib.c to api_msg.c to also prevent multiple context-changes on low memory or empty send-buffer.
2007-06-21 18:40:21 +00:00
fbernon
ec7333d406
Some changes for AutoIP integration in tcpip.c, and some comments.
2007-06-19 10:11:27 +00:00
goldsimon
9e0252b209
Corrected two formatters in LWIP_DEBUGF calls
2007-06-18 19:23:27 +00:00
goldsimon
531ea17088
Forgot to implement getsockopt for SO_NO_CHECK
2007-06-17 19:18:59 +00:00
goldsimon
ced2543be0
Done some work on task #6933 : converted some LWIP_ASSERTs to LWIP_ERROR to give back an error return value for LWIP_NOASSERT=1
2007-06-17 14:39:50 +00:00
goldsimon
261e92c57b
In accept_function, one LWIP_ERROR had a wrong expression (since it is inverted compared to LWIP_ASSERT...)
2007-06-17 14:38:32 +00:00
goldsimon
96dc30dea2
Done some work on task #1549 (function documentation)
2007-06-17 12:18:11 +00:00
goldsimon
ea7b0052f3
Implemented socket options SO_NO_CHECK for UDP sockets to disable UDP checksum generation on transmit.
2007-06-17 11:46:30 +00:00
goldsimon
1db9013bc4
Done some work on task #1549 (function documentation)
2007-06-16 15:08:47 +00:00
goldsimon
060cbe15d6
Done some work on task #1549 (function documentation), added some LWIP_ERROR checks, don't call pcb_new() from do_bind() and do_connect() since a netconn without pcb can't exist any more (after the recent changes to netconn_new_*())
2007-06-16 15:07:11 +00:00
goldsimon
173e63f01b
Minor fix: coding style
2007-06-16 15:03:09 +00:00
goldsimon
775deefeaa
Done some work on task #1549 (function documentation), added some LWIP_ERROR checks, created define instead of extra-function for netconn_new, netconn_new_with_callback and netconn_err
2007-06-16 13:57:30 +00:00
goldsimon
15e8208457
pcb_new sets conn->err if protocol is not implemented -> netconn_new_..() does not allocate a new connection for unsupported protocols.
2007-06-13 19:00:21 +00:00
fbernon
d8fe18c28e
api_lib.c: change return expression in netconn_addr and netconn_peer, because conn->err was reset to ERR_OK without any reasons (and error was lost)...
2007-06-13 18:08:49 +00:00
fbernon
9ee85fb1b6
debug.h, api_msg.c: change LWIP_ERROR to use it to check errors like invalid pointers or parameters, and let the possibility to redefined it in cc.h. Use this macro to check "conn" parameter in api_msg.c functions (some others change will be done...).
2007-06-13 18:00:54 +00:00
fbernon
ab4b59afb9
Partial fix for bug# 20147: "getsockopt() with SO_ERROR option" 'socket layer error is not updated if no operation on netconn).
2007-06-11 20:16:38 +00:00
goldsimon
046a270156
Added UDP lite support for sockets
2007-06-11 18:43:16 +00:00
fbernon
d81841f54e
Minor fix (coding style)
2007-06-10 20:02:43 +00:00
goldsimon
95f4c02381
Included switch LWIP_UDPLITE (enabled by default) to switch off UDP-Lite support if not needed (reduces udp.c code size)
2007-06-10 12:02:24 +00:00
fbernon
a42baedc28
Just add a comment to explain that the lwip_sendto patch for LWIP_TCPIP_CORE_LOCKING option is just show a sample (it's not a full implementation, RAW connection and "to" field are not handled, ...)
2007-06-09 09:59:16 +00:00
goldsimon
613acd93c0
Minor change: don't define some local (unused) variables if LWIP_TCPIP_CORE_LOCKING=1
2007-06-08 21:33:28 +00:00
fbernon
090aaefb39
Add LWIP_TCPIP_CORE_LOCKING option (0 as default value) to experiment "locking" as feature to communicate with tcpip_thread for sequential API (netconn & socket layers). Add a alternative code for lwip_sendto to how the code can be optimized with such feature....
2007-06-08 19:27:59 +00:00
goldsimon
8a30754e9c
Done some work on task #1549 (function documentation) and minor changes to meet coding standard
2007-06-08 11:30:14 +00:00
goldsimon
aee6c1f72f
Corrected setsockopt for LWIP_IGMP=1 (did not compile & errors were not returned)
2007-06-05 18:46:10 +00:00
goldsimon
754fe60979
Typo in lwip_setsockopt() (getsockopt_internal was called instead of setsockopt_internal!!!)
2007-06-05 07:38:39 +00:00
goldsimon
add68e0da1
Checked in patch #5914 : Moved sockopt processing into tcpip_thread.
2007-06-01 17:15:54 +00:00