[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[lwip-commits] [SCM] lwIP - A Lightweight TCPIP stack annotated tag, STA

From: Simon Goldschmidt
Subject: [lwip-commits] [SCM] lwIP - A Lightweight TCPIP stack annotated tag, STABLE-2_0_0_RC1, created. STABLE-2_0_0_RC1
Date: Wed, 27 Apr 2016 20:12:35 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "lwIP - A Lightweight TCPIP stack".

The annotated tag, STABLE-2_0_0_RC1 has been created
        at  2a1e7bec19b772fc92f82d475cf5597f59bd4195 (tag)
   tagging  33955c636d17bee230cde746a92e1cff11a7a177 (commit)
 tagged by  sg
        on  Wed Apr 27 22:10:24 2016 +0200

- Log -----------------------------------------------------------------
2.0.0 RC1 (which is actually a first beta, rather)

"Grant Erickson" (1):
      Fixed typo in debug formatting in ip6.c

Axel Lin (34):
      dns: Fix dns_alloc_pcb for reuse an existing one case
      api_msg_c: remove superfluous NETCONN_SET_SAFE_ERR call before 
      Slightly improve raw_remove()/udp_remove() implementation
      Drop unnecessary NULL test for h->next->next in memp_sanity
      memp: Fix if MEMP_OVERFLOW_CHECK guard in memp_free_pool
      Trivial comment fix about calling tcp_slowtmr
      Simplify testing minimum priority in tcp_kill_prio()
      Drop #if TCP_DEBUG guard around tcp_debug_print_state calls
      igmp: Drop unneeded initialization for *group in igmp_lookup_group()
      dns: Remove always true test in dns_alloc_random_port
      ipaddr_aton: Avoid duplicate code to handle IPv4 address string conversion
      Use SYS_ARCH_SET macro at appropriate places
      Remove unnecessary p->len checking for pbuf_alloc calls with PBUF_RAM type
      netbuf: Move #include "lwip/opt.h" out of #if LWIP_NETCONN || LWIP_SOCKET 
      icmp: Fix memory leak in icmp_input() error paths
      memp: Fixup LWIP_HOOK_MEMP_AVAILABLE() hook
      Catch tcpip_callback call failure
      tcp_out: Use LWIP_DBG_LEVEL_SERIOUS instead of magic number
      igmp: Optimize the implementation of igmp_start_timer
      Trivial comment fix for lwip_netconn_do_disconnect()
      udp_bind: Allocate a random port earlier to correctly detect port conflict
      tcp_bind/tcp_connect: Omit checking for the same port if no port specified
      udp_bind: Fix the logic to check both pcbs have REUSEADDR set
      tcp_out: Use LWIP_DBG_LEVEL_SERIOUS instead of hard coded number
      udp_bind: Omit checking for the same port if no port specified
      tcp_rexmit_rto: Remove superfluous #if TCP_OVERSIZE guard
      memp: Simplify implementation of memp_overflow_check_all
      stats: Move memp_names table out of stats_init/stats_display_memp 
      raw: Remove unnecessary #if guard around PCB_ISIPV6() calls
      raw: Fix build error
      Clear addr_hint pointer after calling ip_output_if() in 
      stats: Add proper #if guard to prevent unused-variable warning for 
      Make ERR_IS_FATAL() test first fatal error instead of last non-fatal error
      tcp_alloc(): Remove superfluous initialization for pcb->keep_cnt_sent

Clint Sbisa (1):
      tcp: Fix ooseq processing when seqno is near 2^32

Dirk Ziegelmeier (264):
      PPP: fix constness in PPP related files (GCC -Wcast-qual)
      Compiler warning fixes (mostly constness in dual-stack configurations)
      Fixed using wrong sockaddr type in lwip_getaddrinfo when IPv6 is enabled
      make netif_ip4_addr/netmask/gw macros return constant IP address pointers
      make netif_ip4_* get accessors return const pointers
      snmp: fixed ugly inheritance implementation by aggregating the "base 
class" (struct mib_node) in all derived node classes to get more type-safe code
      dns_found_callback should take const IP addr
      fixed bug #46089: snmp: race condition on length change between 
get_object_def() and get_value()
      snmp: eliminiate mib_ram_array_node (it is not necessary: to the agent, 
the nodes may be const since the actual mib implementation knows the structures 
behind the nodes which do not have to be const)
      snmp mib2: more nodes can be const
      Remove global variable used in macros, it can be declared locally.
      Export tcp_pcb_lists from tcp.c - can be used in SNMP code to implement 
MIB2 tcp connection tables
      Implement possibility to declare private memory pools. This is useful to 
decouple some apps from the core (SNMP stack) or make contrib app useage 
simpler (httpserver_raw) .
      Completely decouple SNMP stack from lwIP core by using private memory 
      Rename snmp_mib2.h to snmp.h so source compatibility for user netif 
implementations is preserved
      Move some prototypes from snmp_msg.h to snmp.h because they are used by 
user code
      Add note about moved SNMP stack to CHANGELOG
      Also fix compile of ethernetif.c after SNMP refactoring
      Implement API function to iterate over stable ARP table entries
      Move httpd from contrib to main git repository
      Add Filelists.mk file containing all LWIP files. May be useful for client 
      Add iperf to apps;
      lwiperf: TX buffer can be static
      snmp.h: Fix header include guard
      snmp.h: Add missing #if around function prototypes
      Update header include guard naming of all apps headers
      Forgot to remove two SNMP options from opt.h that are now in 
      Fix compile when netconn api is disabled but socket api is enabled.
      makefsdata.c: Adapt to new header include location
      Add missing comment for MIB2 callbacks in opt.h
      SNMP agent rewrite
      Minor SNMP compile and comment fix
      Add SNMP agent note in CHANGELOG
      C-Style comments only, please
      Some SNMP MIB2 code layout cleanups
      SNMP: Fix compile when IPV4 is not enabled
      SNMP: Cleanup snmp IP helper functions, add IPv6 support
      Start working on udpEndpointTable
      Add some comments and OID checks to udpEndpointTable
      SNMP: Two bugfixes in SNMP GET requests
      SNMP: Another release_instance call bugfix in SNMP Get/GetNext requests
      SNMP: Finish implementing UDP-MIB. Add unsupported udpHCInDatagrams and 
udpHCOutDatagrams items.
      Add comment about udpEnpointTable non-accessible columns
      SNMP RAW API: Listen on IPV6 UDP port, too
      SNMP MIB2: Update UDP endpoint table variable names
      SNMP MIB2: Implement tcpListenerTable
      SNMP MIB2: Implement tcpConnectionTable
      SNMP: Move common MIB code into snmp_core.c helper functions
      Fix C++ style comment in snmp_asn1.h
      Fix compile of SNMP on MSVC
      snmp_traps.c: #if 0 ... #endif around C++ style comments does not work - 
remove the code completely for now
      SNMP: Fix shadowing warning pointed out by Erik Ekman
      SNMP: Fix shadowing warning in another file. Pointed out by Erik Ekman.
      Update some MIB2 comments
      Merge branch 'master' of ssh://git.sv.gnu.org:/srv/git/lwip
      SNMP: SMEMCPY should only be used when size is known at compile time
      Merge branch 'master' of ssh://git.sv.gnu.org:/srv/git/lwip
      SNMP: Found the correct cause of a memory leak
      SNMP: Table API cleanup
      SNMP: Add MIB compiler (code generator)
      SNMP: Add more MIB compiler info
      SNMP MIB compiler: Add ability to generate UDP-MIB and TCP-MIB
      Update SNMP README - add correct SharpSnmpLib reference
      MIB compiler: Eliminate the need for a cast
      SNMP MIB Viewer: Adapt to changes in SNMP framework that were required to 
compile UDP-MIB and TCP-MIB
      Add .gitignore (currently including SNMP MIB compiler binaries)
      Add .userprefs file to .gitignore
      SNMP: Add some basic MIBs
      SNMP MIB Compiler: Deal with multiple OID assignments in a MIB file
      SNMP MIB Compiler: Resolve MIB files in a case-insensitive way
      SNMP MIB Compiler: Add example command line to compile UDP-MIB
      SNMP MIB Compiler: Treat read-create nodes as read-only
      SNMP MIB Compiler: Update project settings, fix wrong output path in 
      Fix bug #46837 Don't send dhcp_release message in dhcp_release function
      SNMP: Fix InetAddress octet string encoding (length was missing)
      Apply patch #8854: dns: Simplify #ifdef guard around 
dns_gethostbyname_addrtype from Axel Lin
      SNTP: Add function to get operating mode
      SNMP MIB2: Add unsupported snmpSilentDrops and snmpProxyDrops objects
      SNMP: Fix variable naming in snmp_pbuf_stream
      SNMP: Convert SNMP error #defines to an enum and fix type mismatches 
discovered by conversion; Convert SNMP_NEXT_OID_STATUS to an enum
      SNMP: Add missing closing braces in #ifdef __cplusplus case
      Private mempools: Add missing include for LWIP_MEM_ALIGN_SIZE in 
      SNMP: Update threadsync not to use mem_malloc - memory can be 
instantiated statically since it is only needed once per threadsync instance
      pbuf: Make pbuf_skip function public, so it can be used in SNMP code
      snmp_pbuf_stream: Reduce code duplication. Most is already implemented in 
lwIP pbuf framework.
      SNMP: Implement basic SNMPv1 traps; Remove IPv6 support in RAW API again 
until there is a clean solution for dual-stack UDP
      SNMP: Add some comments in thread sync code
      SNMP: Remove comment about traps in README
      SNMP: Fix compile in dual-stack configuration
      SNMP: Correctly name a global variable
      ICMP: Fix unused value in icmp_input (found by Coverity)
      ICMP: Fix responses were always sent to default netif because of 
uninitialized source IP (found by Coverity)
      Netconn: Fix potential NULL pointer dereference (found by Coverity)
      DNS: Fix potential array out of bounds access. Variable nanswers may 
contain bogus values. (found by Coverity)
      mem.c: Fix unintended sign extension (found by Coverity)
      snmp_threadsync.c: Fix ignored return value of mutex/semaphore creation. 
Found by Coverity.
      snmp_msg.c: Fix unchecked return value. Found by Coverity.
      etharp.c: Make MAX_AGE of an ARP entry configurable
      Found some struct instances that can be const
      Let MIB compiler generate const structs, too (see last commit)
      Fix netconn access after it was freed in lwiperf - found by Coverity
      Fix tcp pcb access after it was freed in tcp.c - found by Coverity
      PPP: Init SNMP members of PPP netifs
      Reduce usage of PCB IP version flag in raw and tcp code. Maybe we can 
figure out a good way for dual-stack UDP when we manage to remove the flag 
(nearly) entirely from the code.
      Reduce usage of PCB IP version flag in UDP code. Maybe we can figure out 
a good way for dual-stack UDP when we manage to remove the flag (nearly) 
entirely from the code.
      Eliminate IP_PCB_IPVER_INPUT_MATCH macro
      Eliminate IP_PCB_IPVER_EQ macro
      Reduce PCB_ISIPV6 macro usage some more
      Review with Simon: Remove dead code (since 2003)
      Review with Simon: Init TCP/UDP/RAW PCBs with correct IP types in _new 
functions to make my changes work correct
      Together with Simon: Eliminate last instances of isipv6 member in pcbs;
      Change signature of ip_output, ip_output_if, ip_output_if_src, 
ip_output_hinted, ip_route, ip_netif_get_local_ip, ip_route_get_local_ip and 
tcp_eff_send_mss not to take an isipv6 parameter. Use the IP version of the 
destination address instead.
      Cleanup NETCONNTYPE_ISIPV6 macro
      Two compile fixes after eliminating isipv6 member in PCBs
      Change TCPIP INPKT API message to take a function pointer. Allows 
integration of other protocols without extending lwIP core (e.g. 6LoWPAN)
      Eliminate TCPIP_MSG_INPKT_PPPOS message type.
      Add generic tcpip_inpkt function that can be called to make last changes 
really usable
      slipif: Fix compile when only IPv6 is enabled
      Initial import of Ivan Delamer's 6LoWPAN implementation with slight 
modifications to allow compiling in IPv6 only mode
      Add note to CHANGELOG about 6LoWPAN
      Eliminate tcpip_pppos_input function
      Use netif_input_fn typedef instead of creating a new one in tcpip.h
      Fix shadowing warning in lowpan6.c - found by Erik Ekman's Travis CI
      snmp_traps.c: Fix compile on Win32 - missing string.h include
      I don't know why I have a diff here (I guess line ending problems like in 
my last lowpan6.c commit)...
      Add note about 6LoWPAN in src/netif/FILES
      lwip/stats.h: Add some comments to MIB2 variables to explain correct 
usage a bit
      lowpan6.c: Implement SNMP counters
      sys.h: Avoid un #defined LWIP_COMPAT_MUTEX macro (usually #defined in 
      udp.c: Simplify and cleanup input PCB matching
      udp.c: Further udp_input simplifications
      Implement UDP dual-stack PCB support
      minor: Cleanups in raw/tcp/udp code by using macros and reducing #ifdefs
      udp: udp_send and udp_send_chksum: Check for PCB NULL pointer and PCB 
must not be the new IP_ANY_TYPE, but a real IPv4 and IPv6 address
      No need for dual-stack code in ip4.c and icmp.c -> use ip4 only versions
      Fix compile when PPPOE is enabled
      Cleanup: Create new file ip.c and move dual-stack code from ipv4 and ipv6 
folder in there
      Add compatibility macro for udp_new_ip6()
      Rework DHCP PCB handling: Old code registered one UDP PCB per netif where 
DHCP was active and there was a special case in udp_input() for this. New 
implementation uses one PCB for all netifs and removes special case in 
      Implement support for IP_ANY_TYPE in SNMP
      Implement support for UDP IP_ANY_TYPE in netconn API
      Implement dual-stack in SNMP for netconn API
      Minor: Avoid ip_input() call indirection for when only IPv4 or IPv6 are 
      Apply patch from Simon to fix buffer overflow handling tcp_in.c which was 
discovered by Coverity
      lowpan6: Fix incorrect array bounds check (found by Coverity)
      SNMP MIB2: Fix temporary OID buffer size some tables have been too small
      udp: Fix possible NULL pointer dereference, update comments
      ip_addr.h: Update ip_addr_copy macro to correctly copy new IP_ANY_TYPE 
      TCP: Implement dual stack support using new IP_ANY_TYPE introduced at UDP
      raw.c: Avoid NULL pointer dereference
      Implement new style TCP dual-stack in netconn API
      Adapt HTTP server to new dual-stack API
      Implement dual-stack in lwiperf, netbiosns and sntp
      Compile fix lwiperf.c after my last change
      Simon says: dual-stack does not work on iperf because there IPs encoded 
in the payloads and IPv6 is not supported there in the current lwIP 
implementation -> revert
      Apply patch from Derek Pravala: Fix segfault in ip6_route when there is 
no default netif
      Add compatibility macro for tcp_new_ip6()
      Minor code cleanup in udp.c
      Implement dual-stack in RAW API in the same way as in UDP and TCP
      Fix comment in tcp.c
      api_lib.c: Don't propagate NULL pointers as ip address to subsequent 
      netconn API: Reimplement dual-stack API to be socket-like.
      snmp_netconn: Use new "socket-like" netconn API dual-stack implementation
      Fix compile error in raw.c (possible unused arg)
      Fix my previous netconn_do_listen changes in lwip_netconn_do_listen
      Apply patch from Elias Önal to fix a few datatypes in SNMP MIB2
      Fix ip_addr_cmp to correctly compare IPADDR_ANY_TYPE ips
      snmp: Fix snmp_oid_to_ip for IPADDR_ANY_TYPE ips
      netconn: Create API macros to get/set IPV6ONLY flag
      netifapi: Do not pass NULL pointers for IP addresses to subsequent 
      ip_addr.h: Use IP_GET_TYPE macro in other macros
      netifapi.c: Fix compile when IPv4 is not enabled
      Implement generic API message handling
      Decouple tcpip.c/tcpip_priv.h from PPP API
      Decouple tcpip.c/tcpip_priv.h from netconn API
      Reduce includes of tcpip_priv.h
      Minor cleanups in #includes and comments
      Fix compile with LWIP_TCPIP_CORE_LOCKING
      netifapi: Eliminate wrapper struct netifapi_msg and rename 
netifapi_msg_msg to netifapi_msg
      tcpip_send_api_msg function is only needed in non-core-locking mode
      Add missing #include in memp.c
      Fix wrong usage of LWIP_NETCONN_SEM_PER_THREAD macro in api_msg.h
      SNMP: Support LWIP_TCPIP_CORE_LOCKING sync method
      Fix bug #47370: Port DNS client to IPv6
      tcpip.c: Implement an easier way for TCPIP API calls - client code does 
not have to deal with semaphores and core locking any more
      Port netifapi to new simple tcpip API call method
      Port PPP API to new simple tcpip API call method
      Minor TCPIP API call functions cleanup
      pppol2tp.c: Avoid an #ifdef - there is a new UDP API function that can be 
used here
      tcpip API calls: Implement LWIP_NETCONN_SEM_PER_THREAD support for ALL 
API calls
      LwipMibCompiler: MibTree: Adapt coding style to the rest of the C# project
      LwipMibCompiler: Don't generate empty root nodes
      LwipMibCompiler: Add windows command line example
      Fix bug #47426 incorrect typecast in pppapi.c
      Add some comments to functions and #defines. According to Simon, LWIP 
core locking is not experimental any more.
      tcpip.c tcpip_send_api_msg: Handle core locking case internally
      netconn API: Cleanup, remove lots of #defines, take advantage of new 
tcpip_send_api_msg function feature to abstract core locking away
      netconn API: Remove api_msg wrapper struct, it is not needed any more
      LwipMibCompiler: Set MIB compiler as startup project instead of MIB viewer
      Accidentally committed my MIB compiler test, sorry!
      Rename tcpip_send_api_msg to tcpip_send_msg_wait_sem (hopefully a little 
bit clearer name)
      Readd struct protoype in api.h
      Rename tcpip_apimsg to netconn_apimsg (better suits naming convention in 
      PPPAPI: Don't return garbage in *_create calls in case tcpip_api_call() 
      Delete script to compile MOBA MIB
      Fix netconn API in core locking mode
      Update git ignore list for LwipMibCompiler
      udp.c: Allow udp_connect() on a dual-stack UDP PCB (type 
IPADDR_TYPE_ANY). This may be useful in some applications - no need to keep 
separate storage for target IP.
      Fix newly introduced tcpip_api_call did not return correct return value
      Cleanup and simplify tcpip_api_call() implementation a bit
      SNMP: Move MIB2 SNMP subtree to separate file to get snmp_mib2.c smaller
      SNMP: Move MIB2 UDP subtree to separate file to get snmp_mib2.c smaller
      SNMP: Move MIB2 TCP subtree to separate file to get snmp_mib2.c smaller
      SNMP: Move MIB2 ICMP subtree to separate file to get snmp_mib2.c smaller
      SNMP: Move MIB2 interfaces subtree to separate file to get snmp_mib2.c 
      SNMP: Move MIB2 system subtree to separate file to get snmp_mib2.c smaller
      SNMP: Move MIB2 ip subtree to separate file to get snmp_mib2.c smaller
      SNMP: Cleanups after my last changes
      SNMP: Reduce #includes of snmp_mib2.c
      Fix compile of snmp/snmp_mib2.c - don't know why I didn't notice 
      Fix bug #47556: snmp agent uses wrong err 'ERR_ABRT' - use ERR_ARG as old 
code. Was tested to be != ERR_OK only, so actual code did not matter
      Update changelog
      Partly apply Elias Oenal's SNMP V3 patch. There is more to come, the work 
is incomplete at the moment and does not compile when LWIP_SNMP_V3 is enabled.
      Partly apply Elias Oenal's SNMP V3 patch, part 2: Add SNMPv3 support 
routines. Crypto does not work yet.
      Fix SNMP compile on Win32 due to missing #includes
      SNTP: Add function to get SNTP enabled state
      Fix #define IPADDR_STRLEN_MAX in IPv6 only and dual-stack case
      Fix shadowing warning (when compiling in C++) in TCPIP call API. Reported 
by Freddie Chopin.
      Fix bug #47592: pppapi_do_ppp_set_notify_phase_callback has invalid 
parameter type
      Commit Elias Oenal's SNMPv3 work, with some restructuring:
      Fix build when mbedtls is not available :-) Thanks Erik!
      Fix build when snmpv3 is not available. One more thanks, Erik :-)
      Apply [patch #8969] from Freddie Chopin: Constify netif in 
      snmpv3_dummy.c: Add newline at end of file
      Avoid divisions / module in SNMP code on stupid compilers
      Create new IP_IS_V4 macros and use them at instead of !IP_IS_V6 - since 
we now have an IPADDR_ANY_TYPE, just checking for !V6 does not mean it is V4
      two minor fixes in snmpv3_mbedtls.c
      SNMPv3: Make receiving DES encrypted frames work, sending still fails 
because of broken padding
      snmpv3_mbedtls.c: snmpv3_crypt() is only needed when LWIP_SNMP_V3_CRYPTO 
is enabled
      Fix bug #47749: #define ETHARP_TRUST_IP_MAC does not compile
      Move PPP API files to netif/ppp subdir
      Work on task #13907 PPP cleanups: Move PPP options from opt.h to 
dedicated ppp_opts.h file
      Fix projects without PPP do not compile any more
      Move some definitions from tcpip_priv.h to better places since they are 
of "public interest" (LWIP core locking mode, watchdog trigger)
      task #13907: PPP cleanups: Move PPP mempools out of lwIP core to PPP code
      Fix compile when PPP is not enabled
      More PPP cleanups
      Fix compile of api_lib.c when LWIP_MPU_COMPATIBLE is enabled
      tcpip_priv.h: Add helper macros for APIs that use private mempools
      tcpip_priv.h: More flexible API by including return value in 
      tcpip_priv.h: More API improvements
      Fix bug #47507: PPP API does not support LWIP_MPU_COMPATIBLE
      Fix compile when PPP is not enabled - Macro MEMP_NUM_PPP_PCB always needs 
to be #defined
      Fix compile of Simon's last change on MSVC
      Fix compile warnings (==errors) in new httpd
      Fix bug #47446: tcpip api calls: fail if mbox is invalid instead of 
returning an error
      Work on bug #47512: MPU_COMPATIBLE may fail on empty pool (not finished!)
      tcpip_send_msg_wait_sem() can return void now due to my last changes
      Revert "tcpip_send_msg_wait_sem() can return void now due to my last 
      Fix compile errors found by Erik Ekman's Travis-CI
      Work on bug #47512: MPU_COMPATIBLE may fail on empty pool (still not 
      Remove netconn_recved() call - it was only needed in sockets 
implementation and contributed to bug #47512
      Fix bug #47512: MPU_COMPATIBLE may fail on empty pool
      Fix bug #47641: lwIP would accept IPv6 source addresses from the network 
that are mapped IPv4 adresses

Dirk Zigelmeier (1):
      netif_get_ip6_addr_match/netif_add_ip6_address must take a const ip6addr 
to be usable

Edgar Bonet (3):
      SNMP, Missing const qualifier on internet_nodes[] in mib2.c.
      sockets: do not assume defined(FD_SET) implies defined(FD_SET_VAL).
      Fix documentation of TCP_WRITE_FLAG_MORE.

Erik Ekman (19):
      Add unit tests for DHCP
      PPP: Add option to skip FCS table
      Don't mark arrays as const since they are modified by the test
      Remove newlines in LWIP_ERROR calls
      netif: Update header file documentation
      Restore DHCP relay test packet numbers
      err, debug: add missing ERR_ALREADY to lwip_strerr()
      Fix edge case in pbuf_take_at()
      test_tcp_oos: Remove last_dropped variable, never read
      test_etharp: Fix warning about braces
      Fix tests after ip4_current_header() made const
      Add functions to join/leave IGMP group by netif
      Add functions to join/leave v6 multicast group by netif
      mld6: Simplify join/leavegroup()
      Remove old comments about DHCP setting netif up
      PPP: Fix shadowing of global declaration
      PPP: Fix shadowing of global declaration
      PPP: Fix shadowing of global declaration
      PPP: Fix shadowing of global declaration 'sha1'

Fatih Aşıcı (1):
      snmp: Fix a memory leak

Fred Baksik (2):
      LWIP_PLATFORM_DIAG: check if LWIP_PLATFORM_DIAG is defined as needed.

Freddie Chopin (9):
      SNMP: source of ocstrncpy() and objectidncpy() may be const
      SNMP: mib-2.system.sysDescr is read-only, so add const qualifiers to 
functions and pointers
      SNMP: use MEMCPY() instead of ocstrncpy() and objectidncpy()
      SNMP: mib-2.system.sysObjectID is read-only, so make the object "static 
const" and modify just the pointer; snmp_get_sysobjid_ptr() and 
snmp_set_sysobjid() take a pointer to "const" object now
      snmp_trap_header_sum(): use strlen() to get the length of community string
      msg_in.c, snmp_msg.h: don't hardcode size of community string
      msg_in.c, msg_out.c, snmp_msg.h: rename snmp_publiccommunity to 
snmp_community, update descriptions
      msg_in.c, snmp_msg.h: convert snmp_community to a modifiable pointer
      msg_in.c, msg_in.c: add snmp_get_community() and snmp_set_community() 

Grant Erickson (3):
      autoip: add autoip_remove_struct
      This patch addresses the following error when compiled against clang/LLVM 
3.3 with -std=c++11:
      Add RFC3542-style checksum compuation on raw, IPv6 sockets

Greg Renda (1):
      fixed bug #38210 (ip reassembly while remove oldest datagram)

Henrik Persson (2):
      Segfault in dhcp_parse_reply if no end marker
      Fix corner case with dhcp timeouts

Ivan Delamer (51):
      Fixed bug in serialization of IPv6 addresses.
      Use target address as source address in IPv6 neighbour advertisement
      Add cast to IP6_ADDR_BLOCKx
      Initialize recvmbox size for undefined netconn type, to supress
      Fix bug #34526: nd6_queue_packet() frees too much if out-of-memory
      handle NULL when parsing IPv6 address (check for formatting)
      Conditional compilation in ppp.c according to PPP_ options.
      Use pppRecvWakeup only if PPP_INPROC_OWNTHREAD is defined.
      Generate ICMPv6 responses from a context other than input callback
      Add IPv6 timeouts to check for MEMP_NUM_SYS_TIMEOUT).
      Added parenthesis to netif/ip6 macros.
      bug #34846: time-exceeded was sometimes not sent to original fragment
      Allow unicast NA messages without LLA option, in accordance to RFC2461
      Set ip_data.current_netif earlier to allow ICMPv6 packets in ip6_fwd.
      Fixed error in calculating some IPv6 option header lengths.
      Support IP_HDRINCL in ip6_output() and ip6_output_hinted(),
      Check that pbuf_header succeeds in IPv6 reassembly.
      Early exit when checking if ip6 reassembled packet is valid.
      Check arguments in nd6, and some other minor fixes nearby.
      Missing declarations in supporting IP_HDRINCL.
      Disable leftover ND6 queueing code when !LWIP_ND6_QUEUING.
      Support single-packet queueing in ND6 (similar to ARP), when
      Fix bug #36391 - inet6_addr_to_ip6addr()
      fixes bug #36389: Use IPv6 Src Address of Echo Response as Destination
      In ip6_input(), accept solicited node packets that match the receiving
      Fixed #define that was commited by mistake.
      In ip6_input(), do not accept link-local packets on netifs other than
      Allow setting/getting socket option IPV6_V6ONLY for stream sockets
      Add a "NULL" output function for ipv6 by default, to avoid NULL
      Fixed typo in previous commit.
      Fix bug #37959: ip6_debug_print prints plen, nexth, hoplim in wrong
      Removed unused netif flag for point to point connections
      Removed unused netif flag for DHCP
      Modified netif flag values.
      fixed bug #44565: PPPOS support in tcpip thread breaks SLIP
      fix ip6 part of bug #43904: ip_route() and ip6_route() must detect
      added macros for handling IPv6 multicast filter callback.
      Pending fix for bug #37993: IPv6 Does Not Subscribe to Link-Local
      fixed bug #39226: Validity of netif IPv6 address is not always checked
      fixed bug #42885 nd6_reachability_hint() accepts an address of an
      fixed bug #43095. Check actual link-layer address option length, versus
      fixed bug #43843: ip6_addr_ismulticast_ doesn't allow for transient
      fix bug #44578: Build fails for IPv6-only configuration
      fix bug #44586: nd6_send_rs() pbuf size error
      Small bug fix in ipaddr_ntoa_r when IPv4 and IPv6 are enabled.
      Bug fix: properly use unspecified source address for router solicitation
      Only send RS messages if we have a LL address in some state other than
      changes to ip6addr_aton() to avoid crash with some ill-formatted
      Improved IPv6 address formatting in ip6addr_ntoa_r().
      Remove 6LowPAN flag that will not be used.

James Smith (2):
      Applied patch by James Smith to implement IPV6_V6ONLY support in
      Fix bug #36857: tcp_listen_dual_with_backlog() only works with ANY

Jan Breuer (4):
      LwipMibCompiler: Fix generating SnmpScalarArrayNode callbacks
      LwipMibCompiler: Remove false positive root entities
      LwipMibCompiler: preserve upper case in comments
      LwipMibCompiler: Don't preserve upper case on generated variables

Jay Logue (1):
      Enable support for IPv6 loopback

Joel Cunningham (23):
      fixed bug #43028 (IP_MULTICAST_TTL affects unicast datagrams)
      Fix netbuf_destport() when LWIP_CHECKSUM_ON_COPY is not enabled
      netif, loopif: set link up on loopback interface
      IPv6 sockaddr clean ups
      Add multicast support to loopif
      Fix typos from task #12243
      Sockets: add sendmsg
      Hook up TCP cachehit stat
      Add writev function
      Update socket options comments
      Update snd_queuelen comment documentation
      Correct comment word usage in ip4_frag.c
      Fix blocking close with LWIP_SO_SNDTIMEO
      Fix type on snmp_set_test_ok to be snmp_err_t
      Define LWIP_CHKSUM_COPY_ALGORITHM when port provides LWIP_CHKSUM_COPY 
      Update lwip_selscan documentation
      Optimize lwip_selscan()
      Fix bug in FIONREAD handling in LINUXMODE
      Allow backlog to be updated
      Optimize sendmsg UDP pbuf chain creation
      don't fail closing a socket/netconn when failing to allocate the FIN 
segment; blocking the calling thread for a while is better than risking leaking 
a netconn/socket (see bug #46701)
      Fix year in recent CHANGELOG entries
      udp: use netif addr as src for multicast sockets

Mark Lakata (1):
      PPP, IAR EWARM won't compile ppp-new due to keyword clash

Philip Gladstone (1):
      Patch #8360 (Speed up the acquisition of SLAAC addresses) - adapted to 
bug #43784

Philipp Toelke (1):
      httpd: fix sending of data from send_headers

Robert Szewczyk (1):
      pbuf_take: make it comply with API specifications

Simon Goldschmidt (192):
      Fixed bug #33802 tcpip: tcpip_callbackmsg_new sets msg->type to wrong type
      Fixed bug #33801 Corruption of nd6 tables
      Fixed bug #33804 LWIP_IPV6_MLD #define missing from mld6.c
      (bug #30185): added LWIP_FIONREAD_LINUXMODE that makes ioctl/FIONREAD 
return the size of the next pending datagram.
      fixed bug #33551 (ARP entries may time out although in use) by sending an 
ARP request when an ARP entry is used in the last minute before it would time 
      ETHARP_SUPPORT_STATIC_ENTRIES: don't need the member 'static_entry' on 
struct etharp_entry, we can use 'state' to mark them as static
      ETHARP_STATE_STABLE_REREQUESTING: no need for member 'netif' in 'struct 
etharp_entry' if we re-request only from etharp_output() and use etharp_tmr() 
to reset the state of such entries to ETHARP_STATE_STABLE: that way, we also 
only send one ARP request per ARP_TMR_INTERVAL, but only if the entry is really 
still used.
      correctly prefix all functions with 'etharp_' (also static functions)
      bug #33634 ip_forward() have a faulty behaviour: Added pbuf flags to mark 
incoming packets as link-layer broadcast/multicast. Also added code to allow 
ip_forward() to forward non-broadcast packets to the input netif (set 
      freeing ooseq pbufs when the pbuf pool is empty implemented for 
NO_SYS==1: when not using sys_check_timeouts(), call PBUF_CHECK_FREE_OOSEQ() at 
regular intervals from main level.
      forgot CHANGELOG: freeing ooseq pbufs when the pbuf pool is empty 
implemented for NO_SYS==1: when not using sys_check_timeouts(), call 
PBUF_CHECK_FREE_OOSEQ() at regular intervals from main level.
      init.c: changed some checks from runtime to compiletime (had to adapt 
some defines in ip.h for that)
      fixed bug #31084 (socket API returns always EMSGSIZE on non-blocking 
sockets if data size > send buffers) -> now lwip_send() sends as much as 
possible for non-blocking sockets and only returns EWOULDBLOCK if the buffers 
are full
      Removed commas from the end of enum lists
      Fixed some C compiler warnings
      Prevent non-static function that is not declared in header file
      IPv4: splitted IPv4 header fields version/len and tos, made macros depend 
on BYTE_ORDER to prevent unnecessary calls to htons()
      ETHARP_SUPPORT_VLAN: add support for an external VLAN filter function 
instead of only checking for one VLAN (define ETHARP_VLAN_CHECK_FN)
      adapted unit tests to changes after adding IPv6 support
      Fixed complier error for CHECKSUM_CHECK_TCP==0
      fixed bug #33962 TF_FIN not always set after FIN is sent. (This merely 
prevents nagle from not transmitting fast after closing.)
      fixed bug #34121 netif_add/netif_set_ipaddr fail on NULL ipaddr
      fixed bug #34122 dhcp: hostname can overflow
      fixed bug #34112 Odd check in pbuf_alloced_custom (typo)
      fixed bug #34057 socklen_t should be a typedef
      fixed bug #33956 Wrong error returned when calling accept() on UDP 
      fixed bug #34124 struct in6_addr does not conform to the standard
      added netif remove callback (bug #32397)
      fixed bug #34111 RST for ACK to listening pcb has wrong seqno
      Merge branch 'master' of ssh://git.sv.gnu.org/srv/git/lwip
      fixed bug #31809 LWIP_EVENT_API in opts.h is inconsistent compared to 
other options
      netconn_alloc(): return on invalid protocol instead of initializing mbox 
size to 0
      unit tests: correctly handle small PBUF_POOL_BUFSIZE settings, prevent 
NULL-pointer-deref. (ooseq test is still not running correctly...)
      fixed bug #33952 PUSH flag in incoming packet is lost when packet is 
aggregated and sent to application
      DHCP uses LWIP_RAND() for xid's (bug #30302)
      Make LWIP_RAND optional (useful for small targets)
      fixed bug #34072: UDP broadcast is received from wrong UDP pcb if udp 
port matches
      Fixed typo: TCP_SNDQUEUELOWAT must be less than TCP_SND_QUEUELEN (as 
checked in init.c), not greater
      lwip_accept: fixed warning about accessing uninitialized 'port' when 
SOCKETS_DEBUG is enabled
      Added a config option to randomize initial local TCP/UDP ports (so that 
different port ranges are used after a reboot; bug #33818; this one added 
tcp_init/udp_init functions again);
      use pcb->mss instead of TCP_MSS for preallocate mss-sized pbufs (bug 
      nd6: use a static buffer to process RA options instead of using 
      splitted ppp.h to an internal and external header file to get a clear 
separation of which functions an application or port may use (task #11281)
      Converted runtime-sanity-checks into compile-time checks that can be 
disabled (since runtime checks can often not be seen on embedded targets)
      fixed default value of TCP_SND_BUF to not violate the sanity checks in 
      Implemented timeout on send (TCP only, bug #33820)
      Corrected fix for bug #34072 (UDP broadcast is received from wrong UDP 
pcb if udp port matches): pcbs bound to IPADDR_ANY did not receive broadcasts 
any more (bug #34294)
      fixed bug #34355: nagle does not take snd_buf/snd_queuelen into account
      Fixed tcp_accepted define (need brackets around the parameter)
      fixed bug #34360 tcp_shutdown: RST on unacked is not send when shutting 
down both rx AND tx
      fixed bug #33871: rejecting TCP_EVENT_RECV() for the last packet 
including FIN can lose data
      Merge branch 'master' of ssh://git.sv.gnu.org/srv/git/lwip
      Reverted invalid fix for invalid bug #34360 done yesterday...
      fixed bug #34377 MEM_SIZE_F is not defined if MEM_LIBC_MALLOC==1
      fixed unit tests (one TCP test failed, removed comma at the end of array 
      added unit tests for data-after-FIN
      fixed bug #28288: Data after FIN in oos queue
      Implemented limiting data on ooseq queue (task #9989) (define 
TCP_OOSEQ_MAX_BYTES / TCP_OOSEQ_MAX_PBUFS in lwipopts.h), added unit test for 
this new feature
      Tried to fix bug #32417 ("TCP_OVERSIZE seems to have problems with 
(fast-)retransmission"): Reset pcb->unsent_oversize in 2 more places...
      fixed bug #34447 LWIP_IP_ACCEPT_UDP_PORT(dst_port) wrong
      fixed bug #34426: tcp_zero_window_probe() transmits incorrect byte value 
when pcb->unacked != NULL
      Added unit test case for persist timer / zero window probes
      slightly rearranged freeing an acked segment to prevent keeping the 
reference too long
      added unit test cases for seqno wraparound on fast-rexmit and rto-rexmit 
(unsent/unacked lists must be correctly sorted)
      fixed bug #34534: Error in sending fragmented IP if MEM_ALIGNMENT > 4
      fixed bug #34540: compiler error when CORE_LOCKING is used and not all 
protocols are enabled
      fixed bug #34541: LWIP_U32_DIFF is unnecessarily complex: removed that 
      fixed bug #34517 (persist timer is started although no zero window is 
received) by starting the persist timer when a zero window is received, not 
when we have more data queued for sending than fits into the window
      fixed bug #34569: shutdown(SHUT_WR) crashes netconn/socket api
      fixed bug #34587: TCP_BUILD_MSS_OPTION doesn't consider netif->mtu, 
causes slow network
      fixed default values of TCP_SNDLOWAT and TCP_SNDQUEUELOWAT for small 
windows (bug #34176 select after non-blocking send times out)
      fixed bug #34592: lwip_gethostbyname_r uses nonstandard error value, 
removed those unused (nonstandard?) error values from arch.h
      Changed C++ comments to C style
      fixed bug #38066 Raw pcbs can alter packet without eating it: added 
assertion to check that p->payload is unchanged
      fixed bug #37705 Possible memory corruption in DNS query
      fixed bug #37705 Possible memory corruption in DNS query
      Added additional sanity check that all headers (without IP- or TCP 
options) fit into the first pbuf.
      Fixed bug #37893 Unused variables in tcp_out (and in udp.c/.h)
      fixed more unused variables
      fixed bug #38097 pbuf_free_ooseq() warning
      fixed bug #37665 ip_canforward operates on address in wrong byte order
      Removed the demand to post trivial patches to lwip-users, things keep 
getting lost there.
      fixed bug #38701 (wrong comment on tcp_pcb::snd_queuelen
      Fixed bug #38586
      fixed bug #38526 Coverity: Recursive Header Inclusion in ip6.h
      fixed possible division by zero
      patch #8008 Fix a potential null pointer dereference in assert
      patch #8030: fixed spelling of "received"
      - removed include instead of commenting it out;
      bug #37585/task #12600: fixed struct in6_addr.s6_addr to conform to spec
      partially fixed bug #37585: IPv6 compatibility (in socket structs)
      fixed bug #39898 tcp_fasttmr() possible lock due to infinte queue process 
      bug #41188 Alignment error in memp_init() when MEMP_SEPARATE_POOLS==1
      fixed bug #41041 Potential use-after-free in IPv6 reassembly
      Added an assert that should trigger bug #41009 (IPv6 reassembly broken on 
64-bit platforms)
      updated CHANGELOG
      patch by Thomas Faber: patch #8241: Fix implicit declaration of ip_input 
      Fixed chrysn's patch: it only works for NO_SYS :-(
      SNMP: fixed typo: snmp_set_sysdesr -> snmp_set_sysdescr
      Updated CHANGELOG
      Patch #7904 by Grant Erickson: Add mnemonics for IPPROTO_{ICMP,ICMPV6}
      Updated CHANGELOG
      patch #7912 by Grant Erickson: Add a macro for introspecting the IPv6 
loopback address.
      Added IPv6 loopback address to loopback-netif, fixed last commit
      Fixed LWIP_IPV6==0
      patch #8160 (by Valery Ushakov): Simplify ip6_addr_set_solicitednode() 
and ip6_addr_cmp_solicitednode().
      patch #8027: Completed HW checksuming for IPv4 and IPv6 ICMP's
      patch #8237 by Brian Fahs: tcp_rexmit_rto fails to update 
pcb->unsent_oversize when necessary
      patch #8021 Add INET[6]_ADDRSTRLEN Preprocessor Definitions If Not 
Previously Defined
      patch #8009 by chrysn: stats_display_igmp used by ml6d
      Updated CHANGELOG
      patch #7920 thread-safe api dhcp calls for dhcp_infor, dhcp_renew and 
      patch #6537/#7858: TCP window scaling support (OOS queueing still needs 
special handling)
      Added .gitattributes to normalize CRLF
      Merge branch 'master' of git.sv.gnu.org:/srv/git/lwip
      TCP window scaling: change tcp_pcb::acked to u32_t when window scaling is 
enabled to prevent an overflow when more than 64 Kbytes are ACKed
      Added comments to clarify the LWIP_TCP_TIMESTAMPS option.
      Fixed forgotten brackets in last commit
      Fixed misleading comment on sys_untimeout()
      Another fix to window scaling: support queueing more than 64 KByte in 
ooseq data
      Merge branch 'master' of git.sv.gnu.org:/srv/git/lwip
      Unit test patch by Erik Ekman: use macro to store correct testcase name
      Minor fixes to init.c preprocessor checks
      Fixed typo.
      Patch #7815 by James Smith: added inet_ntop/inet_pton
      patch #7885: modification of api modules to support FreeRTOS-MPU (don't 
pass stack-pointers to other threads) (based on patch by Artem Pisarenko)
      Minor: coding style cleanups...
      patch #7993: Added support for transmitting packets with VLAN headers via 
hook function LWIP_HOOK_VLAN_SET and to check them via hook function 
      Added missing IPPROTO_RAW
      fixed bug #41499 netconn::recv_avail can overflow
      netconn::recv_avail: forgot one line
      IGMP: fixed !define LWIP_RAND case
      Fixed comment on LWIP_HAVE_LOOPIF
      fixed bug #40050 SNMP problem with MIB arrays > 255
      fixed bug #39882 No function shall set errno to 0
      Fixed bug #39718: disconnecting an UDP socket reports an error
      fixed bug #39683 Assertion "seg->tcphdr not aligned" failed with 
      Fixed IPv6 raw checksumming after a hint from Philip Gladstone
      Fixed netconn_gethostbyname for LWIP_MPU_COMPATIBLE: removed invalid 
check on 'addr', copy 'name' since it could be located on the caller's stack
      fixed bug #34682 Limit ARP request flood for unresolved entry
      fixed bug #34681 Limit ARP queue length by ARP_QUEUE_LEN (=3)
      fixed bug #39076 ETHARP_STATS is not defined when LWIP_STATS is 0
      fixed bug #39145 IGMP membership report for
      Fixed bug #39224 Unused IPv6 address state defines in nd6
      fixed bug #39225 udp.c uses netif_matches_ip6_addr() incorrectly; renamed 
function netif_matches_ip6_addr() to netif_get_ip6_addr_match()
      fixed bug #39356 Wrong increment in pbuf_memfind()
      fixed bug #39514 ip_route() may return an IPv6-only interface
      etharp_entry::ctime must be u16_t after changing ARP_TMR_INTERVAL from 5 
seconds to 1 second when fixing bug #34682
      fixed bug #41729 Some socket functions return Exyz instead of -1
      fixed bug #38404 getpeeraddr returns success on unconnected/listening TCP 
      fixed bug #41680 raw socket can not receive IPv6 packet when 
      fixed bug #40303 DHCP xid renewed when sending a DHCPREQUEST
      fixed bug #35928 BSD sockets functions must set errno for 
POSIX-compliance (patch by Mason)
      - fixed bug #36153 TCP Cheksum error if LWIP_CHECKSUM_ON_COPY=1;
      Fixed bug #41787 DHCP Discovery is invalid when an IP is set to thet 
netif (send discover, request and decline from 'any').
      Multiple small/minor issues: bug #36492 Static Analysis on code 1.4.0
      Fixed compiling broken ip6.c after last commit
      Fixed bug #36210 lwIP does not elicit an empty ACK when received 
unacceptable ACK
      Fixed bug #36167 tcp server crash when client closes (maximum window)
      try to fix another warning from static code analysis
      lwip_gethostbyname: fixed using uninitialized variable when 
      Fixed bug #35874 reserved identifier violation (removed leading 
underscores from header include guards)
      Fixed typo-bug introduced some months ago while fixing bug #41041...
      Fixed bug #41686 (ipv4 ip_reass() crash error) introduced some months ago 
while fixing bug #41041...
      fixed bug #37184 tcp_write problem for pcbs in the SYN_SENT state
      fixed bug #37969 SYN packet dropped as short packet in tcp_input function
      again bug #26069: Documentation of tcp_connect() incorrectly describes 
handling of errors
      fixed bug #42987 lwIP is vulnerable to DNS cache poisoning due to 
non-randomized TXIDs
      Fixed CHANGELOG to correctly show the differences to 1.4.1 (got messed up 
because git master was developed in parallel to the 1.4.1 branch, both starting 
at 1.4.0)
      fixed bug #42299 tcp_abort() leaves freed pcb on tcp_bound_pcbs list
      fixed bug #42117 lwip_fcntl does not set errno
      minor: fixed a comment typo only
      Moved #define NETDB_ELEM_SIZE from dns.h to netdb.h, where it belongs, 
and use sizeof() instead of hacked constants that are wrong on 64-bit platforms
      netconn_gethostbyname() needs to check for name length when 
      fixed bug #43110 (call getpeername() before listen() will cause a error) 
by re-sorting the error numbers and letting listen() continue on ERR_CONN
      DNS: split request callback information from actual DNS table to be able 
to optimize memory usage for multiple parallel requests (and clean up the code 
a bit)
      Merge branch 'master' of git.sv.gnu.org:/srv/git/lwip
      DNS: minor coding style fix: pEntry -> entry
      revert accidentally committed test code
      added source port randomization to make the DNS client more robust (see 
bug #43144)
      DNS: does not support IPv6, may return a name cased different than the 
request (when multiple requests are combined to one)
      added pbuf_take_at() and pbuf_put_at() (in preparation for dns.c changes)
      dns.c: change dns_send/dns_recv to operate on pbuf, not on contiguous 
buffer -> dns_payload_buffer/DNS_MSG_SIZE can be removed
      fixed bug #43192 tcp_enqueue_flags() should not check TCP_SND_QUEUELEN 
when sending FIN
      minor: fixed coding style in pppapi.h/.c
      tabs -> spaces in opt.h (ppp-related)
      init.c: LWIP_PPP_API needs NO_SYS==0
      patch #8480 Fix handling of dns_seqno wraparound
      Parts of patch #8397 Typos corrected in comments and text outputs
      More of patch #8397 Typos corrected in comments and text outputs
      Reverted typo fix for vj.c which is in the original sources: no need to 
add a diff only because of a typo...
      fixed bug #43173, pppos_input() corrupts memory if IP_FORWARD is enabled

Stathis Voukelatos (2):
      Fixed netif_poll() operation when LWIP_LOOPBACK_MAX_PBUFS > 0.
      Fixed size calculation in MALLOC memory pool creation macro.

Stephan Linz (5):
      slipif: fix several compiler warnings
      ip_frag: fix compiler warnings, unused variable
      PPP: fix typo in debug message
      IPv4: fix some meaningless debug messages
      PPP: CCP: add error debug messages for dropped packets due to missing 
transmit or receive CCP method

Stian Sebastian Skjelstad (1):
      Forget addresses set up by SLAAC when prefix expires.

Stian Skjelstad (1):
      udp: multicast, fix udp_set_multicast_ttl() parameter and structure 
member conflict

Sylvain Rochet (738):
      Early development stage of an attempt to port PPPd 2.4.5 to lwIP.
      added LCP adaptive echo from Debian patches, I like the idea
      added IPCP no/replace default route option from Debian patches, I like 
the idea
      using rp-pppoe pppd exits with EXIT_OK after receiving a timeout waiting 
for PADO due to no modem attached, from Debian patches
      pppd: Terminate correctly if lcp_lowerup delayed calling fsm_lowerup
      fixed demand_rexmit() with new IP addr, maybe we will never support 
demand or drop it, but it is already patched just in case
      PPPoL2TP patch from Debian, not used yet, but already fixed
      using UNTIMEOUT macro instead of timeout()
      CHAP auth is now working
      removed passwd_from_file usage, removed some of unused PAP file fetch code
      moved refuse_mschap, refuse_mschap_v2, refuse_eap from globals to 
      removed user and passwd globals
      removed run_program() support
      world changed, removed IPX support
      ported randm module from previous PPP port
      reworked magic/randm
      Removed TDB code, which we cannot port, because it needs a filesystem.
      replaced MIN to LWIP_MIN
      don't compile wkmodulus[] if SRP is not used
      Replaced md4/md5/sha1 implementations to PolarSSL ones
      modified auth_reset() so that we can choose which auth we want
      Added PolarSSL DES library, which is necessary for MSCHAP.
      Removed uneeded crypt() from auth.c and session.c
      Revert "Added PolarSSL DES library, which is necessary for MSCHAP."
      Revert "modified auth_reset() so that we can choose which auth we want"
      Revert "Replaced md4/md5/sha1 implementations to PolarSSL ones"
      modified auth_reset() so that we can choose which auth we want
      now using OpenBSD DES implementation
      removed salted DES ( known as crypt() function ), we don't need it
      Removed all stuff requiring encryption.
      removed useless system header from EAP
      EAP support is now optional
      Revert "Removed all stuff requiring encryption."
      Revert "removed salted DES ( known as crypt() function ), we don't need 
      Revert "now using OpenBSD DES implementation"
      Revert "Revert "Replaced md4/md5/sha1 implementations to PolarSSL ones""
      Revert "Revert "Added PolarSSL DES library, which is necessary for 
      fixed MS-CHAP and MS-CHAP-V2, MD4 polarssl uses bytes as input length, 
not bits
      Commit to prouve we copied the raw BSD PolarSSL files
      cleaned PolarSSL files
      removed HMAC support from ciphers
      disabled almost all PPP options strings and support as well as useless 
file-based auth code
      more and more ppp options removal
      using MEMCPY() instead of memcpy()
      replaced BCOPY to lwip-MEMCPY
      disabled upap_rauthreq()
      less and less auth code
      and less and less useless auth code (will this end ?)
      MSCHAP is now an optional compile-time feature
      CHAP support is now an optional compile-time feature
      PAP support is now an optional compile-time feature
      changed PolarSSL compile-time condition
      removed some useless Linux calls
      autoselecting which PolarSSL files to use support added
      Linux ioctl() gone, ECP support optional, CCP support optional
      removed pathnames.h and pidfile support
      demand support is now a compile-time option
      removed demand prototypes if not compiled-in
      print packet functions are now optional
      removed more protent fields only used by print packets functions
      removed set/getenv functions
      POSIX signal support removed
      added necessary pppSingleBuf() call before passing the packet to the 
appropriate PPP subsystem
      clarifying what is actually the "datainput" entry in protent
      PPP interval timeout support disabled (using lwIP timeout support), 
protocol_name() moved to our PPP impl and disabled by default
      re-enabled auth notifiers
      PPP notifier support is now a compile time option
      moved new_phase() to our own implementation, re-enabled new_phase() 
      PPP statistics optional (non working) compile time option added
      more ppp.c cleaning
      resolve conflit, ipcp.c defines ip_ntoa() which is already defined by 
lwIP, disabled ipcp.c::ip_ntoa() and using lwIP one
      added pppmy.h in all .c files to easily find conflicts
      protent table moved to our PPP impl
      ppp.c disabled, everything required for lwIP moved to our impl
      cleaning unused stuff in pppd.h, syslog() is no more used
      pppd.h disabled, renamed MAX() to LWIP_MAX()
      removed pppd.h and ppp.c, renamed pppmy.c to ppp.c and pppmy.h to ppp.h
      removed sys-linux.c
      removed headers that were initially copied but not used (yet)
      fixed all PPP compilation warnings with -Wall
      fixed most PPP compilation warnings with -pedantic
      build PolarSSL MD5 if MD5_SUPPORT is enabled (for randm)
      make it build with avr32-gcc
      removed all system headers except the strict minimum
      demystified a bit the PPP impl, renamed output() to ppp_output() to 
prevent conflict
      clarified a bit more ppp.[ch]
      added ECP_SUPPORT in opt.h (disabled by default); renamed MD5_SUPPORT to 
PPP_MD5_RANDM, which is more meaningful
      removed all useless header files, merged ppp_defs.h to ppp.h
      LQR (Link Quality Report) support is now optional
      more ppp.[ch] cleaning
      don't build any PPP file if PPP support is disabled
      automatically enable MD5 Random support if CHAP or EAP is enabled
      fixed MD5 Random enabling conditions
      re-added PPPoS code from the previous port, it builds, maybe it works
      ppp_impl.h is back!
      VJ support is back!
      removed CamelCase for all ppp.h declared functions
      removed CamelCase in ppp.c and ppp_impl.h, added compat macro in ppp.h 
(but disabled for now)
      disabled all plugins hooks
      disabled all plugins hooks
      cleaned depreacted __P() and __V() macros, removed the legacy varargs.h 
      cleared IDE warnings
      fixed print_string() prototype
      PPPoE reauth bug fixed
      re-enabled LCP echo interval / echo fail
      get_mask now returns "" by default, which is what we want 
in almost all cases on a PPP link
      setting default route by default
      we should reduce nak_buffer[] size
      disabled ppp_over_ethernet_close(), which is not exported and probably 
bogus, until we fix it
      added missing initialisation in ppp_init.c
      re-enabled DNS support
      PPPoE is now guessing its MTU from the underlying netif MTU (in most 
cases 1500 minus 8 = 1492, which is the most common PPPoE MTU)
      added MTU support (using MRU from the peer)
      fixed some debug strings
      fixed typos s/parms/params/g
      improved PPPoE callback with state values, so that PPP know exactly what 
is happening on the PPPoE side
      added a persist option (enabled by default for now until we add a way for 
users to pass a ppp_settings structure)
      added PPPoE persist support (don't timeout sending PADI packets)
      fixed pbuf leaks in ppp_input() in case of packets not expected
      fixed randm if random MD5 support is not enabled
      PPP server support is now optional (disabled by default, not working 
until PPP have a "listen" support)
      removed malloc() from ms chap
      dns server support is done, clearing FIXME entries
      now using maxconnect from ppp_settings
      print packet is working back, at least for PPPoE
      pr_log is unused, don't even try to build it
      unused ifunit global variable removed
      removed multilink option when multilink support is not compiled
      removed useless options
      removed holdoff support, can be handled without persist mode outside lwIP
      using idle_time_limit from ppp_settings
      using our_name from ppp_settings (only used in server mode and disabled 
by default)
      moved debug option from options.c to ppp.c
      options.c is now empty, removed
      using PPP_DEBUG instead of debug global variable
      phase global variable moved to ppp_control structure
      removed useless error_count global variable
      removed some useless extern
      moved remote_name and explicit_remote global variable to ppp_settings
      removed useless error_count global variable from ppp.c
      removed unused "unsuccess" global variable
      moved listen_time global variable to ppp_settings
      moved exit status global variable to ppp_control
      PPPoE persist is working, removing FIXME comments about that
      moved hide_password global variable to ppp_options
      moved ppp_settings to ppp_control, improved PPP API to really allow 
multiple PPP sessions
      renamed ppp_control to ppp_pcb, replaced unit number to ppp_pcb in all 
ppp.h declared functions
      ppp_set_auth() modified to handle new handled authtype (mschap + eap)
      added missing EAP_SUPPORT macro
      improved ppp_set_auth() mschap support
      no more PPP unit number in PPPoE, now using ppp_pcb
      pppoe now have access to the ppp_pcb structure, removed "persist" option 
      ppp_close() on PPPoE actually works,
      don't add ppp_pcb_rx to ppp_pcb struct if PPPOS support is disabled
      started the unit to ppp_pcb replacement
      removed all PPP unit in ppp.c except pih->unit and unit used in debugging 
      fixed PPPoS support, improved ppp_input()
      removed ppp_input_header, replaced using 2 chained pbuf the only area we 
need it
      removed unit from ppp_ioctl()
      auth.c functions now use ppp_pcb* as first argument
      moved auth.c global variables to ppp_pcb
      PAP and CHAP are now using ppp_pcb*
      EAP is now using ppp_pcb as well
      global variables removed from chap support
      IPCP and LCP structures moved to ppp_pcb
      protent prototype switched from unit to ppp_pcb
      removed fsm->unit
      IPCP global variables moved to ppp_pcb
      FSM global variables moved to ppp_pcb
      LCP global variables moved to ppp_pcb as well as input/output buffers
      fixed PPPoS xmit_accm ppp_pcb variable access
      no more pcb->unit, new user selectable pcb->num for debugging purpose 
(like netif does)
      removed unused inpacket_buf in ppp_pcb
      NUM_PPP is defined is opt.h, clearing from ppp_impl.h
      fixed most "unit 0" used instead of pcb pointer
      fixed pppoe_find_softc_by_session() when we have the same PPPoE session 
id on 2 ethif
      prevent conflict with existing (md4|md5|sha1|des) object file if polarssl 
is already used elsewhere in the project
      cleanified old style C function declaration from utils.c
      moved back temporarily moved structure definitions from various headers 
to ppp.h during unit to ppp_pcb transition
      PPP_PCB are now allocated using memp_alloc()
      PAP is now using pbuf instead of pcb->outpacket_buf
      CHAP is now using pbuf instead of pcb->outpacket_buf
      pcb->outpacket_buf replaced by pbuf everywhere it was used
      do not allocated pbuf of more than pcb->peer_mru instead of PPP_MRU, to 
save some memory
      pcb->nak_buffer replaced with a pbuf
      moved ppp_settings.lax_recv and ppp_settings.noendpoint bool types (so 
char) to the ppp_settings bitfield
      ppp_settings.remote_name is now a compile time option
      reduced ppp_settings types size
      idle time limit and connect time limit are now compile time options
      removed useless flags from ppp_settings
      more idle time limit macros
      don't duplicate user and password anymore, anyway, the PPP user will have 
them already allocated as static strings or from configuration flash/file
      replaced exit code (pcb->status) with ppp_ioctl()
      removed pcb->num if PPP debug is not compiled
      improved much more ppp_pcb entry size
      reduced MTU/MRU variables
      removed pcb->chap_mdtype_all
      LCP and IPCP variable size improved
      some more improvements to ppp_pcb
      improved PAP control structure size
      improved CHAP structure size, however there is not much we can do
      improved lcp_options structure size
      improved IPCP control structure size
      added raw IPv6 PPP files
      added compilation macro to eui64.[ch] and cleaned unix-dependant code
      PPP IPv6 local link support added
      don't destroy and create the PPP interface each time sifup() is called 
(it is actually called twice with IPv4 + IPv6 enabled)
      randomized seed when using MD5 random support and PPPoE
      replaced call from ppp_write to ppp_write_pbuf
      merged ppp_write and ppp_write_pbuf
      improved ppp_write_over_ethernet(), don't MEMCPY the entire packet into a 
new pbuf
      SNMP prefers tot_len
      fixed PPPoS suppport compilation
      fixed sent PPPoE dump packet and copy everything we need after 
pppoe_xmit() free'd the pbuf
      improved ipv6cp_options struct size
      improved FSM structure size
      moved ipv6cp global variables to ppp_pcb
      don't build ppp_netif_output_ip6() if PPP IPV6 support is disabled
      set LL addresses before bringing the interface up for IPv6
      added ppp_pcb to ppp callback
      phase must be set to initalize each time we try to reconnect
      PPP timeouts required depend on the number of allowed PPP sessions
      setting tot_len before using it, oops
      "ISO C forbids conversion of function pointer to object pointer type" - 
removed callback function pointer display in debug messages. Anyway, this is 
quite a meaningless information.
      display IPV6CP packets
      fixed some endianess issues with PPPoS
      now displaying sent packet before PPPoS add its escaping, trailing flags, 
      fixed PPPoS multithread support
      clarified PPP_INPROC_OWNTHREAD documentation
      removed bool type, replaced by u8_t
      replaced u_int{8,16,32}_t to lwIP u{8,16,32}_t types
      Merge branch 'master' into ppp-new
      fixed LCP Echo Request/Reply feature
      improved PPP API header documentation
      initialize PPP in the lwip_init() function
      added PPP Sequential API module, based from the Network Interface 
Sequential API module
      some buggy compiler get confused with duplicated labels used in enum 
tcp_state and fsm.h, prepending PPP's ones
      some buggy compiler get confused with duplicated labels used in enum 
tcp_state and fsm.h, prepending PPP's ones
      added L2TPv2 (PPP over L2TP, a.k.a. UDP tunnels) support
      added holdoff support for PPPoE and PPPoL2TP when persist mode is used
      L2TP output netif is now selectable, making it useful to select a default 
route for the L2TP tunnel, in case the default interface is set to the L2TP PPP 
      improved PPP default interface management, added ppp_set_default() API 
      replaced PPPoL2TP printf() used to debug to PPPDEBUG a/o deletion
      saving 14 bytes per PPPoE pbuf; not allocating struct eth_hdr two times 
per packet
      saved some bytes from PPPoE control block, improved PADI retries
      reduced call stack by one when receiving a PPPoE disc packet
      removed some FIXME that are not relevant anymore
      UCHAR_MAX is defined in limits.h, I do not want to add any system 
include, replaced to 0xff
      improved persist mode, we now clear everything we can in the PPP control 
block structure, ensuring we start a new session from a clean state
      Do not destroy the PPP control block automatically anymore, added 
ppp_delete() API function.
      ppp_close() PPPoL2TP support added
      improved PPP API, added ppp_reopen()
      handle cases when ppp_close() is called while session is in dead or 
holdoff phase
      don't call ppp_hup() and ppp_stop() if PPPoE or PPPoL2TP failed to connect
      fixed some more PPP phase state machine issues
      switch to phase dead if PPPoE or PPPoL2TP failed to connect
      pcb->link_status_cb must be set, we don't need to check each time we use 
it if not NULL
      removed time-based PPP phase state machine hacks from PPPoE dans PPPoL2TP
      Merge remote-tracking branch 'origin/master' into ppp-new
      Merge remote-tracking branch 'origin/master' into ppp-new
      removed some compiler warnings in pppoe_disconnect()
      Moved the include of lwip_md5.h or md5.h into the #if PPP_MD5_RANDM 
block, as suggested by Ivan Delamer
      Moved PPP headers into include/netif/ppp/, fixing bug #37040.
      Added <string.h> header to ppp_impl.h, this appears to be required, found 
out by Ivan Delamer.
      added <stdlib.h> to ppp_impl.h, some PPP modules are using strtol()
      PPP, renamed all functions using common names in utils.c that can 
conflict with lwIP user code during link operation
      PPP, added missing pppapi_delete() thread safe function
      PPP, added missing entry in pppapi.h
      Added PPPd follow-up file, so that we can track what is happening on pppd.
      Added ChangeLog entry reporting all the work done in the ppp-new branch.
      PPP, updated pppapi_reopen() to follow ppp_reopen() prototype change
      Merge branch 'master' into ppp-new
      PPP, don't allocate twice struct eth_hdr per PPPoE pbuf
      PPP L2TP, only skip HDLC header if necessary
      PPP, moved out PPPoS code into their own functions, improved ppp.c 
      PPP, ppp_input() code cleaning, removed dead code, fixed indentation
      PPP, using PBUF_POOL instead of PBUF_RAM pbufs for PPP negociation packets
      PPP, improved fsm_sconfreq() allocated buffer size
      PPP, cleaned persist and holdoff features
      PPP, removed unnecessary ethif from ppp_pcb
      PPP, added PPPoS reopen support
      PPP, cleaned MTU,MRU variables
      Merge branch 'master' into ppp-new
      PPP, changed all the code enclosed between PPP_SERVER #if macro to our 
PPP PCB structure, making it easier to support PPP server in the future
      PPP, disable persist mode by default, so the default behavior does not 
look like a buggy behavior. Fixes bug #37279.
      PPP, adding const pragma to struct protent, saving about 200 bytes in 
.data segment
      PPP, adding const pragma to FSM callbacks, saving about 350 bytes in 
.data segment
      PPP, switched chap_digests linked list to a const table in .rodata/flash, 
saving about 100 bytes in .data segment if chap(md5) and mschap is enabled
      PPP, correctly cast int to u8_t in PPPCTLS_ERRCODE in ppp_ioctl()
      PPP, using timeouts values defined in opt.h instead of values defined in 
PPP headers or statically assigned values
      PPP, moved DEFLOOPBACKFAIL from ppp/lcp.h to lwip/opt.h
      PPP, improved PAP and CHAP timeout/request/maxrequests configuration 
      PPP, moved EAP timeouts and max requests default values to opt.h
      PPP, moved PAP configuration to ppp_settings struct
      PPP, moved EAP configuration to ppp_settings struct
      PPP, moved FSM configuration to ppp_settings struct
      Merge branch 'master' into ppp-new
      PPP, fixed some IAR warnings
      Merge branch 'master' into ppp-new
      PPP, added missing semicolon (dammit)
      PPP, fixed one more IAR warnings
      PPP, "try" variable used in LCP might conflict with some buggy C++ 
      Merge branch 'master' into ppp-new
      Merge branch 'master' into ppp-new
      PPP, fixed LCP delayed up feature
      PPP, fixed return code coherency for ppp_netif_output_*() callbacks 
(using ERR_* as expected by lwIP core instead of PPPERR_*)
      PPP, free input pbuf left in ppp_delete()
      PPP, added ppp_addrs() macro to get the pointer of the ppp->addrs struct
      PPP, added define for u_long, u_int, u_short, u_char for compilers or 
toolchains which don't have them
      PPP, removed ppposapi_input(), unnecessary because pppos_input() is 
already thread-safe
      PPP, slight API change, great code factorisation
      PPP, added ppp_free()
      Merge branch 'master' into ppp-new
      PPP, cleared compilation warning about unused variable 'pcb' in 
ppp_drop() if neither VJ nor SNMP support are enabled
      cleared compilation warning, C++ style comments are not allowed in ISO C90
      reverted dhcp.c from DOS (CRLF) to UNIX (LF) format
      Merge branch 'master' into ppp-new
      picked up the wrong commit date in CHANGELOG, fixed
      Merge branch 'master' into ppp-new
      PPP, removed PPP_INPROC_OWNTHREAD feature, which almost only make things 
      PPP, added PPP_USE_PBUF_RAM compile time option
      PPP, moved PPP_INPROC_MULTITHREADED compile time option from ppp.h to 
      PPP, reduced by one buffer PPPoS RX requirements in multithreaded context
      PPP, added PPP notify phase support
      Merge branch 'master' into ppp-new
      Merge branch 'master' into ppp-new
      PPP, fixed VJ compression/decompression output IP path
      Merge branch 'master' into ppp-new
      Merge branch 'master' into ppp-new
      recently applied patches changed LF-terminated filed to mostly LF and 
CR+LF only where the patches changed lines
      Merge branch 'master' into ppp-new
      normalize to LF (auto cleaned due to git attributes and must be commited 
before switching branch)
      Merge branch 'master' into ppp-new
      Merge branch 'master' into ppp-new
      Merge branch 'master' into ppp-new
      Merge branch 'master' into ppp-new
      Merge branch 'master' into ppp-new
      Merge branch 'master' into ppp-new
      PPP, most PPP headers are using u_long, u_int, u_short and u_char types, 
moved typedef of those types before we include any PPP header
      PPP, PPPoS, fixed IP forward from PPP to Ethernet by allocating PBUF_LINK 
instead of PBUF_RAW if IP forwarding is enabled
      PPP, VJ compression enabled, fixed IP forward from PPP to Ethernet by 
allocating a PBUF_LINK instead of a PBUF_RAW if IP forwarding is enabled
      Merge branch 'master' into ppp-new
      PPP, from PPPD upstream, take out unused %r conversion completely,
      PPP, from PPPD upstream, Don't crash if NULL pointer passed to vslprintf 
for %q or %v
      PPP, from PPPD upstream, accept IPCP ConfAck packets containing MS-WINS 
      PPP, updated pppd followup
      PPP, PPPoE, fixed bug #42138, pppoe_destroy() called with wrong pointer, 
PPPoE control block was never freed
      Merge branch 'master' into ppp-new
      Merge branch 'master' into ppp-new
      Merge branch 'ppp-new'
      fixed bug #43235, cleared compiler warnings when using gcc with -Wextra 
      fixed bug #43235, checking for non-existent preprocessor macros is 
non-standard, added predefinition for all affected macros
      fixed cosmetic bug #43499: wrong argument order in 
src/include/netif/etharp.h defines
      slightly improved compiler warning fixes
      PPP, fixed some compiler warnings
      CORE: fixed missing prototype for pbuf_header_impl() function
      PPP, added const modifier on auth strings
      PPP, fixed more compiler warnings
      PPPAPI, added const modifier on auth strings
      PPP, moved ppp_init() from public API (ppp.h) to private API (ppp_impl.h)
      PPP,SLIP include lwip/sio.h after lwip/sys.h to prevent functions 
prototype collision
      PPP, from PPPD upstream, separate IPv6 handling for sifup/sifdown
      PPP, from PPPD upstream, Eliminate some unnecessary ifdefs
      PPP, updated pppd followup
      inet_checksum: fixed prototype of lwip_standard_chksum() when 
      opt: fix build without SNMP_COMMUNITY_EXT
      snmp: syntax error fix on endif comment
      PPP: moved netif out of PPP control block
      PPP: removed ppp_new(), merged with ppp_over_X_create()
      PPP: removed ppp_delete(), merged with ppp_free()
      PPP: using a macro for ppp_set_default() instead of a function
      PPP: ppp_init() is not a public function, moving it in private part
      PPP: re-order functions in the common sense API order
      PPP: moved duplicated init code from ppp_over_X_create() to ppp_new()
      PPP: moved ppp_new() to low level protocol init for PPPoE and PPPoL2TP
      PPP: removed PPPoE and PPPoL2TP callback status notifier
      PPP: re-order prototypes, ppp_init before ppp_new
      PPP: removed duplicated code in ppp_close()
      PPP: re-order functions in the common sense API order
      PPP: prepared callbacks from PPP core to low level protocols
      PPP, prepare new callbacks for low level protocols
      PPP, moved ppp_write and ppp_netif_output low level protocols functions 
to respective low level protocol files
      PPP, removed low level create functions from PPP core
      PPP, moved low level protocol connect init to low level protocol files
      PPP, generalized callbacks calls from PPP core, removed all PPPoE and 
PPPoL2TP references
      PPP: Moved PPPoS from ppp.c to pppos.c
      PPP, add PPPoS CB for PPPoS private data
      PPP, PPPoS needs vj.h
      PPP, PPPoS moved fd from ppp_pcb to pppos_pcb
      PPP, PPPoS, moved VJ from PPP core to PPPoS
      PPP, PPPoS, renamed *sc pointer to *pppos, renamed *pcb pointers to 
*pppos and *ppp
      PPP, PPPoS, various static and const added
      PPP, PPPoS, fixed build with PPP_FCS_TABLE=1
      PPP, PPPoS, check if PPPoS configuration functions are used on PPPoS
      PPP, PPPoS, using PPPoS PCB pointer on VJ and pppos_ configuration 
      PPP, PPPoS, re-enabled PPPCTLG_FD
      PPP, PPPoS, moved ppp.rx to pppos.rx
      PPP, PPPoS, merged ppp(os)_pcb_rx to pppos_pcb
      PPP, PPPoS, removed xmit_accm, almost duplicate of out_accm
      PPP, PPPoS, moved out_accm from PPP core to PPPoS
      PPP, PPPoS, structure size optimisation
      PPP, PPPoE, improved removal from linked list
      PPP, CORE, fixed callbacks return value
      PPP, CORE, code cleaning
      PPP, CORE, Fixed warning with PPP_PROTOCOLNAME enabled
      PPP, all protocols, uniformised naming
      PPP, CORE, prepared for lower protocols callbacks returning state
      PPP, lower protocols, chained returns from local functions to callback 
      PPP, chained returns up to ppp_open()
      PPP, CORE, removed useless st variable in ppp_close()
      PPP, chained returns up to ppp_free()
      PPP, modified CHANGELOG about the previous large PPP rework
      PPP, PPPoS, fixed warnings with PPPDEBUG disabled
      PPP, CORE, Removed useless enabled_flag from struct protent
      PPP, CORE, Removed (*datainput) from struct protent if not used
      PPP, CORE, removed useless include of chap-new.h
      PPP, CORE, beautified auth protocols debug
      PPP, PPPoS, only check PPPoS PCB pointer if PPPoS is not the only enabled 
lower protocol
      PPP, PPPoX, added warnings about functions in headers which should not be 
called from lwIP user application
      CORE, enabling only PPPoL2TP is also a valid choice
      PPP, CORE, now using const callbacks struct from lower level protocols
      PPP, CORE, new callbacks, send_config, recv_config, vj_config
      PPP, uniformised callbacks naming
      PPP, PPPoS, added sub-ioctl commands
      PPP, CORE, beautified ppp_ioctl()
      PPP, PPPoS, moved VJ protocol handler to PPPoS
      PPP, PPPoS, removed linked list
      PPP, CORE, we don't need PPP_LINK_ENABLED_NUMBER anymore
      PPP, PPPoS, code cleaning
      PPP, PPPoS, added missing static modifier on pppos_netif_input()
      PPP, PPPoE, removed PPPERR_ usage
      PPP, PPPoL2TP, removed PPPERR_ usage
      PPP, PPPoS, removed PPPERR_ on err_t return type
      PPP, using err_t return type on ppp_ioctl()
      PPP, using err_t return code instead of PPPERR_
      PPP, added PPP documentation
      PPP, Documentation, minor fixes
      PPP, using PPP netif->num number instead of ppp->num
      PPP, Documentation, fixed PPP_INPROC_MULTITHREADED default status
      opt: clarified VJ support
      PPP, CORE, compile out auth support if none of auth protocols are enabled
      opt.h: fixed warnings if PPP auth support is not enabled
      PPP, CORE, using u8_t on ioctl command instead of int
      PPP, CORE, don't use ppp_ioctl() from PPP core, assign pcb->err_code 
      PPP, CORE, remove the user ability to set the PPP error code 
      PPP, CORE, improved, re-ordered and re-numbered IOCTL commands
      PPP, CORE, IPv6, if_up flag used instead of if6_up for outgoing IPv6 
packets, fixed
      PPP, IPv6, fixed unicode in file headers
      PPP, CORE, removed if_up and if6_up checks in sifdown() and sif6down()
      PPP, IPV6, enable PPP IPv6 by default if LWIP_IPV6 is set
      PPP, CORE, using ip*_set_* functions instead of IP4_ADDR and SMEMCPY
      PPP, CORE, ppp_ioctl PPPCTLG_UPSTATUS command now returns true if only 
IPv6 is up
      PPP, IPv4 support is now optional
      PPP, CORE, disable VJ is PPP IPV4 is compiled out
      PPP, FSM, fixed "timeout sending Config-Requests" output
      PPP, CORE, fixed PPP phase state machine when ppp_close() is called 
during HOLDOFF phase
      PPP, CORE, carrier lost signal, fixed FSM mismatch
      PPP, CORE, ppp_close() and ppp_sighup() ended up sharing almost 
everything, merged
      CORE, INIT, fail if none of PPP_IPV[46]_SUPPORT are enabled if 
PPP_SUPPORT is enabled
      PPP, PPPoS, moved advise about modem from pppos_create() to ppp_open()
      PPP, code cleaning
      PPP, PPPoS, removed unused next field in pppos_pcb
      PPP, apply warnings found by MSVC fixes on other files needing the same 
      PPP, fixed warnings introduced by const pointers on ip_addr_t
      Fixed warnings on whole project introduced by const pointers on ip_addr_t
      PPP, CORE, functions ppp_set_netif_statuscallback() and 
ppp_set_netif_linkcallback() replaced with defines
      PPP, CORE, cleaned ppp_close() function
      PPP, PPPoS, removed ppp_accm_mask[], saved a few bytes of ROM
      netif: fixed compiler warning
      PPP, CORE, IPCP: removed useless ask_for_local boolean
      PPP, CORE, cleaned struct ppp_settings coding style
      PPP, CORE, beautified ppp_set_auth()
      PPP, CORE, moved auth configuration from auth_reset() to lcp_resetci()
      PPP, CORE, SERVER, set auth configuration before auth
      PPP, SERVER: added PAP authentication support
      PPP, SERVER, CHAP: fixed wrong pointer used on chap_timeout()
      PPP, SERVER: added CHAP authentication support
      PPP, CORE: code cleaning
      PPP, SERVER: statically define our name for authentication purposes
      PPP, MAGIC: new function: magic_pow
      PPP, replaced drand48() with magic_pow()
      PPP, EAP: removed malloc() and free()
      PPP, EAP: using MAXNAMELEN define instead of hardcoded 256 size for 
      PPP, remove VJ callback from link_callbacks if VJ support is not enabled
      PPP, SERVER: added PPPoS server support
      PPP, SERVER, MSCHAP: move output message from chap_server.message struct 
to stack
      PPP, renamed ppp_open to ppp_connect
      PPP, L2TP, using LNS chosen destination port
      PPP, L2TP, check source ip address and port
      PPP, L2TP, merged common output code
      PPP, L2TP, added link-level IPv6 support
      PPP, PPPoE, removed global static buffer only used for debug
      PPP, PPPoE, improve reliability if we receive a PADT
      PPP, PPPoE, removed devname variable from pppoe_disc_input()
      PPP, CORE, call netif_set_up() after if4_up and if6_up flags are set, to 
prevent dropping packets
      PPP, CORE, separated administrative status from link status of PPP netif
      PPP, make DNS a little more optional if LWIP_DNS is unset
      DNS, warning fix, dns_init() -> dns_init(void)
      PPP, improved IPv4 address setting
      PPP, using DNS API for DNS servers
      PPP, improved IPv6 address setting
      PPP, removed now useless struct ppp_addrs from ppp_pcb
      PPP, Documentation, updated
      PPP, PPPoS, fixed thread safety of pppos_input()
      PPP, PPPoS, added necessary comment about mutex
      PPP, improved IPv6 address setting
      PPP, IPv6, reduce size of llv6_ntoa() function
      API: netdb: replaced deprecated ip_ntoa() to ipaddr_ntoa()
      PPP: Documentation: replaced deprecated ip_ntoa() to ipaddr_ntoa()
      PPP, Documentation, added DNS change
      PPP, IPCP, fully removed VJ support from IPCP if VJ_SUPPORT is disabled
      PPP, IPCP, fully removed DNS support from IPCP if LWIP_DNS is disabled
      PPP, IPCP, removed WINS support
      PPP, IPCP, removed proxy ARP support
      PPP, IPV6CP, build out IPv6 VJ support using the existing IPV6CP_COMP 
      PPP, IPV6CP, code cleaning on VJ support
      PPP, updated netif/FILES about PPP
      PPP, display correct pbuf size in ppp_input() debug messages
      Revert "PPP, PPPoS, added necessary comment about mutex"
      Revert "PPP, PPPoS, fixed thread safety of pppos_input()"
      PPP, PPPoS, don't protect pppos->in_accm if PPP_INPROC_MULTITHREADED is 
not enabled
      PPP, PPPoS, improve thread safety of pppos_input()
      PPP, PPPoE and PPPoL2TP, removed ppp->pcomp usage
      PPP, PPPoS, moved vj_enabled flag from PPP CORE to PPPoS
      PPP, PPPoS, moved pcomp and accomp only used by PPPoS to PPPoS
      PPP, PPPoS, improve the freeing of remaining RX pbuf if 
      PPP, PPPoS, TCPIP: add packet input path for point to point interfaces 
(only PPPoS for now) through the TCPIP API
      PPP, PPPoS, PPP_INPROC_MULTITHREADED defaults to 0, explain thread safety 
issue with it
      PPP, PPPoS, add pppos_input_tcpip() input helper function for !NO_SYS 
      PPP, PPPoS, now using MEMCPY here, add #include <string.h>
      PPP, Documentation, improved PPP_INPROC_MULTITHREADED part
      PPP, PPPoS, reworked output path, reduced serial tx pbuf buffers to 1
      PPP, ppp->last_xmit is only used in PPPoS, moved to PPPoS
      PPP, PPPoS, code cleaning
      PPP, PPPoE, removed redundant size check
      PPP, PPPoL2TP, warning fix if PPP IPv6 is enabled
      PPP, PPPoS, code cleaning
      PPP, PPPoS, moved checksum computation to pppos_output_append()
      PPP, PPPoS, moved common FCS output code in pppos_output_last()
      PPP, PPPoS, code cleaning
      PPP, fixed warnings if LWIP_SNMP is disabled
      PPP, code cleaning, u_char to u8_t
      PPP, cleared warnings if PPP_DEBUG is off
      PPP, PPPoS, changed pppos_output_append() description to match code change
      PPP, PPPoS, struct pbuf *n and u8_t *cur are now unused, removed
      PPP, PPPoL2TP, fixed build without IPv6 enabled
      PPP, PPPoS, improved tcpip input path, fixed bug #44565
      PPP, CCP, commented-in unused PPP config file parsing
      PPP, CCP, updated FSM state with our FSM state define PPP_FSM_x
      PPP, CCP, replaced bool to unsigned int in struct ccp_options
      PPP, CCP, moved CCP global variables to ppp_pcb (ppp.h)
      PPP, CCP, reworked to our ppp_pcb* pointer and ppp_pcb->ccp* data field
      PPP, CCP, added ccp.h in ppp.h
      PPP, CCP, commented-in unused global variables used for options
      PPP, CCP, updated ANY_COMPRESS() to use ccp_options*
      PPP, CCP, updated ccp_printpkt() prototype to match other *_printpkt()
      PPP, CCP, updated to our utils.c function name
      PPP, CCP, various compiler warnings fix
      PPP, CCP, various fix if MPPE is enabled
      PPP, CORE, removed auth fields from struct ppp_pcb if auth is disabled
      PPP, MPPE, replaced #ifdef MPPE to #if MPPE_SUPPORT
      PPP, CCP, add dummy ccp_ functions in ppp.c so it builds if CCP_SUPPORT 
is set
      PPP, PPPoL2TP, fixed build with IPv6 enabled
      tcp_in: typo fix. Fixes bug #4458944589.
      nd6: fixed compiler warnings
      PPP, CORE, don't build get_loop_output() if demand support (not 
supported) is not enabled
      PPP, IPV6, fixed build if VJ support is disabled
      PPP, IPV6, correct fix for IPV6CP_COMP disabling
      PPP, CCP: Fix ccp_cilen returning size if both deflate_correct and 
deflate_draft are enabled
      PPP, FSM, added assert to easily track cilen size mismatch
      PPP, CCP, moved ccp_test() from ccp_addci() to ccp_resetci()
      PPP, MPPE, ccp_options->mppe is a bitfield of MPPE_OPT_* and not a 
boolean, fixed
      PPP, PPPoS, protect open flag in connect() and listen()
      PPP, MPPE, import unmodified Linux MPPE encoder/decoder
      PPP, MPPE, cleaning license notice
      PPP, MPPE, fixed path to mppe.h
      PPP, MPPE, replaced printk() to PPPDEBUG()
      PPP, CCP, added missing defines from linux/ppp-comp.h to ccp.h
      PPP, MPPE, removed include we don't have
      PPP, MPPE, removed a bit more Linux stuff
      PPP, MPPE, using lwIP ERR_BUF instead of Linux DECOMP_ERROR error type
      PPP, MPPE, using our SHA1 instead of Linux crypto sha1
      PPP, MPPE, added build macro if MPPE is not enabled
      PPP, MPPE, import unmodified ARC4 from polarssl
      PPP, MPPE, updated polarssl ARC4 for lwIP
      PPP, updated polarssl readme
      PPP, MPPE, using our ARC4 instead of Linux crypto ARC4
      PPP, MPPE, removed now useless setup_sg() function
      PPP, MPPE, removed "compression" stats
      PPP, MPPE, improved SHA1 padding
      PPP, MPPE, removed useless Linux stuff
      PPP, MPPE, temporarily replaced kzalloc() with malloc()
      PPP, MPPE, commented-in Linux interface calls structure
      PPP, MPPE. fixed port mistake on SHA1 computation
      PPP, MPPE, fixed compiler warnings
      PPP, MPPE, exported MPPE functions
      fixed some obvious compiler warnings
      PPP, added new build dependencies in init.c
      PPP, PPPoL2TP, switched to dual stack IPv4/IPv6
      PPP, PPPoL2TP, merged pppol2tp_input_ip() to pppol2tp_input()
      PPP, PPPoL2TP, improved pppol2tp_create() error path
      ip6_addr.c: fixed IPv6 ip6_addr_any value
      PPP, MPPE, fixed SHA1 padding
      PPP, MPPE, fixed mppe_rekey()
      PPP, using ip4_input() instead of ip_input()
      PPP, MPPE, handle packets in decompressor without address and control nor 
      PPP, PPPoE, removed unnecessary single pbuf
      PPP, MPPE, adapt decompressor to use pbuf
      PPP, MPPE, using err_t return for mppe_decompress
      PPP, PPPoL2TP, removed unnecessary single pbuf
      PPP, get_mask() is only used for IPCP, moved to PPP_IPV4_SUPPORT 
functions group
      PPP, fixed LWIP_IPV4=1 and PPP_IPV4_SUPPORT=0 support
      PPP, code cleaning, fixed ppp_input() indentation
      PPP, MPPE, removed address, control and protocol from compressor output
      PPP, MPPE, removed address, control and protocol from compressor input
      PPP, MPPE, adapt compressor to use pbuf
      PPP, CCP, re-added missing ccp_test()
      PPP, MPPE, merged get_new_key_from_sha() to mppe_rekey()
      PPP, MPPE, reworked mppe_rekey()
      PPP, MPPE, moved struct ppp_mppe_state from mppe.c to mppe.h
      PPP, MPPE, changed API to use struct ppp_mppe_state* instead of void*
      PPP, MPPE, removed mppe_alloc() and mppe_free()
      PPP, MPPE, remove dead code
      PPP, MPPE, merged mppe_comp_init() and mppe_decomp_init() into mppe_init()
      PPP, CCP, compile-out a bit more MPPE code if MPPE is disabled
      PPP, CCP, deflate, BSD compress, predictor 1 & 2 are now optional at 
compile time
      PPP, MPPE, optimized struct ppp_mppe_state size
      PPP, MPPE, struct ppp_mppe_state to typedef
      PPP, MPPE, added ppp_mppe_state comp and decomp to ppp.h
      PPP, CHAP, reworked to pass ppp_pcb pointer to CHAP childs (MD5, MSCHAP, 
      PPP, MPPE, moved MPPE global variables from MSCHAP to ppp_pcb
      PPP, MSCHAP, reworked local functions and constants
      PPP, MSCHAP, MPPE: shared identical mppe_sha1_pad* between MSCHAP and MPPE
      PPP, MSCHAP: ensure magic tables are not copied and initialized on stack
      PPP, CCP, reworked ppp_pcb ccp_localstate and all_rejected fields
      PPP, CCP, MPPE: calling mppe_init() in ccp.c instead of using ccp_test()
      PPP, MSCHAP, merged mppe_set_keys() to Set_Start_Key(), merged 
mppe_set_keys2() to SetMasterKeys()
      PPP, MSCHAP, CCP, MPPE: reworked key passing from CCP to MPPE
      PPP, MPPE, reworked MPPE debug, using ppp_pcb metadata
      PPP, CCP, added MPPE user configuration flags
      PPP, MPPE, close current session using lcp_close() if something went wrong
      PPP, CCP, added receive and transmit chosen protocols in ccp_flags_set() 
(renamed ccp_set())
      PPP, CCP, added data packet configuration in ppp_pcb
      PPP, normalized debug messages
      PPP, CCP, MPPE: added packet plumbing in ppp.c to process MPPE packets
      PPP, CORE, reworked ppp_netif_output* functions to process CCP on all 
      PPP, MSCHAP, fixed compiler warnings if MPPE support is disabled
      PPP, MPPE: allow users to enable CCP and MPPE support in opt.h
      PPP, change ppp_write() return type from int to err_t
      PPP, MPPE, MPPE also requires MSCHAP support (therefore CHAP support as 
      PPP, CCP, MPPE, handle CCP Reset-Request and Reset-Ack for MPPE
      PPP, MPPE, compile-out unused mppe_incomp() function
      PPP, VJ, CCP: rework to fix protocol order
      PPP, MPPE, drop unencrypted input packet if MPPE is required
      PPP, VJ, improved opt.h comment about VJ
      PPP, removed useless padding in bitfields
      PPP, don't assert if we receive a too short packet in ppp_input(), just 
      PPP, L2TP, minor fixes
      debug.h: fixed LWIP_PLATFORM_ERROR macro if LWIP_DEBUG and LWIP_NOASSERT 
are defined
      netconn: api_msg.c, fixed warning about unused state variable by using it 
a little more
      PPP, place print packet debug codenames in ROM
      PPP, MPPE, sanity error path rework
      PPP, MPPE, discard late packet in stateless mode
      PPP, MPPE, issue CCP reset request if synchronization is lost
      PPP, MPPE, don't issue CCP reset request in stateless mode
      PPP, MPPE, try to use pbuf_header() in mppe_compress()
      PPP, added missing cast on pbuf_header()
      PPP, PPPoS, also clear last_xmit when resetting PPPoS control block
      PPP, removed unnecessary memset()
      PPP, sifnpmode() is only useful if on demand is supported, build out if 
      PPP, cleanup unused/redefined/useless limits in ppp_impl.h
      PPP, assert if ppp_fatal() is called
      PPP, display MTU set through netif_set_mtu() if debug is enabled
      PPP, re-enabled MRU defines in opt.h
      PPP, L2TP, added configurable L2TP MRU using opt.h
      PPP, opt.h: fixed coding style
      PPP, don't store the name by which the peer authenticated itself to us if 
multilink support is disabled
      fixed bug #39683 Assertion "seg->tcphdr not aligned" failed with 
      PPP, Documentation, add that we support MPPE
      PPP, MPPE, fixed TCP over MPPE
      PPP, PPPoS, fixed copy/paste typo in pppos_send_config() out accm debug 
      PPP, explain better why we don't need protp->datainput callback
      PPP, MPPE, improve dropping of unencrypted received packet
      PPP, MPPE, drop input/output packets if we couldn't find the chosen 
      PPP, minor coding style fix
      PPP, PPPoS, remove magic_randomize() from PPPoS, it is already called in 
      PPP, magic, MD5 random pool size cannot be anything else than MD5 hash 
size, code cleaning to make it clear
      PPP, magic, enables building without PPP_MD5_RANDM support
      PPP, magic, renamed random_bytes() to magic_random_bytes() for API 
      PPP, magic, using magic_random_bytes() for CHAP/MSCHAP/EAP instead of 
for-loop byte where possible
      PPP, magic, improved magic_randomize() for PPP_MD5_RANDM is not enabled
      PPP, magic, use LWIP_RAND() if available
      converted CHANGELOG from ISO-8859-1 to UTF8
      PPP, magic, improved magic_randomize() when using PPP_MD5_RANDM
      PPP, magic, call magic_randomize() for all packets
      PPP, magic, build-out useless code when LWIP_RAND is defined
      dns: fixed trivial compiler warning
      PPP: fix constness in PPP related files when PRINTPKT_SUPPORT is enabled
      Documentation, add pppapi.h to thread-safe header whitelist
      PPP, PPPoS, replaced static sio_write() calls to a user defined callback
      PPP, remove now unused ioctl callback from link_callbacks structure
      PPP, reorder initialisation of low level protocols to call 
ppp_link_set_callbacks() just after PPP control block allocation
      PPP, merged ppp_link_set_callbacks() into ppp_new()
      tcp: fixed CHECKSUM_GEN_TCP feature (misplaced #define)
      PPP: more const and mixed u_char/char types fixes
      PPP, auth, code cleaning: removed useless variables on stack
      doc: contrib: CVS -> Git, punctuation fixes
      documentation: rawapi: update to current lwIP design
      documentation: rawapi: improved documentation on multithreading state
      documentation: rawapi: syntax fixes
      documentation: rawapi: more syntax fixes
      README: replaced CVS references to Git
      trivial CVS to Git renaming
      documentation: savannah: updated for Git
      ip4: routing: check peer for point to point interfaces
      PPP, PPP_MAXIDLEFLAG is now in ms instead of jiffies
      sys.h: fixed comment, sys_msleep() is in ms, not in jiffies
      PPP: magic: don't truncate sys_jiffies() return value
      test: etharp: Fixed const warning
      Documentation: SNMP: update to recent changes
      all: trivial include changes related to the new "lwip/priv/" include 
      PPP, Documentation, fixed mistake about pppos_input_sys
      PPP: CCP: don't drop output packets if CCP negotiated that we don't 
compress on our side
      PPP, PPPoL2TP, fix double free of L2TP pcb in pppol2tp_create error path
      tcp: fixed TCPH_UNSET_FLAG macro
      PPP, VJ, fix header offset calculation on LP64/ILP64 systems
      PPP, VJ, code cleaning
      PPP, report full packet size in VJ debug output
      PPP, prepare for chained compressors (e.g. VJ+MPPE) requiring packet copy
      PPP, VJ, move pbuf length check so all TYPE_IP return value are within 
the same code block
      PPP, VJ, fixed TCP retransmission
      PPP, fix reserved identifier violation (removed leading underscores from 
header include guards)
      PPP, remove useless ppp_init function

Wayne Uroda (1):
      PPP, PPPoS, fix dereference of uninitialised pppos->in_head pointer

adamdunkels (23):
      Added #if LWIP_UDP around udp_init() body, fixed bug where un-connected 
UDP PCBs did not always receive correct datagram
      Fixed COREFILES to reflect the tcp_input.c -> tcp_in.c and tcp_output.c 
-> tcp_out.c filename changes
      Updated TCP out-of-sequence handling to use recv_data variable instead of 
old pcb->recv_data.
      Added #undefs for htonl and friends to keep compiler from issuing "doubly 
defined" warnings
      Added typecasts and #includes to keep compiler from issuing warnings
      Added Author: comment
      Added Author: comment, #ifdef'ed linux specific stuff, added typecast for 
      Added SIO_FIFO_DEBUG and PPP_DEBUG to make -DDEBUG work with 
      Rewrote the COREFILES to reflect the changes from tcp_input.c and 
tcp_output.c to tcp_in.c and tcp_out.c. Removed simrouter and simnode from the 
all: target.
      Removed #inclusion of "netif/sioslipif.h" since the file has been removed 
and split into two, "netif/sio.h" and "netif/slipif.h".
      Added typecasts to avoid compiler warnings
      Added unsigned qualifier to the output to avoid compiler warnings for the 
produced fsdata.c file. Added a final newline to the output to avoid warnings.
      Added unsigned qualifier to the struct members to avoid compiler warnings.
      Removed the old lwIP homepage from the example web server filesystem and 
replaced it with a simple web page with short information about the lwIP 
project. Previously the web pages in the example web server was a large portion 
of the final .tar.gz file.
      Replaced a += (combined addition and assignment) with an explicit 
assignment and addition to avoid compiler warnings.
      Added short descriptions of the generic network interface code.
      Reformatted the code to make it consistent with the rest of lwIP.
      Added a 404 error page. The web server crashed without it.
      Added a 404 error page.
      Added #ifdefs around each debug output switch so that those can be 
defined in lwipopts.h instead.
      Fixed a few C style issues to make it compatible with the rest of lwIP.
      The code that increased the retransmission time was commented out for 
some reason. This has been fixed. Also removed some old, out-commented, code.
      Added comments to the tcp_enqueue() function.

anderscarlman (3):
      Removed the lines setting dhcp->msg_in and dhcp->options_in to NULL, 
since this is done implicitly through dhcp_free_reply().
      Re-added code for checking tail-parameter for NULL in
      Added dummy parameters for the empty macros snmp_add_ifinoctets and

cborrelli (3):
      added ifndef around the TCP_TMR defines so that the user can define these 
values in the lwipopts.h file if needed; this change will not be seen outside 
the stack unless the user wants to change the default values.
      initial version for Xilinx Virtex-II Pro port
      added v2pro description; added include/ dir description

christiaans (120):
      Match update_arp_entry() to prototype.
      Removed struct netif; forward decl. is already included from ip_addr.h.
      christiaans: Fixed SO_REUSE default to 0. Actually we should fix udp so 
it won't depend on the socket layer.
      christiaans: cosmetic change debug formatters as requested by Tom.
      Some build fixes for OpenBSD.
      Described initialization procedure.
      Introduced cc.h formatters and removed SO_REUSE from transport layers.
      Fixed void ptr address increment bug reported by Bertrik Sikken.
      Fixed lwip_standard_chksum() for unaligned memory access. Verified to 
work on c16x and BSD on P4.
      Added some more fixes to the lwip_standard_chksum() comments.
      Disabled the added summing routine to preserve code space, fixed some 
      Fixed unused variable warning.
      History update and listing PPP problems as todo.
      Small optimalization for udp_input().
      Code style fix, C++ into C comments.
      Removed timer dependency on sys.c (raw-API). Beautified indentation.
      Patch from Curt McDowell fixes err_to_errno macro.
      Removed tabs, default LWIP_HAVE_LOOPIF to 0 to slim footprint.
      Added IP reassembly timer.
      Increased ip_reassbitmap size with 1, added assertions to catch boundary 
      Added pbuf_alloc() return value checks in ip_frag().
      Fixed compilation warning on sizeof(), reported by Beach at 20060320.
      Pbuf flag test size and speed optimalisation (helping a dumb compiler).
      Added LWIP_PLATFORM_BYTESWAP optimalisation flag and macro glue.
      Address copy loops optimized for speed.
      Added optimalization hints.
      addr->addr test size and speed optimalisation (helping a dumb compiler)
      Optimized for speed and size. Test against zero for both the inverted and 
non-inverted address. (old and new-style broadcasts)
      Disabled ARP table update on ingress IP packets.
      Removed conn->sem creation and destruction from netconn_write() and added 
sys_sem_new to netconn_new_*
      Applied patch #5146 to handle allocation failures in accept() by Kevin 
      Fixed cold case bug #1748, printing of mem_size_t and u16_t statistics.
      Prepared some SNMP options.
      Added mib-2 snmp group statistics prototypes.
      Added struct obj_id and a few system group access funcs.
      Honoured Pedro Alves namespace request, following lwip style struct 
      Applied patch for cold case bug #11135.
      Mentioned some recent cold case fixes.
      Added ip_frag_init() to ip_init().
      Added ip_frag_init() and some LWIP_DEBUGFs.
      Added ip_frag_init() prototype.
      Add preliminairy documentation for the SNMP agent.
      Initial commit. Expirimental code, please note this is not yet fully 
      Fixed (experi)mental typo.
      Added SNMP debug options.
      Added SNMP statistics to struct netif and changed SNMP macro glue.
      Added netif SNMP init.
      Added minimalistic SNMP GET functionality.
      Partial fix for bug #15926, flushing TCP output in do_close().
      Corrected object identifier codec for object ids not starting with 
.iso.dod (e.g. zeroDotZero (0.0)).
      Corrected returned object id for interfaces.ifTable.ifEntry.ifSpecific to 
zeroDotZero (0.0).
      Added etharp_find_addr(), finds eth/IP address pair by interface ptr and 
IP address.
      Exported udp_pcbs in udp.h (for SNMP agent).
      Added SNMP counters, moved some defines.
      Corrected comment typo.
      MIB-2 object values near to completion, just committing for keeping the 
flame alive.
      Moved noleafs_get_object_def() and noleafs_get_value() protos from mib2.c 
to snmp_structs.h
      Fixed bug #17200, added check for broadcast destinations for PCBs bound 
to a unicast address.
      Accepting zero length identifiers e.g. for getnext operation. Uncommon 
but valid.
      Fixed htons into htonl for trap desctination ip.
      Started with getnext and ensure zero length identifiers are accepted.
      Added tree expansion func protos for getnext.
      Added SNMP counters.
      Pacified GCC warnings.
      Pacified GCC warnings and fixed double mem_free() while returning 
nosuchname err.
      Pacified GCC warnings and elaborated getnext to work on scalars, tables 
don't work yet.
      Added index tree node structs and functions, e.g. to be used for ARP 
table indexes.
      Changed index structs to mib_list_node structs to place the table index 
trees directly in the mib tree.
      Added newlines in debug output, small optimalisations, more work on 
'getnext', fixed 'get' on udp table.
      First getnext succes, values are returned insead of NULLs, empty tables 
are skipped. Limitation: a single varbind per request, so 'snmptable' will fail.
      Corrected snmp_delete_arpidx_tree() to be called in the expired state, 
not only maxage.
      Fixed compilation for LWIP_SNMP 0.
      Improved TRAP interfacing. Varbinds maybe allocated at (external) trap 
source as wel. Added trap destination settings.
      Documented TRAP destination setup.
      Fixed sysObjectID length to copy private IDs with unkown lengths properly.
      Added some lines for SET command.
      Fixed double iterator bug in send_trap(), multiple trap destinations work 
ok now.
      Improved mib node struct for external object access and moved 
get_object_def() calls to the message processing bit.
      Moved SNMP_CONCURRENT_REQUESTS to opt.h, babysteps for external MIB nodes.
      Fixed NULL dereferencing for zero length raw data.
      Added newlines to LWIP_DEBUGFs.
      Added one strategic LWIP_DEBUGF to snmp_send_response().
      Set TODO_SNMP_MSG_EVENT to 1. Moved some more code from snmp_recv() to 
      Added snmp_msg_event_loop() prototype.
      Redesign of snmp_msg_event() fsm, added SNMP SET to fsm.
      Added en->set_value_a() call for closing external transactions.
      Fixed encoding of object sub identifiers with trailing zero.
      Added en->get_value_a() call for zero size get_value replies, e.g. for 
closing external transactions.
      Fixed snmp_mib_node_insert() to return 2, for node present (not 
inserted). Also solves invalid rootnode count for this case.
      Added external mibnode panic closure functions, tobe called for error 
      Added missing snmp_delete_arpidx_tree() in find_entry where entry state 
      Fixed clearing of head and tail pointers in snmp_mib_node_delete().
      Improved message parse robustness. Rejecting 'error requests'. Removed 
invalid genError return on varbindlist parse error, changed badValue into 
noSuchName error for non-writeable objects.
      Fixed up mib_external_node support, snmpwalk works for external objects.
      Only mentioning SNMP development additions instead of changes, since 
we're in pre-alpha.
      Fixed Nagle algorithm as reported by Bob Grice.
      Partially accepted patch #5449 for ANSI C compatibility / build fixes. 
Fixed  bug #17574 corrected UDP-Lite protocol identifier.
      Fixed decoding of negative integers in snmp_asn1_dec_s32t(), removed 
      Removed EXPERIMENTAL status.
      Again, fixed decoding of negative integers in snmp_asn1_dec_s32t(), tnx 
to though testing by Sander.
      Added warning about using mem_malloc in sys_arch.c, cold case bug #1913 .
      Cold case #9191 fixes for NC30 compiler for the M16 mcu, reported by 
Bjorn Sundman.
      Made ip_id static again, fixing bug #18065. This is required when 
outputting IP fragments.
      Added netif_set_up and call protection for NULL function pointers. Bug 
#16602 and #17777.
      Replaced tabs with space.
      Trimmed whitespace at line ends.
      Added missing NULL return checks for snmp_mib_lrn_alloc() and trimmed 
whitespace at line ends.
      Initial attempt at fixing bug #17922, calling for reviewers. This seems 
to work for me, more or less, but it looks like it breaks TCP.
      Removed mem_dump() reference.
      Added snmp_send_trap() parameter, caller must pass enterprise id for 
enterprise secific traps.
      Changed heap to use naturally aligned start address and added near-fit 
case to #17922 fix.
      Accepted patch #5493 IP frag/reass config item tweak.
      Fixed uninitalized variable warnings (using gcc 4.1.1)
      In netif_add() fixed clearing of ip_addr, netmask, gw and flags.
      Disabled alignment fix. Stepping back, #17922 fix fails on my target, 
DHCP won't start, I don't understand.
      Fixed false triggers of request_timeout.
      Included xid to some DEBUGFs.
      Added MEM_LIBC_MALLOC option as workaround for failing mem_malloc().
      Added MEM_LIBC_MALLOC option as workaround for failing mem_malloc().
      Fix the fix for GETSHORT and GETLONG bug #19052, needs to be tested by 
some PPP user.

chrysn (6):
      make timeouts usable reliably from outside of the timeout routine
      use u32_t instead of u_int32_t
      include the memp struct list once before actually using it
      (api break) qualify ip_addr_t as const where feasible
      fix return type of netif_add_ip6_address mismatch
      PPP, FSM, don't call memcpy with NULL even when size = 0

curtmcd (9):
      memp_memory could be unaligned, causing one buffer in the memp pool to
      Improve formatting by fixing wrong indents and lines too long.
      udp_input() operated by removing the IP and UDP headers, putting back
      Add comment about purpose of struct ip_addr2.
      Fix gcc warning per discussion on lwip-users 2006.04.25: dereferencing
      Use isprint() instead of isascii() as it's more common
      Remove unused mem_reallocm
      Fix debug print, remove reference to TCP_COARSE_TIMEOUT
      Fix incorrect calculation of dhcp->dns_count.

davidhaas (27):
      Added lightweight protection. In coldfire this is implemented by disabling
      Add the following features and bugfixes:
      Fixed some build issues regarding snmp.h
      sys_thread_new() now returns the thread (request from Marc Boucher).
      Fix some compile issues with both coldfire and unix builds.
      Made sys_arch_prot() interface more generic by returning sys_prot_t 
      By request: moved lightweight protection to macros.
      Allow minimal unix target to build in cygwin (but not necessarily run).
      Fixed SYS_ARCH_PROTECT macros when NO_SYS is not defined.
      Fixed build for coldfire after last debug.h and opt.h changes.
      Added default settings for DBG_MIN_LEVEL and definitions for the possible
      Fix to last fix for bug 2826: find_arp_entry() was now not finding any
      Fixed up and made work a PBUF_REF type. Most of the code uses this now
      Fixed memory leak caused by my last pbuf_ref change.
      Typo bug. The wrong semaphore was being signalled.
      Fixed minor compile issues.
      Made lwip timeout measurements accurate by no longer returning 1 
      Fix pbuf_chain() to update tot_len of last buffer in first chain properly.
      Fixed issue in pbuf_take():  old pbuf of type PBUF_REF was being 
      In keeping with pbuf->ref always having the count of the number of 
      Fixed last change to pbuf_take. There were two calls to pbuf_free in a 
      Updated sys_arch documentation to make new timeouts clearer.
      Fixed bug where tearing down a connection would cause loss of memory.
      Made memory stats more accurate (real amount and max amount of memory 
      Fix memory leaks.
      Got rid of pbuf_pool_alloc_cache and pbuf_pool_free_cache. Also got rid of

fbernon (277):
      no message
      udp.c: remove obsolete line "static struct udp_pcb *pcb_cache = NULL;"
      api_lib.c: Fix "[patch #5764] api_lib.c cleanup: after patch #5687" (from 
Dmitry Potapov).
      api_msg.c: Remove some compiler warnings : parameter "pcb" was never 
      opt.h, sockets.h: add new configuration options 
      opt.h, ip_frag.h, tcpip.h, tcpip.c, ethernetif.c: add new configuration  
option named ETHARP_TCPIP_ETHINPUT, which enable the new tcpip_ethinput. Allow 
to do ARP processing for incoming packets inside tcpip_thread  (protecting ARP 
layer against concurrent access). You can also disable old code using tcp_input 
with new define ETHARP_TCPIP_INPUT set to 0. Older ports have to use 
      Implement SO_RCVTIMEO on UDP sockets/netconn.
      Fix some "little" build problems, and a redundancy call to 
"lwip_stats.link.recv++;" in low_level_input() & ethernetif_input().
      Implement LWIP_SO_RCVTIMEO configuration option to enable/disable 
SO_RCVTIMEO on UDP sockets/netconn.
      Keepalive values can be configured at compile time, but don't change this 
unless you know what you're doing (default are RFC1122 compliant).
      Keepalive values can be configured at run time with LWIP_TCP_KEEPALIVE, 
but don't change this unless you know what you're doing (default are RFC1122 
compliant). Note that TCP_KEEPIDLE and TCP_KEEPINTVL have to be set in seconds.
      Based on patch from Dmitry Potapov, bug#19225.
      New configuration option LWIP_IGMP to enable IGMP processing. Based on 
only one filter per all network interfaces. Declare a new function in netif to 
enable to control the MAC filter (to reduce lwIP traffic processing).
      Add igmp.h and igmp.c inside tree :
      Remove unimplemented "memp_realloc" function from memp.h.
      Add return types to tcpip_apimsg() and api_msg_post() to check ERR_MEM 
problems (api_lib.c can be change now).
      tcpip.c: Initialize tcpip's mbox, and verify if initialized in 
tcpip_input, tcpip_ethinput, tcpip_callback, tcpip_apimsg, to fix a init 
problem with network interfaces. Also fix a compiler warning.
      memp.h, stats.c: Fix stats_display function where memp_names table wasn't 
synchronized with memp.h
      Remove obsolete include from my port.
      api_msg.c, igmp.c, igmp.h: Fix C++ style comments
      opt.h: Add LWIP_NETIF_CALLBACK (to avoid compiler warning) and set it to 
      api_lib.c, api_msg.c, tcpip.c: integrate sys_mbox_fetch(conn->mbox, NULL) 
calls from api_lib.c to tcpip.c's tcpip_apimsg(). Now, use a local variable and 
not a dynamic one from memp to send tcpip_msg to tcpip_thread in a synchrone 
call. Free tcpip_msg from tcpip_apimsg is not done in tcpip_thread. This give a 
faster and more reliable communication between api_lib and tcpip.
      ethernetif.c: update netif->input calls to check return value. In older 
ports, it's a good idea to upgrade them, even if before, there could be another 
problem (access to an uninitialized mailbox).
      api_lib.c: somes resources couldn't be freed if there was errors during 
      api_msg.h, api_msg.c: Remove obsolete API_MSG_ACCEPT and do_accept (never 
      stats.h, stats.c, msg_in.c: Stats counters can be change to u32_t if 
necessary with the new option LWIP_STATS_LARGE. If you need this option, define 
LWIP_STATS_LARGE to 1 in your lwipopts.h. More, unused counters are not defined 
in the stats structs, and not  display by stats_display(). Note that some 
options (SYS_STATS and RAW_STATS) are defined but never used. Fix msg_in.c with 
the correct #if test for a stat display.
      api_lib.c (from Dmitry Potapov) : patch for netconn_write(), fixes a 
possible race condition which cause to send some garbage. It is not a 
definitive solution, but the patch does solve the problem for most cases.
      opt.h, tcpip.c: New configuration option LWIP_ARP allow to disable ARP 
init at build time if you only use PPP or SLIP. The default is enable. Note we 
don't have to call  etharp_init in your port's initilization sequence if you 
use tcpip.c, because this call is done in tcpip_init function.
      netif.h, netif.c: A new NETIF_FLAG_ETHARP flag is defined in netif.h, to 
allow to initialize a network interface's flag with. It tell this interface is 
an ethernet device, and we can use ARP with it to do a "gratuitous ARP" (RFC 
3220 "IP Mobility Support for IPv4" section 4.6) when interface is "up" with 
      opt.h, netif.h, dhcp.h, dhcp.c: New configuration option 
LWIP_NETIF_HOSTNAME allow to define a hostname in netif struct (this is just a 
pointer, so, you can use a hardcoded string, point on one of your's ethernetif 
field, or alloc a string you will free yourself). It will be used by DHCP to 
register a client hostname, but can also be use when you call snmp_set_sysname.
      Minor. Add LWIP_NETIF_HOSTNAME in skeleton and comment on #endif for 
      api.h, api_lib.c, sockets.c: netbuf_ref doesn't check its internal 
pbuf_alloc call result and can cause a crash. lwip_send now check netbuf_ref 
      Missing recv_timeout initialize in accept_function. Minor style fix 
(indent, mbox checking...)
      most of files: prefix all debug.h define with "LWIP_" to avoid any 
conflict with others environment defines (these were too "generic").
      Fix on NETIF_FLAG_ETHARP test (test inverted)
      api_msg.c: add a "pcb_new" helper function to avoid redundant code, and 
to add missing  pcb allocations checking (in do_bind, and for each raw_new). 
Fix style.
      Add NETIF_FLAG_ETHARP flag and comments in this skeleton.
      ip.c: if IP_REASSEMBLY is set to 1, don't set the IP_DF ("Don't 
fragment") flag in the IP header in IP output packets.
      Don't set the IP_DF ("Don't fragment") flag in the IP header in IP output 
packets. See patch #5834.
      sockets.c: remplace ENOBUFS errors on alloc_socket by ENFILE to be more 
BSD compliant.
      api_msg.c: Fix bug #16830: "err_tcp() posts to connection mailbox when no 
pend on the mailbox is active". Now, the post is only done during a connect, 
and do_send, do_write and do_join_leave_group don't do anything if a previous 
error was signaled.
      Fix mistakes in netconn's error field checking.
      opt.h, tcpip.h, tcpip.c, netifapi.h, netifapi.c: New configuration option 
LWIP_NETIF_API allow to use thread-safe functions to add/remove netif in list, 
and to start/stop dhcp clients, using new functions from netifapi.h. Disable as 
default (no port change to do).
      opt.h: rename DBG_TYPES_ON & DBG_MIN_LEVEL with LWIP_ prefix.
      Remove forgotten printf in pbuf_init().
      Minor fix (tab, indent...) to respect source code style...
      sockets.c, api.h, api_lib.c, api_msg.h, api_msg.c: Fix bug #19162 
"lwip_sento: a possible to corrupt remote addr/port connection state". Reduce 
problems "not enought memory" with netbuf (if we receive lot of datagrams). 
Improve lwip_sendto (only one exchange between sockets api and api_msg which 
run in tcpip_thread context). Add netconn_sento function. WARNING, if you 
directly access to "fromaddr" & "fromport" field from netbuf struct, these 
fields are now renamed "addr" & "port".
      sockets.c, api_lib.c, api_msg.h, api_msg.c, netifapi.h, netifapi.c, 
tcpip.c: Include a function pointer instead of a table index in the message to 
reduce footprint. Disable some part of lwip_send and lwip_sendto if some 
options are not set (LWIP_TCP, LWIP_UDP, LWIP_RAW).
      Include inet.h to avoid warnings (see 
      Minor fix (tabs)
      tcpip.c, igmp.h, igmp.c: Fixed bug "#19800 : IGMP: igmp_tick() will not 
work with NO_SYS=1". Note that igmp_init is always in tcpip_thread (and not in 
tcpip_init) because we have to be sure that network interfaces are already 
added (mac filter is updated only in igmp_init for the moment).
      Remove warning in snmp/msg_in.c
      Minor fixs to reduce footprint on the "recv part" of Sequential API...
      Minor Fix (unsed code, spaces, idents..)
      api_msg.c: Fix some errors forwarding 
      Remove warning (missing include)
      Minors fix (spaces, comments, unused variable)
      api.h, api_lib.c, api_msg.h, api_msg.c: change the struct api_msg_msg to 
see which parameters are used by which do_xxx function, and to avoid "misusing" 
parameters (patch #5938).
      sys.h, sys.c, api_lib.c, tcpip.c: remove sys_mbox_fetch_timeout() (was 
only used for LWIP_SO_RCVTIMEO option) and use sys_arch_mbox_fetch() instead of 
sys_mbox_fetch() in api files. Now, users SHOULD NOT use internal lwIP features 
like "sys_timeout" in their application threads.
      Minor fix (spaces, indent) and check for LWIP_SO_RCVTIMEO..
      api.h, api_lib.c, api_msg.c, sockets.c: group the different 
NETCONN_UDPxxx code in only one part...
      api_lib.c: Fixed bug #5957 "Safe-thread problem inside netconn_recv" to 
return an error code if it's impossible to fetch a pbuf on a TCP connection 
(and not directly close the recvmbox).
      api_lib.c, sockets.c: Fixed bug #5958 for netconn_listen (acceptmbox only 
allocated by do_listen if success) and netconn_accept errors handling. In most 
of api_lib functions, we replace some errors checkings like "if (conn==NULL)" 
by ASSERT, except for netconn_delete.
      api_lib.c: Implement SO_RCVTIMEO for accept and recv on TCP connections, 
such present in patch #5959.
      Fixed patch #5965 : Remove unused conntype in struct api_msg_msg, by 
Simon Goldsmith
      Minor, fix files modified by last patch...
      Minor fix for warning: pbuf_copy declaration is now mandatory (since it's 
used in icmp.c)
      Minor, fix an obsolete comment about LWIP_SO_RCVTIMEO
      Fix typo and remove RAW_STATS (not used)
      Minor fix (spaces)
      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....
      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, ...)
      Patch from Jared Momose (address@hidden) for bug #19699 : "Bug in SNMP 
ASN1 decode; submitted patch"
      Contrib module by Dominik Spies: autoip.h, autoip.c, dhcp.h, dhcp.c, 
netif.h, netif.c, etharp.h, etharp.c, opt.h: AutoIP implementation available 
for IPv4, with new options LWIP_AUTOIP and LWIP_DHCP_AUTOIP_COOP if you want to 
cooperate with DHCP. Some tips to adapt (see TODO mark in the source code).
      Minor fix (coding style)
      Minor fix. Add comments in source file from documentation text file by 
Dominik Spies.
      Minor fix. Add "static" to IGMP's global variables, and rename group_list 
to igmp_group_list...
      tcp_out.c: Fix for bug #20075 : "A problem with keep-alive timer and TCP 
flags" where TCP flags wasn't initialized in tcp_keepalive. Reported by 
Srinivas Gollakota with help of Oleg Tyshev.
      Partial fix for bug# 20147: "getsockopt() with SO_ERROR option" 'socket 
layer error is not updated if no operation on netconn).
      Minor fix (comment is not at the good place)
      opt.h, mem.h, mem.c, memp.c, pbuf.c, ip_frag.c, vj.c: Fix bug #20162. 
avoid some macro names collision with some OS macros.
      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...).
      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 
      tcp_in.c: Fix bug #20126 : Zero ssthresh bug (by Per-Henrik Lundblom and 
Kieran Mansley).
      Minor fix: warning, type... for patch #5952 : Integration of AutoIP module
      Some changes for AutoIP integration in tcpip.c, and some comments.
      Minor changes: fix some comments for Doygen documentation
      autoip.h/.c: change autoip_init & autoip_create_rand_addr to use netif's 
MAC address and tried_llipaddr to generate an "autoip"...
      sockets.c: process NETCONN_RAW connections with LWIP_TCPIP_CORE_LOCKING=1
      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...)
      autoip.c: replace most of rand() calls by a macro LWIP_AUTOIP_RAND which 
compute a "pseudo-random" value based on netif's MAC and some autoip fields. 
It's always possible to define this macro in your own lwipopts.h to always use 
C library's rand(). Note that autoip_create_rand_addr doesn't use this macro.
      Minor fix (extra spaces)
      sockets.h, sockets.c: Implement MSG_PEEK flag for recv/recvfrom functions.
      ip.h, etharp.c: Fix warnings & errors about LWIP_NETIF_HWADDRHINT 
(perhaps compiler dependant)
      Minor fix (indent)
      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).
      Fix minor patch #5741 build error...
      Fix bug #20315: possible memory leak problem if tcp_listen failed, 
because current code doesn't follow rawapi.txt documentation.
      api_msg.c: Fix bug #20318: api_msg "recv" callbacks don't call pbuf_free 
in all error cases.
      opt.h, netif.h, netif.c, ethernetif.c: Add new configuration option to 
add a link callback in the netif struct, and functions to handle it. Be 
carefull for port maintainers to add the NETIF_FLAG_LINK_UP flag (like in 
ethernetif.c) if you want to be sure to be compatible with future changes...
      Minor fix: debug text inside ethernetif_input
      Fix do_delconn when used with LWIP_TCPIP_CORE_LOCKING=1 on "non-TCP" 
      Minor Fix: remove obsolete MEMP_NUM_API_MSG define and update comment
      igmp.c: Fix bug #20595 to accept IGMPv3 "Query" messages.
      Minor fix (warning, linker helper) signaled by Bill Florac
      Minor fix on pbuf_init (fix warning) and use same coding style that 
mem.h, sys.h, tcp.h, etc...
      Minor fix (warning when LWIP_DEBUG is undefined)
      Minor fix (warning when LWIP_DEBUG is undefined)
      Minor fix (warnings on unused args, wrong type, cast u32_t to u16_t...)
      Minor fix (spaces)
      igmp.h, igmp.c, ip.c: Fix minor changes from bug #20503 : IGMP 
Improvement. This is mainly on using lookup/lookfor, and some coding styles...
      udp.c: Fix for bug #20503 : IGMP Improvement. Enable to receive a 
multicast packet on a udp pcb binded on an netif's IP address, and not on "any".
      stats.h, stats.c, igmp.h, igmp.c, opt.h: Fix for bug #20503 : IGMP 
Improvement. Introduce IGMP_STATS to centralize statistics management.
      Minor Fix (remove unused USE_ROUTER_ALERT and some coding style)
      Comments Fix for Doxygen documentation
      Minor change: add in tcp_in.c in tcp_input(), some calls to handle error 
statistics (stats & snmp)
      Minor changes (tabs, ident, coding style...)
      Add raw_init in tcpip_init + minor changes (tabs, ident, coding style...)
      Minor changes (tabs)
      Fix comment
      Minor change (fix comment)
      Fix wrong define for both pool "struct tcpip_msg" + minor fix (coding 
      Replace PBUF_LINK_HLEN before PBUF_POOL_BUFSIZE, restore PPP options 
changed by Marc Boucher but lost with last Jared changes...
      Force a build error if MEMP_NUM_TCPIP_MSG is always defined
      Rename pbuf's "flgs" in "flags" (see in [lwip-devel] Last changes by Marc)
      Forget to rename this line (pbuf->flgs->pbuf->flags)
      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).
      Minor fix (spaces and comment)
      netif.h, netif.c, opt.h: Rename LWIP_NETIF_CALLBACK in 
option before next release.
      netif.h, netif.c: Integrate "patch #6163 : Function to check if link 
layer is up". Add a netif_is_link_up() function if LWIP_NETIF_LINK_CALLBACK 
option is set.
      First fix for "bug #20900 : Potential crash error problem with 
netconn_peer & netconn_addr". Introduce NETCONN_LISTEN netconn_state and remove 
      Fix coding style (use #if and not #ifdef) for IPv6
      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).
      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).
      Minor fix: replace C++ comments by C comments.
      Minor Fix (ident)
      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.
      Minor fix (coding style, comments, spaces, endline...)
      init.c: Add first version of lwip_sanity_check for task #7142 "Sanity 
check user-configurable values".
      igmp.h, igmp.c: Some changes to remove some redundant code, add some 
traces, and fix some coding style.
      Replace API programmation error checking for IGMP join/leave 
(ismulticast(addr)) by LWIP_ERROR checking.
      Minor change (ident, remove comment, change trace text)
      Add some others sanity checkings
      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.
      Minor fix (use ETHARP_HWADDR_LEN)
      Minor fix (else, cause build error). Since SO_REUSE is always used in the 
code (even if the current code is not working), it is defined in opt.h with 0 
as default value (it's normal). So, the error is not if it is defined, but if 
it is defined to 1.
      Add enum snmp_ifType in snmp.h, and use it in network interfaces for 
      Add in igmp_joingroup & igmp_leavegroup a LWIP_ERROR checking on netif 
      Replace "netif_default = NULL;" by "netif_set_default(NULL);" in 
netif_remove (do some processing, like for SNMP...)
      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).
      Minor changes (fix some warnings like "function declaration isn't a 
prototype" and "no previous prototype for 'lwip_init'"...)
      Fix warnings inside sockets.c with "gcc" compilers. See "Description" in 
http://www.opengroup.org/onlinepubs/007908799/xns/syssocket.h.html :
      Replace mem_malloc call by memp_malloc, and use a new MEMP_NUM_IGMP_GROUP 
option (see opt.h to define the value). It will avoid potential fragmentation 
problems, use a counter to know how many times a group is used on an netif, and 
free it when all applications leave it. MEMP_NUM_IGMP_GROUP got 8 as default 
value (and init.c got a sanity check if LWIP_IGMP!=0).
      Minor fix (add some parenthesis where macro expansion could cause 
      Move some build time checkings inside init.c for task #7142 "Sanity check 
user-configurable values".
      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.
      Integrate "task #7272 : LWIP_ICMP option". The new option LWIP_ICMP 
enable/disable ICMP module inside the IP stack (enable per default). Be 
careful, disabling ICMP make your product non-compliant to RFC1122, but help to 
reduce footprint, and to reduce "visibility" on the Internet.
      several-files: replace some #include "arch/cc.h" by "lwip/arch.h", or 
simply remove it as long as "lwip/opt.h" is included before (this one include 
"lwip/debug.h" which already include "lwip/arch.h"). Like that, default defines 
are provided by "lwip/arch.h" if they are not defined in cc.h, in the same 
spirit than "lwip/opt.h" for lwipopts.h.
      DON'T WORRY, it's just a test on CVS keywords (I will remove)
      DON'T WORRY, it's just a test on CVS keywords (I will remove)
      DON'T WORRY, it's just a test on CVS keywords (I will remove)
      Last sanity checking centralization for "task #7142 : Sanity check 
user-configurable values".
      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.
      Add some deprecated options from "task #7142 : Sanity check 
user-configurable values".
      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.
      igmp.h, igmp.c, netif.h, netif.c, ip.c: To enable to have interfaces with 
IGMP, and others without it, there is a new NETIF_FLAG_IGMP flag to set in 
netif->flags if you want IGMP on an interface. igmp_stop() is now called inside 
netif_remove(). igmp_report_groups() is now called inside netif_set_link_up() 
(need to have LWIP_NETIF_LINK_CALLBACK=1) to resend reports once the link is up 
(avoid to wait the next query message to receive the matching multicast 
      Add missing include files.
      Remove CVS keyword
      enable to remove SNMP timer (which consumne several cycles even when it's 
not necessary). snmp_agent.txt tell to call snmp_inc_sysuptime() each 10ms 
(but, it's intrusive if you use sys_timeout feature). Now, you can decide to 
call snmp_add_sysuptime(100) each 1000ms (which is bigger "step", but call to a 
lower frequency). Or, you can decide to not call snmp_inc_sysuptime() or 
snmp_add_sysuptime(), and to define the SNMP_GET_SYSUPTIME(sysuptime) macro. 
This one is undefined by default in mib2.c. SNMP_GET_SYSUPTIME is called inside 
snmp_get_sysuptime(u32_t *value), and enable to change "sysuptime" value only 
when it's queried (any direct call to "sysuptime" is changed by a call to 
      Add missing #if/#endif to fix build problems
      Add missing #if/#endif to fix build problems with:
      Add a sanity check for PPP, and a #if !NO_SYS/#endif for slipif_loop
      Avoid to lost previous error codes in sockets.c and api_lib.c.
      Fix "bug #21075 : pbuf_realloc() use with PBUF_RAM and MEM_LIBC_MALLOC 
fails" signaled by Bill Florac
      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 
      Minor changes by Andrew Dennison: add sanity check, improve debug 
messages for memp, fix some warnings...
      Minor change, sys_prot_t is undefined is NO_SYS=1
      Minor changes for debug (indent, and set LWIP_DBG_TYPES_ON to LWIP_DBG_ON 
to have all traces selected display per default, in the same spirit that 
LWIP_DBG_MIN_LEVEL is set per default to LWIP_DBG_LEVEL_OFF)
      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).
      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).
      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).
      Fix CHANGELOG entry
      Minor change (coding style)
      Minor change (add a default value to tune for MEMP_NUM_REASSDATA in opt.h)
      Add sanity checking on TCP_MAXRTX and TCP_SYNMAXRTX
      Update documentation for the SNMP uptime timestamp.
      Update documentation for the SNMP uptime timestamp.
      Minor fix (remove warning)
      Minor change (sanity check for MEMP_NUM_REASSDATA only done if 
      Minor change (define DHCP_COARSE_TIMER_MSECS - using 
DHCP_COARSE_TIMER_SECS -  to use milliseconds like all others timers)
      Minor change (coding style, #if/#endif to include icmp.h is not necessary)
      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.
      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".
      Minor change, add comment for "apiflags" parameters.
      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).
      sockets.c, api.h, api_lib.c, api_msg.h, api_msg.c: Fixed bug #20900. Now, 
most of the netconn_peer and netconn_addr processing is done inside 
tcpip_thread context in do_getaddr.
      opt.h, init.c, tcpip.c, dhcp.c, dns.h, dns.c: add DNS client for simple 
name requests with RAW api interface. Initialization is done in lwip_init() 
with build time options. DNS timer is added in tcpip_thread context. DHCP can 
set DNS server ip addresses when options are received. You need to set 
LWIP_DNS=1 in your lwipopts.h file (LWIP_DNS=0 in opt.h). DNS_DEBUG can be set 
to get some traces with LWIP_DEBUGF. Sanity check have been added. There is a 
"todo" list with points to improve.
      Minor changes on DNS client.
      Minor changes on DNS client. Note that "compressed answers are fixed".
      Minor changes on DNS client. Coding style & add "response" checking
      Changes on DNS client. Add multiples dns servers support.
      fix DNS problem with pbuf chain.
      Minor changes on DNS.
      Fix DNS client TTL processing.
      api_msg.c, dns.h, dns.c: Implement DNS_DOES_NAME_CHECK option (check if 
name received match the name query), implement DNS_USES_STATIC_BUF (the place 
where copy dns payload to parse the response), return an error if there is no 
place for a new query, and fix some minor problems.
      Minor changes in DNS client.
      Minor changes (typo and wrong defines names in sanity checks)
      Minor change (doxygen tags)
      Minor changes (documentation).
      Minor change (redundant code)
      Minor change: add #if 0 / #endif in ethernetif.c skeleton to avoid false 
bug reports.
      Minor change (forgot last CRLF)
      Fix to be able to build SNMP with LWIP_ARP=0. It's not a perfect 
solution, but I put some @todo points to review them later.
      Fix macro ERR_IS_FATAL (else, no error is fatal).
      First fix for bug #21664 "PPP code is broken".
      Minor changes: dnsserver initialization with DNS_SERVER_ADDRESS in 
      Minor changes: fix some problems with PPPoE include path, add small 
comments in slip.c (unusual octal values?)
      process "localhost" name in dns_gethostbyname
      Changes for coding style (typo, use LINK_STATS_INC, tabs, ident, etc...). 
Be careful, even if this change is minor, there is lot of lines modified, so, 
an error is always possible (I hope there is no problems).
      Minor changes: coding style (tabs, ident, etc...).
      Minor changes: coding style (tabs, ident, etc...).
      Minor changes: coding style (tabs, ident, etc...).
      Include a temporary sample of queue.h to fix build.
      Minor changes: coding style (tabs, ident, etc...).
      Minor changes: coding style (tabs, ident, etc...).
      Minor changes (tabs)
      netdb.c: add a LWIP_DNS_API_HOSTENT_STORAGE option to decide to use a 
static set of variables (=0) or a local one (=1). In this last case, your port 
should provide a function "struct hostent* sys_thread_hostent( struct hostent* 
h)" which have to do a copy of "h" and return a pointer ont the "per-thread" 
      Fix err_stderr[] table with new err.h defines.
      dns.h, dns.c, opt.h: move DNS options to the "right" place. Most visibles 
are the ones which have ram usage.
      Minor change: move DNS_MSG_SIZE in opt.h, add comments.
      api_msg.c, err.h, err.c, sockets.c, dns.c, dns.h: replace "enum 
dns_result" by err_t type. Add a new err_t code "ERR_INPROGRESS".
      Minor changes in PPP (coding style, tabs, idents...)
      ip.c: Fix bug #21846 "LwIP doesn't appear to perform any IP Source 
Address Filtering" reported by Tom Evans.
      autoip.c, etharp.c: ip_addr.h: Integrate patch #6348: "Broadcast ARP 
packets in autoip". The change in etharp_raw could be removed, since all calls 
to etharp_raw use ethbroadcast for the "ethdst_addr" parameter. But it could be 
wrong in the future.
      Minor changes: fix some PPP traces.
      rawapi.txt, api.h, api_lib.c, api_msg.h, api_msg.c, sockets.c, tcp.h, 
tcp.c,     tcp_in.c, init.c, opt.h: rename backlog options with TCP_ prefix, 
limit the "backlog" parameter in an u8_t, 0 is interpreted as "smallest queue", 
add documentation in the rawapi.txt file.
      Minor changes in lwip folder: fix some warnings, coding style, and rename 
"internal" netconn_alloc function.
      Minor changes in lwip folder: fix some warnings.
      Minor changes in lwip folder: fix some warnings.
      sys_arch.txt, api.h, api_lib.c, api_msg.h, api_msg.c, tcpip.c, sys.h, 
opt.h: Introduce changes for task #7490 "Add return value to sys_mbox_post" 
with some modifications in the sys_mbox api: sys_mbox_new take a "size" 
parameters which indicate the number of pointers query by the mailbox. There is 
three defines in opt.h to indicate sizes for tcpip::mbox, netconn::recvmbox, 
and for the netconn::acceptmbox. Port maintainers, you can decide to just add 
this new parameter in your implementation, but to ignore it to keep the 
previous behavior. The new sys_mbox_trypost function return a value to know if 
the mailbox is full or if the message is posted. Take a look to sys_arch.txt 
for more details. This new function is used in tcpip_input (so, can be called 
in an interrupt context since the function is not blocking), and in recv_udp 
and recv_raw.
      Fix DHCP build problem.
      tcpip.h, tcpip.c, api.h, api_lib.c, api_msg.c, sockets.c: replace the 
field netconn::mbox (sys_mbox_t) per netconn::sem (sys_sem_t) for the task 
#7490 "Add return value to sys_mbox_post".
      tcpip.h, tcpip.c: add tcpip_callback_with_block function for the task 
#7490 "Add return value to sys_mbox_post". tcpip_callback is always defined as 
"blocking" ("block" parameter = 1).
      api_msg.c, opt.h: replace DEFAULT_RECVMBOX_SIZE per 
DEFAULT_RAW_RECVMBOX_SIZE (to optimize queues sizes), like suggested for the 
task #7490 "Add return value to sys_mbox_post".
      tcpip.h, tcpip.c, api.h, api_lib.c, api_msg.c, sockets.c: replace the 
field netconn::sem per netconn::op_completed like suggested for the task #7490 
"Add return value to sys_mbox_post".
      Minor change: add comment
      ip.c: Integrate patch #6369" ip_input : checking before realloc".
      rawapi.txt, api_msg.c, tcp.c, tcp_in.c, tcp.h: changes for task #7675 
"Enable to refuse data on a TCP_EVENT_RECV call". Important, behavior changes 
for the tcp_recv callback (see rawapi.txt).
      Minor changes: fix some traces in ip_frag.c (coding style and end of 
      Minor changes: fix warning in dhcp_unfold_reply when LWIP_DEBUG=0
      Minor changes: typo in doc files.
      Minor changes: fix a warning: "src\core\ipv4\ip_frag.c (782) : warning: 
potential uninitialized reference to "newpbuflen" in func "_ip_frag""
      tcp.c, tcp_in.c, tcp.h, opt.h: Rename LWIP_CALCULATE_EFF_SEND_MSS in 
TCP_CALCULATE_EFF_SEND_MSS to have coherent TCP options names.
      dns.c: Fix bug #22108 "DNS problem" caused by unaligned structures.
      Minor changes: replace directy call to memcpy by MEMCPY macro.
      Minor changes: fix trace text in etharp.c
      Minor change: add a trace in etharp.c, find_entry
      dhcp.c: minor change for coding style
      inet_chksum.c: minor change for coding style
      api_msg.c: Fix bug #22530 "api_msg.c's recv_raw() does not consume data".
      api_msg.c: fix the netbuf::addr field to point on the ip_src on the 
pbuf's copy (about bug#22530).
      api_msg.c: minor change, fix warning.
      sockets.c: Fix bug #22435 "lwip_recvfrom with TCP break;". Using 
(lwip_)recvfrom with valid "from" and "fromlen" parameters, on a TCP connection 
caused a crash. Note that using (lwip_)recvfrom like this is a bit slow and 
that using (lwip)getpeername is the good lwip way to do it (so, using recv is 
faster on tcp sockets).
      ppp: minor changes: fix some 'is unused' warning when debug is off.
      igmp.h, igmp.c: Fix bug #22613 "IGMP iphdr problem" (could have some 
problems to fill the IP header on some targets, use now the ip.h macros to do 
      api_msg.c: fix wrong mailbox invalidate (NULL was used instead of 
SYS_MBOX_NULL). Spoted by Silas Boyd-Wickizer.
      sockets.h: minor changes, add comments for ToS options
      stats.h: Fix some build bugs introduced with patch #6483 (missing some 
parameters in macros, mainly if MEM_STATS=0 and MEMP_STATS=0).
      sockets.c: fixed bug #25051: lwip_recvfrom problem with udp: fromaddr and 
port uses deleted netbuf.
      netdb.c: remplace some %#p by %p to be more portable.
      init.c: typo
      inet.c: patch #6765: Fix a small problem with the last changes (incorrect 
behavior, with ip address string not ended by a '\0', a space or a end of line)
      netif.c: minor, fix a warning
      raw.c, udp.c, init.c, opt.h, ip.h, sockets.h: bug #26309: Implement the 
SO(F)_BROADCAST filter for all API layers. Avoid the unindented reception of 
broadcast packets even when this option wasn't set. Port maintainers which want 
to enable this filter have to set IP_SOF_BROADCAST=1 in opt.h. If you want this 
option also filter broadcast on recv operations, you also have to set 
      dhcp.c, netbios.c: Changes if IF_SOF_BROADCAST is enabled.
      CHANGELOG: minor, typo
      minor changes: typos and coding style

goldsimon (1255):
      tcpip.c: Moved call to ip_init(), udp_init() and tcp_init() from 
tcpip_thread() to tcpip_init()
      Fix BUG#11400 - don't corrupt existing pbuf chain when enqueuing multiple 
pbufs to a pending ARP request
      Fixed buf #19168 based on patch by Dmitry Potapov
      Corrected patch to bug #19168
      fixed compiler warning "initialization dircards qualifiers from pointer 
target type"
      Reduce code size: don't include code in those files if IP_FRAG == 0 and 
      Last change (reduce code size if not used) had a bug...
      Reverted pbuf_alloc() to REV 1.82
      SNMP UDP ports can be configured at compile time
      Initialize dhcp timers in tcpip_thread (if LWIP_DHCP) to protect the 
stack from concurrent access.
      Fixed bug #11400-2: New etharp queueing introduced bug: memp_memory was 
allocated too small.
      Fixed bug #19251 (missing `const' qualifier in socket functions), to get 
more compatible to standard POSIX sockets.
      checked in patch #5796: pbuf_alloc: len field claculation caused memory 
      fixed bug #5067 (essentialy a signed/unsigned warning fixed by casting to 
      Remove warnings: "comparision between signed and unsigned" and 
"converting from 'unsigned long' to 'u8_t': possible loss of data"
      Remove warning in netif_add(): "converting from 's16' to 'u8_t': possible 
loss of data" (static variable netifnum)
      Remove warnings: "converting from 'u32_t' to 'u16_t': possible loss of 
data": check that received timeout values fit into u16_t.
      Removed warning: sizeof() was automatically casted to negative
      Free pbuf if pbuf_header() fails
      sockets.c Remove "#include <errno.h>" from sockets.c to avoid multiple
      Removed printf formatter warning introduced by last check-in (changed 
local variable from u32_t to u16_t)
      - Changed the names of some variables in SNMP module to avoid them 
shadowing each other (which produces a lot of warnings and makes the code hard 
to maintain)
      Change names of 2 global variables again, as the previous names did not 
have lwip-style...
      Fix bug #5848: add #if PAP_SUPPORT around the whole file pap.h
      Introduced #define LWIP_UNUSED_ARG(x) use this for and 
architecture-independent form to tell the compiler you intentionally are not 
using this variable. Can be overriden in cc.h.
      comment to the last check-in was incomplete: Introduced #define 
LWIP_UNUSED_ARG(x) use this for and architecture-independent form to tell the 
compiler you intentionally are not using this variable. Can be overriden in 
      3rd fix for bug #11400 (arp-queuing): More pbufs than previously thought 
need to be copied (everything but PBUF_ROM!). Cleaned up pbuf.c: removed 
functions no needed any more (by etharp).
      Ongoing fix to patch #5822: converted more statements like (void)arg; 
into LWIP_UNUSED_ARG(arg);
      Changed the comment to pbuf_realloc() that it can't grow (only shrink) 
chains to reflect the fact that we decided not to change this.
      fix bug #2595: "loopif results
      Added some more LWIP_UNUSED_ARG()s
      Changed some includes for loopif and added comments
      task #6792: added added LWIP_DEBUG_ASSERT(x,y), which triggers #ifndef 
      Define ETH_PAD_SIZE after including opt.h to avoid conflict with 
      pbuf_alloc() / pbuf_realloc(): added LWIP_DEBUG_ASSERT() and cast 
operator when assigning s32_t to u16_t to get rid of compiler warnings
      PBUF_POOL_BUFSIZE: For the default length, alignment check in pbuf_init() 
      Checked in patch #5453: removed mutex/other locking stuff if 
SYS_LIGHTWEIGHT_PROT=0, moved some pbuf pool logic to static functions
      checked in patch #5913: in memp_malloc() we can return memp as mem to 
save a little RAM (next pointer of memp is not used while not in pool).
      Prototype of igmp_tick() in igmp.h did not match the one in igmp.c
      Introduced fast one-entry-cache to speed up ARP lookup when sending 
multiple packets to the same host.
      Further update to ARP queueing: Changed pbuf_copy() implementation so 
that it can be reused (don't allocate the target pbuf inside pbuf_copy()).
      Another attempt to fix bug #17922
      mem_realloc: Added assert to check that memory is shrinked, not expanded.
      If MEM_LIBC_MALLOC==1, allow the defines (e.g. mem_malloc() -> malloc()) 
to be overriden in case the C-library malloc implementation is not protected 
against concurrent access.
      Fixed 3 typos of the version checked in yesterday...
      Removed unused pbuf stats items
      Included patch #5920: Create define to override C-library memcpy. 2 
Defines are created: MEMCPY() for normal memcpy, SMEMCPY() for situations where 
some compilers might inline the copy and save a function call. Also replaced 
all calls to memcpy() with calls to (S)MEMCPY().
      Included patch #5448: include '#ifdef __cplusplus \ extern "C" {' in all 
header files. Now you can write your application using the lwIP stack in C++ 
and simply #include the core files. Note I have left out the netif/ppp/*h 
header files for now, since I don't know which files are included by 
applications and which are for internal use only.
      Included opt.h before checking the options.
      Added some ASSERTs and NULL-pointer checks to sys_timeout/sys_untimeout
      - Changed mem_malloc(): near fit behaves like exact fit since mem->next 
is always used
      Ooops, checked in the wrong version before :-(
      sys.h: moved #include "arch/sys_arch.h" down a little, so that functions 
using the defines SYS_ARCH_TIMEOUT/SYS_MBOX_EMPTY can be define as static 
(inline) in sys_arch.h. This should not affect any others since the defines 
couldn't be overridden anyway...
      Fix for bug #19740: 2 static functions are unused, simply ifdefing them 
out for now to get rid of warnings
      Fixed bug from patch #5865 by moving the defines for socket options 
(lwip_set/-getsockopt) used with level IPPROTO_TCP from tcp.h to sockets.h.
      Modified struct pbuf size determination so that sizeof(struct pbuf) does 
not necessarily be a multiple of MEM_ALIGNMENT
      (see task #6831): Included new option PBUF_POOL_USES_MEMP to use a memp 
pool for PBUF_POOL pbufs instead of the old pool implementation in pbuf.c to 
remove redundant code.
      task #6831: removed the option PBUF_POOL_USES_MEMP and removed the old 
pbuf pool code, pbuf pool now always allocates from a memp pool
      Found a little bug in ARP_QUEUEING: if pbuf_alloc for the packet to be 
queued failed, pbuf_copy was called with a NULL pointer.
      Aligned MIN_SIZE, memset(0) the complete ram_heap instead of only the 
used area, only to be on the safe side...
      pbuf_alloc(PBUF_POOL): Added asserts to make sure payload+len is still in 
bound of the pbuf (also to make sure bug #15659 is fixed).
      Removed semaphores from memp, changed sys_sem_wait calls into 
sys_arch_sem_wait calls to prevent timers from running while waiting for the 
heap. This fixes bug #19167.
      Updated stats.h/.c to reflect the integration of pbuf pool into memp
      Removed PBUF_STATS and related code from opt.h & msg_in.c
      Finally removed all occurences of PBUF_STATS :-)
      If a udp_pcb has a local_ip set, check if it is the same as the one of 
the netif used for sending to prevent sending from old addresses after a netif 
address gets changed (partly fixes bug #3168).
      Fix bug #19729: free pbuf if netif->input() returns != ERR_OK.
      changes tabs to spaces
      ...and again replacing tab by spaces ;-)
      tcpip_input()/tcpip_ethinput(): don't free the pbuf if returning ERR_MEM, 
that is the netif driver's responsibility
      Added comments whether fields are host or network byte order (task #1568)
      Added comments whether fields are host or network byte order (task #1568)
      Corrected check of PBUF_POOL overflow
      Added #if !NO_SYS to most of the api files since they only work with a 
sys layer (makes it easier for port projects).
      Added some new functions as null-definitions if NO_SYS=1
      Addition to patch #5913: decrease size of memp_memory.
      Check the user-overridable defines MEMP_SANITY_REGION_BEFORE and 
      Gave the overflow functions some better names which correspond to the 
(future) mem.c function names
      Re-included unneeded cases in do_disconnect() and do_send() to prevent 
      Included patch #5938: changed raw_pcb.protocol from u16_t to u8_t since 
for IPv4 and IPv6, proto is only 8 bits wide. This affects the api, as there, 
the protocol was u16_t, too.
      Added some comments, better max-size-check, removed Adams original 
      Broke some (too long) lines down to multiple lines, made the file fit our 
coding standards
      Included some missing braces in lwip_send & lwip_sendto (if !LWIP_UDP && 
      Fixed bug #1895 (tcp_bind not correct) by introducing a list of bound but 
unconnected (and non-listening) tcp_pcbs.
      Use TCP_RMV instead of tcp_pcb_remove when removing pcbs from 
tcp_bound_pcbs list (bug introduced while fixing bug #1895)
      Made etharp_find_addr() use find_entry to concentrate the knowledge of 
arp_table layout in find_entry().
      Checked in patch #5914: Moved sockopt processing into tcpip_thread.
      Done some work on task #1549 (function documentation)
      Corrected bug #19937: ICMP assumes p_buf has space for ethernet header. 
Allocating new pbuf if the input pbuf isn't big enough.
      Done some work on task #1549 (function documentation)
      Needed for patch to bug #19937: pbuf_copy is always compiled, not only if 
ARP_QUEUEING is enabled
      udp_input(): Input pbuf was not freed if pcb had no recv function 
registered, p->payload was modified without modifying p->len if sending 
icmp_dest_unreach() (had no negative effect but was definitively wrong).
      Converted some DEBUGFs that should never happen to LWIP_ASSERTs
      Done some work on task #1549 (function documentation)
      IPv6: #define IPH_PROTO(hdr) (iphdr->nexthdr) to remove #ifdef IPv6 in 
      opt.h, ip_frag.c, ip_frag.h, ip.c: Added option IP_FRAG_USES_STATIC_BUF 
(defaulting to off for now) that can be set to 0 to send fragmented packets by 
passing PBUF_REFs down the stack.
      Set q to NULL after freeing it before returning: cleaner code!
      Typo in lwip_setsockopt() (getsockopt_internal was called instead of 
      Defined IGMP_DEBUG defaulting to LWIP_DBG_OFF in opt.h
      Corrected setsockopt for  LWIP_IGMP=1 (did not compile & errors were not 
      Done some work on task #1549 (function documentation)
      Done some work on task #1549 (function documentation) and minor changes 
to meet coding standard
      Done some work on task #1549 (function documentation)
      Done some work on task #1549 (function documentation)
      Moved members common to structures tcp_pcp and tcp_listen_pcb into define 
TCP_PCB_COMMON (like IP_PCB) to keep (possible) code changes consistent.
      Done some work on task #1549 (function documentation) and minor changes 
to meet coding standard
      Done some work on task #1549 (function documentation)
      Done some work on task #1549 (function documentation)
      Minor changes to meet coding standard
      Fixed a cast warning by including the type to TCP_PCB_COMMON: (Moved 
members common to structures tcp_pcp and tcp_listen_pcb into define 
TCP_PCB_COMMON (like IP_PCB) to keep (possible) code changes consistent.)
      Done some work on task #1549 (function documentation)
      Done some work on task #1549 (function documentation)
      Let lookup_group() call lookfor_group() to reduce code size, done some 
work on task #1549 (function documentation) and minor changes to meet coding 
      Done some work on task #1549 (function documentation) and minor changes 
to meet coding standard + added some comments to make the code easier to read.
      Added define NETIF_INIT_SNMP(type, speed) to initialize per-netif snmp 
variables, added initialization of those to slipif and loopif.
      loopif_output(): use pbuf_copy() to copy the pbuf to reduce code size
      pbuf_copy(): Corrected a wrong comment & try to behave correctly if 
LWIP_NOASSERT is defined
      Changed define NETIF_INIT_SNMP(type, speed) to include the name of the 
struct netif to change...
      Done some work on task #1549 (function documentation)
      Minor change: don't define some local (unused) variables if 
      Changed etharp_tmr() to be smaller
      Modified order of parameters for etharp_output() to match netif->output 
so etharp_output() can be used directly as netif->output to save one function 
      Corrected #if ... when to include copy_from_pbuf()
      set netif->output to etharp_output by default to save a function call
      Forgot some brackets in an if statement in v1.109
      Included switch LWIP_UDPLITE (enabled by default) to switch off UDP-Lite 
support if not needed (reduces udp.c code size)
      UDP Lite: corrected the use of chksum_len (based on RFC3828: if it's 0, 
create checksum over the complete packet. On RX, if it's < 8 (and not 0), 
discard the packet. Also removed the duplicate 'udphdr->chksum = 0' for both 
UDP & UDP Lite.
      Added UDP lite support for sockets
      In udp_input, for UDP Lite, chksum_len_tx was used instead of 
      pcb_new sets conn->err if protocol is not implemented -> netconn_new_..() 
does not allocate a new connection for unsupported protocols.
      minor fix in assertion text
      pbuf_copy: chained pbufs were not copied correctly because of wrong 
      pbuf_copy(): removed copy & paste error which did not copy pbuf chains 
      Added debug output for icmp_input if ip_output_if worked or not.
      Changed all references to old debug defines to the new ones (e.g. 
      Fixed bug #20180 (TCP pcbs listening on IP_ADDR_ANY could get changed in 
netif_set_ipaddr if previous netif->ip_addr.addr was 0.
      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
      Created define instead of extra-function for netconn_new, 
netconn_new_with_callback and netconn_err, added netconn_type NETCONN_INVALID
      Corrected some copy & paste errors
      Added comments for the callback functions included in structs tcp_pcb, 
udp_pcb and raw_pcb.
      Minor fix: coding style
      Added comments for the callback functions included in struct 
      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 
      Done some work on task #1549 (function documentation)
      Implemented socket options SO_NO_CHECK for UDP sockets to disable UDP 
checksum generation on transmit.
      Done some work on task #1549 (function documentation)
      Always align PBUF_POOL_BUFSIZE, pbuf_init is not needed any more, minor 
changes to meet coding style requirements
      In accept_function, one LWIP_ERROR had a wrong expression (since it is 
inverted compared to LWIP_ASSERT...)
      Done some work on task #6933: converted some LWIP_ASSERTs to LWIP_ERROR 
to give back an error return value for LWIP_NOASSERT=1
      Done some work on task #6933: converted some LWIP_ASSERTs to LWIP_ERROR 
to give back an error return value for LWIP_NOASSERT=1
      Forgot to implement getsockopt for SO_NO_CHECK
      Corrected two formatters in LWIP_DEBUGF calls
      Shortened some lines to ~80
      Ooops, checked in a wrong (test-) version before!
      Removed warning "empty body in an if statement" in tcp_receive() for 
      Changed etharp to use a defined hardware address length of 6 to avoid 
loading netif->hwaddr_len every time (since this file is only used for ethernet 
and struct eth_addr already had a defined length of 6).
      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.
      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.
      Corrected do_write for LWIP_TCPIP_CORE_LOCKING=1
      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).
      Added ASSERT to check that lwip_send(to) is not called for length not 
fitting into u16_t (for UDP & RAW sockets)
      Introduced the option MEM_USE_POOLS to use 4 pools with different sized 
elements instead of a heap. This both prevents memory fragmentation and gives a 
higher speed at the cost of more memory consumption. Turned off by default.
      ASSERTS were using old MEM_ALIGN define, therefore, was not compilable 
without LWIP_NOASSERT defined
      no-pool-big-enough was not correctly caught
      Changed the expression of LWIP_ERROR to the same as for LWIP_ASSERT
      Sorry, checked in some of my local changes with the LWIP_ERROR 
      etharp_tmr function had a bug (pending entries were pending for too long)
      Combined etharp_request with etharp_raw for both LWIP_AUTOIP =0 and =1 to 
remove redundant code.
      Moved filling of ethernet header for outgoing IP packets into an extra 
function to reduce code size.
      Fixed bug #20220: UDP PCB search in udp_input(): a non-local match could 
get udp input packets if the remote side matched.
      Fixed bug #20253: icmp_dest_unreach was called with a wrong p->payload 
for udp packets with no matching pcb.
      etharp_arp_input: stricter checking of hwtype, proto, hwlen & protolen 
allows us to leave some header fields like they are when sending ARP reply 
(only changing the addresses is needed)
      Fixed bug #20259: struct udp_hdr was lacking the packin defines.
      Removed warning: LWIP_DEBUGF had wrong argument count
      Set the err_to_errno_table to be const
      Remove warning in tcp_enqueue (cast from u32_t to u16_t)
      Fixed minor indentation fault
      Fixed bug #20287: Fixed nagle algorithm (sending was done too early if a 
segment contained chained pbufs)
      Added check to prevent tcp_pcb->snd_queuelen from overflowing.
      Set/get ARP hwlen and protolen in one piece.
      Fixed a wrong assert statement in etharp_query when ARP_QUEUEING=1 and 
packets should be queued.
      Changed tcp_pcb->snd_queuelen from u8_t to u16_t to prevent overflowing 
when sending many small packets with big send buffer, added assertions and 
oveflow checks for snd_queuelen.
      Removed warning when assigning from u32_t to u16_t by casting to u16_t.
      Fixed a little cast-warning from u32_t to u16_t
      Added some ASSERTS and casts to prevent warnings when assigning to 
smaller types.
      Added option LWIP_NETIF_HWADDRHINT (default=off) to cache ARP table 
indices with each pcb instead of single-entry cache for the complete stack.
      #ifdef LWIP_NETIF_HWADDRHINT around IP_PCB.addr_hint
      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.
      Bug in last version (fix to close problems): netconn thread might get 
active before calling its callback, so conn was already deallocated.
      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.
      Removed old debug variables from pbuf_copy()
      Another change for fixing bug #20478 (put the memp += MEMP_SIZE in 
another place)
      Included the mem_malloc pools in memp_names if MEM_USE_POOLS=1
      Fix bug #20480: Check the pcb passed to tcp_listen() for the correct 
state (must be CLOSED).
      Fix bug #20506: Slow start / initial congestion window starts with 2 * 
mss (instead of 1 * mss previously) to comply with some newer RFCs and other 
      tcp_enqueue: pcb->snd_queuelen didn't work for chaine PBUF_RAMs: changed 
snd_queuelen++ to snd_queuelen += pbuf_clen(p).
      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.
      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).
      Added a better comment to explain why tcp_close doesn't care for the 
return value of tcp_output
      Fixed bug #21107 (didn't reset IP TTL in ICMP echo replies)
      Fixed bug #21080 (tcp_bind without check pcbs in TIME_WAIT state) by 
checking  tcp_tw_pcbs also
      Moved ethernet_input from tcpip.c to etharp.c so all netifs (or ports) 
can use it.
      Changed IP_REASSEMBLY to enqueue the received pbufs so that multiple 
packets can be reassembled simultaneously and no static reassembly buffer is 
      Check for TCP_SND_QUEUELEN overflow.
      Added check for overlapping or duplicate fragments. ip_reass_init() is 
not needed any more (the check is done in 
      Fixed UDPLite SENDING: Checksum was always generated too short and also 
was generated wrong if checksum coverage != tot_len.
      lfree was not updated in mem_realloc!
      Removed type conversion warning in debug statement.
      Typo in chain_frag_into_packet_and_validate (but obviously worked 
      Removed <warning: potential uninitialized reference to
      Preprocessor statements have to start at the beginning of a line for old 
      Added todo: free the oldest entry when the MEMP_REASSDATA pool is empty 
or the IP_REASS_MAX_PBUFS limit is reached
      Fixed UDPLite receive: checksum was calculated wrong if checksum coverage 
!= tot_len
      Changed initialization: many init functions are not needed any more since 
we now rely on the compiler initializing global and static variables to zero!
      Forgot two explicit initializations...
      Gave the parameters of pbuf_cat() and pbuf_chain() better names to make 
the use more clear.
      Added description for MEMP_NUM_REASSDATA and changed the default value to 
      Added check that MEMP_NUM_REASSDATA is bigger than IP_REASS_MAX_PBUFS 
(because each MEMP_NUM_REASSDATA has one pbuf at least!)
      Added code to free the oldest packets if the IP_REASS_MAX_PBUFS limit is 
reached or MEMP_REASSDATA is empty.
      Removed bug on memory failure introduced 3 months ago in rev 1.34 (input 
pbuf was freed on puf_alloc failure)
      IP_REASSEMBLY: Changed 'packet' to 'datagram' to match the names used in 
the RFCs
      IP_REASSEMBLY: send ICMP time exceeded when discarding datagrams for 
which the first fragment was received; try to keep the header of the first 
(octet 0) fragment; combined code to make it smaller; fixed bug in timer: when 
freeing packets, counter was not updated correctly
      Minor coding style fixes, added comment
      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)
      Added some explaining comments.
      Fixed bug #21181: On active open, the initial congestion window was 
calculated based on the configured TCP_MSS, not on the MSS option received with 
      Fixed bug #21491: The MSS option sent (with SYN) is now based on TCP_MSS 
instead of pcb->mss (on passive open now effectively sending our configured 
TCP_MSS instead of the one received).
      Fixed bug #21494: The send mss (pcb->mss) is set to 536 (or TCP_MSS if 
that is smaller) as long as no MSS option is received from the remote host.
      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 
      Patch #6215: added ifAdminStatus write support (if explicitly enabled by 
defining SNMP_SAFE_REQUESTS to 0); added code to check link status for 
ifOperStatus if LWIP_NETIF_LINK_CALLBACK is defined.
      Fixed bug: assert fired when MEMP_ARP_QUEUE was empty (which can happen 
any time). Now the packet simply isn't enqueued when out of memory.
      tcp_send_ctrl(): call tcp_enqueue with the new flag TCP_WRITE_FLAG_COPY 
instead of 1
      Turned all hostname variables and parameters into (const char*)
      Added sequential dns resolver function for netconn api 
      Added sequential (socket API) function gethostbyname and the struct 
hostent it uses
      Moved inet files into ipv4/ipv6 directory; splitted inet.c/inet.h into 
inet and chksum part; changed includes in all lwIP files as appropriate
      Deleted old inet.c/inet6.c files
      Added thread-safe function gethostbyname_r (as in glibc)
      Added function documentation to dns.c, removed function documentation 
from dns.h (functions should be documented where they are implemented!), 
dns_table_entry doesn't have to be packed (slower, bigger code for most 
machines), converted dns_init to return void, dns_table is implicitly 
initialized to zero, dns_lookup can be static, dns_send returns correct error 
values, added some asserts, compacted dns_recv using some (ugly) gotos, 
compacted dns_gethostbyname by combining the same return value
      Adopted lwip_gethostbyname and lwip_gethostbyname_r to the new return 
values of dns_gethostbyname/netconn_gethostbyname
      Added return value comments to netconn_gethostbyname
      Fixed bug #20287: tcp_output_nagle sends too early. This fixes the nagle 
algorithm; nagle now also works for all raw API applications and has to be 
explicitly disabled with 'tcp_pcb->flags |= TF_NODELAY'
      Implemented calculating the effective send-mss based on the MTU of the 
netif used to send. Enabled by default. Disable by setting 
LWIP_CALCULATE_EFF_SEND_MSS to 0. This fixes bug #21535.
      tcpip.h was not compilable with both NO_SYS and LWIP_NETCONN set to 0 
(include sys.h was missing)
      Moved lwip_gethostbyname from sockets.c to the new file netdb.c; included 
      Added some documentation (mainly what is unimplemented in contrast to 
'std-BSD'), alloc_socket returns the sock pointer directly (for speedup)
      Added the wiki and a note about the mailing lists
      Added documentation
      Added some more comments and function documentation
      Back to old alloc_socket(), lwip_accept had a bug in last revision
      Added documentation / minor code layout changes
      dhcp_unfold_reply() uses pbuf_copy_partial instead of its own copy 
algorithm; corrected some assert messages
      Fix some warnings discovered by compiling the unixsim under cygwin (gcc 
      Minor coding style changes, added some comments
      Added an explaining comment for the line 'nsock->rcvevent += -1 - 
newconn->socket;' in lwip_accept
      lock event_callback against lwip_accept for data that arrives right away 
after an accept (before lwip_accept has processed the new conn)
      initialize netconn->socket to -1 instead of 0 since 0 is a valid socket!
      Check state == CLOSED in tcp_bind and tcp_connect to prevent 
binding/connecting twice (using LWIP_ERROR: can be disabled)
      Fixed bug #21582: pcb->acked accounting can be wrong when ACKs arrive 
      Minor coding style changes
      Implemented new function udp_sendto_if which takes the netif to send as 
an argument (to be able to send on netifs that are down).
      Changed error handling: ERR_MEM, ERR_BUF and ERR_RTE are seen as 
non-fatal, all other errors are fatal. netconns and sockets block most 
operations once they have seen a fatal error.
      fixed bug #21643 (udp_send/raw_send don't fail if netif is down) by 
letting ip_route only use netifs that are up.
      mem_malloc with MEM_USE_POOLS=1: if size > size of biggest pool and 
custom pools (in addition to the MEM_POOLs) were defined, the first custom pool 
was used instead of asserting
      Use LINK_STATS_INC instead of #if LINK_STATS...
      Use IP_STATS_INC instead of #if IP_STATS...
      Use ICMP_STATS_INC instead of #if ICMP_STATS...
      Introduced ETHARP_STATS
      Minor coding style changes
      first attempt to fix bug #21655 (DHCP doesn't work reliably with multiple 
netifs): if LWIP_DHCP is enabled, UDP packets to DHCP_CLIENT_PORT are passed to 
netif->dhcp->pcb only (if that exists) and not to any other pcb for the same 
port (only solution to let UDP pcbs 'bind' to a netif instead of an IP address)
      task #7497: Sort lists (pcb, netif, ...) for faster access UDP: move a 
(connected) pcb selected for input to the front of the list of pcbs so that it 
is found faster next time. Same for RAW pcbs that have eaten a packet.
      connect the UDP pcb to the DNS server (IPaddress and port) to receive 
faster (unconnected pcbs are very inefficient in udp_input)
      Compacted code: moved the code creating a netconn (without pcb) from 
netconn_new_with_proto_and_callback to new (synchroneous) function 
netconn_alloc_with_proto_and_callback and call this function from 
netconn_new_with_proto_and_callback and accept_function.
      Minor change: use goto instead of redundant code to return on error in 
      fix bug #21656 (recvmbox problem in netconn API): always allocate a 
recvmbox in netconn_new_with_proto_and_callback. For a tcp-listen netconn, this 
recvmbox is later freed and a new mbox is allocated for acceptmbox. This is a 
fix for thread-safety and allocates all items needed for a netconn when the 
netconn is created.
      Minor fix: #include "lwip/api.h" was missing to compile cleanly
      fix bug #21654: exclude definition of struct timeval from #ifndef FD_SET. 
If including <sys/time.h> for system-struct timeval, LWIP_TIMEVAL_PRIVATE now 
has to be set to 0 in lwipopts.h
      ip_input: check if a packet is for inp first before checking all other 
netifs on netif_list (speeds up packet receiving in most cases)
      Added short comment in file description about how to handle MEM_USE_POOLS 
      fix bug #21699 (segment leak in ooseq): add assert that all segment lists 
are empty in tcp_pcb_remove before setting pcb to CLOSED state; don't directly 
set CLOSED state from LAST_ACK in tcp_process
      Fix bug #21699: segment leak in ooseq processing when last data packet 
was lost (free last segment if FIN is already received)
      Corrected assert when netconn_new_* fails
      Removed debug code
      sys.h, api_lib.c, api_msg.c, sockets.c: fix bug #21698: 
"netconn->recv_avail is not protected" by using new macros for interlocked 
access to modify/test netconn->recv_avail.
      tcp.h, opt.h, api.h, api_msg.h, tcp.c, tcp_in.c, api_lib.c, api_msg.c, 
sockets.c, init.c: task #7252: Implement TCP listen backlog: Warning: raw API 
applications have to call 'tcp_accepted(pcb)' in their accept callback to keep 
accepting new connections.
      Added function netconn_free(), which deallocates all mboxes and frees the 
netconn (to be used from different places) - the PCB is not freed!
      Coding style: use named constants instead of numbers only
      Clarify that timeout == 0 means wait forever
      Corrected comment in do_writemore()
      fixed bug #22249: division by zero could occur if a remote host sent a 
zero mss as TCP option.
      Added global #ifndef __SIO_H__ and some comments
      fixed bug #21433 (Calling mem_free/pbuf_free from interrupt context isn't 
safe): set LWIP_USE_HEAP_FROM_INTERRUPT to 1 in lwipopts.h or use 
tcpip_callback_nonblocking(pbuf_free_int, p)/ 
tcpip_callback_nonblocking(mem_free, m) to free pbufs or heap memory from 
interrupt context
      Changed the pbuf_free/mem_free callback functions a little: created extra 
functions for that
      Fixed comments for pbuf_copy() and find_entry() as proposed by Luca 
Ceresoli on lwip-users
      fixed bug #22804: dhcp_stop doesn't clear NETIF_FLAG_DHCP (flag now 
      Checked in slightly modified version of patch # 6370: Moved loopif code 
to netif.c so that loopback traffic is supported on all netifs (all local IPs).
      Got the date & place of the newest feature wrong ;-)
      Changed loopback code (less difference between NO_SYS = 0 / 1), added 
setting LWIP_LOOPBACK_MAX_PBUFS to limit loopback-queued pbufs
      Increasing etharp error stats on unsupported ethtype in ethernet_input()
      Checked in some ideas of patch #6460 (loop optimizations) and created 
defines for swapping bytes and folding u32 to u16.
      Fixed loopif_poll define (now maps directly to netif_poll)
      Added a configuration option for slipif for symmetry to loopif (patch 
      Changed two MEMCPY calls to SMEMCPY
      patch #6459: Made err_t overridable to use a more efficient type (define 
LWIP_ERR_T in cc.h)
      Fixed includes in netif.c, removed loop_cnt_max member in struct netif 
(instead the define LWIP_LOOPBACK_MAX_PBUFS is used directly)
      Added debug trace for incoming eth packets in ethernet_input like 
suggested in patch #6519
      patch #6483: stats module improvement: Added defines to display each 
module's statistic individually, added stats defines for MEM, MEMP and SYS 
modules, removed (unused) rexmit counter.
      Fix typo, add comment
      fixed bug #21433: Calling mem_free/pbuf_free from interrupt context isn't 
safe: LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT allows mem_free to run between 
mem_malloc iterations. Added illegal counter for mem stats.
      fixed bug #23847: do_close_internal references freed memory
      removed invalid call to tcp_connect() in do_close_internal()
      Fixed some warnings, changed some debug defines to include better names
      Added 2 asserts in pbuf_realloc to prevent dereferencing a null pointer 
in invalid pbuf queues
      fixed bug #24132: Cross-dependency between ip_addr.h and inet.h -> moved 
declaration of struct in_addr from ip_addr.h to inet.h
      fixed one small warning (compared u16_t to <= 0)
      fixed bug #24517: IP reassembly crashes on unaligned IP headers by 
packing the struct ip_reass_helper.
      fixed bug ##24596: Vulnerability on faulty TCP options length in 
      Checked in (slightly modified) patch #6683: Customizable AUTOIP "seed" 
address. This should reduce AUTOIP conflicts if LWIP_AUTOIP_CREATE_SEED_ADDR is 
      Corrected the range calculation of LWIP_AUTOIP_CREATE_SEED_ADDR, 
corrected comments
      Another modification for patch #6683 (Customizable AUTOIP seed address)
      patch #6699: fixed some warnings on platform where sizeof(int) == 2
      Another fix for bug #6683 (and a typo in changelog)
      Reverted last changes since it's wrong when sizeof(int)==2...
      fixed bug #25467: Listen backlog is not reset on timeout in SYN_RCVD: 
Accepts_pending is decrease on a corresponding listen pcb when a connection in 
state SYN_RCVD is close.
      Moved INADDR_* defines to inet.h; removing dependency from inet.h to 
      Fixed bug #25544: DHCP_COARSE_TIMER_MSECS could overflow on 16-bit targets
      added configurable default valud for netconn->recv_bufsize: 
RECV_BUFSIZE_DEFAULT (fixes bug #23726: pbuf pool exhaustion on slow recv())
      including inet.h because htonl is used
      fixed bug #24480 (releasing old udp_pdb and pbuf in dhcp_start)
      added MEMP_MEM_MALLOC to use mem_malloc/mem_free instead of the pool 
allocator (can save code size with MEM_LIBC_MALLOC if libc-malloc is otherwise 
      fixed bug #25345 (DHCPDECLINE is sent with "Maximum message size" option)
      Added LWIP_VERSION to get the current version of the stack (implements 
task #9032: Provide means to get Version of Stack and submodules)
      LWIP_VERSION: corrected shifting for 16-bit platforms, added 
      Fixed compilation error in LWIP_VERSION
      fixed bug #24440: TCP connection close problem on 64-bit host by moving 
accept callback function pointer to TCP_PCB_COMMON
      fixed arguments of socket functions to match the standard; converted size 
argument of netconn_write to 'size_t' for that; fixed some warnings
      patch #6539: (configurable) response to broadcast- and multicast pings
      etharp_raw: allocating PBUF_RAW for outgoing ARP packets instead of 
PBUF_LINK is enough.
      Added check: PBUF_POOL_BUFSIZE must be greater than MEM_ALIGNMENT or else 
the offset of a pbuf may take the full first pbuf in a chain (resulting in the 
first pbuf having len==0)
      patch #6528: the buffer used for IP_FRAG_USES_STATIC_BUF could be too 
small depending on MEM_ALIGNMENT
      Fixed many warnings: use %p to pass pointers to printf
      sys_now() must return u32_t, not unsigned long
      mem_free: fix a warning by converting pointer to mem_ptr_t instead of 
unsigned long
      Fixed many LWIP_DEBUGF format strings; added new format string SZT_F for 
      cc.h: Added printf formatter for size_t: SZT_F
      bug #26121: set_errno can be overridden
      bug #25763: Corrected 4 occurrences of SMEMCPY to MEMCPY; corrected 
      bug #26027: netbuf_chain resulted in pbuf memory leak
      patch #6764: DHCP rebind and renew did not send hostnam option; Converted 
constant OPTION_MAX_MSG_SIZE to netif->mtu, check if netif->mtu is big enough 
in dhcp_start
      patch #6763: Global DHCP XID can be redefined to something more unique
      patch #6765: Supporting new line characters in inet_aton()
      patch #6808: Add a utility function ip_hinted_output() (for smaller code 
      task #9192: mem_free of dhcp->options_in and dhcp->msg_in
      Converted netconn_type() from a function to a macro
      tried to fix bug #23559: lwip_recvfrom problem with tcp
      Changed ??? to LINK_SPEED_OF_YOUR_NETIF_IN_BPS
      fixed bug #25695: Segmentation fault in do_writemore()
      tcp_listen_input: format code for #if LWIP_TCP_TIMESTAMPS that calls 
tcp_enqueue like the other calls.
      Fixed bug #25094: "Zero-length pbuf" (options are now allocated in the 
header pbuf, not the data pbuf); added function comments; "inline" is not 
supported by ANSI C (tcp_build_timetamp_option)
      Fixed bug #26236: "TCP options (timestamp) don't work with 
no-copy-tcpwrite": deallocate option data, only concat segments with same flags
      task #7507, patch #6786: DNS supports static hosts table. New 
      Fixed bug #26069: Corrected documentation: if tcp_connect fails, pcb->err 
is called, not pcb->connected (with an error code).
      Fixed some issues with DNS_LOCAL_HOSTLIST
      bug #26213 "Problem with memory allocation when debugging": memp_sizes 
contained the wrong sizes (including sanity regions); memp pools for 
MEM_USE_POOLS were too small; Added option MEM_USE_POOLS_TRY_BIGGER_POOL to try 
the next bigger malloc pool if one is empty (only usable with MEM_USE_POOLS).
      fixed bug #24212: "Deadlocked tcp_retransmit due to exceeded pcb->cwnd": 
Fixed by sorting the unsent and unacked queues (segments are inserted at the 
right place in tcp_output and tcp_rexmit)
      Fixed a bug in tcp_enqueue introduced with v1.79 of this file while 
fixing bug #25094 (zero-length pbuf)
      Bug #25608: Made SYS_LIGHTWEIGHT_PROT and sys_now() work with NO_SYS=1
      Integrated patch #6721: new option to adjust the time when DHCP gives 
over to AUTOIP and some improvements in DHCP/AUTOIP cooperation
      Fixed bug #24228: Memory corruption with PPP and DHCP
      Fixed bug #21680: PPP upap_rauthnak() drops legal NAK packets
      Addition to patch #6721, bug #25575: call autoip_stop in dhcp_stop if in 
      fixed bug #25636: SNMPSET value is ignored for integer fields
      fixed tcpip_untimeout (does not need the time, broken after 1.3.0 in CVS 
only) - fixes compilation of ppp_oe.c
      Fixed bug #26349: Nagle algorithm doesn't send although segment is full 
(and unsent->next == NULL)
      snmp was not initialized in lwip_init()
      Fixed bug #26405: Prematurely released semaphore causes lwip_select() to 
      Added ip_current_netif() & ip_current_header() to receive extended info 
about the currently received packet.
      Added a word or two on threading, which should be sufficient to close 
task #6683
      Added #if LWIP_SNMP around snmp-internal header files
      Patch #6823: tcp_in.c - small optimization
      On little endian architectures, use LWIP_PLATFORM_HTONS (if defined) for 
SWAP_BYTES_IN_WORD to speed up checksumming.
      Added more threading info
      Added netbuf.h to files that may be called from any thread
      Worked on dns: local host-list can be put into FLASH (by defining storage 
target/linker section), external function can be defined for lookup, combined 
dns_local_removehostname/removehostaddr to dns_local_removehost
      Shrinked ICMP code, added option to NOT check icoming ECHO pbuf for size 
      task #7013: Added option LWIP_NETIF_TX_SINGLE_PBUF to try to create 
transmit packets from only one pbuf to help MACs that don't support 
scatter-gather DMA.
      Fixed compilation if LWIP_PLATFORM_BYTESWAP && (BYTE_ORDER == 
      bug #26487: Added ip_output_if_opt that can add IP options to the IP 
header (used by igmp_ip_output_if)
      fixed bug #26507: "Gratuitous ARP depends on arp_table / uses 
etharp_query" by adding etharp_gratuitous()
      Moved function definition below defines and typedefs, added missing 
include to netif.h
      Corrected function definition of ip_current_* (void was missing)
      Corrected function implementation of ip_current_* (void was missing)
      Corrected structure packing
      Added note about printf formatter defines
      Added missing include to netif.h
      Fixed bug #27114: Missing #include in api_msg.c on LWIP 1.3.1RC1; added 
include <string.h>
      Fixed bug #27034: "Invalid ASSERT in pbuf_alloc()" to prevent breaking 
PPP (for now).
      Added newline to TCP header flags debug print
      Added debug print when rejecting incoming connections due to exceeded 
listen backlog
      Fixed bug #27105: "realloc() cannot replace mem_realloc()" by making 
mem_realloc static doing nothing when MEM_LIBC_MALLOC==1
      Fixed bug #27155: "'NULL' undeclared in inet_checksum.c"
      Added missing include to <string.h>
      Added function tcp_debug_state_str() to convert a tcp state to a 
human-readable string.
      patch #6843: tcp.h macro optimization patch (for little endian)
      bug #27267: Added include to string.h where needed
      Fixed bug #27252: Address pointer invalid after freeing pbuf in UDP 
receive callback
      Fixed bug #27266: wait-state debug message in pppMain occurs every ms
      Fixed bug #26649: TCP fails when TCP_MSS > TCP_SND_BUF, Fixed wrong 
parenthesis, added check in init.c
      Fixed bug #26657: DNS, if host name is "localhost", result is error.
      Fixed bug #27078: Possible memory leak in pppInit()
      patch #6900: added define ip_ntoa(struct ip_addr*)
      task #9033: Support IEEE 802.1q tagged frame (VLAN), New configuration 
      fixed invalid dependency to etharp_query if DHCP_DOES_ARP_CHECK==0
      Use LWIP_UNUSED_ARG() instead of if(){}, fix unused arg warning if 
      Commented the functions, added sio_tryread() for non-blocking read (to be 
used in slipif-polling mode)
      bug #26397: Added SLIP polling support (uses sio_tryread)
      do_connect: LWIP_ERROR on invalid/disabled protocol
      Fixed bug bug #27345: "ip_frag() does not use the LWIP_NETIF_LOOPBACK 
function" by checking for loopback before calling ip_frag
      Make tcp_debug_state_str() always available, not only in DEBUG mode
      Make ip_current_netif() and ip_current_header() a define referring to 
extern variables to be save the function call.
      Reverted change for bug #27252 (Address pointer invalid after freeing 
pbuf in UDP receive callback) as it made more problems than before :-(
      patch #6888: Patch for UDP Netbufs to support dest-addr and dest-port
      patch #6930: [PATCH trivial] TCP_RMV remove unnecessary check - removed 
two checks for NULL which are not necessary.
      Updated comment in low_level_input() about pbuf len vs. tot_len if using 
preallocated pbufs (as requested in bug #27576: pbuf_realloc will assert or 
crash on a non-chained pbuf list)
      Accidentally endabled to compile the code -> back to #if 0
      Fixed default values of some stats to only be enabled if used Fixes bug 
#27338: sys_stats is defined when NO_SYS = 1
      Fixed bug #27504: tcp_enqueue wrongly concatenates segments which are not 
consecutive when retransmitting unacked segments
      Fixed bug #27704: autoip starts with wrong address: 
LWIP_AUTOIP_CREATE_SEED_ADDR() returned address in host byte order instead of 
network byte order
      Fixed bug #27709: conn->err race condition on netconn_recv() timeout by 
directly returning when sys_arch_mbox_fetch times out.
      Fixed bug #27329: dupacks by unidirectional data transmit
      Fixed bug #27390: Source IP check in ip_input() causes it to drop valid 
DHCP packets -> allow as source address when LWIP_DHCP is enabled
      Fixed bug #27315: zero window probe and FIN
      Corrected typo
      Fixed bug #27215: TCP sent() callback gives leadin and trailing 1 byte 
len (SYN/FIN)
      dhcp_inform(): netif->dhcp pointed to unallocated memory when udp_new() 
      dhcp_unfold_reply: NULL memory might have been freed after mem_malloc 
returned NULL
      Removed most calls to udp_connect since they aren't necessary when using 
udp_sendto_if() - always stay connected to IP_ADDR_ANY.
      Minor code simplification (don't store received pbuf, change conditional 
code to assert where applicable), check pbuf length before testing for valid 
      bug #27315: zero window probe and FIN: only send pure FIN if the enqueued 
FIN segment doesn't contain any other data
      Changed fix for bug #27215 (TCP sent() callback gives leagin and trailing 
1 byte len (SYN/FIN)) by decreasing pcb->acked appropriately
      Fixed bug #26251: RST process in TIME_WAIT TCP state
      Fixed bug #27783: Silly window avoidance for small window sizes
      Another fix for bug #26251: RST process in TIME_WAIT TCP state
      Minor: fixed typo
      bug-fix in the TCP_EVENT_RECV macro (has to call tcp_recved if pcb->recv 
is NULL to keep rcv_wnd correct)
      Improved heap usage of lwip_getaddrinfo by only allocating one block of 
memory per call.
      Tiny code size improvement using goto instead of duplicating code
      Minor: Improved memory layout/alignment of struct dhcp for 32-bit 
      Added netifapi_netif_set_addr()
      Corrected parameter spelling in doc
      Fixed wrong filename
      Increased default value for TCP_MSS to 536, updated default value for 
TCP_WND to 4*TCP_MSS to keep delayed ACK working.
      Fixed bug #27994: incorrect define for freeaddrinfo(addrinfo)
      Fixed bug #28062: Data received directly after accepting does not wake up 
      Fixed comment: tcp_pcb_remove does *not* deallocate the pcb
      tcp_input: move tcp_debug_print_state to prevent accessing pcb when it 
might already be deallocated due to calling tcp_abort in tcp_process.
      Clarified debug levels by renaming level OFF to ALL (the old define still 
exists for now to prevent breaking old code)
      Fixed usage of logging levels (bug #27948: Incorrect logging levels used 
in various places)
      Fixed usage of logging levels (bug #27948: Incorrect logging levels used 
in various places)
      Fixed logging of timeout-function-pointer (pointer to local stack was 
logged instead of actual function pointer), minor coding style fix
      move tcp_debug_print_state to prevent accessing pcb when it might already 
be deallocated due to recv_flags == TF_RESET or TF_CLOSED
      Fixed bug #28049 (Keep Alive timeout frees pcb then uses it, sometimes 
causing crash error) by calling tcp_rst() instead of tcp_abort() in 
tcp_slowtmr() when retransmit timer expires.
      Fixed bug #27955: netconn_close may nether return when 
      tcp_recv_null: call tcp_recved() if p != NULL to keep the window correct
      Fixed bug #27851 (TCP_EVENT_RECV(pcb, NULL,...) results in unreachable 
code warning) by calling tcp_recv_null if pcb->recv is null.
      tcp_alloc: prevent increasing stats.err for MEMP_TCP_PCB when reusing 
time-wait pcb as suggested by Bill 4 months ago
      Fixed bug #27905: FIN isn't combined with data on unsent
      Fixed filename in last comment
      Fixed bug #28099 (API required to disable Nagle algorithm at PCB level): 
added tcp_nagele_*() function-like macros
      Got the tcp_nagle_*() defines wrong (inverted) :-(
      Fixed bug #28098: Nagle can prevent fast retransmit from sending segment 
by basing the nagle-decision on TF_INFR also
      tcp_rexmit(): no need to call tcp_output, since always called from 
tcp_input and thus tcp_output always returns without sending (prevent confusion 
by thinking data was sent while in tcp_rexmit!)
      Initial check-in of some unit tests
      Fixed bug #28064: pbuf_alloc(PBUF_POOL) is not thread-safe by queueing a 
call into tcpip_thread to free ooseq-bufs if the pool is empty
      Worked on tcp_oos unit tests, nearly all TCP_QUEUE_OOS code is covered now
      Fixed bug #28054: Two segments with FIN flag on the out-of-sequence 
queue, also fixed PBUF_POOL leak in the out-of-sequence code
      tcp_receive(): removed unnecessary return value, added comment
      Minor (null-pointer check for not-on-list-netif)
      Fix compilation for PPPOE without PPPOS and VJ_SUPPORT without 
      Fixed bug #27904: TCP sends too many ACKs: delay resetting tcp_input_pcb 
until after calling the pcb's callbacks
      Fixed some typos
      Fixed bug #28106: dup ack for fast retransmit could have non-zero length
      Moved the function definitions so that other modules can use the ICMP 
protocol header definitions when LWIP_ICMP==0
      The guy's name is Van Jacobson (not Jabobsen or Jacobsen :-)
      PPP: Make MAXNAMELEN/MAXSECRETLEN overridable in lwipopts.h
      patch #6969: PPP: missing PAP authentication UNTIMEOUT
      Sligthly reordered struct netif's members to better meet alignment 
      Fixed checking input packet length (20 bytes is a valid packet and is 
used e.g. with MS RAS server)
      pppInit: Remove zeroing the stats - no protocol does that
      Fixed bug #27079 (Yet another leak in PPP): outpacket_buf can be 
statically allocated (like in ucip)
      tcp_process: add state info to log message that is used for multiple 
states ("TCP connection closed")
      Various small improvements from patch #6965 (removed _inet_ntoa, set PPP 
netif down before removing, change log message and comment)
      Added description about the PPP stack
      Added a note why MSCHAP currently doesn't work with lwIP PPP
      Updated comments on which sio-functions are used
      Added explicit check for number of segments and seqno/len of each segment 
on pcb->ooseq
      tcp_set_state: fail on unimplemented state
      Slightly modified the out-of-sequence-FIN test: receive packets with FIN 
& data and with FIN alone
      Another fix for bug #28241 (ooseq processing) and adapted corresponding 
unit test
      Added an additional option LWIP_ETHERNET to support ethernet without ARP 
(necessary for pure PPPoE) - no changes in the ppp code yet
      Added an additional option LWIP_ETHERNET to support ethernet without ARP 
(necessary for pure PPPoE)
      Commented 2 variables
      Some functions were located outside extern "C" {}
      Separated timer implementation from semaphore/mbox implementation, moved 
timer implementation to timers.c/.h (TASK#7235)
      Remove C++-style comments
      Removed unused test function
      Remove warning for TCP_LISTEN_BACKLOG==0
      Reorganised PPP source code from ucip structure to pppd structure to 
easily compare our code against the pppd code (around v2.3.1)
      Removed unnecessary tcpip-callbacks: this whole module runs inside the 
tcpip-thread. This also makes PPPoE usable with NO_SYS==1
      Renamed PPP tasks from "pppMain" to "pppInputThread"
      Initial version of PPP for NO_SYS==1, some TODOs are remaining, but it 
      Fixed bug #28496: missing include guards in netdb.h
      Call tcp_timer_needed() with NO_SYS==1, too
      Improved assertion message when MEMP_SYS_TIMEOUT pool is empty
      Added function names to timer debug output
      Copy hostname for DNS_LOCAL_HOSTLIST_IS_DYNAMIC==1 since string passed to 
dns_local_addhost() might be volatile
      Fixed bug #28519 (lwip_recvfrom bug with len > 65535)
      Fixed bug #26672 (close connection when receive window = 0) by correctly 
draining recvmbox/acceptmbox
      Fixed compilation of VJ_SUPPORT after separating tx and rx
      Fixed bug #28195 (PPP: remove duplicate TCP/IP protocol header 
definitions - use the lwIP ones) - deleted unused header file
      Inlined netif_is_up() and netif_is_link_up() as defines for speed 
reasons; fixed type and macro definition.
      Fixed bug #28529: macro LWIP_DEBUG_TIMERNAMES in timers.h
      Forgot one line & comments
      patch #6463 (IGMP - Adding Random Delay): added define LWIP_RAND() for 
lwip-wide randomization (to be defined in cc.h)
      bug #28127: remove call to tcp_output() from tcp_ack(_now)()
      Added/changed comments
      patch #6822 (Add option to place memory pools in separate arrays) - new 
      GCC didn't like memp_memory_XXX -> now using memp_memory_XXX_base (as in 
Bill's original patch)
      Minor coding style changes, added assertion
      Fixed bug #28248 (netif_remove doesn't call netif callback) by calling 
netif_set_down() from netif_remove()
      Fixed bug #28506 (raw_bind should filter received packets)
      Fixed comment on struct mem.prev
      Fixed bug #28551 (Compiler warning introduced with closed bug #28506)
      Fixed bug #13315 (PPP PAP authentication can result in erroneous 
callbacks) by copying the code from recent pppd
      Added comments
      Fixed NO_SYS==0: starting pppInputThread failed; fixed some comments
      Minor speedup ip_output_if when writing TTL/proto to ip header
      The heap now may be moved to user-defined memory by defining 
LWIP_RAM_HEAP_POINTER as a void pointer to that memory's address (patch #6966 
and bug #26133)
      Minor fix: bug #28555: Retransmission timer only stopped if 
      Coding style
      Again: Fixed bug #26672 (close connection when receive window = 0) by 
correctly draining recvmbox/acceptmbox
      Another fix for bug #28562: Segfault @ err_tcp
      do_connect(): set conn->err to an error if conn->pcb is NULL
      Improved includes in snmp
      Use protocol definition from tcp.h, not from sockets.h
      Using typedefs for function prototypes and -pointers throughout the stack 
for clarity
      Fixed bug #27856: PPP: Set netif link- and status-callback by adding 
      Changed netconn_recv() and netconn_accept() to return err_t (bugs #27709 
and #28087)
      Minor: source code layout
      Added comment
      task #10102: "netconn: clean up conn->err threading issues" by adding 
error return value to struct api_msg_msg
      task #10102: "netconn: clean up conn->err threading issues" by adding 
error return value to struct api_msg_msg
      Minor: fixed argument casts for mbox_fetch parameters (to fix compiler 
      Minor: source code layout
      Only check for LWIP_RAND() if IGMP is used, for now
      Fixed bug #28679: mem_realloc calculates mem_stats wrong and added test 
case for it
      reorganised PPP sourcecode to 2.3.11 including some bugfix backports from 
      Fixed bug #27316 (netconn: Possible deadlock in err_tcp) by using 
sys_mbox_trypost in err_tcp
      Added missing include
      Fixed netconn_err() macro
      Removed unused function declaration for netbuf_len (is a macro now)
      Fixed bug #28651 (tcp_connect: no callbacks called if tcp_enqueue fails) 
both in raw- and netconn-API
      Fixed bug #28716: select() returns 0 after waiting for less than 1 ms
      bug #26523: Compiler Warnings
      Fixed compilation for LWIP_TCPIP_CORE_LOCKING
      bug #26523: Compiler Warnings
      bug #26523: Compiler Warnings
      Renamed the private mib node from 'private' to 'mib_private' to *not* use 
reserved C/C++ keywords, added comments, added init-define for private MIB
      Renamed the private mib node from 'private' to 'mib_private' to *not* use 
reserved C/C++ keywords
      bug #28659: Missing casts
      Added one more missing cast
      Partly fixed bug #22070 (MIB_OBJECT_WRITE_ONLY not implemented in SNMP): 
write-only or not-accessible are still returned by getnext (though not by get)
      Moved missing include
      Use memp pools for snmp instead of the heap; added 4 new pools.
      Fixed bug #27871: Calling tcp_abort() in recv callback can lead to 
accessing unallocated memory. As a consequence, ERR_ABRT means the application 
has called tcp_abort()!
      snmp_recv: don't peek the UDP header, p->tot_len does the same; no need 
for the extra checks at the beginning; don't use so many if/else but if/return 
instead to make the code more readable
      Added TCP_SNDQUEUELOWAT corresponding to TCP_SNDLOWAT and added 
tcp_sndqueuelen() - this fixes bug #28605
      For wrong configurations, let the test fail instead of the compiler
      Keep 'const' of varius snmp structs the same throughout 'derived structs'
      Added missing casts (bug #28659)
      renamed netif pointer in struct igmp from 'interface' to 'netif' to not 
use keywords (or at least my editor highlights it as one...); minor layout 
      igmp related: renamed netif pointers from 'interface' to 'netif' to not 
use keywords (or at least my editor highlights it as one...)
      Cleanly separate the portability file inet.h and its contents from the 
stack: moved htonX- functions to def.h (and the new def.c - they are not ipv4 
dependent), let inet.h depend on ip_addr.h and not the other way round. This 
fixes bug #28732.
      Added comments
      Add non-blocking support for connect (partly from patch #6860) plus many 
cleanups in socket & netconn API
      Added function-like macro for struct netconn::non_blocking
      Replaced tabs with spaces
      Added except set support in select (patch #6860)
      Moved freeing a socket to its own function (free_socket, like alloc_socket
      Use SYS_LIGHTWEIGHT_PROT instead of a semaphore to protect the sockets 
array since the protection time is short
      Updated comment about recv_bufsize
      Don't call the link-callback from netif_set_up/down() since
      Reworked the code that parses DHCP options: parse them once instead of 
parsing for every option. This also removes the need for mem_malloc from 
dhcp_recv and makes it possible to correctly retrieve the BOOTP file.
      Don't parse broadcast option, we don't use it anyway (made up from ipaddr 
and netmask), layout change of struct dhcp
      Prevent mem_malloc in dhcp_inform, fix check for subnet mask (remember if 
it was given by server or not) set back request_timeout in dhcp_set_state()
      Prevent mem_free (leave struct dhcp allocated on dhcp_stop) to prevent 
calling mem_malloc when restarting dhcp later
      Let netdb use a memp pool for allocating memory when getaddrinfo() is 
      Fixed an error in dhcp_free_request() from dhcp_inform()
      Fix handling of zero-padding and parse file before sname field (if 
overloaded, according to the RFC)
      Fixed compiler warnings when MEM_SIZE < 64000
      Added an own debug-print option for timers.c (used TCPIP_DEBUG and 
SYS_DEBUG as the code was copied from there)
      Use macros defined in ip_addr.h (some of them new) to work with IP 
addresses (preparation for bug #27352 - Change ip_addr from struct to typedef 
(u32_t) - and better code).
      Accidentally changed the member name of struct ip_addr for testing...
      Replaced struct ip_addr by typedef ip_addr_t to make changing the actual 
implementation behind the typedef easier.
      Added missing casts to suppress compiler warnings
      Use macros to compare IP addresses
      Added missing casts to suppress compiler warnings (this mainly satisfies 
MSVC - the double casts are a bit ugly but don't hurt...)
      Fixed another compiler warning (missing cast)
      Added function-like macros to get/set the hostname on a netif
      Correctly initialize netif flags in pppifNetifInit
      Fixed compiler warnings
      Fixed macro ip_addr_set_loopback(): htonl was missing (fixes bug #28828: 
ip_addr.h some macro error)
      Fixed bug #28818 (New connection probably not marked writable on 
accept()) introduced a week ago while implementing non-blocking connect
      Minot: Fixed comments and code style
      Minor: removed one space
      Minor: source code layout
      Added yet another IP-address-modifying define, ip_addr_set_any()
      Reduced the time SYS_ARCH_PROTECT is protecting the socket array
      Fixed bug #28798 (Error in "Max Response Time" processing) and another 
bug when LWIP_RAND() returns zero.
      Improved IGMP stats (patch from bug #28798)
      added netif_s/get_igmp_mac_filter() macros
      Moved most defines from igmp.h to igmp.c for clarity since they are not 
used anywhere else; removed some function prototypes from igmp.h, too
      Internalize another function; use the supplied max_response_time instead 
of dividing it by 2
      Added reentrant versions of inet_ntoa/ipaddr_ntoa 
      Fixed a missing cast warning
      Minor: Fixed indentation after changing struct ip_addr to ip_addr_t
      Fixed copying multiple IP addresses from options (e.g. multiple DNS 
servers) - the amount copied was correct, but the value copied was always the 
      task #10153 (Integrate loopif into netif.c) - loopif does not have to be 
created by the port any more, just define LWIP_HAVE_LOOPIF to 1.
      Fixed unit tests after changing struct ip_addr to ip_addr_t
      For loopback packets, adjust the stats- and snmp-counters for the 
loopback netif.
      Fixed compilation for NO_SYS==1
      Added function sys_restart_timeouts() from patch #7085 (Restart system 
timeout handling)
      task #10154 (PPP: Update snmp in/out counters for tx/rx packets)
      Merge 3 u8_t for netconn-internal status into one u8_t 'flags' to prevent 
waisting memory when adding more flags
      Fixed bug #28853 (lwip_recvfrom() returns 0 on receive time-out or any 
netconn_recv() error)
      Another fix for bug #28853 (recv returns 0 on recv-timeout or any other 
error), fixed err_to_errno_table: ERR_TIMEOUT is EWOULDBLOCK, not ETIMEDOUT
      Fixed bug #22110 (recv() makes receive window update for data that wasn't 
received by application); added function-like macros to correctly access/change 
conn->recv_timeout and conn->recv_bufsize
      Use sys_arch_sem_wait instead of sys_sem_wait_timeout (same function, 
different name)
      Removed sys_sem_wait_timeout, added comments to the port-supplied 
      Fixed wrong printf formatter
      Removed invalid assert (always true)
      Fixed a compiler warning (comparison between signed and unsigned)
      Fixed bug #28866 (mem_realloc function defined in mem.h)
      Use braces for if blocks
      struct netconn.socket is only used with LWIP_SOCKET; added comments
      task #10139 (Prefer statically allocated memory): converted mbox and 
semaphore functions to take pointers to sys_mbox_t/sys_sem_t; converted 
sys_mbox_new/sys_sem_new to take pointers and return err_t; task #7212: Add 
Mutex concept in sys_arch (define LWIP_COMPAT_MUTEX to let sys.h use binary 
semaphores instead of mutexes - as before)
      Fixed compilation for NO_SYS==1
      Added comment about mem_realloc() vs. realloc()
      Fixed bug #28865 (Cannot close socket/netconn in non-blocking connect)
      patch #6865 (SO_REUSEADDR for TCP): if tcp_pcb.flags has TF_REUSEADDR 
set, allow binding to endpoint in TIME_WAIT
      Fixed comment to our flag names
      Code layout: splitted long line
      patch #6865: use so_options SOF_REUSEADDR instead of flags TF_REUSEADDR 
(which has ben removed again)
      task #10139 (Prefer statically allocated memory): added 
autoip_set_struct() and dhcp_set_struct() to let autoip and dhcp work with 
user-allocated structs instead of callin mem_malloc
      netif_set_link_up/down: only do something if the link state actually 
      Fixed indentation
      Added a minimal version of posix fctl() to have a standardised way to set 
O_NONBLOCK for nonblocking sockets.
      Fixed compilation for LWIP_SO_RCVBUF==0
      Don't use C++ reserved keyword 'class'
      Fixed compilation with LWIP_DNS==1 after changing sys layer
      Fixed compilation for LWIP_DNS==1 after changing sys layer
      Add a new err_t, ERR_WOULDBLOCK in preparation for non-blocking send
      task #7865 (implement non-blocking send operation)
      Fixed old comments
      Added stats for mutexes
      Use checksum algorithm 2 as default as it should be faster than 1 on most 
(if not all) platforms
      Fixed compiler warnings for checksum algorithms 2 and 3
      struct ip_hdr: split u16_t _ttl_proto to u8_t _ttl and u8_t _proto to 
prevent unnecessary loading and htons
      fixed compilation for LWIp_SNMP && PPP_INPROC_MULTITHREADED
      Improved some defines working on ip addresses, added faster macro to copy 
addresses that cannot be NULL
      Use new macro ip_addr_copy where applicable
      Minor speedups: use ip_addr_copy, use SMEMCPY, use htonX on constants 
instead of variables
      Use pointers instead of using SMEMCPY
      Revert my last changes and remove structure packing from struct dns_query 
and struct dns_answer since they are only used with SMEMCPY
      Documented the use of netif flags
      Fixed bug #28183 (ARP and TCP/IP cannot be disabled on netif used for 
PPPoE) by adding a new netif flag (NETIF_FLAG_ETHERNET) that tells the stack 
the device is an ethernet device but prevents usage of ARP (so that 
ethernet_input can be used for PPPoE).
      Fixed ARP input processing: only add a new entry if a request was 
directed as us (RFC 826, Packet Reception), otherwise only update existing 
entries; internalized some functions
      Disable ETHARP_TRUST_IP_MAC by default since it slows down packet 
reception and is not really necessary
      Fixed bug #28877 (Duplicate ARP gratuitous packet with 
LWIP_NETIF_LINK_CALLBACK set on) by only sending if both link- and admin-status 
of a netif are up
      Link status does not depend on LWIP_NETIF_LINK_CALLBACK (fixes bug #28899)
      Added missing casts
      Added missing cast; added more debug output
      tcp_seg(s)_free: remove return value, noone uses it
      Bug #28917: don't increase error counters for icmp echo response
      Add matching comment to #endif
      Renamed mem_realloc() to mem_trim() to prevent confusion with realloc()
      Added UPGRADING doc file that should help to upgrade apps/ports from 
older versions of lwIP
      Restructured TCP_PCB_COMMON for a smaller size (u16_t at the end)
      tcp_alloc: set given prio to the new pcb, not TCP_PRIO_NORMAL; minor: 
changed comments and source code layout
      Fixed pcb leak when accept-callback is NULL and asserts are disabled
      Task #10088: Correctly implement close() vs. shutdown(). Now the 
application does not get any more recv callbacks after calling tcp_close(). 
Added tcp_shutdown().
      Use tcp_debug_state_str() instead of tcp_debug_print_state()
      Moved stack-internal parts of tcp.h to tcp_impl.h, tcp.h now only 
contains the actual application programmer's API
      task #10140: Remove DNS_USES_STATIC_BUF (keep the implementation of 
      Added const char* name to mem- and memp-stats for easier debugging.
      Added define LWIP_TCPIP_CORE_LOCKING_INPUT that lets tcpip_input omit the 
thread-change to tcpip_thread and instead lock the core
      Corrected comment
      Fixed compilation for DNS_LOCAL_HOSTLIST==1 and 
      Fixed bug #28970 (invalid preprocessor macro introduced with 
      Added debug output and missing casts
      Fixed compilation error after splitting tcp.h/tcp_impl.h
      Added/improved comments and debug output; renamed 'pc' to 'pcrx' where 
appropriate to reflect the variable type
      Added a note about socket recv/accept timeout errno value
      PPP: use LWIP_DEBUGF() instead of ppp_trace()
      Fixed accessing invalid memory when closing a listening pcb (introduced 
with tcp_shutdown)
      tcp_connect: send timestamp-option only if (pcb->flags & TF_TIMESTAMP) != 
NULL (same as for passive open)
      Added comment after #endif
      task #7040 (Work on tcp_enqueue): Don't waste memory when chaining 
segments, added option TCP_OVERSIZE to prevent creating many small pbufs when 
calling tcp_write with many small blocks of data. Instead, pbufs are allocated 
larger than needed and the space is used for later calls to tcp_write.
      Correctly set TCP_WRITE_FLAG_MORE when netconn_write is split into 
multiple calls to tcp_write.
      Fixed bug #29072: Correctly set ciaddr based on message-type and state. 
Renamed dhcp_create/delect_request to dhcp_create/delete_msg.
      Fixed bug #29087: etharp: don't send packets for LinkLocal-addresses to gw
      Correctly identify link-local addresses when sending ARP packets
      Don't try to forward link-local addresses
      renamed struct lwip_socket to struct lwip_sock to avoid duplicate names 
(function lwip_socket)
      task #10167 (sockets: speed up TCP recv by not allocating a netbuf): 
added function netconn_recv_tcp_pbuf() for tcp netconns to receive pbufs, not 
netbufs; use that function for tcp sockets.
      task #7013 (Create option to have all packets delivered to netif->output 
in one piece): Always copy to try to create single pbufs in tcp_write.
      tcp_accepted(): check pcb state to verify it isn't called on a 
      Use braces for if-blocks
      Create mem_mutext at the end of mem_init. This enables sys_mutex_new to 
use the heap if required.
      bug #28775 (select/event_callback: only check select_cb_list on change) 
plus use SYS_LIGHTWEIGHT_PROT to protect the select code. This should speed up 
receiving data on sockets as the select code in event_callback is only executed 
when select is waiting.
      Only add hostname if it's not empty (strlen > 0)
      Added/corrected casts
      bug #29105: Review printf formatters: added X8_F to cc.h and use it in 
      bug #29105: Review printf formatters
      task #10241 (AutoIP: don't break existing connections when assiging 
routable address): when checking incoming packets and aborting existing 
connection on address change, filter out link-local addresses.
      ip_input: better check for old link-local-address (explicitly check for 
autoip->llipaddr instead of letting all link-local-addresses through)
      Added comment, use braces for single-line if-blocks
      ip_output: assert for p->ref == 1 to catch TCP retransmissions where the 
netif hasn't freed the pbuf yet
      Renamed tcp_output_set_header to tcp_output_alloc_header and included 
more code common to all callers
      Use a union to let struct sockaddr have the same alignment requirements 
as struct sockaddr_in
      Temporary upgrade helper: define format string for u8_t as hex if not 
defined in cc.h
      Fixed some issues in the TCP_OVERSIZE code:
      Corrected comment
      Reverted the change in struct sockaddr since it wasn't compatible to the 
standard (bug #29210)
      Some fixes to the TCP_OVERSIZE code:
      Fix calculation of tcp_mss(): when timestamps are on, this is pcb->mss - 
12 or else NOCOPY-apps might generate unperformant PBUF_REF chains
      Fixed sending one byte of data in tcp_zero_window_probe (which I 
accidentally broke with v1.103)
      Bug #29210: check alignment of struct sockaddr vs. struct sockaddr_in
      Fixed bug #29148 (Incorrect PBUF_POOL_BUFSIZE for ports where 
ETH_PAD_SIZE > 0) by moving definition of ETH_PAD_SIZE to opt.h and basing 
      Prepared for checksum-on-copy (task #6849):
      task #6849: Calculate checksum when creating TCP segments, not when 
(re-)transmitting them.
      Corrected  comment
      Fixed compiler warning when LWIP_SNMP==0
      Fixed alignment warnings when we know alignment is correct (by using 
      Fixed compiler warnings when casting where we know the source is aligned 
(by casting to void-pointer first)
      Added missing casts, use strlen + MEMCPY instead of strcpy (as that might 
overrun the buffer)
      Fixed bug #29256: SNMP Trap address was not correctly set
      Corrected spelling of milliseconds (my dictionary tells me to use two l's 
      Added support for static ARP table entries (added option 
ETHARP_SUPPORT_STATIC_ENTRIES) (+ added test); refactored the etharp code a bit
      Added an option to disable tcpip_(un)timeout code since the linker cannot 
do this automatically to save space.
      tcp_write: moved initial checks to an own static function for clarity
      Corrected spelling of ERR_WOULDBLOCK (D was missing)
      Updated netconn_write doc/comment about api_flags
      Fixed compilation for MEM_USE_POOLS under MSVC (where ++ doesn't work for 
      tcp_listen() did not copy the pcb's prio
      Removed duplicate TCP_REG/TCP_RMV macros, fixed debug macro implementation
      task #10088: Fixed a bug in RST-on-close-when-not-all-data-acked 
implementation (plus removed some unnecessary casts)
      minor: fixed coding style
      Removed function prototype that had no corresponding implementation 
      Fixed bug #29080: Correctly handle remote side overrunning our rcv_wnd in 
ooseq case.
      Fixed bug #29332: lwip_select() processes readset incorrectly
      Fix compilation if ETHARP_SUPPORT_STATIC_ENTRIES==0
      sys_thread_new: name is a const pointer
      fixed bug #29346 (removed comma after last enum member)
      Correctly cast pointers when assigning from void*
      Make functions static where applicable, add default cases to switches 
where applicable, prevent old-style function prototypes (without arguments)
      Added printf format modifier for mem_size_t depending on heap size
      Fixed compiling with different options disabled (TCP/UDP), triggered by 
bug #29345; don't allocate acceptmbox if LWIP_TCP is disabled
      Make LWIP_NETIF_TX_SINGLE_PBUF work for TCP, too
      patch #7130: remove meaningless const qualifiers
      Speedup TX by moving code from find_entry to etharp_output/etharp_query 
to prevent unnecessary function calls (inspired by patch #7135).
      Removed checking ARP_TABLE_SIZE, this is done by the etharp module itself
      create a new (contiguous) PBUF_RAM for every outgoing fragment if 
      patch #7143: Add a few missing const qualifiers
      Fixed compilation (removed extra tokens after #endif)
      Fixed compilation of debug log code (that is currently commented out)
      Fixed compilation errors
      MEMP_OVERFLOW_CHECK: dump the element's pool's index and name when an 
overflow/underflow is detected
      Added an overridable define to get informed when the tcpip_thread 
processes messages or timeouts to implement a watchdog.
      tabs -> spaces
      patch #7145: Various typos in SNMP files
      Check that tcp_abort/tcp_abandon isn't called for listen-pcbs
      Fixed bug #29617 (sometime cause stall on delete listening connection)
      Inline generating IP checksum to save a function call
      Create overridable macros for copying 2-byte-aligned IP addresses and MAC 
      fixed a type
      task #6849: added udp_send(_to/_if) functions that take a precalculated 
checksum, added pbuf_fill_chksum() to copy data into a pbuf and at the same 
time calculating the checksum for that data
      struct netbuf: reorder members to save some space
      use checksum-on-copy for sending UDP data for LWIP_NETIF_TX_SINGLE_PBUF==1
      Fixed bug #29763 (CHECKSUM_GEN_IP_INLINE), added macro LWIP_MAKE_U16() 
that's improved for endianess
      Fixed bug #29769 (sys_check_timeouts: sys_now() may overflow)
      Fixed bug #29271 (Application can't re-use pbufs) by updating the doc to 
not allow reusing pbufs after passing them to a send function
      task #7506: added NAT support
      Free NAT entries on remove (fixes a memory leak)
      .. and deleted NAT again as Christian obviously didn't have the copyright 
on the code he sent us... THANKS!!!
      Minor: source code layout
      Added option LWIP_ARP_FILTER_NETIF to use multiple IPs on one hardware 
interface (by using multiple netifs, each with its own IP)
      Fixed bug #29855: PPP: Backport a bugfix in LcpSendEchoRequest from pppd
      auth_withpeer_fail(): call lcp_close(), like pppd 2.4.5 does
      Fix printf-formatter for sio_fd_t/size_t
      CHECKSUM_GEN_IP_INLINE: Use defines to access the u32_t part of an IP 
      Remove uused SOF_* flags, define inherited flags in ip.h, not in tcp_in.c
      task #6995: Implement SO_REUSEADDR (correctly)
      SO_REUSEADDR / SO_REUSE is implemented and safe to use
      Added new option SO_REUSE_RXTOALL to pass received UDP 
broadcast/multicast packets to more than one pcb
      SO_REUSE: tcp_listen/tcp_connect: make sure that the 5-tuple is unique
      SO_REUSE: tcp_input: correctly handle multiple pcbs listening on the same 
port (but different address): first search for a specific address an only pass 
to ANY if no specific address has been found listening
      udp_input: use SO_REUSE && SO_REUSE_RXTOALL to copy incoming 
(broad-/multicast) data to additional pcbs
      Removed unused SOF_* flags, ip_pcb.so_options can now be an u8_t instead 
of an u16_t (saves 3 bytes per pcb on a 32-bit platform)
      udp_input/SO_REUSE_RXTOALL: only call pbuf_header if there is a 2nd pcb 
to pass the data to
      Fix compilation for LWIP_EVENT_API==1 (unused args)
      Let FIN come through although TF_RXCLOSED is set, send RST when data is 
received although TF_RXCLOSED is set, added TCP_EVENT_CLOSED for clearer code
      Free recv_data when TF_RXCLOSED is set
      DNS_LOCAL_HOSTLIST_IS_DYNAMIC uses its own MEMP pool instead of the heap
      DNS_LOCAL_HOSTLIST_IS_DYNAMIC uses its own MEMP pool instead of the heap
      Removed 2 mem_mallocs: error string can be a global variable, include 
memory for sc_ac_cookie in struct pppoe_softc; commented out unused code 
      Use a simple linked list (next pointer) instead of sys/queue.h (from BSD)
      PPPoE now uses its own MEMP pool instead of the heap (moved struct 
pppoe_softc from ppp_oe.c to ppp_oe.h)
      No need to call pppoe_init any more (since the linked list is implicitly 
initialized to zero by the loader)
      changed the semantics of LWIP_PREFIX_BYTEORDER_FUNCS to prevent "symbol 
already defined" i.e. when linking to winsock
      Added PP_HTONx/PP_NTOHx macros that can be calculated by the preprocessor 
(used for constants only)
      Add preprocessor-macros for compile-time htonl calculation (and use them 
throughout the stack where applicable)
      struct etharp_hdr: split _hwlen_protolen into two u8_t's to prevent using 
htons on little-endian platforms
      Added LWIP_DEBUGF warning if dns_send returns an error
      Correctly NULL-terminate h_addr_list
      Minor: added some spaces for indentation
      bug #27352: removed packing from ip_addr_t, the packed version is now 
only used in protocol headers. Added global storage for current src/dest IP 
address while in input functions.
      Fixed a possible NULL-pointer deref before checking it
      Fixed bug #30038: dhcp_network_changed doesn't reset AUTOIP coop state
      bug #29976: forgot some places using the changed IP address (copy vs. 
      Fixed bug #29979 (lwip_sendto did not check parameter "to" != NULL)
      Fixed invalid fix for bug #30038
      ip_addr_set_any does not work on pointers...
      bug #30129: struct _ip_addr should be struct ip_addr
      Use ip_addr_set_zero instead of memset(0)
      Fixed bug #30039: AutoIP does not reuse previous addresses
      Fixed bug #29970: DHCP endian issue parsing option responses
      ... and forgot one tiny character...
      Removed leading underscore from struct name, added a comment
      Added an optional define (LWIP_IP_ACCEPT_UDP_PORT) that can allow 
link-layer-addressed UDP traffic to be received while a netif is down (just 
like DHCP during configuration)
      fixed typos that MSVS did not complain about
      Fixed bug #30159: WomnIP_ACCEPT_LINK_LAYER_ADDRESSING
      nicer code for the last fix
      Fixed bug #29361 (ip_frag has problems with zero-copy DMA MACs) by adding 
custom pbufs and implementing custom pbufs that reference other (original) 
pbufs. Additionally set IP_FRAG_USES_STATIC_BUF=0 as default to be on the safe 
      Fixed bug #10088: Correctly implemented shutdown at socket level.
      From patch #7221: added flag NO_SYS_NO_TIMERS to drop timer support for 
NO_SYS==1 for easier upgrading
      Fixed compilation error due to unexpected include order
      Re-enabled timer logging if LWIP_DEBUG_TIMERNAMES!=0 (without function 
pointers, only function names), changed parameter names from 'h' to 'handler'
      fixed bug #30300 (shutdown parameter was not initialized in 
      Added some helper functions to find strings in chained pbufs
      Added ip_addr_netmask_valid() to check if a netmask is valid (starting 
with ones, then only zeros)
      Updated to current CHANGELOG
      Fixed bug #30402: CHECKSUM_GEN_IP_INLINE does not add IP options
      task #10495: Added support for IP_MULTICAST_LOOP at socket- and raw-API 
      added missing casts
      patch #7239: make tcp_state_str pointers constant
      IP_MULTICAST_LOOP shall be disabled by default
      fixed the change not about tcp_close chang (bug #30444)
      Fixed invalid fix for bug #30402 (CHECKSUM_GEN_IP_INLINE does not add IP 
      Fixed bug #30447: tcp.c:tcp_bind() - suspicious nested #if
      Fixed bug #30565 (tcp_connect() check bound list): that check did no harm 
but never did anything
      Fixed compilation with TCP or UDP disabled.
      Applied patch #7264 (PPP protocols are rejected incorrectly on big endian 
      Don't chain empty pbufs when sending them (fixes bug #30625)
      Fixed bug #30728: tcp_new_port() did not check listen pcbs
      Once again fixed #30038: DHCP/AutoIP cooperation failed when replugging 
the network cable after an AutoIP address was assigned.
      Fixed bug #31385: sizeof(struct sockaddr) is 30 but should be 16
      Fixed bug #31701: Error return value from dns_gethostbyname() does not 
match documentation: return ERR_ARG instead of ERR_VAL if not initialized or 
wrong argument.
      Fix alignment checking of tcphdr: check for MEM_ALIGNMENT, not for 4
      Fixed bug #31535: TCP_SND_QUEUELEN must be at least 2 or else no-copy TCP 
writes will never succeed.
      Fixed bug #31304: Changed SHUT_RD, SHUT_WR and SHUT_RDWR to resemble 
other stacks.
      Fixed bug #31170: lwip_setsockopt() does not set socket number
      tcp_slowtmr(): change the scope of 'pcb2' to reflect its block-only usage.
      Added a function to deallocate the struct dhcp from a netif (fixes bug 
      patch #7329: tcp_timer_needed prototype was ifdef'ed out for 
      patch #7328: Autoip: ETHADDR16_COPY can be used
      Fixed bug #31722: IP packets sent with an AutoIP source addr must be sent 
      Fixed bug #31590: getsockopt(... SO_ERROR ...) gives EINPROGRESS after a 
successful nonblocking connection.
      Fixed ERR_IS_FATAL so that ERR_WOULDBLOCK is not fatal.
      Added note about changed ARP_QUEUEING==0
      Mreged back changes that were lost during the savannah hack 3 weeks ago 
(using the sources from http://git.infradead.org/users/dwmw2/lwip.git)
      Fixed bug #31741: lwip_select seems to have threading problems
      Added missing "extern "C" {"
      Adde missing extern "C"
      Fixed constant not being 32 bit.
      Indentation changed
      Added missing U/UL modifiers to fix 16-bit-arch portability.
      Fixed bug #32561 tcp_poll argument definition out-of-order in 
      tcp_bind: return ERR_VAL instead of ERR_ISCONN when trying to bind with 
state!=CLOSED; fixed a typo
      netconn_accept: return ERR_ABRT instead of ERR_CLSD if the connection has 
been aborted by err_tcp (since this is not a normal closing procedure).
      fixed bug #32769 (ESHUTDOWN is linux-specific) by fixing 
err_to_errno_table (ERR_CLSD: ENOTCONN instead of ESHUTDOWN), ERR_ISCONN: use 
EALRADY instead of -1
      fixed bug #31748 (Calling non-blocking connect more than once can render 
a socket useless) since it mainly involves changing "FATAL" classification of 
error codes: ERR_USE and ERR_ISCONN just aren't fatal.
      Fixed bug #32648 (PPP code crashes when terminating a link) by only 
calling sio_read_abort() if the file descriptor is valid.
      Removed 'dataptr' from 'struct tcp_seg' and calculate it in 
tcp_zero_window_probe (the only place where it was used).
      Fixed bug #32820 (Outgoing TCP connections created before route is 
present never times out) by starting retransmission timer before checking route.
      Move tcp_pcb_lists to const section.
      Fixed bug #32906: lwip_connect+lwip_send did not work for udp and raw 
      Fixed bug #32280 (ppp: a pbuf is freed twice)
      Fixed bug #32926 (TCP_RMV(&tcp_bound_pcbs) is called on unbound tcp pcbs) 
by checking if the pcb was bound (local_port != 0).
      ethernet_input: check for minimum packet length to prevent assertions 
from firing.
      Fixed broken VLAN support.
      Fixed etharp unit test after changing struct etharp_hdr
      Fixed tcp unit tests after introducing ip_addr_p_t and letting tcp_input 
check for broadcasts by using current_iphdr_dest.
      Fixed bug #33048 (Bad range for IP source port numbers) by using ports in 
the IANA private/dynamic range (49152 through 65535).
      sys_arch_timeouts() is not needed any more.
      Fixed printf-format error (bug #33079)
      Fixed overflow in tcp_new_port() after changing port range to IANA 
"Dynamic and/or Private Ports" range
      Used upper case 'L' instead of lower case 'l' for long constant for 
better readability
      patch #7449 allow tcpip callback from interrupt with static memory message
      Added a test for fast-rexmit
      replaced tab with spaces
      ... and finally, we got a first working version of a dual-stack lwIP 
runnin IPv4 and IPv6 in parallel - big thanks to Ivan Delamer! (this is work in 
progress, so please beware, test a lot and report problems!)
      Added new files for IPv6
      Removed files of old IPv6 implementation
      Removed autoip_init() since it does nothing; minor coding style changes
      Combined IPv4 and IPv6 code where possible, added defines to access 
IPv4/IPv6 in non-IP code so that the code is more readable.
      Use conversion defines instead of casting IP addresses
      Fixed pointless conversion when checking TCP port range (bug #33398)
      Fixed bug #33337 (which is #32906 reappearing after adding IPv6 support)
      Fixed two compilation errors with different opt.h settings
      Added ipX versions for routing
      use PCB_IS_IPV6(pcb) instead of pcb->isipv6 everywhere
      use PCB_IS_IPV6(pcb) instead of pcb->isipv6 everywhere; fixed compilation 
with LWIP_IPV6==1 but LWIP_IGMP==0
      Fixed ip_2_ipX() and ip6_2_ipX() macros #if 
      Fixed ipX_netif_get_local_ipX for LWIP_IPV6==0
      - fixed bug #33485 (forgot '!' before SOCK_ADDR_MATCH*);
      Fixed compilation with LWIP_IPV6==0
      Fixed bug #33492 (fixed stats for IPv6 protocols)
      Restructured the code a bit to help my dump compiler not creating a jump 
table in ROM
      Moved common call to pbuf_header outside the switch()
      Moved static variable from inside the function to global scope
      Removed unused static function
      use const char for name pointers in display functions
      - sockaddr_aligned: use a union instead of a manually aligned struct;
      Fix compilation error when checking for hidden variable names ('s8_t i' 
was hidden in some case statements in nd6_input()).
      Fixed compilation error after converting sockaddr_aligned from struct to 
      - changed "struct ip_addr" to "ip_addr_t";
      Provide a default for SNMP_GET_SYSUPTIME() based on sys_now()
      Cleaned up usage of sys.h a bit
      Added some more asserts to check that pcb->state != LISTEN
      Fixed bug #33544 (warning in mem.c in lwip 1.4.0 with NO_SYS=1)
      fixed bug #33545: With MEM_USE_POOLS==1, mem_malloc can return an 
unaligned pointer.
      fixed bug #31723 (tcp_kill_prio() kills pcbs with the same prio) by 
updating its documentation only.
      Init checks: LWIP_RAND is needed for IPv6, too
      Slightly reorderd fields of struct tcp_pcb to plug holes introduced by 
member alignment (to reduce RAM usage)
      Fixed bug #33653 (ip_data.current_ip_header_tot_len calculation errors!) 
introduced while mergin IPv4 and IPv6
      Fixed bug #33672 (checksum calculate error!!!) by folding 'acc' to u16_t 
before calling checksum_pseudo_*_base functions
      No need to pass 'acc' as u16_t since the _base functions are internal (we 
save one AND op when passing as u32_t)
      Fixed documentation after changing sys arch prototypes for 1.4.0
      Fixed invalid SOCK_ADDR_TYPE_MATCH check in lwip_sendto()
      Fixed bug #33561 bugs in recvfrom() and sendto()
      Include opt.h so that LWIP_ERROR works correctly
      Fixed wrong endianess of port in bind() and connect() broken with the 
last commit
      Fixed bogus IPH_V/HL and IPH_VHL_SET endianess dependency
      fixed bug #34337 (possible NULL pointer in sys_check_timeouts)
      bug #34406 dhcp_option_hostname() can overflow the pbuf
      fixed bug #34580 fcntl() is missing in LWIP_COMPAT_SOCKETS
      fixed bug #34581 missing parentheses in udplite sockets code
      Fix default value of TCP_SNDLOWAT for small values of TCP_SND_BUF (broken 
with my 2nd-last commit)
      removed the need to disable ARP_QUEUEING when LWIP_ARP is disabled an 
TCP_QUEUE_OOSEQ when LWIP_TCP is disabled
      added missing valid/set_invalid defines for NO_SYS
      SLIP netif: add support for multiple input strategies (threaded, polling, 
RX from ISR)
      fixed bug #34429: possible memory corruption with 
      Slipif: fixed IPv6 support
      - moved processing of refused_data to an own function (used from 
tcp_fasttmr and tcp_input);
      fixed bug #34638: Dead code in tcp_receive - pcb->dupacks
      SEQ-comparing defines: cast parameters to u32_t for clarity
      Fixed bug #34733 Null pointer exception with SOCKET_DEBUG.
      Fix icmp6_send_response: cannot assign (packed) ip6_addr_p_t* to 
ip6_addr_t* -> need to copy the packed address to an aligned address first
      fixed bug #34684: Clear the arp table cache when netif is brought down
      fix compilation of ip_canforward on 8-/16-bit platforms (where constants 
are 16-bit and thus cannot be left-shifted by 24)
      fixed bug #34884: sys_msleep() body needs to be surrounded with '#ifndef 
      Merge branch 'master' of git.sv.gnu.org:/srv/git/lwip
      fix for bug #34684 was wrong (netif for arp table entries was only 
set/reset with SNMP enabled)
      fixed bug #31177: tcp timers can corrupt tcp_active_pcbs in some cases
      Another fix for bug #32417 (debug assert that fires)
      Fixed typo in define check: LWIP_IPv6_FRAG -> LWIP_IPV6_FRAG
      implemented API functions to access so_options of IP pcbs (UDP, TCP, RAW) 
(fixes bug #35061)
      Merge branch 'master' of git.sv.gnu.org:/srv/git/lwip
      Added option CHECKSUM_GEN_ICMP
      fixed bug #35291: NULL pointer in pbuf_copy
      pbuf_copy(): moved the check for "p_to != NULL" to a better place.
      - fixed bug #35151: DHCP asserts on incoming option lengths;
      Fixed my last chagne to pbuf_copy
      fixed bug #34636: FIN_WAIT_2 - Incorrect shutdown of TCP pcb: don't let 
PCBs time out from FIN_WAIT_2 if the RX side wasn't close (by either calling 
tcp_close or tcp_shutdown(RDWR))
      fixed bug #35305: pcb may be freed too early on shutdown(WR)
      fixed bug #35435: No pcb state check before adding it to time-wait queue 
while closing
      tcp pcb: persist_cnt can be u8_t instead of u32_t (since it is compared 
against u8_t only)
      partly fixed bug #25882: TCP hangs on MSS > pcb->snd_wnd (by not creating 
segments bigger than half the window)
      Fixed unused local variable warning (patch #7711)
      Multiple compilation fixes:
      Correctly calculate the default value of MEMP_NUM_SYS_TIMEOUT as needed
      Fixed unused variable warning
      Removed unused variable in ip_debug_print()
      fixed bug #35537: MEMP_NUM_* sanity checks should be disabled with 
      Patch by Stéphane Lesage:
      fixed bug #35531: Impossible to send multicast without a gateway 
(introduced when fixing bug# 33551)
      fixed pbuf leak when PPP session is aborted through pppSigHUP() (bug 
#35541: PPP Memory Leak)
      Added lwipopts.h file for unit tests
      Fixed unit tests: adapted lwipopts.h and fixed 
test_tcp_new_counters_pcb() after adding snd_wnd_max to struct tcp_pcb.
      Minor: cosmetic source code layout changes
      unit tests lwipopts.h: NO_SYS==1, disable netconn and sockets (not tests) 
-> lwipopts.h is now usable for unix unit test makefile, too
      fixed bug #35595: Impossible to send broadcast without a gateway 
(introduced when fixing bug# 33551)
      Speed up LWIP_TCPIP_CORE_LOCKING by directly calling functions in 
api_msg.c instead of calling via function pointer.
      Fixed unused variable warnings produced with the last commit
      IGMP stats: added missing tab (by Gisle Vanem)
      patch by Bostjan Meglic: fixed bug #35809: PPP GetMask(): Compiler 
warning on big endian, possible bug on little endian system
      Removed unnecessary global variable "subnetMask", which is only used in 
one function (GetMask)
      Merge branch 'master' of git.sv.gnu.org:/srv/git/lwip
      patch by Mason: fixed bug #35907: lwip_gethostbyname_r returns an invalid 
      fixed bug #35927: missing refragmentaion in ip_forward
      fixed bug #35931: Name space pollution in api_msg.c and netifapi.c
      Fixed bug #35817: do_connect() invalidly signals op_completed for UDP/RAW 
      added posix-compatibility include files posix/netdb.h and 
posix/sys/socket.h which are a simple wrapper to the correct lwIP include files.
      Better fix for bug #35927 (missing refragmentaion in ip_forward) when 
IP_FRAG is disabled.
      TCP unit tests: fix that ip.rterr stats are increased (some unit tests 
had no netif set)
      new dhcp unit test: fix compilation for strict C, made local functions 
static, made some variables and parameters const
      dhcp unit test: fixed 2 consts, use udp checksum 0x0000 in handcrafted 
packets so that CHECKSUM_CHECK_UDP==0 is not necessary
      tcp_abort/tcp_abandon: don't send RST if pcb->state is CLOSED
      udp_input: fixed unreachable code warning for CHECKSUM_CHECK_UDP==0
      fixed bug #35945: SYN packet should provide the recv MSS not the send MSS
      fixed bug #35756 header length calculation problem in ppp/vj.c - removed 
unused/invalid defines TCPH_OFFSET(_SET).
      fixed the fix for bug #35945 (SYN packet should provide the recv MSS not 
      fixed bug #36388 (PPP: checksum-only in last pbuf leads to pbuf with zero 
      Added unit test that pbuf_copy returns a correct error code for pbuf 
queues ending with a zero-length pbuf.
      dhcp: check array bounds before accessing it (bug #36170)
      patch by Sylvain Rochet: fixed bug #36283 (PPP struct used on header size 
computation and not packed)
      Added missing name (patch by)
      Added a readme.txt about the PPP code.
      fixed bug: #36380 unsent_oversize mismatch in 1.4.1RC1 (this was a 
debug-check issue only)
      Merge branch 'master' of git.sv.gnu.org:/srv/git/lwip
      fixed bug #36412: memp.c does not compile when MEMP_OVERFLOW_CHECK > zero 
      Sanity-check the size of netif->hwaddr
      Merge branch 'master' of git.sv.gnu.org:/srv/git/lwip
      fixed bug #37052: "netconn_alloc: undefined netconn_type" assertion 
      Fixed bug #36899 DNS TTL 0 is cached for a long time
      fixed bug #36840 snmp_send_trap() NULL de-reference if traps configured 
but no interfaces available
      fixed bug #36645: Calling dhcp_release before dhcp_start dereferences NULL
      fixed bug #37166: memp_sanity check loops itself
      Added brackets, completed CHANGELOG
      Added brackets, completed CHANGELOG
      fixed bug #37405 'err_tcp()' uses already freed 'netconn' object
      Improved/fixed comments about timeout.
      Added LWIP_HOOK_ETHARP_GET_GW to implement IPv4 routing with multiple 
      Multiple fixes found by coverity scan
      snmp: added missing default cases (only used for trace output)
      SNMP: fix "uninitialized variable" warning
      fixed last commit (copy & paste from patch broke the code)
      bug #35874 reserved identifier violation, 2nd part
      tiny formatting correction
      bug #42998: made NETIF_MAX_HWADDR_LEN overridable for some special 
      Fix warning for compilers propagating ~'ed u8_t to int...
      Moved IPv4/IPv6 headers to common include folder, now that their names 
are unique -> no need to add 3 directories to the include path when compiling 
      added optional macros PACK_STRUCT_FLD_8() and PACK_STRUCT_FLD_S() to 
prevent gcc 4 from warning about struct members that do not need packing
      update CHANGELOG and fix coding style (fixed bug #39355 SNMP Memory Leak 
in case of error)
      fixed bug #43389 dns_recv() res_idx calculate error
      fixed bug #38219 Assert on TCP netconn_write with sndtimeout set
      Merge branch 'master' of git.sv.gnu.org:/srv/git/lwip
      SNMP: added missing casts to int for printf arguments
      lwip_socket_init() is not needed any more -> compatibility define
      CHANGELOG: fixed date
      Fixed multiple smaller compiler warnings
      mem.h: fixed constants to be unsinged to fix compiler warning
      task #11472 Support PBUF_REF for RX (IPv6 and IPv4/v6 reassembly might 
not work yet)
      fixed bug #43778: IPv6 header version not set on 16-bit platform (macro 
      sockets.c: fixed using unsigned constant 'FIONBIO' in switch on (signed) 
      stats: place 'err' in stats_mem more at the front to better see it in 
debugger overview window
      mem: added an MEMP_OVERFLOW_CHECK implementation for MEM_USE_POOLS; added 
another unit test
      Merge branch 'master' of git.sv.gnu.org:/srv/git/lwip
      fixed bug #43840 Checksum error for TCP_CHECKSUM_ON_COPY==1 for no-copy 
data with odd length
      TCP_OVERSIZE: make segment size allocated by TCP_OVERSIZE overridable for 
      sockets.c: fixed assert check after changing type of sock->select_waiting 
to unsigned
      prevent dhcp from starting when netif link is down (only when 
LWIP_DHCP_CHECK_LINK_UP==1, which is disabled by default for compatibility 
      etharp: fixed casting 'ctime' from u16_t to u8_t in local variables 
(introduced when fixing bug #34682)
      fixed bug #20506 "Initial congestion window is very small" again by 
implementing the calculation formula from RFC3390
      Merge branch 'master' of git.sv.gnu.org:/srv/git/lwip
      Allow to overrid the check for p->ref==1 in TX packets (there *are* netif 
drivers that can handle this)
      tcp_kill_prio(): prefer nearly-closed connections (waiting for the last 
ACK only) over established connections when out of tcp pcbs
      fixed that lwip_netconn_do_delconn() did not set msg->err on success 
(just introduced that bug this weekend...)
      memp: also export memp_sizes[] if MEMP_USE_CUSTOM_POOLS==1
      fixed bug #37614 "Errors from ipX_output are not processed". Now 
tcp_output(_segment) checks for the return value of ipX_output and does not try 
to send more on error. A netif driver can call tcp_txnow() (from tcpip_thread!) 
to try to send again if TX buffers are available again.
      api_msg_c: fixed compiler warning (added brackets in if statement)
      fixed compiler warning in dhcp.c
      Fixed dhcp unit tests after changing netif up/down handling
      Fixed compiler warnings in unit tests
      Enable LWIP_PPP_API by default if (PPP_SUPPORT && (NO_SYS == 0))
      pppos_input_tcpip: fix pbuf leak if tcpip_input returns error, use 
pbuf_take instead of duplicate copy code
      Fixed tcp unit tests after changing routing to check for link up
      fixed bug #44649 lwip_socket_drop_registered_memberships
      dhcp: start discovery with short timeouts on network change, even if 
already discovering
      fixed bug #44766 (LWIP_WND_SCALE: tcphdr->wnd was not scaled in two 
      Fixed constant initializer problem in ip_addr_t by having ip6 first
      fixed compiler warning (signed/unsigned comparison) introduced when 
fixing bug #44766
      Added IP_ADDR4()/IP_ADDR6() initializer macros that initialize ip_addr_t 
like their counterparts IP4_ADDR()/IP6_ADDR()
      fixed unit tests after changing ip_addr_t
      Added version-independent ip_addr_islinklocal()
      dhcp: move declaration of "extern void dhcp_set_ntp_servers()" from 
dhcp.c to dhcp.h to make the function prototype known to implementers
      fixed compiling netdb.c after LWIP_IPV4 changes
      Many const fixes throughout the stack (although these are not all, yet)
      revert accidentally committed snmp header files
      fixed compiling icmp.c (variable has to be declared at the beginning of a 
      Added some macros with extension "_val" that work on actual instances and 
leave away the "if != NULL" check to get rid of gcc "-Waddress" warnings in the 
core code at least (I might not have caught all of them, yet)
      fixed typo in sockets.h
      igmp.c: fixed -Waddress, removed dead code
      fixed missing casts found with msvc /Wall
      sockets.c: added missing casts after changing storage type of 'err' 
member in sockets
      fixed some more missing casts...
      fixed more (tiny) warnings...
      Fixed const'ness in snmp (design of sys contact/name/location and 
snmpenableauthentraps is broken!)
      fixed const'ness of syscontact/sysname/syslocation
      added more missing casts
      ppp_free: fixed type of local 'err'
      fixed broken ip6_addr_debug_print_parts() (broken yesterday)
      changed IP_IS_V6_VAL() to take an instance, not a pointer (to get the 
_val() functions the same)
      fixed pppol2tp (IP_IS_V6_L -> IP_IS_V6_VAL)
      some more compiler warning fixes
      added missing braces around macro parameters
      sockets: IPPROTO_RAW/IPV6_CHECKSUM must be disabled for LWIP_RAW==0;
      fixed ip_addr_islinklocal macro definition
      more "const" fixes
      fixed "missing braces around initializer" for IN6ADDR_*_INIT macros
      changed dhcp state name defines to include "STATE_" to prevent confusion 
with message types (e.g. INFORMING vs. INFORM)
      fixed bugs #45140 and #45141 (dhcp was not stopped correctly after fixing 
bug #38204)
      Fixed bug #45161 tcp.c / tcp_abandon / pcb->local_port set to zero but 
needed later for tcp_rst (introduced some months ago when fixing bug #42299)
      fixed bug #45135 getsockopt SO_SNDTIMEO, SO_RCVTIMEO broken
      Fixed bug #45098 ip_addr_t type field not populated for socket address 
copies (patch by James Smith)
      Reverted fix for bug #38203 since it might be wrong
      init.c: fixed window scaling range check
      Removed accidentally committed // comment
      Fixed warnings about NULL check not required (ip_addr_isany) and implicit 
conversion (~)
      Fixed ~ warnings in a different way
      added lwip_socket_thread_init/cleanup to use 
but sockets.h
      ... and one more change to those nasty ~ operator warnings :-(
      netif_find(): name parameter can be const
      we are moving towards 1.5.0 -> set LWIP_VERSION accordingly
      Fixed that netconn_thread_cleanup() did not call 
      fix that LWIP_MULTICAST_TX_OPTIONS must be used in ip4_route instead of 
      accidentally committed debug comment //
      another fix for LWIP_MULTICAST_TX_OPTIONS: without LWIP_IGMP, 
udp_pcb->mcast_ttl was not initialized
      LWIP_NETCONN_SEM_PER_THREAD: ensure sys_sem_valid() is only called for 
non-NULL pointers (not all ports might check this)
      fixed bug #45004: dns response without answer might be discarded
      dns.c: fixed compiler warning
      Add doxygen config + main-file used by Frédéric to create 
http://www.nongnu.org/lwip/ for 1.3.0 (see 
https://lists.gnu.org/archive/html/lwip-users/2013-01/msg00062.html) - just so 
that it doesn't get lost
      fixed bug #43790: Sending octet string of Length >255 from SNMP agent 
(patch by Manoj Kumar)
      fixed passing u16_t 'snmp_varbind->value_len' to functions taking an u8_t 
      Fixed compiler warning when window scaling is enabled (tcp_sndbuf() 
should still return u16_t since that value can directly be passed to 
      SNMP: tiny preparation for SNMP to support more versions than just v1: 
store request version in struct snmp_msg_pstat so that the response can be sent 
with the same version (v2c might already work but getbulk is missing)
      fix bug #45120 in a cleaner way
      nd6: adapt to constness of IP6_ADDR_ANY6 for IPv6-only configuration
      netdb: fix debug output when IPv6 is enabled
      fix compiler warnings when passing u16_t to pbuf_header()
      fixed bug #45029 (Several macros use ip6_2_ip() without supplying a 
storage address): removed netconn_*_ip6() macros
      fixed bug #45559: Window scaling casts u32_t to u16_t without checks
      fixed bug #45818: API functions should check if type of ip_addr_t 
parameter matches the pcb type
      Fixed UDP multicast receive filtering (multicast should only be received 
when bound to ANY or the destination multicast address)
      TCP window scaling: don't parse window scaling option on retransmission
      ethernet_input: pass IPv4 packets to ip4_input, not to ip_input
      PBUF_REF with "custom" pbufs is now supported for RX pbufs (see pcapif in 
contrib for an example, LWIP_SUPPORT_CUSTOM_PBUF is required)
      fixed pointer type of value passed for snmpenableauthentraps (broken in 
      task #12243: DNS/IPv6: added support for AAAA records
      worked on task #12243 (Add support for AAAA/IPv6 records to DNS)
      Separate mib2 counter/table callbacks from snmp agent. This both cleans 
up the code and should allow integration of a 3rd party agent/mib2.
      fixed comment, fixed unused parameter in mppe_compress()
      fixed compiler warning (stray 'a ' in code) - why is this a warning 
      update CHANGELOG
      fixed missing comment after #endif
      minor compiler warning fixes and coding style
      Revert "make netif_ip4_addr/netmask/gw macros return constant IP address 
      igmp: use netif_ip4_addr() instead of directly accessing struct netif 
      fixed compiling LWIP_HAVE_LOOPIF after changing struct netif.ip6_addr to 
      Fixed const errors after changing netif_ip4_addr/netif_ip6_addr to return 
cont pointers
      Fixed const warning in lwip_writev
      Simplify ip_2_ip6/4(_c) macros (and removed 
LWIP_ALLOW_STATIC_FN_IN_HEADER) -> now the *_c versions should not be required 
any more
      udp: don't use ip4_2_ip() where not required
      eliminate temporary storage when using netif addresses for ip_addr_t* now 
that they have the correct type (ATTENTION: ip6_select_source_address() and 
ip4_netif_get_local_ip() now return ip_addr_t*!)
      Removed ip_2_ip4/6_c const macros again now that ip_2_ip4/6 macros keep 
the original const'ness
      Fixed ETHARP_TRUST_IP_MAC after changing struct netif.ip_addr/netmask to 
      struct udp_pcb.multicast_ip must be an ip_addr_t, too, to completely 
avoid temporary storage
      Cleaned up using struct netif.ip_addr by creating API functions for it
      FD_SET: dump NULL-check that hides usage error, dump non-standard 
      simplify FDSETSAFESET()/FDSETSAFEGET(): p is not required
      fixed compiler warnings where passing variable instance to ip_addr_isany
      netdb: fixed warning about pointless comparison
      MIB2_STATS: moved netif related mib2 counters into a struct (defined in 
stats.h), added ifInErrors/ifInUnkownProtos (now handled in etharp.c) and 
      fixed bug #46064: ip_set_v6() must set pcb ip address types as well
      Fixed bug #46071 Logic error in line 1473 in dns.c
      minor: fixed coding style in ip6addr_aton()
      ip6addr_aton(): fail on three successive colons in an IPv6 address string
      ipaddr_aton(): favour ':' over '.' to decide for IPv6 first (since IPv6 
mapped IPv4 addresses might contain both ':' and '.')
      minor: fixed coding style in ip4addr_aton()
      minor: fixed coding style in ip4addr_aton()
      fixed bug #46072: ip4addr_aton() does not check the number range of all 
address parts
      dns: improved handling 2nd server if first failed
      minor: fixed coding style in igmp.c
      minor: fixed coding style in mld6.c
      implement/remove missing IP counters in stats_mib2 (see task #13731)
      Finished task #13731: fix usage of "snmp_inc_*"
      Added/changed header of dhcp.c/.h
      minor: removed some trailing spaces in tcp.c
      minor: removed superfluous comma after '}' in dns.c
      minor: removed superfluous comma after '}' in msg_out.c
      minor: removed superfluous comma after '}' in mib2.c; removed superfluous 
comment on get-functions that follow a function typedef
      snmp: moved noleafs_get/set functions from mib2.c to mib_structs.c, where 
they belong
      snmp: added helper functions to encode/decode BITS pseudo type, added 
define for Counter64 type, minor layout changes
      minor: mib2.c: sys_tem_* -> system_* for everything but 'sys_tem' 
(without suffix)
      mib2: only export 'internet', all other variables can be static
      adapt CHANGELOG to last change
      add last change to CHANGELOG
      mib2: one more '};' -> '}'
      struct netif->hostname can be a const pointer
      snmp: make mib_scalar_node a "derived" struct like all other nodes
      snmp: moved agent initialization from snmp_msg.h to snmp.h
      adapt init.c to moved declaration of snmp_init
      snmp_trap_dst_ip_set: ip_addr_t pointer can be const
      def.h: added LWIP_ARRAYSIZE() macro
      snmp: combine oid and node pointers in array entries
      snmp: cleaned up mib_* structs: "base" class 'struct mib_node' only needs 
the type, get/set functions are not used on array/external nodes (only on 
scalar/listroot nodes)
      removed comma before }
      Fixed bug #46128 (patch by Kerem Hadimli)
      minor: SNMP: fixed coding style (lwip style)
      minor: fixed coding style (lwip style)
      minor: mib2: removed some blocks by defining common variables above the 
      minor: fixed coding style (lwip style)
      SNMP: use PBUF_RAM for sending, PBUF_POOL is mostly used for RX only (if 
this isn't followed, tcp can get stuck when ACKs don't come through - unless 
some PBUF_POOL pbufs are reserved for such RX)
      fixed bug #46145 tcp_send_empty_ack() uses wrong netif with 
LWIP_HOOK_IP4_ROUTE_SRC (patch by Milan  Cermak)
      Fixed bug #46365: tcp_accept_null() should call tcp_abort()
      Fixed compiling with LWIP_TCP==0
      fixed bug #46471: lwip_accept() leaks socket descriptors if new netconn 
was already closed because of peer behavior
      Check TCP_SNDLOWAT for too high value (near u16_t overflow) - fixes bug 
      minor: tried to fix coding style in lowpan6.c
      lowpan6: fixed compiler warning when casting u16_t to u8_t
      revert accidentally committed comment from 
      bring back ETHARP_HWADDR_LEN (if anyone uses it)
      minor: fixed compiler warning "unary minus operator is applied to an 
unsigned expression"
      cleaned up includes a bit after IPv6 changes
      Added macro to get the ip address type
      sntp: fixed constness for SNTP_SERVER_DNS==1
      fixed wrong commit: compatibility-define tcp_accepted() was accidentally 
      ... and another compiler error: tcp_nagle_enable() must stay at 
tcpflags_t, not using u16_t
      lwip_accept: fixed returning EOPNOTSUPP instead of -1 (EOPNOTSUPP is set 
as socket error)
      minor whitespace change only
      removed unused return values of tcp_listen_input & tcp_timewait_input; 
fixed unused variable warning
      httpd improvements: added persistent connections, improved asynchronous 
read mode, compile-time deflate compression, new CGI mode, SSI handler can be 
called with tag string (instead of tag index)
      fixed bug #47743 (Closing listening tcp pcb is not posible without assert)
      fixed bug #47601 (wrong NS request at DAD)

idelamer (5):
      Minor edits for for IPv6 compilation
      Allow IPv6 addresses with arbitrary prefix.
      Allow routing IPv6 packets to neighbours with manually-configured 
non-link-local addresses.
      Process IPv6 packets arriving from non-Ethernet links.
      Don't forward IPv6 packets that are larger than outgoing MTU, send ICMPv6 
message back for Path MTU discovery.

jani (119):
      Fix bug which eats pbufs if SLIP_END comes at a pbuf boundary.Also 
cleaned up and commented the code.
      Add SLIP_DEBUG
      Fix function names in DEBUGF stataments.Remove reference to "reclaimed" 
field in stat.
      reclaimed fields have been unused for a while.remove them.
      take out the msvc pragmas that cancel each other.leave only one pair 
around 3 structs.
      make lwip_write() use lwip_send() and avoid code duplication.return 
      make it call etharp_output_sent() in tapif_output.This is to prevent the 
      pack the fields in dhcp_msg.This way DHCP works on non-byte aligned archs 
      forgot to delete 'return' in the last commit
      typo fixes.The unterminated comment already got two bugreports so it was 
      Move etharp packed structures to the header file.
      change tapif 'MTU' to be 1500 just like the linux tap's MTU
      fix pbuf_alloc for layer PBUF_LINK
      add MTU (maximum transmission unit) field to struct netif
      initialize tapif's mtu to 1500
      add new header file
      include slipif in the objects  and widlcard ipv4 so it will include 
everything in there
      add ip frag switches defaulting to on and increase pbuf pool size for 
unix demo
      new file ip_frag for IP SAR.reassembly code moved from ip.c and fixed
      fix 'conflicting type for strncmp' warning on linux by including string.h
      Allocate PBUF_POOL_BUFSIZE at once not harcoded 128.Init MTU for slip - 
1500 for
      Use C style comments.In debug stataments cast various struct pointers to 
void* to
      check for NO_SYS consistently using #if.Closes bug #1910
      replace bcopy and bzero with memcpy memset in tapif.Alloc PBUF_RAW 
instead of PBUF_LINK on input now that the meaning of PBUF_LINK has changed.
      use memset and memcpy instead of bzero and bcopy throughout lwIP core 
code.Archs need to update.Bug #1899
      Moved tcpdump to unix arch since it's specific to that.
      Move tcpdump.h to unix arch.BTW: as with tcpdump.c no CVS history is lost 
      remove tcpdump.c
      renamed (hopefully everywhere) stats to lwip_stats.closes bug #1901
      sizeof(u8_t) is 1 at temperatures > 0 K
      Simplify pbuf allocation for TCP packets in two places by replacing 
pbuf_alloc + pbuf_header
      remove bcopy & bzero from archs
      Patch #928 from Marc
      fix debug messages in tcp_slowtmr to reflect the correct name of this 
      remove already commented out function : memp_realloc
      seqno is u32_t so use %lu instead of %ld when printing it
      print correct pcb->rtime value in debug statament.it does not directly 
depend on tcp_ticks
      make rtime field u16_t like rto otherwise it won't catch rto if that goes 
beyond 255.When that happens there's trouble already since 255 ticks is over 2 
minutes but still...
      etharp_output_sent no longer exists
      remove global ctime.Each entry's ctime is now absolute.This avoids 
wrapping and also solves naming clash reported on the list
      fix compiler warnings in DEBUGF
      do not set rtime too many times to 0.it's enough to do it in 
      ack duplicate segments too to prevent connection hanging when a single 
transmitted ACK gets lost
      fix printing of recved packet.Discovered by Ed Sutter
      put a state field in listen PCBs to since they are often treated as 
normal pcbs. patch #922, bug #2114
      When all entries are 0 due to the whole table changing since the last arp 
tick (past 10 seconds) there's no oldest entry and the new entry does not  get 
a spot.Fix this (from Ed Sutter)
      Don't allow multiple binds to the same UDP port/address pair.Closes bug 
      Fix udp_bind to allow rebind for same socket (yesterday's commit broke 
that) and introduce connection info for UDP pcbs.New function 
netconn_disconnect, do_disconnect for deatching UDP from a remote addres.Fix 
      Fixes so that UDP connect() works.Enable generation of ICMP destination 
unreachable when the port is unavailable
      Fix locking for disconnect operation (use post and fetch on the 
connection's mbox in the two threads like other operations).Make netconn_peer 
take a pointer to addr instead of pointer to pointer to addr.Addr is a 4 byte 
struct an IP address so use structure assignment not just pointer assignment 
when saving the peer.This way the address is really saved :fixes bug #1897
      recvfrom accesses freed netbuf.If it's reused in the small window by 
another thread recvfrom returns bad from info.Patch #1041 by Florian Zschocke
      Deleted proj/ subdir.It has moved to contrib.
      Update src/FILES and src/netif/FILES
      tcp_timer_needed should be a noop when using the raw API.Fix link error 
bug #2489
      don't include arch/lib.h
      make debugs and asserts platform independent.No more use of abort and 
printf.delete 2 references to arch/cpu.h and arch/lib.h
      remove list.h
      fix doxygen comment for netif_add
      Only access non-NULL pbufs on some paths where they can be NULL in newly 
introduced callback code
      one more C++ comment changed two prototypes added for the SNMP = 1 case
      move FD_SET defines to sockets.h from arch.h .Last arg of select is not a 
const according to linux and openBSD manpages
      fix compiler error
      make netif->init return err_t instead of void.Patch from David Le Corfec
      delete ethernetif.h
      do not directly include lwipopts.h but lwip/opt.h instead
      dhcp.h and ip.h declare struct netif and don't include netif.h  to avoid 
      byte-order handling functions are in inet.c now and the uperrcase 
counterparts are gone. opt.h has all the
      cleaned up opt.h a bit, added more option defaults ad changed 
SYS_LIGHTWEIGHT_PROT to be a 0/1 define.The same for COMPAT_SOCKET
      default value for NO_SYS
      icmp messages need only PBUF_IP layer
      socket functions use socklen_t, patch from floriZ.Also set/getsockopt use 
void * instead of char * as fourth arg
      Add sys_untimeout stub in case of NO_SYS
      update sysarch doc. patch #1233
      factor out netif_set_addr so address of netif can be changed
      add tcpip_callback patch from Marc
      rename STATS to LWIP_STATS and make it checked by #if not #ifdef.The rest 
of the _STATS defines should follow
      Add priority argument to thread sys_thread_new.Patch from floriZ but 
slightly modfied
      patch 1197 form floriZ.When debug is on and port is 0 in udp_bind ERR_USE 
is always returned due to missing braces.Reindent that part of code while at it
      avoid compiler warning
      if LWIP_TCP is 0 do not link in TCP code.putting ugly ifdefs in api and 
core :(.Also only udp_init if LWIP_UDP is on
      some guidelines for contributors
      Add sio.h containing interface to platform specific serial layer.Make 
slipif use it instead of defining extern functions.This is in preparation for 
      more suggestions
      initial PPP options
      alignment fix from Marc Boucher
      obsolete PCB handling only active when TCP is enabled
      add definitions for PF_UNSPEC and IPPROTO_IP
      add PPP_DEBUG option and align all options to teh same colums using 
spaces and no tabs.closes patch #1306 too
      simplify MEM_ALIGN_SIZE macro
      fix format warning
      C++ comments cleanup
      empty lightweight protection macros defined not only for no_sys
      add sio_read and sio_write to beused by PPP
      patches 1492, 1493 and 1494 from Marc
      fix warning
      put LWIP_MAX and LWIP_MIN macros in def.h and use these instead of 
locally declaring them in .c files
      add PPP stack from Marc. Work in progress
      Mention PPP in changelog
      Cleanups in PPP: C++ comments removed, make it compile for unixsim too. 
Does not work yet only compiles
      inet_ntoa and inet_aton from Marc
      sys_msleep and sys_jiffies used by PPP code.From Marc
      sio and PPP updates from Marc
      fixed sio_read_abort prototype
      ip_lookup and udp_lookup not use remove declarations
      indentation fix
      add default option for LWIP_RAW
      add switch for MEMP_SANITY_CHECK defaulting to off
      only include sys.h once. Noted by Tom Barker
      fix inet_ntoa prototype to be standard, and fix ppp code that used the 
non-standard version
      fix SO_REUSE ifdef fixes
      fix up stats_display which was added in previous commit
      warnign fixe for stat_display
      fix recursive inclusion by forward defining struct netif
      do not export struct timeval to external users of socket.h to avoid 
      more uptodate eth driver skeleton from Tony Mountfield
      spelling fix from Tony Mountfield
      by default there's no eth padding to preserve preious beahviour
      #if directive style fix
      reduce msleep interval from 250 to 1 ms in ppp

jgrubb (15):
      Bug fix #20478: memp_malloc returns NULL+MEMP_SIZE rather than NULL on a 
failed allocation
      +bug fix #20478: memp_malloc now returns NULL for failed allocation 
(instead of NULL+MEMP_SIZE)
      Add NETIF_LINK_CALLBACK into the netif_set_link_up/down functions
      Task #7136: Centralize mempool settings into new memp_std.h and optional 
user file lwippools.h.
      Task #7136: Centralize mempool settings into new memp_std.h and optional 
user file lwippools.h. (Remove MEMP_POOL_SIZE/NUM flags, add new 
      *** empty log message ***
      Task #7143: Clean up opt.h. Made all the comment formats the same (uses 
Doxygen style), a couple minor reorderings. Changed a few of the default stats 
variables to depend on whether the modules were even used (i.e. #define 
TCP_STATS (LWIP_TCP) ). PPP options could still use some cleaning.
      Task #7136: Fix bug of wrong file name for centralized mempool settings.
      Move deprecated options from opt.h to init.c
      Put back in SO_REUSE
      DHCP_DOES_ARP_CHECK is set to 1 by default -- the compile-time checks 
fail if DHCP is off... So this patch sets the default to be 1 only if both DHCP 
and ARP are set.
      Make pbuf_alloc a bit easier to read (change parameter name from "l" to 
"layer" and use LWIP_MIN instead of ternary operatory)
      Add two more sanity checks on memory settings
      Minor change: remove unused #define

jifl (42):
      2007-02-26 Jonathan Larmour (based on patch from Simon Goldschmidt)
      * sockets.h, sockets.c: Move socket initialization to new
      Fix incorrect comparison in get_socket().
      Ensure the size of each pbuf in the pool meets alignment constraints
      Applied patch #5832 from Tai-hwa Liang to keep ipv6 building.
      * sys.h, api_lib.c: Provide new sys_mbox_tryfetch function.
      Oops, forgot final version of Changelog for last change I made.
      From bug #19222 comment #18. Minor tweak to sys_mbox_fetch to avoid 
      Document new sys_arch_mbox_tryfetch requirement for ports
      Note succesful error return for sys_arch_mbox_tryfetch
      * icmp.c: Reset IP header TTL in ICMP ECHO responses (bug #19580).
      * pbuf.c: Use s32_t in pbuf_realloc(), as an s16_t can't reliably hold
      * sockets.h: FD_SETSIZE needs to match number of sockets, which is
      * sockets.c: Fix ioctl FIONREAD when some data remains from last recv.
      Make pbuf_init() call be an empty macro for now
      "Fix" a few more cases where Paradigm C++ may mis-compile 16-bit right 
shifts on 32-bit quantities
      Add further checks. Move compile-time checks out of LWIP_DEBUG ifdef
      Add further checking that MEMP_NUM_SYS_TIMEOUT is high enough
      Small tweak: clarify use of link speed in comments for NETIF_INIT_SNMP.
      * core/ipv4/ip.c (ip_input): Rename ipsrcchecking -> check_ip_src, to make
      * dhcp.c: fix bug #19927: "DHCP NACK problem" by clearing any existing 
set IP
      * opt.h, ip.c: Rename IP_OPTIONS define to IP_OPTIONS_ALLOWED to avoid
      Minor spelling typos and formatting fixes.
      Fix simple compilation error with some compilers to preserve const-ness 
of ethaddr - from Luca Ceresoli
      Fix incorrect units in comment for TCP_MSL. Allow override.
      document that eth drivers input function should be ethernet_input
      * mem.c, stats.c, mem.h: apply patch #6414 to avoid compiler errors
      * pbuf.c, ppp.c: Fix warnings on some systems with mem_malloc.
      * inet_chksum.c: Allow choice of one of the sample algorithms to be
      Trivial change: correct sense of comment about LWIP_ERROR macro
      * err.h, err.c, sockets.c: Fix bug #23119: Reorder timeout error code to
      * tcp_in.c: Fix for bug #23693 as suggested by Art R. Ensure cseg is 
      Fix typo of including type in stats_display_memp empty macro
      * pbuf.c (pbuf_copy_partial): Improve function description comment. 
Thanks to Luca Ceresoli
      * tcp.c: Fix bug #24227, wrong error message in tcp_bind.
      * sockets.c (lwip_accept): check addr isn't NULL. If it's valid, do an
      * dns.c: Hard-code structure sizes, to avoid issues on some compilers 
      * sockets.c (lwip_accept): Return EWOULDBLOCK if would block on 
      * etharp.c (etharp_arp_input): Fix type aliasing problem copying ip 
      Correct commented description of do_recv().
      * pbuf.c: reclaim pbufs from TCP out-of-sequence segments if we run
      * ipv4/inet_chksum.c, ipv4/lwip/inet_chksum.h: 

kieranm (106):
      Fixed congestion window bug where the pcb->cwnd variable overflowed when 
      Fixed bug in duplicate ack handling
      Added check on entire sequence number of received packet being less than 
the rcv_nxt variable.
      New example project demonstrates how to use lwIP as a shared library
      Initialize err in do_close to prevent compiler warning.
      Initialize err in tcp_slowtmr to prevent compiler warning.
      Change type of members of struct stats_mem to "mem_size_t" (Bug #1694)
      Zero pcb->acked if ack does not acknowledge new data
      Fixed compiler warning - DEBUGF statement with too many arguments
      Added netbuf_copy_partial declaration
      Added #include <stdlib.h> to ensure abort() is known
      Fixed compiler warnings when ARP_QUEUEING is not defined.
      Make tmr in tcp_pcb u32_t to ensure it wraps at the same time as 
tcp_ticks (Bug #1838)
      Removed "static" from declaration of netif in ip_forward and ip_output
      Removed tcpdump.c from Makefile - it seems to have disappeared
      Removed dummy variable from "struct mem" and handled all MEM_ALIGNMENT 
      Updated Makefiles to reflect new "contrib" directory for architecture 
specific code
      Fixed bug in netconn_peer (test pcb for NULL before accessing)
      Fixed bug in do_delcon (set tcp_arg to NULL)
      Fixed bug in mem_realloc (check alignment of size)
      Changed DEBUGF to LWIP_DEBUGF
      23/02/2003 - Kieran Mansley - address@hidden
      23/02/2003 - Kieran Mansley - address@hidden
      23/02/2003 - Kieran Mansley - address@hidden
      23/02/2003 - Kieran Mansley - address@hidden
      Kieran Mansley, address@hidden, 08th Mar 2004
      Kieran Mansley - address@hidden - 9th Mar 2004
      Kieran Mansley - address@hidden - 23rd March 2003
      Kieran Mansley - address@hidden - 26th May 2004
      Kieran Mansley - address@hidden - 30th May 2004
      Kieran Mansley - 14th July 2004
      Kieran Mansley - 14th July 2004
      Kieran Mansley - address@hidden - 23rd July 2004
      Add TCP_SEQ_BETWEEN macro for comparing a range of sequence numbers
      Fixed typo (missing "{") in previous checkin
      Rename lwip_chksum and add LWIP_CHKSUM macro so that ports can "override" 
the standard implementation with one of their own.
      Kieran Mansley - address@hidden - 12th September 2004
      Kieran Mansley - address@hidden - 20th September 2004
      Kieran Mansley - address@hidden - 20th September 2004
      Kieran Mansley - address@hidden - 20th September 2004
      16th October 2004 - Kieran Mansley - address@hidden
      Kieran Mansley - address@hidden - 24th Nov 2004
      Kieran Mansley - address@hidden - 24th Nov 2004
      Kieran Mansley - address@hidden - 24th Nov 2004
      sockets.c: Fix BUG#19161 - ensure milliseconds timeout is non-zero
      * pbuf.c: Fix BUG#17645 - ensure pbuf payload pointer is not moved
      2007-02-28 Kieran Mansley (based on patch from Simon Goldschmidt)
      udp.c: Only try and use pbuf_header() to make space for headers if
      sockets.c, igmp.c, igmp.h, memp.h: Fix C++ style comments and
      * Fix all uses of pbuf_header to check the return value.  In some
      2007-03-21 Kieran Mansley
      * netif.c, netif.h: Apply patch#4197 with some changes (originator: 
      2007-03-28 Kieran Mansley
      Apply patch #5745: Fix "Constant is long" warnings with 16bit
      * tcp.c, tcp_in.c, tcp_out.c, tcp.h: Modify way the retransmission
      2007-07-13 Kieran Mansley
      * tcp_in.c: Fix for bug #19953 - correct TCP state machine when
      inet.c Modify (acc >> 16) test to ((acc >> 16) != 0) to help buggy
      2007-12-20 Kieran Mansley (based on patch from Per-Henrik Lundbolm)
      2007-12-20 Kieran Mansley (based on patch from Oleg Tyshev)
      Whitespace fix.
      Add persist timer
      2008-01-15 Kieran Mansley
      2008-03-04 Kieran Mansley (contributions by others)
      Update CHANGELOG for 1.3.0
      Fix BUG#23254.  Change macro definition of mem_* to allow
      Remove redundant "if" statement, and use real rcv_wnd
      Fix compiler warning about %#p
      BUG25629: set TCP_ACK flags on keepalive and zero window probes
      BUG25622: handle return code of tcp_enqueue in tcp_listen_input()
      Correct change to probe window setting
      BUG26010: set push bit correctly when tcp segments are merged
      BUG20779: cope with SYN packets received during established states,
      TASK9218: add support for TCP timestamp options
      BUG20515: rework way TCP window updates are calculated and sent
      Patch#6802 Add do-while-clauses to those function like macros in tcp.h
      Patch#6774 TCP_QUEUE_OOSEQ breaks compilation when LWIP_TCP==0
      BUG26301 and BUG26267: correct simultaneous close behaviour, and make
      BUG26879: set ret value in TCP_EVENT_ macros when function is not set
      BUG26722: initialise netconn write variables in netconn_alloc
      Update changelog for recent commits
      BUG23240 use signed counters for recv_avail and don't increment
      Update version numbers for release candidate
      Add missing #include directives
      Update for 1.3.1rc2
      Fix compile warning on Linux
      BUG27199: use snd_wl2 instead of snd_wl1
      BUG27209: handle trimming of segments when out of window or out of
      Update version number of 1.3.1 final release
      Update version number for CVS development
      Update link to wiki in README file
      Fix BUG#27445: grow cwnd with every duplicate ACK
      Update version for 1.3.2 rc 1
      re-work the fast retransmission code to follow algorithm from TCP/IP
      BUG28241: improve oos sequence processing with patches from Oleg Tyshev.
      Update version information for 1.3.2
      Update CHANGELOG for 1.3.2
      Update version numbering for 1.4.0 CVS development
      Ensure ssthresh >= 2*MSS
      cleanup: fix minor build failures on unix
      Remove unportable printing of C function pointers
      Fixed SNMP ASN constant defines to not use ! operator
      Update release number for 1.4.0 release candidate 1
      Update version for 1.4.0 rc2
      Update CHANGELOG and version numbers for 1.4.0 release
      Update version numbers for 1.4.1 development

kleshov (3):
      Indentation fix
      Fix bug #21077: inaccuracy in calculation of lwip_stat.mem.used
      Fixed bug #21077: inaccuracy in calculation of lwip_stat.mem.used

leonwoestenberg (1):
      Merged from DEVEL.

likewise (373):
      Initial revision
      Fixed typo. Testing CVS add as a test.
      Updated texts to reflect move to http://savannah.nongnu.org/projects/lwip/
      Removed FILES to remove the old vendor Id: tag.
      Added FILES without old vendor Id: tag.
      Removed old Id: tags in 4 non-source-code files.
      Added explanation on move to Savannah and URLs to its project pages.
      Removed to get rid of vendor tag.
      Re-added without vendor tag.
      Allocate struct tcp_seg *prev, *cseg only if TCP_QUEUE_OOSEQ is defined.
      Added redundant brackets in an if statement to keep a flaky compiler 
      Added URL to web-browsable CVS tree.
      New file structure towards SLIP/PPP. Renamed tcp_*.c for 8.3 sake.
      Mention the search feature mailing list archive. Commited to test CVS 
email notification.
      Fixed NULL pointer bug (#1493). Fix for memory leak bug (#1601), 
etharp_output_sent(). Added etharp_query for DHCP.
      To prevent compiler warnings, added UL to some bit mask constants.
      find_arp_entry() returned 0 instead of ARP_TABLE_SIZE if full pending 
cache (bug #1625).
      Added DHCP client by Leon Woestenberg
      Fixed numerous bugs. Re-used etharp_query()  in etharp_output(). Added 
comments and JavaDoc documentation.
      Surrounded all #include's for packed structs with #ifdef's.
      Added pbuf_ref_chain() which increases ref count of all pbufs in a chain.
      memp_alloc() now zeroes allocated memory (for robustness). Callers must 
NOT assume this.
      Changed static etharp_query() to support queueing packets. This fix  
missed in last commit.
      Note about ethernetif.c not up-to-date with etharp.c API. Fixed typo.
      Fixes all issues that showed up after the first commit.
      Workaround for compile error on TCP_REG. This workaround is disabled by 
      ip_output() no longer frees pbuf in case no route could be found.
      Hardware address bytes made unsigned char instead of char, consistent 
with other sources.
      Fixes all issues that showed up after the first commit.
      Implemented conditional insertion of ARP entries to update_arp_entry 
      ARP entries can now be updated (but not added) on any ARP traffic. Set 
#define ETHARP_SNOOP_UPDATES 1 to enable.
      ETHARP_SNOOP_UPDATES made externally configurable.
      DHCP cleanup redux (patch #654).
      Added PBUF_REF (payload external, copied on queueing).
      Conditionally have ARP queue outgoing pbufs.
      Added debug messages for corner cases of TCP states.
      Added SNMP call-outs for monitoring of default SNMP status items for 
      Fixed argument type compiler warnings of the bcopy() call using type 
      Changed dhcp_init() to NULL the client_list (on re-inits).
      All ARP queueing code is now conditionally compiled-in.
      Fixed typo: ETHARP_DEGUG
      Documented ( *output)() and ( *linkoutput)() better for upcoming ARP 
      Initial commit of C16x/ST10 arch files and CS8900a Ethernet driver.
      More complete ARP protocol implementation.
      First attempt to stylize and document DHCP sources.
      Clarified debug messages where the timers are set.
      Fixed missing end-of-comment.
      Fixed wrong assertion condition.
      Added comment to ip_input() packet filter.
      Allocate PBUF_RAW instead of PBUF_LINK type pbufs. Fixes bug #1890 for 
this driver.
      Removed etharp_output_sent() as etharp.c no longer returns ARP packets to 
the driver.
      Updated lwIP module copyright years to include 2003. Committers must 
check theirs.
      Added check if ARP_QUEUEING is 1 for a queueing related debug statement.
      Moved ETHARP_ALWAYS_INSERT switch to lwipopts.h
      Output snd_buf size in debug message in tcp_enqueue().
      More debugging in checksum routines.
      Merged patch #927 which fixes "needs modifiable lvalue" compile error in 
      Made hardware address length definable (was 6 bytes for Ethernet).
      Added #include <string.h> for memset()/memcpy().
      Fixed some typo's in the comments.
      Free incoming pbuf's in the TCP event macro if the recv callback is NULL. 
Fixes bug #2156.
      Enhanced documentation on UDP PCB matchjng code.
      Added source documenting comments.
      Initial commit of snmp.h function prototypes.
      Nullified stray pointer for debugging purposes.
      Fixed assignment of pcb->flags if pcb was NULL in udp_new().
      Rebinding an active pcb did not check the given address/port against 
other bound pcb's.
      ip_input() changed. A configured netif accepts any traffic and an 
unconfigured netif accepts only DHCP traffic.
      Removed the src/arch tree from the lwip module. (Now in seperate contrib 
      Some macro's were not surrounded by brackets. Was dangerous when nesting 
      Fixed DHCP packet input filter. Added numerous comments. Code cleanup.
      Added commented about the signedness of pbuf_header() argument.
      Added comments. Code cleanup. Clearer debugging in udp_input().
      Changed some comments into JavaDoc format.
      Fixed comment typo.
      Include arch/cc.h first, as architecture headers might #define NULL 
      SNMP functions are now unconditionally called and defined empty if 
      Removed my #error.
      C instead of C++ style comments.
      Disabled too restrictive behaviour in _bind() and _connect(). 
Reimplementation pending.
      Lightweight protection macros were not defined if NO_SYS was defined.
      Made UDP flag defines unsigned (by adding the U suffix).
      Removed Id: fields as they give conflicts while merging to leon-dhcp 
      Merged with leon-dhcp branch. Tagged as POST_leon-dhcp afterwards.
      Fixed some issues open after merging 'leon-dhcp'. Added new debugging.
      Fixed some issues open after merging 'leon-dhcp'.
      DBG_TYPES_ON removed (must be in lwipopts.h instead).
      DBG_TYPES_ON added (must be overridden in lwipopts.h).
      Fixed cyclic dependency by including netif.h. Not sure if this breaks 
other compilers?
      Make sure that BYTE_ORDER is actually defined. Panic with #error if not.
      Include "netif.h" for ntohl and friends.
      Added comments on some ARP options.
      Moved DBG_MIN_LEVEL out of here to lwipopts.h
      Added source comments.
      pbuf_unfold_reply() lost memory if already unfold.
      Using a negated unsigned value as func. arg. fails for Keil C166 
      Fixed bug #2841 (etharp.c packet queueing always picks table entry 6).
      Fixed bug #2826 (re-use of oldest ARP entry with queued packet leaks 
pbuf). Only if ARP_QUEUEING == 1.
      Added debug levels for some serious errors (out of memory).
      Made some flag defines unsigned.
      Re-added pbuf_dechain() in udp_send() as it breaks current applications.
      Added tracing debug messages.
      Initialized netif->dhcp to NULL.
      Retry with PBUF_RAM if PBUF_POOL allocation failed.
      Forgot #if LWIP_DHCP around netif->dhcp = NULL;
      Lots of clearing up comments and use of new debugging features.
      New tail section of udp_send() that handles both queued and unqueued 
      Added documentation and comments.
      Brackets around debug in DEBUGF. Cleaned comments.
      Fixed typo affecting debugging.
      Strong assert checking against queueing behaviour in udp_send().
      Fixing bug #1903 with a new pbuf_realloc() that respects mixed-type 
      pbuf_realloc() did not update ->tot_len in a chain. Fixed dealloc of 
      Fixed bugs #2968 (ref count) and #2670 (total length).
      Removed the pbuf_dechain() from udp_send() matching new pbuf code.
      Corrected more pbuf.c functions to comply with pbuf->ref and ->tot_len 
      Initial start with source code and documentation style guidelines.
      Added debug messages for serious errors.
      Better error handling. Added debug messages for serious errors.
      Fixed missing variable.
      Documentation changes. Added missing trailing newlines to debug messages.
      Fixed pbuf_dechain() assertion. Removed old documentation from pbuf.h.
      pbuf_header() now only moves payload pointer upwards for PBUF_ROM/REF.
      Replaced pbuf.c 1.34 pbuf_take() change by simpler alternative.
      Reverted back to David Haas' patch of pbuf_chain() from 1.34.
      Lots of comments added. Removed redundant assignment. Moved assertion.
      Fixed another assert. Removed another redundant assignment.
      Added source code self documentation guidelines.
      etharp_query() has error return type now. Matched dhcp.c with this change.
      IP_ADDR_ANY is now a pointer to { 0UL } (see IP_ADDR_BROADCAST).
      IP_ADDR_ANY is now a pointer to { 0UL } (see IP_ADDR_BROADCAST).
      Added assertion checking against dupes in pcb active list. Added comments.
      Fixed ip_addr_set() to deal with IP_ADDR_ANY. Added "ip_addr.h" include.
      In pbuf_take(): Got rid of variable 'f'. Fixed stylo (typo in style). 
Renamed 'top' to 'head'.
      Updated to reflect current practice and URLs.
      Print debug message before actually changing netif IP address config.
      Only changes to comments.
      Fixed stylo.
      Added debugging to verify correct result of udp_bind() / udp_connect().
      Fixed bug #3112 (faulty behaviour calling tcp_listen() when already 
      TCP data can be safely referenced as PBUF_ROM instead of PBUF_REF.
      Added (non-active) code handling pcbs upon changing IP address.
      Enabled code to abort/replace TCP pcbs upon netif address change.
      First attempt to track/explain changes that happened in CVS tree.
      Updated changelog to reflect some recent changes.
      ip_addr_any and _broadcast are type-declared as being const.
      Macro IP_ADDR_ are cast non-const as lots of functions miss const 
qualifier for arguments.
      Fixed debug message for PBUF_REF/ROM allocation failure.
      All debug messages now show actual config _after_ setting netif config.
      Stronger debugging/assertion.
      Disabled pbuf_dechain() as it not currently in use. Fixed comment 
      Disabled pbuf_dechain() as it not currently in use.
      Added NETIF_FLAG_LINK_UP. Not used yet.
      Again accepted NULL to indicate IP_ADDR_ANY.
      Prevent warnings about unused function arguments.
      dhcp_inform() did not set and unset netif->dhcp. always generated assert 
      Debug message shows requested pbuf type (of ROM/REF) upon memory 
allocation failure.
      Prevent compiler warning on unused function arguments.
      Debug levels set on some serious debug messages.
      hexadecimal notation for NETIF_FLAGS_
      Changed netif name formatting from %s to %c%c.
      Mention DHCP fix.
      Fixed tabs into spaces. Fixed other stylos.
      Either first or last packet can be queued. Fixed (err_t)NULL return value 
in etharp_query().
      Either first or last packet can be queued through ARP_QUEUE_FIRST option.
      Mentioned changes to netif that imply changes for network drivers.
      Implemented packet (de)queueing. Unused, etharp.c must be adapted next.
      Patch #1308. Still disabled, as it needs to make sure no file field is 
not overloaded.
      Patch #1183 applied. This drops short UDP/TCP packets.
      Patch #1183 applied. This drops short ICMP packets.
      Fixed packet header debug formatters.
      Patch #1308. Disabled, as one issue in dhcp.c (file field overloading) 
needs fix.
      Major stylo search/replace for "One space between keyword and opening 
      Made pbuf flags unsigned. Added "incoming broadcast" flag.
      Applied patches posted by Marc Boucher on lwip-users May 18th 2003.
      Cleanup of some formatting and comments.
      dhcp_recv() left dangling dhcp->p pointer in case of unexpected message.
      Merging some fixes that had been committed into STABLE.
      Set UDP_FLAGS_CONNECTED in udp_connect().
      Several additional documentation fixes.
      pbuf_alloc() forgot to set tot_len field for PBUF_POOL pbufs.
      Fixed a memory leak when only a part of a PBUF_POOL chain could be 
      Mentioned pbuf_alloc() fixes.
      Numerated contents so that they can be refered to.
      Increased number of debug messages to see pbuf chain actions.
      Additional documentation on the subtle difference of a 'pbuf chain' and a 
'packet queue'.
      Only free the queued packets if there are any.
      More precise comments on address change.
      Replaced all tabs with two spaces (regardless of indentation is correct).
      Fixed a multi-line comment.
      Applied patch #1597
      Applied patch #1596 fixing wrongly cast LWIP_DEBUGF arguments.
      Fixes wrongly cast LWIP_DEBUGF arguments (patch #1596 and more).
      Fixed a string literal being wrongly split over two lines.
      Initial commit.
      Merged with DEVEL.
      Made hton/ntoh argument name in prototypes match those in functions.
      Merged from DEVEL into main tree.
      An overriden merge from DEVEL to main was needed as small changes had 
been made to main.
      Prepared Changelog for upcoming release 0.6.5. Fixed missing 0.6.4 number 
in history.
      Merge from DEVEL. Includes important UDP fix for bug #6601.
      Merge from DEVEL. Assert used field not available without callback API.
      Merged from DEVEL to main. Two TCP fixes and two NULL reference fixes.
      Savannah now does anonymous CVS access using empty-password SSH.
      Merged from main.
      Merged ARP fixes from STABLE. Should have made those fixes in HEAD first.
      Applied dhcp.diff by Ian Wienand on lwip-devel on February 4th 2004.
      Applied mem.diff by Ian Wienand on lwip-devel on February 4th 2004.
      Applied alias.diff by Ian Wienand on lwip-devel on February 4th 2004.
      Merged from DEVEL, except for the API change in etharp.c.
      Added up-to-date explanation of CVS over SSH on Savannah.
      Updated some copyright notices to include 2004 (a few were forgotten 
      Applied Ian Wienand's patches (4-2-2004). Was partly applied earlier.
      Added replacement for ip_addr_isbroadcast() macro, code is dead for 
review and testing (#if 0).
      Matched interface documentation for netif_add()  API change in
      Added udp_sendto().
      Fixed udp_sendto() -> instead of .
      Added udp_sendto() docs. Fixed udp_send() docs.
      Fixed @return in udp_sendto() docs, @see in udp_send*() docs.
      Using udp_sendto() where appropriate.
      Make udp_disconnect() clear its remote address association.
      Missing newline at EOF. Gave compiler warning.
      Replaced ip_addr_isbroadcast() macro by function.
      Fix prototype.
      Added netif #include.
      Disabling ip_addr_isbroadcast() due to recursive header dependencies.
      Removed offending #include.
      Fix cyclic dependencies by careful re-ordering of #includes.
      Made #ifdef's into #if's for SO_REUSE.
      etharp_query(): Fixed the case where the packet that initiates the ARP 
request is not queued, and gets lost.
      Fixed #ifdef LWIP_DHCP position. Fixed extranous comma in function 
      Fixed #ifdef LWIP_DHCP to #if LWIP_DHCP.
      Two trivial typo fixes.
      Fix in the ip_addr_isbroadcast() check.
      Documented latest fixes in HEAD.
      Patch of bug #8708 applied which should fix header alignment issues on 
32-bit processors.
      Updated release procedure to match Savannah changes.
      Removed old broadcast check macro.
      Fixed a cast.
      Removed ETHARP_ALWAYS_INSERT. Whitespace cleanup.
      Corrected comparison by adding missing parentheses.
      Updated documentation.
      Clean-up source comment documentation for Doxygen.
      Fix buggy comment.
      Clean-up source comment documentation for Doxygen.
      Updated list of fixes/changes to the code.
      Applied cleaner new patch for bug #8708.
      DHCP header used u32_t where struct ip_addr is more appropriate.
      Added missing prototypes for pbuf_*queue().
      Fixed hasty job prototype for pbuf_queue().
      Fixed use of struct ip_addr in DHCP header.
      Some updates on "gratuitious ARP" from RFC3220. Cleanup of some code and 
      Made raw_input() more generic allowing multiple matches until someone 
eats the packet.
      Adpated comments to match Doxygen/JavaDoc style.
      Adpated comments to match Doxygen/JavaDoc style.
      The recv callback has u8_t return type. Fixed the raw_recv() prototype to 
reflect this.
      Remember head of queue in pbuf_queue() iff PBUF_DEBUG to generate 
senseful debug report.
      The recv callback has u8_t return type. Fixed theraw_pcb struct to 
reflect this.
      Changed PAD_ETH_SIZE into ETH_PAD_SIZE for consistency with de-facto lwIP 
naming convention.
      etharp_*_input() return value (pbuf) removed; it has not been used since 
the packet queue
      As etharp already sends packets from the queue asynchronously, also make 
it send packet submitted through etharp_output().
      Fix three bugs during tests.
      Removed all structure packing directives. Protocol header fields are 
naturally aligned by design.
      Removed a closing bracket, left over after removing pack directives.
      Prevent non-unicast addresses from polluting the ARP cache.
      Simplified update_arp_entry().
      Optimized through re-use of common code. Results in 50 lines less and 
more modular code.
      Fixed typos.
      Exported etharp_request().
      More fixes.
      Do not empty entries unless allowed to in find_entry().
      Fixed wrong argument to find_entry() in etharp_query().
      Re-instantiated the pack directives. Nested structs do break individual 
field natural alignment on arm-gcc.
      Optimized search loop a bit. Conditional code for ETHARP_QUEUEING option.
      Fixed #if ETHARP_QUEUEING to #if ARP_QUEUEING.
      Fixed documentation for internal function.
      Added netif up/down basics.
      ip_forward() returns netif on which packet was forwarded.
      Bug fix: etharp_output() should not free pbufs.
      Make restarting() DHCP on on interface more robust by cleaning old state 
      Style fixes.
      Fixed compile errors.
      Made loop counters unsigned where possible.
      LWIP_TIMEVAL_PRIVATE must be defined in architecture cc.h file, either 1 
or 0. Defaults to 1.
      LWIP_TIMEVAL_PRIVATE must be defined in architecture cc.h file, either 1 
or 0. Defaults to 1.
      Dependencies on C library memset() etc., so include <string.h>.
      Mentioned placement of closing curly brace (block end).
      Updated with latest changes.
      Dependencies on C library memset() etc., so include <string.h>.
      Source documentation added.
      Disabled some code by #if 0 #endif rather than /* */.
      Additional fix for TCP retransmit fix (as discussed by Sam Jansen en 
Kieran Mansley on lwip-devel, July 13 2004).
      Outgoing packets caused ARP requests even when the destination IP was 
already cached.
      Outgoing packets caused ARP requests even when the destination IP was 
already cached.
      Support for learning DNS servers through DHCP.
      Removed obsolete debug define.
      Removed copy-paste errors.
      I hate it when it takes twice to fix a typo
      pbuf_free() assert triggered by NULLified inseg.p. Reported by Karl 
Jeacle on 25-7-2004 on lwip-users.
      Made some comments more explicit.
      Mentioned 1.0.0.
      Have PBUF_LINK_HLEN default to 14 bytes (for Ethernet).
      Support for PACK_STRUCT_USE_INCLUDES was broken.
      Updated the use of Savannah docs (merged from STABLE-0_7 branch).
      First packet on queue generated assertion failure. Reported by David Haas 
on lwip-users on Friday 13th.
      Ingress TCP keep-alive with garbage byte support.
      Do no longer try to free pbuf when TCP_EVENT_RECV() is called without a 
callback handler, and without packet.
      Mentioned TCP retransmit time-out changes contributed by Sam Jansen, 
committed Kieran Mansley.
      Bring interface up/down with netif_set_up/down(). Fixes bug 10547.
      Reverted back the TCP_BETWEEN macro. It does not work on all archs.
      Mentioned adapted TCP behaviour; send ACK even if one was pending, iff 
rcv_wnd is above threshold.
      Mentioned adapted TCP behaviour; send ACK even if one was pending, iff 
rcv_wnd is above threshold.
      17th October 2004 Leon Woestenberg <address@hidden>
      17th October 2004 Leon Woestenberg <address@hidden>
      Removed static declaration of dhcp_release().
      DECLINE message was unicast instead of broadcast
      Replaced erronous LWIP_ERRORF with LWIP_DEBUGF
      2004-11-25 Leon Woestenberg <address@hidden>
      2004-11-25 Leon Woestenberg <address@hidden>
      Mentioned Kieran's and my changes - Leon.
      Removed the Smurf.
      2004-11-25 Leon Woestenberg <address@hidden>
      Removed redundant closing bracket.
      Compile dammit
      Added a missing "not" in the comment, the code was correct.
      Prevented a race condition between a new ARP request and the ARP timer.
      Mentioned ARP race fix.
      Surround definition of tcp_timer_needed with #if !NO_SYS #endif. (see 
lwip-users 15-11-2004).
      Updates the FILES contents to better reflect the current state.
      etharp.c: re-arranged code in find_entry(), supposedly making it more 
readable for all cases.
      etharp.c: Corrected DHCP_DOES_ARP_CHECK behaviour.
      Update comment on ETHARP_QUEUEING. Defaulted to being disabled.
      tcp_write(): optimize order of valid states checks, most common first.
      Added inline source documentation.
      Disabled queueing more than 1 packet on a ARP entry, as I suspect this 
clashes with the TCP segment queueing.
      Re-enabled ARP packet queueing. (Now that multi-packet queueing is 
disabled in etharp.c).
      Removed assertion that always equaled true.
      Updated CHANGELOG.
      Changed behaviour into implementation.
      3 January 2004,  Leon Woestenberg <address@hidden>
      Fixed missing semicolon in LWIP_DEBUG statement.
      Mention of missing semicolon, and pcb->recv() called even when NULL.
      Added some missing string.h includes.
      More robust DHCP ARP reply checking.
      queue was referenced before initialization in first goto memerr branch 
code. Replaced goto branch by its minimal equivalent error handling code.
      4 February 2004,  Leon Woestenberg <address@hidden>
      4 February 2004,  Leon Woestenberg <address@hidden>
      Mentioned unaligned access fix.
      2005-06-08 Leon Woestenberg <address@hidden>
      2005-06-08 Leon Woestenberg <address@hidden>
      Fixes bug #13807: slipif_input() garbles large (i.e. multiple pbufs) 
inbound datagrams.
      Unaligned 16-bit access fix for the standard checksum routine by Peter 
      Mention of multiple pbuf fix in slipif and unaligned access fix in 
      Updated comment on optimization and aim of this generic algorithm.
      Updated CVS server host names and documentation about pserver anonymous, 
SSH non-anonymous access to it.
      Typo fix: tens of kilobytes instead of tenths of kilobytes.
      README now points to savannah.txt instead of duplicating its nfo.
      Duplicate FIN ACK race condition fix by Kelvin Lawson.
      Trailing dangling byte in checksum should be considered MSB.
      Added Curt McDowell's platform-independent optimized checksum routine.
      Remove PCBs which stay in LAST_ACK state too long.
      2006-02-27  Merged patch by Curt McDowell
      Removed 'even sndbuf' fix in TCP, this fix was a ugly hack for the 
incomplete checksum routine that does not work now that the checksum routine is 
      pbuf alignment fix.
      Added upcoming 1.1.1 release to Changelog.
      Remained indictator where new changes should go.
      Dangling inseg.p pointer fix by Pedro Alves.
      Fix for out-of-sequence FIN handling, patch by Oleg Tychev.
      Initial commit of FILES in doc/
      Release 1.2.0.

lukem (3):
      added 8-byte alignment for 64-bit architectures
      removed redundant redeclaration of tcp_active_pcbs (already defined by 
      Added ability to disable checksum generation and checking at compile-time

marcbou (34):
      Patch #1623: Add missing pbuf_free() call after pbuf_chain() in 
      Merged from DEVEL
      Merged from DEVEL.
      Important bug fixes and improvements.
      merged from DEVEL.
      Merged from DEVEL.
      Merged from DEVEL.
      Added PPPoE support and various PPP improvements.
      Initialize newconn->state to NETCONN_NONE in accept_function;
      lwip_accept(): check netconn_peer() error return.
      Added mem_calloc().
      Added PPPoE support to ethernet_input()
      Added distinct memp (MEMP_TCPIP_MSG_INPUT) for input packets to prevent
      Removed TCPIP_MSG_ETHINPUT. TCPIP_MSG_INPUT now used for
      netconn_delete(): unblock potentially waiting recv.
      lwip_close(): call netconn_delete() under socksem to properly handle
      Changed // style comments to /* style */ comments.
      Split pbuf flags in pbuf type and flgs.
      Provide default value for MEMP_NUM_TCPIP_MSG_INPUT if not defined.
      Changed // style comment to /* style */ comment.
      fix ethernet_input() return code warning.
      ethbroadcast now a shared global provided by etharp.
      Moved lwip/src/netif/ppp/ppp_oe.h to lwip/src/include/netif/ppp_oe.h
      Backed out last change to netconn_delete() after discussion with Frederic.
      Backed out lwip_close() change after discussion with Frederic.
      Fixed misplaced #endif.
      Use enum pbuf_flag as pbuf_type.
      Per Frederic's suggestion, renamed
      lwip_recvfrom() tweaks.
      Fix potential pbuf leaks.
      Reset the callbacks and arg (conn) to NULL in do_close_internal(), because
      Added CHANGELOG entries for my recent contributions.
      Fixed comment for LWIP_POSIX_SOCKETS_IO_NAMES

proff_fs (3):
      Added includeds for bpstruct and epstruct.
      Added MSVC6 port.
      Moved msvc6 project files to contrib module.

sg (197):
      fixed comment (bug #43481 MEMP_SYS_TIMEOUTS is not for NO_SYS=0 only)
      fixed bugs #41495 Possible threading issue in select() and #43278
      fixed bug #43596 IGMP queries from are discarded
      added option LWIP_NETCONN_SEM_PER_THREAD to use a semaphore per thread 
instead of using one per netconn and per select call
      fixed indentation
      - 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 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 
      tcp_close_shutdown: remove invalid comment on linger: we cannot support 
linger for the raw API since linger implies blocking
      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
      patch #8479 Fixed a visibility scope that caused a compile error in some 
configurations (by Constantine <nongnusucks>)
      fixed bug #43361 select() crashes with stale FDs
      netconn_delete(): check for errors returned by lwip_netconn_do_delconn() 
and don't call netconn_free() on error
      Fixed bug #38315 tcp_eff_send_mss_impl() always subtract the difference 
in IPv6 header size
      fixed that SHUT_RD followed by SHUT_WR was different to SHUT_RDWR, fixed 
return value of lwip_netconn_do_close on unconnected netconns
      changed comment in struct linger
      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 
      Added comment that sys_thread_new must not fail (ports have to assert 
      started to implement fullduplex sockets/netconns (note that this is 
highly unstable yet!)
      patch #8423 "arch/perf.h" should be made an optional item
      fixed bug #43094 "The function tcpip_input() forget to handle IPv6"
      patch #8481 Fix a couple of c&p mistakes in the error prints
      More tiny code cleanups...
      patch #8362 Add defines for well known ethernet packet types
      Fixed a bug in linger-closing when LWIP_TCPIP_CORE_LOCKING==1
      patch #7702 "Include ability to increase the socket number with defined 
      fixed bug #36403 "ip4_input() and ip6_input() always pass inp to higher 
layers": now the accepting netif is passed up, but the input netif is available 
through ip_current_input_netif() if required.
      introduce sys_timeouts_sleeptime (returns the time left before the next 
timeout is due, for NO_SYS==1)
      fixed bug #22070 "MIB_OBJECT_WRITE_ONLY not implemented in SNMP"
      Added the option PBUF_LINK_ENCAPSULATION_HLEN to allocate additional 
header space for TX on netifs requiring additional headers
      added hook LWIP_HOOK_MEMP_AVAILABLE() to get informed when a memp pool 
was empty and an item is now available
      Fixed compiler warning in snmp.h introduced by last patches
      minor coding style fix: tab -> spaces
      patch by Freddie Chopin: SNMP: const-correctness around snmp traps and 
      added support for write-access community and dedicated community for 
sending traps
      patch #8361 "Add support for NTP option in DHCP" (slighly modified)
      sockets.c: removed LWIP_TCPIP_CORE_LOCKING hack in lwip_sendto(): since 
all functions are static when LWIP_NETCONN==0, the speedup gained by this hack 
should now be minimal and not worth the duplicate code.
      fixed bug #38853 "connect() use a wrong errno": return 
ERR_ALREADY/EALRADY during connect, ERR_ISCONN/EISCONN when already connected
      Fixed select not reporting received FIN as 'readable' in certain rare 
cases (bug #43779: select(), close(), and TCP retransmission error)
      "Not connected" shouldn't be fatal (as opposed to "closed")
      tcp_alloc() prefers killing CLOSING/LAST_ACK over active connections (see 
bug #39565) (tcp_kill_prio(): back to old implementation)
      fixed bug #37958 "netconn API doesn't handle correctly connections 
half-closed by peer"
      PPP: fixed 2 warnings found by MSVC
      Continued chrysn's work: changed nearly all functions taking 
'ip(X)_addr_t' pointer to take const pointers (changed user callbacks: 
raw_recv_fn, udp_recv_fn; changed port callbacks: netif_output_fn, 
      added proper accessor functions for pcb->multicast_ip (previously used by 
get/setsockopt only)
      patch by Jens Nielsen: fixed bug #38803 (Source address in broadcast ping 
      Fixed bug #44297 (CORE_LOCKING was broken some days ago); fixed that 
netconn_connect still used message passing for LWIP_TCPIP_CORE_LOCKING==1
      fixed bug #38061 (wrong multicast routing in IPv4) by adding an optional 
default netif for multicast routing
      fixed bug #38165 (socket with mulicast): ensure igmp membership are 
dropped when socket (not netconn!) is closed.
      fixed comment
      work on task #12357 (Ensure that malicious packets don't assert-fail): 
don't let too short IP packets assert-fail; fix that IPv6 input did not obey 
VLAN header offset
      fixed bug #40177 (System hangs when dealing with corrupted packets), 
implemented task #12357 (Ensure that malicious packets don't assert-fail): 
improved some pbuf_header calls to not assert-fail.
      Fixed bug #41700 (Call to tcp_listen_dual() should not accept IPv4 listen 
PCB args)
      Fixed last commit: can only check for bound sockets, not for unbound. 
There's some work to do for IPv6 in TCP...
      fixed bug #40753 (re-bind UDP pcbs on change of IP address)
      fixed bug #44378 (TCP connections are not aborted on netif remove)
      patch by Zach Smith: fixed bug #38153 (nd6_input() byte order issues)
      Fixed bug #39956 (netif_create_ip6_linklocal_address out of bounds access 
of netif::hwaddr)
      fixed bug #41094 (Byte-order bug in IPv6 fragmentation header test)
      init.c: raise an error if LWIP_PPP_API==1 but PPP_SUPPORT==0
      fixed bug #43784 (a host should send at least one Router Solicitation)
      fixed bug #37068 (netif up/down handling is unclear): correclty separated 
administrative status of a netif (up/down) from 'valid address' status 
ATTENTION: netif_set_up() now always has to be called, even when dhcp/autoip is 
      tcp/udp_netif_ipv4_addr_changed(): don't change specific-address of local 
tcp_listen/udp_pcb to ANY on address change
      Fixed comment for NETIF_FLAG_UP after fixing bug #37068
      Patch #8207 (Don't Use ND6 Prefix Flags Field When LWIP_IPV6_AUTOCONFIG 
Is Deasserted)
      patch #8359 (Provide utility function to add an IPv6 address to an 
      Added function documentation, fixed coding style
      Fixed default LWIP_SUPPORT_CUSTOM_PBUF setting for IPv6/frag
      fixed the IPv4 part of bug #43904 (ip_route() must detect linkup status)
      Fixed compiler error if LWIP_IPV6==0 but LWIP_IPV6_FRAG==1
      fixed race conditions in assigning netconn->last_err (fixed bugs #38121 
and #37676)
      fixed bug #38203 (DHCP options are not recorded in all DHCP ack messages)
      fixed bug #38714 (Missing option and client address in DHCPRELEASE 
      dhcp.c: removed dead code (#if 0)
      fixed bug #38204 (DHCP lease time not handled correctly)
      fixed bug #38468 (tcp_sent() not called on half-open connection for data 
ACKed with the same ack as FIN)
      fixed bug #41318 (Bad memory ref in tcp_input() after tcp_close())
      fixed bug #34617: Stable etharp entries that are about to expire are now 
refreshed using unicast to prevent unnecessary broadcast.
      fixed bug #36017 ARP might not support duplicate addresses on multiple 
netifs (tried to correctly handle duplicate AutoIP addresses on multiple 
netifs, but only if explicitly enabled via ETHARP_TABLE_MATCH_NETIF==1)
      etharp: reduce ARP aging timeout from 20 minutes to 5 minutes, since this 
is a time obviously used in some switches as MAC learning table timeout. Having 
our ARP timeout higher than this can lead to sending unicast packets to 
multiple network segments.
      Added input & route hooks for IPv6 to stay in line with IPv4
      loopif is not required for loopback traffic any more but passed through 
any netif (ENABLE_LOOPBACK has to be enabled) (task #13515)
      used ip6_addr_t instead of struct ip6_addr, fix const'ness in ip6_route 
      task #12722 (improve IPv4/v6 address handling): renamed ip_addr_t to 
ip4_addr_t, renamed ipX_addr_t to ip_addr_t and added IP version;
      worked on task #13480: added LWIP_IPV4 define - IPv4 can be disabled, 
leaving an IPv6-only stack (SNMP is still missing)
      Fixed ntoa/aton/ntop/pton definitions after making IPv4 optional
      Worked on IPv6-only stack:
      Worked on IPv6-only stack: netdb should work
      Fixed typo in dchp_inform (state is named DHCP_INFORMING, not DHCP_INFORM)
      added functions dhcp/autoip_supplied_address() to check for the source of 
address assignemnt (replacement for NETIF_FLAG_DHCP)
      Minor coding style fix
      Fixed unit tests (compiler errors/warnings, coding style)
      Fix that pbuf_realloc() called mem_trim() for "custom" PBUF_RAM
      track bugfixed in CHANGELOG
      Fixed more compiler warnings for unit tests
      LWIP_COMPAT_SOCKETS==2: special setting to help code parsers/code 
completion to show argument names/types for posix socket functions
      Tried to improve pbuf_type, LWIP_SUPPORT_CUSTOM_PBUF and 
PBUF_FLAG_IS_CUSTOM documentation
      allow multicast socket options IP_MULTICAST_TTL, IP_MULTICAST_IF and 
IP_MULTICAST_LOOP to be used without IGMP
      Enable LWIP_HAVE_LOOPIF by default when LWIP_NETIF_LOOPBACK==1 to not 
make loopback traffic depend on the only netif's link state
      Fixed usages of SYS_SEM_NULL after using pointers everywhere
      fixed bug #45723 netconn_delete unconditionally uses macro 
      dns: fixed assertion when dns server address is set to ANY (patch #8692)
      patch by Chrysn: patch #8704 fix sys_timeouts_sleeptime function
      fixed bug #45120: Broadcast & multiple interfaces handling
      Fixed icmp.c after 1.4.0-based patch #45120
      - prework for fixing bug #45029: access IPv4 configuration of struct 
netif via new API (netif_ip4_addr()/netif_ip4_netmask()/netif_ip4_gw()) instead 
of accessing the struct member directly. This way, we can change the struct 
member types from ip4_addr_t to ip_addr_t;
      Change IP6_ADDR/IP_ADDR6 to initialize a full IPv6 address (e.g. use with 
PP_HTONL) - renamed old IP6_ADDR() to IP6_ADDR_PART()
      more cleanup prework to fix bug #45029
      fixed bug #45827: recvfrom: TCP window is updated with MSG_PEEK
      fix comment indentation
      IPV6_REASS: fix ip6_reass_remove_oldest_datagram() when the first 
fragment to enqueue has more pbufs than IP_REASS_MAX_PBUFS
      fixed bug bug #41009: IPv6 reassembly broken on 64-bit platforms: define 
IPV6_FRAG_COPYHEADER==1 on these platforms to copy the IPv6 header instead of 
referencing it, which gives more room for struct ip6_reass_helper
      Remove empty init functions where not required for backwards compatibility
      Fixed UPGRADING regarding 1.4.0
      Add another sanity check for bug #41009
      fixed bug #44023: TCP ssthresh value is unclear: ssthresh is set to the 
full send window for active open, too, and is updated once after SYN to ensure 
the correct send window is used
      support IPv4 source based routing: define LWIP_HOOK_IP4_ROUTE_SRC to 
point to a routing function
      task #12178: hardware checksum capabilities can be configured per netif 
(use NETIF_SET_CHECKSUM_CTRL() in your netif's init function)
      fixed missing #endif
      lwip_getaddrinfo: check max name length
      fixed unused variable warning
      Changed dns_gethostbyname_addrtype() to always be a function, fixed code 
for C PP :-(
      fixed compiling DNS code again
      Fixed passing ip_input() to netif_add() for single-IP-version NO_SYS 
      fixed constness for DNS_LOCAL_HOSTLIST_IS_DYNAMIC
      fixed some printf formatters (mainly for window scaling code)
      fixed compiling lwip_sendmsg for LWIP_NETIF_TX_SINGLE_PBUF && 
      fixed const warning for !IPV6_FRAG_COPYHEADER
      fixed compiler warnings reported by mingw-64
      fixed compiling for various config combinations
      PPP: more const fixes
      Added ip_addr_set_zero_ip4() to explicitly set the type to IPv4 for 
      fixed compiling udp.c for IPv6-only
      Fixed IP_ADDR6 macro for IPv6 only
      task #13729: Convert netif addresses (IPv4 & IPv6) to ip_addr_t (so they 
can be used without conversion/temporary storage)
      fixed coding style: use more ()
      PPP: include "ppp_settings.h" if PPP_INCLUDE_SETTINGS_HEADER is defined 
to be able to silence some warnings in PPP code only (at least msvc needs this 
since PPP produces more warnings than the rest)
      ip4_route: fixed checking twice for a valid default_netif, fixed checking 
loopback traffic before checking for a valid default netif
      Make LWIP_DNS_SECURE and its possible values known in opt.h, remove 
default initialization of DNS server
      snmp: hopefully fixed all alignment warnings introduced today. 
unfortunately, gcc does not warn about them when compiling for x86
      snmp mib2: more const
      minor/coding style: removed spaces before line ending
      minor/coding style: removed spaces before line ending (from file header)
      minor: coding style
      first 'app': added SNTP client from contrib (unmodified from 
196cbae376dfd484b4833503dd43057b4c3462fa, 28.08.2015)
      added sntp_opts.h (all options for the sntp app), added FILES to describe 
the include folder
      fixed header include guard, fixed FILES
      Added lwiperf, a simple ipv4/tcp iperf peer
      lwiperf: fixed const-cast warning
      removed spaces at line ending, fixed include guard
      added netbios name server from contrib (-> netbiosns)
      netbios -> netbiosns, added netbiosns_opts.h, added netbiosns_set_name() 
and netbiosns_stop()
      Make LWIP_RAW==0 the default, raw IP sockets/pcbs should not be too 
common to justify the increased codesize for default setups
      Fixed compiling api with LWIP_NETCONN_SEM_PER_THREAD==1 && 
      moved dhcp.c to src/core/ipv4/ since it is IPv4 only
      started to move "private" header files containing implementation details 
to "lwip/priv/" include directory to seperate the API from the implementation.
      re-added tcpip.h (removed because the better part of the file moved to 
"priv/tcpip_priv.h", which was more worth conserving the git history - how do 
you duplicate a file keeping its history in both copies??)
      pppapi/ppos: include tcpip_priv.h, not tcpip.h
      minor: fixed typo: even_callback -> event_callback
      fixed bug #46321: Synchronization bug around lwip_select() and 
tcpip_thread() with thread-local semaphores
      Fixed bug #47154 lwip_netconn_do_writemore doesn't clear 
conn->write_offset on fatal/routing error.
      minor/coding style: lowpan6_opts.h: tabs->spaces, trim trailing spaces
      minor: udp_input/local_match: coding style, added comments
      Fixed bug #46524: "Device as dhcp server does not work after upgrade to 
      dual-stack fix: moved common definitions/code for ethernet used by etharp 
and ethip6 to new files ethernet.h/.c
      added ethernet.c to Filelists.mk
      Tried to fix bug #47270 by accepting all ipv4 multicast packets (at IP 
level) when LWIP_IGMP is disabled
      fixed bug #46093: Move IP6_ROUTE() hook to after LL processing
      bug #46094: moved IPv4 routing hook functions down so that they implement 
actual routing (source-based IPv4 routing is not affected by this change)
      fixed icmp_send_response with LWIP_HOOK_IP4_ROUTE_SRC enabled
      ERR_IF is not necessarily a fatal error (fixes bug #46338: UDP netconns 
block after fatal error)
      fixed bug #45353: IPv6 router / neighbor relationship is not always 
consistent - patch by Stian Sebastian Skjelstad
      fixed typo in one of the last commits
      dns_gethostbyname: return error code if no valid server is set instead of 
calling the 'found' callback in this case (fixes bug #46887)
      fixed ERR_IS_FATAL() after changing ERR_IF to non-fatal
      Work on bug #44595: remove check for recvmbox != NULL from netconn_recv() 
to let it return ERR_CLSD for half-closed TCP connections
      fixed bug #46384 Segment size calculation bug with MSS != TCP_MSS
      ethernetif.c: implement SNMP counters, simplify input function: no need 
to check ethType, ethernet_input() already does this
      LWIP_TCPIP_CORE_LOCKING_INPUT is not experimental any more, as well
      reset rto timer on fast retransmission (see task #13757, patch by Joel 
      tcp_output_segment: don't count retransmitted segments in mib2.tcpoutsegs 
by detecting p->payload != tcphdr pointer; don't try to retransmit segments 
where p->ref != 1 (as it is invalid to mess up p->len/p->payload when we don't 
have exclusive access to the pbuf)
      Optimize tcp_output runtime by not calling ip_route() for every segment 
      fixed compiling netconn_write_partly with LWIP_SO_SNDTIMEO==1 after 
recent api implementation changes (bug #47436, patch by William Hayes)
      fixed bug #47448 (netconn/socket leak if RST is received during close)
      define tcp_backlog_set() as dummy-define when backlog feature is disable
      tcp_alloc(): remove explicit =0 already done by memset(0)
      ignore dns response parsing errors, only abort resolving for correct 
responses or error responses from correct server (bug #47459)
      tcp: changed accept handling to be done internally: the application does 
not have to call tcp_accepted() any more. Instead, when delaying accept (e.g. 
sockets do), call tcp_backlog_delayed()/tcp_backlog_accepted() (fixes bug 
      fixed bug #38203: DHCP options are not recorded in all DHCP ack messages 
(patch by Florent Matignon)
      call accept-callback with ERR_MEM when allocating a pcb fails on passive 
open to inform the application about this error; ATTENTION: applications have 
to handle NULL pcb in accept callback!
      Fixed possible problems with tcp_backlog_delayed/tcp_backlog_accepted
      make autoip_supplied_address() take a const pointer, too
      fixed bug #47625 (Error in compilation of C++ source using netifapi 
macros) by changing NULL define for __cplusplus
      fixed bug# 43739 (Accept not reporting errors about aborted connections): 
netconn_accept() returns ERR_ABRT (sockets: ECONNABORTED) for aborted 
connections, ERR_CLSD (sockets: EINVAL) if the listening netconn is closed, 
which better seems to follow the standard
      patch #8358: allow more combinations of listening PCB for IPv6
      prepare for overriding current timeout implementation: all stack-internal 
caclic timers are avaliable in the lwip_cyclic_timers array
      Set LWIP_VERSION_RC to RC1

softins (14):
      Removed spurious semicolon and added missing end-of-comment.
      Changed recv_raw() from int to u8_t, to match prototype of raw_recv() in 
      Added trivial (int) cast to keep compiler happier.
      Changed debug statements to use the tidier ip4_addrN() macros.
      Updated low_level_output() to match prototype for netif->linkoutput
      Made data types consistent in inet_ntoa().
      Small corrections to some debugging statements, to pacify compiler.
      Added a couple of casts to quiet the compiler.
      Corrected IPH_TOS() macro: returns a byte, so doesn't need htons().
      Stop compiler complaining of empty if statement when LWIP_DEBUGF() empty.
      Stop compiler complaining of empty if statement when LWIP_DEBUGF() empty.
      Add (int) cast in LWIP_DEBUGF() to avoid compiler warnings about 
      Make sure the first pbuf queued on an ARP entry is properly ref counted.
      Added my July and August updates.

stoklund (6):
      Reuse XIDs for DHCP retransmissions
      Implement exponential backoff in dhcp.c
      Don't use an AutoIP-configured address on a new network until the address 
has been configured.
      The DHCP client should enter the REBOOTING state when connecting to a
      Add C++ guards to autoip.h header.
      Add patch #6725 to CHANGELOG

tabascoeye (1):
      icmp: fix checksum on replies of echo request with ID 0, sequence 0 and 
either no data or any amount of 0x00 Bytes as data (closes: #45322)

uid67528 (1):
      Merged from DEVEL. etharp prepared for queueing feature. DHCP fix.


lwIP - A Lightweight TCPIP stack

reply via email to

[Prev in Thread] Current Thread [Next in Thread]