History log of /seL4-camkes-master/projects/lwip/src/core/netif.c
Revision Date Author Comments
# dbc16e67 14-Jun-2018 Simon Goldschmidt <goldsimon@gmx.de>

minor whitespace cleanup


# 6ac21515 14-Jun-2018 Matthias Hofmann <matthias.hofmann@diehl.com>

Add missing null checks.

Signed-off-by: Simon Goldschmidt <goldsimon@gmx.de>


# 944f286d 13-Jun-2018 Simon Goldschmidt <goldsimon@gmx.de>

fix bug in RA MTU validation

Also fix that RA could change IPv4 MTU.
See bug #53696

Signed-off-by: Simon Goldschmidt <goldsimon@gmx.de>


# 61e3f49f 13-Jun-2018 Axel Lin <axel.lin@ingics.com>

netif: Don't return error if pass NULL netif_input_fn to netif_add

The new NULL checking against netif_input_fn make ppp stop working
because in ppp_new() it calls netif_add with NULL netif_input_fn.

Signed-off-by: Axel Lin <axel.lin@ingics.com>
Signed-off-by: Simon Goldschmidt <goldsimon@gmx.de>


# 392c676e 13-Jun-2018 Simon Goldschmidt <goldsimon@gmx.de>

fix bug #53273: IPv6 link-local address generation for non-ethernet type netif does not convert byte order


# 342d0ead 12-Jun-2018 Matthias Hofmann <matthias.hofmann@diehl.com>

Add null pointer checks for TCP, UDP and netif

Signed-off-by: Simon Goldschmidt <goldsimon@gmx.de>


# fd050b8a 08-Jun-2018 Simon Goldschmidt <goldsimon@gmx.de>

fix bug #53971 Lwip sends Router Solicitation on address changes

... and add a unit test for it.

Moved resetting netif->rs_count from all reports to link-up and netif-up only.
While at it, clean up the interface a bit so that netif->rs_count is touched
from nd6.c only.

Signed-off-by: Simon Goldschmidt <goldsimon@gmx.de>


# ffaee59f 27-Apr-2018 Joel Cunningham <joel.cunningham@me.com>

loopif: only schedule poll when first packet is enqueued

This optimizes the netif_loop_output to only schedule a call to poll when
the first packet is enqueued. This ensures netif_poll is ran once per
burst of packets that are sent (which is typical in a TCP transfer)

The old behavior scheduled a call to poll for every packet that was
enqueued and this lead to exhaustion of the MEMP_TCPIP_MSG_API memory pool
and tcpip_mbox (if port is using static mbox size). The extra callbacks are
wasted work because netif_poll drains the entire queue when ran

This issue presented itself when large TCP transfer go across the loopback
netif


# 070e4496 27-Apr-2018 Joel Cunningham <joel.cunningham@me.com>

loopif: disable checksums

This disable checksum generation and checking for the loopback netif
when LWIP_CHECKSUM_CTRL_PER_NETIF is enabled

Checksums are not needed for the loopback adapter and this will increase
performance for loopback communication


# c881c48e 21-Mar-2018 goldsimon <goldsimon@gmx.de>

netif_add: check that the new netif is not already added


# 6070a7ef 14-Mar-2018 Axel Lin <axel.lin@ingics.com>

netif: Add netif_do_ip_addr_changed function to reduce duplicated code

As the common code to call tcp/udp/raw_netif_ip_addr_changed is called
by multiple places, add netif_do_ip_addr_changed() to call them.

Signed-off-by: Axel Lin <axel.lin@ingics.com>
Acked-by: Simon Goldschmidt <goldsimon@gmx.de>


# 08bcfa2b 13-Mar-2018 goldsimon <goldsimon@gmx.de>

netif: initialize netif->output with a dummy function for IPv6 only netifs


# f9300c1f 07-Feb-2018 goldsimon <goldsimon@gmx.de>

netif: ext_callback: clean up netif_set_addr after last change


# 6606c401 25-Jan-2018 goldsimon <goldsimon@gmx.de>

bug #52893: Add 'old_stat' save in LWIP_NSC_IPV6_ADDR_STATE_CHANGED callback message


# fe2c249f 24-Jan-2018 goldsimon <goldsimon@gmx.de>

bug #52937: raw_input() must tell ip4/6_input() if protocol has been received

This also moves "raw_input" and "raw_netif_ip_addr_changed" to a new file
raw_priv.h


# 4a997217 13-Jan-2018 goldsimon <goldsimon@gmx.de>

netif: try to fix gcc error (-Werror=c++-compat)


# 734b6ab5 12-Jan-2018 goldsimon <goldsimon@gmx.de>

netif: ensure netif_set_addr() only results in one "ext_status_callback"

This can be used e.g. in mdns to create one, not multiple "changed" triggers
if IP address and netmask change at the same time.


# 452c6a53 12-Jan-2018 goldsimon <goldsimon@gmx.de>

netif: add netif_remove_ext_callback() (counterpart to netif_add_ext_callback())


# deab51c3 09-Jan-2018 Axel Lin <axel.lin@ingics.com>

netif: Remove unnecessary NULL checking in netif_do_set_{ipaddr|netmask|gw}

The callers already ensure the ipaddr/netmask/gw won't be NULL, so remove
the duplicated NULL checking in these static functions.
While at it, also move the code saving old_address for netmask/gw as
it's only used when address is actually being changed.

Signed-off-by: Axel Lin <axel.lin@ingics.com>
Signed-off-by: Dirk Ziegelmeier <dirk@ziegelmeier.net>


# efa90d42 05-Jan-2018 Axel Lin <axel.lin@ingics.com>

netif: Add LWIP_ASSERT_CORE_LOCKED() to netif_set_remove_callback

Signed-off-by: Axel Lin <axel.lin@ingics.com>
Signed-off-by: Dirk Ziegelmeier <dirk@ziegelmeier.net>


# 05ded551 08-Jan-2018 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Apply patch #9536: netif: Prevent possible NULL pointer dereference in netif_set_addr in a modified version

Replace NULL pointers by IP4_ADDR_ANY4 - at sometime in the future, we make the NULL pointer handling obsolete and we can remove all the NULL pointer checks in the code


# 2cb220d7 03-Jan-2018 Axel Lin <axel.lin@ingics.com>

netif: Move LWIP_ASSERT_CORE_LOCKED out of static functions

The netif_do_set_{ipaddr|netmask|gw} are static functions what won't be called
directly, thus move LWIP_ASSERT_CORE_LOCKED to netif_set_{ipaddr|netmask|gw}.
This avoid duplicated LWIP_ASSERT_CORE_LOCKED checking by netif_set_addr().

Signed-off-by: Axel Lin <axel.lin@ingics.com>


# 01e227d2 02-Jan-2018 Dirk Ziegelmeier <dirk@ziegelmeier.net>

netif.c: Fix that when using LWIP_NETIF_EXT_STATUS_CALLBACK multiple callbacks instead of only one are fired when netif_set_addr() is used


# f334ac68 02-Jan-2018 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Work on task #14780: Add debug helper asserts to ensure threading/locking requirements are met
Add LWIP_ASSERT_CORE_LOCKED() in several places


# b33b3bb8 02-Jan-2018 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Start working on task #14780: Add debug helper asserts to ensure threading/locking requirements are met


# 2ff0ef02 17-Nov-2017 Axel Lin <axel.lin@ingics.com>

Use NETIF_FOREACH macro at appropriate places

Use NETIF_FOREACH macro to get some optimizations for LWIP_SINGLE_NETIF case.

Signed-off-by: Axel Lin <axel.lin@ingics.com>
Signed-off-by: goldsimon <goldsimon@gmx.de>


# d20a7aba 16-Nov-2017 Axel Lin <axel.lin@ingics.com>

netif: Use ip6_addr_isvalid() at appropriate places

Signed-off-by: Axel Lin <axel.lin@ingics.com>
Signed-off-by: goldsimon <goldsimon@gmx.de>


# 637bce91 07-Nov-2017 Joel Cunningham <joel.cunningham@me.com>

netif: ensure link and admin states are up in issue reports (bug #52353)

This fixes a bug where some callers of netif_issue_reports were not
checking that both link and admin states were up, leading to extraneous
reports when calling one of the following

1) netif_set_ipaddr
2) netif_ip6_addr_set_parts
3) netif_ip6_addr_set_state

The bug has been fixed by placing link and admin state checks in
netif_issue_reports and not requiring the callers to perform this
checking


# 931b5e64 17-Sep-2017 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Reformat core code using astylerc


# ba6b504c 04-Jul-2017 goldsimon <goldsimon@gmx.de>

work on -Wconversion...


# 5efe26eb 26-Jun-2017 goldsimon <goldsimon@gmx.de>

Fix the fix for LWIP_LOOPBACK_MAX_PBUFS :-)


# 5b152348 25-Jun-2017 goldsimon <goldsimon@gmx.de>

work on -Wconversion...


# 197166d9 25-Jun-2017 goldsimon <goldsimon@gmx.de>

LWIP_LOOPBACK_MAX_PBUFS: fix compilation or memory leak for LWIP_LOOPBACK_MAX_PBUFS > 255


# d02a73c2 22-Jun-2017 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Replace usages of tcpip_callback_with_block(foo, bar, 0) with tcpip_try_callback()


# a942582b 05-May-2017 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Minor #ifdef cleanup in netif.c


# 89d825f6 05-May-2017 Axel Lin <axel.lin@ingics.com>

netif: Fix IPv6-only build

Fix below build error if LWIP_IPV4 == 0.
cc -g -Wall -DLWIP_DEBUG -pedantic -Werror -Wparentheses -Wsequence-point -Wswitch-default -Wextra -Wundef -Wshadow -Wpointer-arith -Wcast-qual -Wc++-compat -Wwrite-strings -Wold-style-definition -Wcast-align -Wmissing-prototypes -Wredundant-decls -Wnested-externs -Wno-address -Wunreachable-code -Wuninitialized -Wlogical-op -I. -I../../.. -I../../../../lwip/src/include -I../../../ports/unix/port/include -I../../../../mbedtls/include -Wno-redundant-decls -DLWIP_HAVE_MBEDTLS=1 -c ../../../../lwip/src/core/netif.c
../../../../lwip/src/core/netif.c: In function ‘netif_add’:
../../../../lwip/src/core/netif.c:284:7: error: ‘ipaddr’ undeclared (first use in this function)
if (ipaddr == NULL) {
^~~~~~
../../../../lwip/src/core/netif.c:284:7: note: each undeclared identifier is reported only once for each function it appears in
../../../../lwip/src/core/netif.c:285:14: error: implicit declaration of function ‘ip_2_ip4’ [-Werror=implicit-function-declaration]
ipaddr = ip_2_ip4(IP4_ADDR_ANY);
^~~~~~~~
../../../../lwip/src/core/netif.c:285:5: error: nested extern declaration of ‘ip_2_ip4’ [-Werror=nested-externs]
ipaddr = ip_2_ip4(IP4_ADDR_ANY);
^~~~~~
../../../../lwip/src/core/netif.c:285:23: error: ‘IP4_ADDR_ANY’ undeclared (first use in this function)
ipaddr = ip_2_ip4(IP4_ADDR_ANY);
^~~~~~~~~~~~
../../../../lwip/src/core/netif.c:287:7: error: ‘netmask’ undeclared (first use in this function)
if (netmask == NULL) {
^~~~~~~
../../../../lwip/src/core/netif.c:290:7: error: ‘gw’ undeclared (first use in this function)
if (gw == NULL) {
^~
cc1: all warnings being treated as errors
../../Common.allports.mk:94: recipe for target 'netif.o' failed
make: *** [netif.o] Error 1

Fixes: 5967380c2034 ("netif_add: avoid passing NULL pointers to subsequent functions")
Signed-off-by: Axel Lin <axel.lin@ingics.com>
Signed-off-by: Dirk Ziegelmeier <dirk@ziegelmeier.net>


# 5967380c 05-May-2017 Dirk Ziegelmeier <dirk@ziegelmeier.net>

netif_add: avoid passing NULL pointers to subsequent functions (reported by Axel Lin)


# eab2ae5d 01-May-2017 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Cleanup netif_name_to_index() implementation


# 6aac9377 26-Apr-2017 goldsimon <goldsimon@gmx.de>

Clean up LWIP_NETIF_HWADDRHINT a bit: create a struct holding the hint(s) and pass a pointer to that struct around. That way we are free to add more hints if required (e.g. see task #11620)


# ca961b9b 24-Apr-2017 goldsimon <goldsimon@gmx.de>

minor whitespace cleanups only


# d02bc648 24-Apr-2017 goldsimon <goldsimon@gmx.de>

Fixed bug #50816 (netif_add() prototype depends on configuration) by adding a new function netif_add_noaddrthat doesn't change


# f28c1c85 15-Apr-2017 Joel Cunningham <joel.cunningham@me.com>

loopif: set pbuf if_idx during poll

This sets the pbuf's if_idx during the loopif poll function (the
equivalent netif input function). This was found during IP_PKTINFO
development where p->if_idx is read and was uninitialized


# 2a30fedb 04-Apr-2017 goldsimon <goldsimon@gmx.de>

fix passing NULL to netif_set_gw & netif_set_netmask (or netif_set_addr or netif_add) (broken on 18.03.2017 by 2d9ef2215b5f276d8c7d34839bc6becfb063faab)


# 2d9ef221 18-Mar-2017 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Fix bug #50576: LWIP_NSC_IPV4_GATEWAY/NETMASK/SETTINGS_CHANGED should check if the setting is actually being changed


# aef2accf 17-Mar-2017 goldsimon <goldsimon@gmx.de>

try to satisfy clang's '-Wempty-body'


# 0d585d55 01-Mar-2017 goldsimon <goldsimon@gmx.de>

Added LWIP_SINGLE_NETIF for small targets with only one netif (see task #13515, there might be more optimizations to come with this option)


# 27c835aa 27-Feb-2017 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Remove netif_invoke_ext_callback() from doxygen docs, it is intended for internal use only


# 01cc06bc 23-Feb-2017 goldsimon <goldsimon@gmx.de>

netif_add: ensure netif->num is unique even if more than 255 netifs have been added/removed since system startup (e.g. by ppp)


# 498913b9 15-Feb-2017 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Third draft of task #14283: Add more detailed status callback
Implement Joel's idea of a union


# 45492715 14-Feb-2017 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Continue working on ext netif callback
Docs, better callback points (e.g. before netif is set down)


# d46d8bcd 14-Feb-2017 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Add some asserts to netif callback functions


# 4434762a 14-Feb-2017 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Some minor documentation fixes


# bbedb35b 14-Feb-2017 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Fix name clash between typedef and struct definition.
Interesting, all three compilers in Erik Ekman's travis-ci don't complain. But my gcc at home does...


# f4f204b8 14-Feb-2017 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Implement a better way to initialize all fields in ip address than using memset() (better fix than my last commit)


# feba38a1 14-Feb-2017 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Fix unportable struct initializer I introcduced while working on task #14283: Add more detailed status callback


# 8025b856 14-Feb-2017 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Second draft of task #14283: Add more detailed status callback


# 7dd21e93 13-Feb-2017 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Fix my last commits (unused variable warning)
my gcc at home did not show this warning...


# 3c171340 13-Feb-2017 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Work on task #14283: Add more detailed status callback
Cleanups and IPv6 address status


# 58c48af5 13-Feb-2017 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Start working on task #14283: Add more detailed status callback
IPv6 stuff is not implemented


# 45f3c28e 13-Feb-2017 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Fix netif_find() function for many netifs (should use atoi) and move it to the bottom of the file where similar functions are located


# 400c41ff 13-Feb-2017 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Also base netif_index_to_name function on netif_get_by_index


# d4d8fd81 13-Feb-2017 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Some code cleanup related to netif index handling
Made the macro "netif_index_to_num" private, if someone needs it externally, please complain.


# eae41298 09-Feb-2017 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Documentation updates related to Joel's if_api changes


# 4fb7d741 03-Feb-2017 Joel Cunningham <joel.cunningham@me.com>

task #14314: include cleanups

Couple of more cleanups for task #14314 involving includes:
1) if.h name should match if_api.c due to LwIP convention and history.
Standard if.h include can be used with compatibility header in
posix/net/if.h
2) API header (if.h) should not be included in core code. This include
has been eliminated by moving the definition of IF_NAMESIZE to
netif.h as NETIF_NAMESIZE. This is now the canonical definition
and IF_NAMESIZE just maps to it to provide the standard type


# 29ddfd1d 23-Jan-2017 David van Moolenbroek <david@minix3.org>

Add support for IPv6 address scopes

This patch adds full support for IPv6 address scopes, thereby aiming
to be compliant with IPv6 standards in general and RFC 4007 in
particular. The high-level summary is that link-local addresses are
now meaningful only in the context of their own link, guaranteeing
full isolation between links (and their addresses) in this respect.
This isolation even allows multiple interfaces to have the same
link-local addresses locally assigned.

The implementation achieves this by extending the lwIP IPv6 address
structure with a zone field that, for addresses that have a scope,
carries the scope's zone in which that address has meaning. The zone
maps to one or more interfaces. By default, lwIP uses a policy that
provides a 1:1 mapping between links and interfaces, and considers
all other addresses unscoped, corresponding to the default policy
sketched in RFC 4007 Sec. 6. The implementation allows for replacing
the default policy with a custom policy if desired, though.

The lwIP core implementation has been changed to provide somewhat of
a balance between correctness and efficiency on on side, and backward
compatibility on the other. In particular, while the application would
ideally always provide a zone for a scoped address, putting this in as
a requirement would likely break many applications. Instead, the API
accepts both "properly zoned" IPv6 addresses and addresses that, while
scoped, "lack" a zone. lwIP will try to add a zone as soon as possible
for efficiency reasons, in particular from TCP/UDP/RAW PCB bind and
connect calls, but this may fail, and sendto calls may bypass that
anyway. Ultimately, a zone is always added when an IP packet is sent
when needed, because the link-layer lwIP code (and ND6 in particualar)
requires that all addresses be properly zoned for correctness: for
example, to provide isolation between links in the ND6 destination
cache. All this applies to packet output only, because on packet
input, all scoped addresses will be given a zone automatically.

It is also worth remarking that on output, no attempt is made to stop
outgoing packets with addresses for a zone not matching the outgoing
interface. However, unless the application explicitly provides
addresses that will result in such zone violations, the core API
implementation (and the IPv6 routing algorithm in particular) itself
will never take decisions that result in zone violations itself.

This patch adds a new header file, ip6_zone.h, which contains comments
that explain several implementation aspects in a bit more detail.

For now, it is possible to disable scope support by changing the new
LWIP_IPV6_SCOPES configuration option. For users of the core API, it
is important to note that scoped addresses that are locally assigned
to a netif must always have a zone set; the standard netif address
assignment functions always do this on behalf of the caller, though.
Also, core API users will want to enable LWIP_IPV6_SCOPES_DEBUG at
least initially when upgrading, to ensure that all addresses are
properly initialized.


# 7a99d2f8 24-Jan-2017 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Fix documentation on netif_index_to_name


# fbfe987a 23-Jan-2017 Joel Cunningham <joel.cunningham@me.com>

netif: clean up remaining index shadowing from if APIs

This commit cleans up the remaining instance of global variable
"index" shadowing caused by using local variables and function
parameters named "index"

These were introduced in the recent interface index API commits


# e158f872 20-Jan-2017 Joel Cunningham <joel.cunningham@me.com>

Netif: add allowance for init to override netif->num

Adjusts assert logic from 9c80a6625344768572777accbe77ac968c10250f
to allow for a netif driver's init callback to manually override
the number. When the init function is taking care of the unique
assignment, the assert simply checks that a valid number was provided


# 1b20e664 19-Jan-2017 Joel Cunningham <joel.cunningham@me.com>

Task #14314: Add interface name/index APIs

This commit adds the following sets of interface name/index APIs:

Interface Identification APIs from RFC 3493:
* lwip_if_nametoindex (COMPAT macro if_nametoindex)
* lwip_if_indextoname (COMPAT macro if_indextoname)

netifapi:
* netifapi_netif_name_to_index
* netifapi_netif_index_to_name

netif:
* netif_name_to_index
* netif_index_to_name
* netif_num_to_index
* netif_index_to_num


# 9c80a662 20-Jan-2017 Joel Cunningham <joel.cunningham@me.com>

Netif: add netif_num overflow assert

This commit adds an LWIP_ASSERT to detect when netif_num overflows and
we no longer have unique numbers per netif. Unique netif numbers are
needed to support interface indexes (task #14314)

The only cases where this could occur are with a deployment that attempts
to use the maximum 256 netifs at the same time or where netifs are being
constantly adding and removed. Neither of these use cases fit the
lightweight goals of LwIP

See discussion in task #14314 for more details


# 901664ec 29-Dec-2016 David van Moolenbroek <david@minix3.org>

netif: more ip6 state changes invoke status callback

For applications that use NETIF_STATUS_CALLBACK to help keep track of
extra per-address shadow state of IPv6 addresses, even in the light of
autogenerated addresses (which may "spontaneously" appear/disappear),
state transitions between tentative, duplicated, and invalid are
important as well. Therefore, invoke the status callback for all such
state transitions. Continue to filter out state changes between
various levels of progress of the tentative state, though.


# e0c5e198 29-Dec-2016 David van Moolenbroek <david@minix3.org>

nd6: improve address autoconfiguration support

In summary, this patch aims to resolve bugs #47923 and #48162, by
decoupling address autoconfiguration from the on-link prefix list,
since those are not related. Important necessary changes are needed
to meet this goal, ultimately bringing the lwIP ND6 implementation
closer to compliance with RFC 4862. The main changes are:

1. support for address lifetimes, and,
2. addition of a new DUPLICATED address state.

The decoupling implies that the prefix list can no longer be used to
maintain state for address autoconfiguration. Most importantly, the
lifetime of each address, which was previously derived from the
prefix slot's lifetime, must now be associated with the address
itself. This patch implements address lifetime tracking, maintaining
both a valid and a preferred lifetime for each address, along with
the corresponding address state changes (e.g., between PREFERRED and
DEPRECATED), all as required by RFC 4862.

The support for address lifetimes can be enabled with a new
LWIP_IPV6_ADDRESS_LIFETIMES setting in lwipopts.h. It is required for
autoconfiguration and enabled by default if autoconfiguration is
enabled as well, but it may also be enabled separately, so as to allow
application-controlled lifetime management (e.g., if autoconfiguration
is implemented in a separate application). A special valid-lifetime of
zero is used to denote a static address--that is, an address that was
configured manually, that does not have lifetimes, and that should be
left alone by the autoconfiguration functionality. Addresses assigned
without setting a lifetime are deemed static, thus preserving
compatibility with existing lwIP-based applications in this respect.

Similarly, the decoupling implies that the prefix list can no longer
be used to remember cases of address duplication. Previously, the
detection of a duplicated address would simply result in removal of
the address altogether. Instead, this patch introduces a new state
"DUPLICATED", indicating that the address, while technically still
present, has been found to conflict with other node addresses, and no
attempt should be made to produce an autoconfiguration address for
that prefix.

Manually added addresses, including the link-local address, once set
to DUPLICATED, will remain in that state until manual intervention.
Autoconfigured DUPLICATED addresses will expire according to their
valid-lifetime, essentially preserving the current behavior but
without the use of the prefix list. As a first attempt to approach
compliance with RFC 4862 Sec. 5.4.5, if the link-local address is
detected to be duplicated, all derived addresses are marked duplicated
as well, and no new addresses will be autoconfigured. More work is to
be done for full compliance with that section, however.

Together, those two main changes indeed do fully decouple address
autoconfiguration from the on-link prefix list. Changes to the latter
thus no longer affect the former, resolving bug #47923. Moreover, as a
result, autoconfiguration can, and does, now also take place on
advertised prefixes that do not have the on-link flag set, resolving
bug #48162. The routing changes mentioned in the discussion of that
bug are left to a separate patch, though.


# 71810d04 16-Dec-2016 David van Moolenbroek <david@minix3.org>

ipv6: adjust MLD membership on address state changes

If MLD support is enabled, each locally assigned IPv6 address in the
appropriate state must be a member of the solicited-node multicast
group corresponding to that address. Ensure that this is always the
case by (re-)deciding on the membership upon every address state
change. By doing so, this patch enforces that user-initiated state
changes to addresses (e.g., deletion) never cause a desynchronization
with the corresponding solicited-node multicast group membership,
thereby making such user-initiated state changes simpler and safer.


# dd96c712 19-Dec-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Fix a few -Wconversion warnings (there are many more to do)


# 9d199a6d 13-Dec-2016 sg <goldsimon@gmx.de>

netif_create_ip6_linklocal_address(): use macros to assign address state to ensure callbacks are triggered; netif_add_ip6_address(): only overwrite invalid addresses, not tentative addresses


# aae0fc49 07-Dec-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Use new IPv6 init macro in netif.c


# cac3dc8a 28-Nov-2016 Axel Lin <axel.lin@ingics.com>

netif: Trivial indent fix

Signed-off-by: Axel Lin <axel.lin@ingics.com>


# 1d4cbe76 25-Nov-2016 Axel Lin <axel.lin@ingics.com>

netif: Add proper lock protect for accessing netif->loop_first

All the reset part of the code accessing netif->loop_first has lock protection,
the only missing part is "while (netif->loop_first != NULL)".
Fix it by adding lock protect around the while loop.

Also convert the code to use while{} loop instead of do .. while{} loop,
then we can avoid NULL test for in pointer in each loop and reduce a level of indent.

Signed-off-by: Axel Lin <axel.lin@ingics.com>


# 1c9e6032 28-Oct-2016 David van Moolenbroek <david@minix3.org>

netif: fix reset of IPv6 addresses in netif_add()

Previously, only the state of the first IPv6 address would be reset,
thus possibly keeping other addresses valid (even though zeroed).


# 13fb616b 05-Oct-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Cleanup hton*/ntoh* function handling and platform abstraction
Let lwip use functions/macros prefixed by lwip_ internally to avoid naming clashes with external #includes.
Remove over-complicated #define handling in def.h
Make functions easier to override in cc.h. The following is sufficient now (no more LWIP_PLATFORM_BYTESWAP):
#define lwip_htons(x) <your_htons>
#define lwip_htonl(x) <your_htonl>


# df5a7996 01-Oct-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Fix bug #48886: raw pcbs are not handled on netif address change


# 149701b3 30-Sep-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Fix bug #49218: pbuf_clen() overflow as a result of tcp_write concatenation
Let pbuf_clen() return u16_t


# 65796cd8 28-Sep-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

"Fix" bug #49078: lwip cannot establish ipv6 connection, because of failed to fill ipv6 source address in Neighbor Solicitation Message by adding a note to netif_add not to forget to create a link-local IPv6 address


# 633696c1 27-Sep-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Implement consistent IPx_ADDR_ANYx macro naming between IPv4 and IPv6
- rename IP4_ADDR_ANY to IP4_ADDR_ANY4
- IP4_ADDR_ANY (= IP_ADDR_ANY) is now IPv4 any address in ip_addr_t format


# 97b774ce 26-Sep-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Minor: Documentation updates


# c7c6b7ce 21-Sep-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Rework IGMP and MLD6 code to store group info per-netif.
Reasoning:
- Makes code in single-netif case perform better and smaller
- IGMP / MLD6 code is a little bit easier to read and understand
- Easier to get multicast groups per netif when implementing drivers

Downside: In multi-netif mode, there are two more pointers on each netif, even if IGMP/MLD6 is not used on it. But these systems should not be so memory-constrained that this will matter.


# d66442ba 07-Sep-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Fix compile when TCP, UDP and RAW are disabled


# 0d510dd6 26-Aug-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Add API macros for netif client data handling and update documentation accordingly


# 57468b8a 25-Aug-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Minor: Several documentation updates


# 4c390ad3 24-Aug-2016 sg <goldsimon@gmx.de>

update netif address change triggers to tpc & udp to work with IPv6, too


# a1db05c1 24-Aug-2016 Erik Ekman <erik.ekman@verisure.com>

Fix const argument warning in netif_ip6_addr_set

../../../../../lwip/src/netif/ppp/ppp.c:1276:37: error: passing
'const ip6_addr_t *' (aka 'const struct ip6_addr *') to parameter of type
'ip6_addr_t *' (aka 'struct ip6_addr *') discards qualifiers
[-Werror,-Wincompatible-pointer-types-discards-qualifiers]
netif_ip6_addr_set(pcb->netif, 0, IP6_ADDR_ANY6);
^~~~~~~~~~~~~
../../../../../lwip/src/include/lwip/ip_addr.h:340:24: note: expanded from macro
'IP6_ADDR_ANY6'
^~~~~~~~~~~~~~~~~~~~~~~~~
../../../../../lwip/src/include/lwip/netif.h:436:73: note: passing argument to
parameter 'addr6' here
void netif_ip6_addr_set(struct netif *netif, s8_t addr_idx, ip6_addr_t *addr6);


# 298ec340 24-Aug-2016 goldsimon <goldsimon@gmx.de>

set netif IPv6 address & state via function to implement change triggers (task #13517)


# 8eb9db18 19-Aug-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Reduce usage of netif/ethernet.h header, mostly lwip/prot/ethernet.h is sufficient


# 7f60cb38 17-Aug-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Improve netif client data API for lwIP internal clients - these can use a compile-time constant to access their data now


# ebf79598 18-Aug-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Coding style fixes in netif.c


# c62bfd81 17-Aug-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Port AUTOIP to new netif client data API


# 1db9631e 17-Aug-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Port DHCP to new netif client data API


# c28fb298 17-Aug-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Introduce an API to store arbitrary data pointers in struct netif
Let MDNS to use the new API
TODO: AutoIP, DHCP


# efb7b3d5 16-Aug-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Rename LWIP_MDNS to LWIP_MDNS_RESPONDER


# 4919932c 14-Aug-2016 Erik Ekman <erik@kryo.se>

Apply patch #8755: Multicast DNS responder support from Erik Ekman


# 0a7db8a9 07-Aug-2016 Axel Lin <axel.lin@ingics.com>

PPP: remove double include for lwip/sys.h

Including it once is enough.

Signed-off-by: Axel Lin <axel.lin@ingics.com>
Signed-off-by: Sylvain Rochet <gradator@gradator.net>


# 8d07629b 07-Aug-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Some documentation cleanups and include more comments that have been already in code into doxygen docs


# 018294d2 01-Aug-2016 goldsimon <goldsimon@gmx.de>

remove doubled include (tcpip.h)


# 2f7e6d06 01-Aug-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Remove hard reference from netif.c to tcpip.c - avoids pulling in unnecessary code


# 2c2d11fa 30-Jul-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Update documentation of netif_input function


# 4cb7e31d 30-Jul-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Add missing #include in netif.c


# 0c7d015e 30-Jul-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Further improvement to netif input function autoselection: Select between netif_input() and tcpip_input() depending on NO_SYS setting


# 4b67c582 30-Jul-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Create netif_input function that decides according to netif flags where to pass an incoming packet.
Allow to pass a NULL pointer to netif_add() input function - if so, use the function mentioned above as input function.


# 8a9de94b 26-Jul-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Restructure documentation. Create two top-level sections for thread-safe and callback-style APIs.


# 0fea2bc0 26-Jul-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Document netconn API in doxygen module style


# 8643782e 26-Jul-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Document netif and lwIP in doxygen module style


# 97b8e88e 19-Jul-2016 sg <goldsimon@gmx.de>

netif_set_addr(): when removing an address (setting address to ANY), we have to remove it *before* changing netmask/gw to ensure that tcp RST segment can be sent correctly


# 7037b340 19-Jul-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Move etharp to core/ipv4, which is a more appropriate place for it


# ac21a5f3 06-May-2016 Jan Breuer <jan.breuer@jaybee.cz>

nd6: add cleanup function


# 62037370 12-Nov-2015 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Rename snmp_mib2.h to snmp.h so source compatibility for user netif implementations is preserved


# c12fa7b4 09-Oct-2015 sg <goldsimon@gmx.de>

started to move "private" header files containing implementation details to "lwip/priv/" include directory to seperate the API from the implementation.


# 77f90637 07-Oct-2015 goldsimon <goldsimon@gmx.de>

minor: fixed coding style (lwip style)


# b401f425 07-Oct-2015 goldsimon <goldsimon@gmx.de>

minor: fixed coding style (lwip style)


# 2b971400 06-Oct-2015 sg <goldsimon@gmx.de>

minor: coding style


# 490581a0 06-Oct-2015 sg <goldsimon@gmx.de>

minor/coding style: removed spaces before line ending


# f80d0dab 02-Oct-2015 Erik Ekman <erik.ekman@verisure.com>

Remove old comments about DHCP setting netif up


# 3f4d75c8 30-Sep-2015 Dirk Zigelmeier <dirk@ziegelmeier.net>

netif_get_ip6_addr_match/netif_add_ip6_address must take a const ip6addr to be usable


# 0fbdd5e5 23-Sep-2015 goldsimon <goldsimon@gmx.de>

fixed compiling LWIP_HAVE_LOOPIF after changing struct netif.ip6_addr to ip_addr_t


# db76671d 23-Sep-2015 sg <goldsimon@gmx.de>

task #13729: Convert netif addresses (IPv4 & IPv6) to ip_addr_t (so they can be used without conversion/temporary storage)


# e00e4a6c 23-Sep-2015 Dirk Ziegelmeier <dirk@ziegelmeier.net>

make netif_ip4_* get accessors return const pointers


# 4f9bcc5e 17-Sep-2015 sg <goldsimon@gmx.de>

fixed compiler warnings reported by mingw-64


# 7702ed66 08-Sep-2015 goldsimon <goldsimon@gmx.de>

fixed compiler warning (stray 'a ' in code) - why is this a warning only???


# 8a0fb03e 08-Sep-2015 goldsimon <goldsimon@gmx.de>

Separate mib2 counter/table callbacks from snmp agent. This both cleans up the code and should allow integration of a 3rd party agent/mib2.


# aa0e41c3 01-Sep-2015 sg <goldsimon@gmx.de>

task #12178: hardware checksum capabilities can be configured per netif (use NETIF_SET_CHECKSUM_CTRL() in your netif's init function)


# 5eb1c411 26-Aug-2015 sg <goldsimon@gmx.de>

LWIP_LOOPIF_MCAST -> LWIP_LOOPIF_MULTICAST


# 0ab21da8 24-Aug-2015 Joel Cunningham <joel.cunningham@me.com>

Add multicast support to loopif

This commit adds support to send and receive multicast on the loopback
netif by enabling IGMP via NETIF_FLAG_IGMP

This commit also introduces an LwIP configuration option,
LWIP_LOOPIF_MCAST, to control the behavior and it defaults to off


# 94550682 24-Aug-2015 sg <goldsimon@gmx.de>

more cleanup prework to fix bug #45029


# 177c06b1 20-Aug-2015 sg <goldsimon@gmx.de>

- 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;
- fixed some bugs in calls to ip4_addr*() where the cast to u8_t* did not reveal the wrong address type


# 877fcb35 27-Jul-2015 chrysn <chrysn@fsfe.org>

fix return type of netif_add_ip6_address mismatch

the netif_add_ip6_address function was declared err_t in
src/include/lwip/netif.h, but defined as s8_t (the default value of
err_t) in its implementation in src/core/netif.c.

this causes "conflicting types for 'netif_add_ip6_address'" errors if
err_t is defined differently in cc.h (as for example recommended in
[1]).

as it only returns error constants, it is changed to use err_t
throughout.

[1] http://lwip.wikia.com/wiki/Porting_For_Bare_Metal


# 13801ebd 03-Aug-2015 goldsimon <goldsimon@gmx.de>

netif_find(): name parameter can be const


# 4dc3c7a6 03-Aug-2015 goldsimon <goldsimon@gmx.de>

Fixed warnings about NULL check not required (ip_addr_isany) and implicit conversion (~)


# 5b0d9338 26-Jul-2015 Joel Cunningham <joel.cunningham@me.com>

netif, loopif: set link up on loopback interface

When LWIP_HAVE_LOOPIF is enabled, a separate loopback interface is added
as a netif. A netif need to have its link state set to up to be able to be
selected as a route in ip4_route or ip6_route.

The regression appears to be when bug #43904 (ip_route() and ip6_route()
must detect linkup status) was fixed.

Furthermore, there is no point of having the loopif down by default.


# c1c65777 12-Apr-2015 sg <goldsimon@gmx.de>

worked on task #13480: added LWIP_IPV4 define - IPv4 can be disabled, leaving an IPv6-only stack (SNMP is still missing)


# ce7e31cd 09-Apr-2015 sg <goldsimon@gmx.de>

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;
ip_addr_t is used for all generic IP addresses for the API, ip(4/6)_addr_t are only used internally or when initializing netifs or when calling version-related functions


# 12e3b52f 18-Mar-2015 Ivan Delamer <delamer@inicotech.com>

fixed bug #39226: Validity of netif IPv6 address is not always checked


# 12d374d4 06-Mar-2015 sg <goldsimon@gmx.de>

Added function documentation, fixed coding style


# 0ddd7de1 06-Mar-2015 sg <goldsimon@gmx.de>

patch #8359 (Provide utility function to add an IPv6 address to an interface)


# 4e520cdd 05-Mar-2015 sg <goldsimon@gmx.de>

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 used!


# 12514c09 04-Mar-2015 sg <goldsimon@gmx.de>

Fixed bug #39956 (netif_create_ip6_linklocal_address out of bounds access of netif::hwaddr)


# a310bc19 26-Feb-2015 Sylvain Rochet <gradator@gradator.net>

netif: fixed compiler warning

lwip/src/core/netif.c: In function ‘netif_set_ipaddr’:
lwip/src/core/netif.c:403:5: warning: implicit declaration of function ‘udp_netif_ipv4_addr_changed’ [-Wimplicit-function-declaration]
udp_netif_ipv4_addr_changed(&netif->ip_addr, ipaddr);
^


# 0647533f 26-Feb-2015 sg <goldsimon@gmx.de>

fixed bug #44378 (TCP connections are not aborted on netif remove)


# 99dd7896 26-Feb-2015 sg <goldsimon@gmx.de>

fixed bug #40753 (re-bind UDP pcbs on change of IP address)


# ec5cf859 22-Feb-2015 sg <goldsimon@gmx.de>

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, netif_igmp_mac_filter_fn)


# 9f065c0e 23-Jan-2015 chrysn <chrysn@fsfe.org>

(api break) qualify ip_addr_t as const where feasible

this changes the callback signatures of the ip_output and the
{udp,raw}_recv functions.

changes were made by going through all header files, searching for
occurrences of ip_addr_t, qualifying them as const and if required
modifying the corresponding c files, looking for other uses of ip_addr_t
that would be required.

the following header files were not treated as i'm not using them and
wouldn't see them compiled: api.h api_msg.h dhcp.h dns.h igmp.h
netifapi.h pppapi.h snmp.h snmp_msg.h snmp_structs.h ppp.h pppol2tp.h
test/*

no modifications were done on ip6_addr_t.


# dceed2ea 25-Feb-2014 Simon Goldschmidt <goldsimon@gmx.de>

fixed bug #39225 udp.c uses netif_matches_ip6_addr() incorrectly; renamed function netif_matches_ip6_addr() to netif_get_ip6_addr_match()


# 5070cc07 17-Jan-2014 Simon Goldschmidt <goldsimon@gmx.de>

Fixed LWIP_IPV6==0


# 1e65eb49 17-Jan-2014 Simon Goldschmidt <goldsimon@gmx.de>

Added IPv6 loopback address to loopback-netif, fixed last commit


# 13e40f75 28-Jan-2013 Jay Logue <jay-lwip@toaster.com>

Enable support for IPv6 loopback

Packets are sent through the loopback path when they are addressed to any
of the valid local IPv6 addresses.


# 039737ff 12-Dec-2012 Stathis Voukelatos <stathis.voukelatos@linn.co.uk>

Fixed netif_poll() operation when LWIP_LOOPBACK_MAX_PBUFS > 0.

Using the pbuf_clen() function to calculate the number of pbufs
for the first packet in the queue is not correct here, as pbuf_clen()
will return the total number of pbufs in the loopback I/F queue.


# 9809f1ff 24-Apr-2013 Simon Goldschmidt <goldsimon@gmx.de>

Fixed bug #38586


# c762c06b 17-Aug-2012 Ivan Delamer <delamer@inicotech.com>

Fixed typo in previous commit.

Change-Id: I97f85f4593509911829cfbbb6e309eecedd5465b


# 8bab5435 17-Aug-2012 Ivan Delamer <delamer@inicotech.com>

Add a "NULL" output function for ipv6 by default, to avoid NULL
dereferencing in case of non-IPv6-enabled netifs (e.g. PPP).

Change-Id: I45f08ca89bfa0b8d61962f7052b11cc81a5e3cd1


# 08b497fa 22-Nov-2011 goldsimon <goldsimon@gmx.de>

fixed bug #34684: Clear the arp table cache when netif is brought down


# 0a575514 24-Aug-2011 Simon Goldschmidt <goldsimon@gmx.de>

added netif remove callback (bug #32397)


# bf4ec9be 24-Aug-2011 Simon Goldschmidt <goldsimon@gmx.de>

fixed bug #34121 netif_add/netif_set_ipaddr fail on NULL ipaddr


# 732cac1c 07-Jun-2011 goldsimon <goldsimon>

Moved static variable from inside the function to global scope


# 6865806b 25-May-2011 goldsimon <goldsimon>

Combined IPv4 and IPv6 code where possible, added defines to access IPv4/IPv6 in non-IP code so that the code is more readable.


# 4bfbe7eb 17-May-2011 goldsimon <goldsimon>

... 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!)


# e25c9f79 15-Mar-2010 goldsimon <goldsimon>

Fixed compiler warning when LWIP_SNMP==0


# 2a2be49d 08-Mar-2010 goldsimon <goldsimon>

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.


# bcd4b76d 21-Feb-2010 goldsimon <goldsimon>

Moved stack-internal parts of tcp.h to tcp_impl.h, tcp.h now only contains the actual application programmer's API


# 7c205409 15-Feb-2010 goldsimon <goldsimon>

Link status does not depend on LWIP_NETIF_LINK_CALLBACK (fixes bug #28899)


# e04e0cb9 14-Feb-2010 goldsimon <goldsimon>

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


# 29eb56a2 12-Feb-2010 goldsimon <goldsimon>

netif_set_link_up/down: only do something if the link state actually changes


# a668a4e4 09-Feb-2010 goldsimon <goldsimon>

Fixed compilation for NO_SYS==1


# b1250f00 09-Feb-2010 goldsimon <goldsimon>

For loopback packets, adjust the stats- and snmp-counters for the loopback netif.


# 077caac7 09-Feb-2010 goldsimon <goldsimon>

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.


# 5d360a67 04-Feb-2010 goldsimon <goldsimon>

Replaced struct ip_addr by typedef ip_addr_t to make changing the actual implementation behind the typedef easier.


# a23b446d 04-Feb-2010 goldsimon <goldsimon>

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).


# 8712deb0 31-Jan-2010 goldsimon <goldsimon>

Don't call the link-callback from netif_set_up/down() since
this invalidly retriggers DHCP.


# 2d4e7687 14-Jan-2010 goldsimon <goldsimon>

Using typedefs for function prototypes and -pointers throughout the stack for clarity


# c483c13d 10-Jan-2010 goldsimon <goldsimon>

Fixed bug #28248 (netif_remove doesn't call netif callback) by calling netif_set_down() from netif_remove()


# 86f2942c 10-Jan-2010 goldsimon <goldsimon>

Minor coding style changes, added assertion


# 32833bcd 09-Jan-2010 goldsimon <goldsimon>

Inlined netif_is_up() and netif_is_link_up() as defines for speed reasons; fixed type and macro definition.


# f4c06551 22-Nov-2009 goldsimon <goldsimon>

Fixed usage of logging levels (bug #27948: Incorrect logging levels used in various places)


# 103ba9b0 24-Aug-2009 stoklund <stoklund>

The DHCP client should enter the REBOOTING state when connecting to a
new network. If DHCP has bound to an address, it must be verified
after netif_set_link_up.


# d83fc689 24-Aug-2009 stoklund <stoklund>

Don't use an AutoIP-configured address on a new network until the address has been configured.

When connecting to a new network with an AutoIP address, take the
interface down until the old address has passed the
AUTOIP_STATE_PROBING state.


# ce5699f4 09-Jul-2009 fbernon <fbernon>

minor changes: typos and coding style


# 30acd166 12-May-2009 goldsimon <goldsimon>

fixed bug #26507: "Gratuitous ARP depends on arp_table / uses etharp_query" by adding etharp_gratuitous()


# 42c59e10 28-Apr-2009 fbernon <fbernon>

netif.c: minor, fix a warning


# 3d8e5003 19-Jun-2008 goldsimon <goldsimon>

Fixed includes in netif.c, removed loop_cnt_max member in struct netif (instead the define LWIP_LOOPBACK_MAX_PBUFS is used directly)


# eba83ab7 17-Jun-2008 goldsimon <goldsimon>

Changed loopback code (less difference between NO_SYS = 0 / 1), added setting LWIP_LOOPBACK_MAX_PBUFS to limit loopback-queued pbufs


# 88ff8c83 12-Jun-2008 goldsimon <goldsimon>

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).


# c13ec867 09-Oct-2007 goldsimon <goldsimon>

Forgot two explicit initializations...


# 199648ff 09-Oct-2007 goldsimon <goldsimon>

Changed initialization: many init functions are not needed any more since we now rely on the compiler initializing global and static variables to zero!


# 939180c1 09-Sep-2007 fbernon <fbernon>

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 streams).


# e3cd1ac1 07-Sep-2007 fbernon <fbernon>

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.


# 62b4741b 03-Sep-2007 fbernon <fbernon>

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).


# 327f06bb 02-Sep-2007 fbernon <fbernon>

Replace "netif_default = NULL;" by "netif_set_default(NULL);" in netif_remove (do some processing, like for SNMP...)


# cd208314 29-Aug-2007 fbernon <fbernon>

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.


# acbf25f2 25-Aug-2007 fbernon <fbernon>

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.


# 261af8dc 22-Aug-2007 fbernon <fbernon>

netif.h, netif.c, opt.h: Rename LWIP_NETIF_CALLBACK in LWIP_NETIF_STATUS_CALLBACK to be coherent with new LWIP_NETIF_LINK_CALLBACK option before next release.


# 9152d667 09-Aug-2007 fbernon <fbernon>

Comments Fix for Doxygen documentation


# c555b532 08-Aug-2007 jgrubb <jgrubb>

Add NETIF_LINK_CALLBACK into the netif_set_link_up/down functions


# 116bcb9d 13-Jul-2007 fbernon <fbernon>

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...


# 96e4ec4a 02-Jul-2007 goldsimon <goldsimon>

Added option LWIP_NETIF_HWADDRHINT (default=off) to cache ARP table indices with each pcb instead of single-entry cache for the complete stack.


# cbf28158 16-Jun-2007 goldsimon <goldsimon>

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.


# e01f3420 09-Jun-2007 fbernon <fbernon>

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).


# 1a25062a 07-Jun-2007 goldsimon <goldsimon>

Done some work on task #1549 (function documentation)


# 4208bcd8 30-Mar-2007 fbernon <fbernon>

Fix on NETIF_FLAG_ETHARP test (test inverted)


# 5368a760 30-Mar-2007 fbernon <fbernon>

most of files: prefix all debug.h define with "LWIP_" to avoid any conflict with others environment defines (these were too "generic").


# cd1c96db 28-Mar-2007 fbernon <fbernon>

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 netif_set_up().


# 028d7070 26-Mar-2007 goldsimon <goldsimon>

Remove warning in netif_add(): "converting from 's16' to 'u8_t': possible loss of data" (static variable netifnum)


# e5147d55 21-Mar-2007 kieranm <kieranm>

* netif.c, netif.h: Apply patch#4197 with some changes (originator: rireland@hmgsl.com).
Provides callback on netif up/down state change.


# 5a6b26d6 28-Nov-2006 christiaans <christiaans>

In netif_add() fixed clearing of ip_addr, netmask, gw and flags.


# 65768022 07-Sep-2006 christiaans <christiaans>

Fixed compilation for LWIP_SNMP 0.


# 130d39cc 01-Sep-2006 christiaans <christiaans>

Changed index structs to mib_list_node structs to place the table index trees directly in the mib tree.


# 54bb20b4 14-Jul-2006 christiaans <christiaans>

Added SNMP statistics to struct netif and changed SNMP macro glue.


# e1b215aa 24-Nov-2005 christiaans <christiaans>

Introduced cc.h formatters and removed SO_REUSE from transport layers.


# d7699ca8 21-Jul-2004 softins <softins>

Changed debug statements to use the tidier ip4_addrN() macros.


# d11fcafa 30-Jun-2004 likewise <likewise>

Added netif up/down basics.


# 4eadc22a 03-May-2004 likewise <likewise>

Some updates on "gratuitious ARP" from RFC3220. Cleanup of some code and comments.


# 82f852ab 11-Mar-2004 likewise <likewise>

Fix cyclic dependencies by careful re-ordering of #includes.
This is really nasty. Can we forward-declare pointers to structs?


# a6f11114 04-Mar-2004 likewise <likewise>

Matched interface documentation for netif_add() API change in 1.28.2.5.


# 47984b04 19-Feb-2004 lukem <lukem>

removed redundant redeclaration of tcp_active_pcbs (already defined by tcp.h)


# 7bfea6ed 16-Feb-2004 likewise <likewise>

Applied Ian Wienand's patches (4-2-2004). Was partly applied earlier.


# e1c4bfad 06-Feb-2004 likewise <likewise>

Merged from DEVEL, except for the API change in etharp.c.


# 1ed40e79 06-Feb-2004 likewise <likewise>

Applied alias.diff by Ian Wienand on lwip-devel on February 4th 2004.
Using union to make explicit either tcp_listen_pcb or tcp_pcb.


# eed8ea5b 27-Dec-2003 uid67528 <uid67528>

Merged from DEVEL. etharp prepared for queueing feature. DHCP fix.


# e4a6d199 14-Nov-2003 likewise <likewise>

Merged from DEVEL into main tree.


# ba786dc4 11-Jun-2003 likewise <likewise>

Applied patch #1596 fixing wrongly cast LWIP_DEBUGF arguments.
(printf expects integers on the var args stack)


# 80145519 10-Jun-2003 kieranm <kieranm>

Changed DEBUGF to LWIP_DEBUGF


# c699921f 09-Jun-2003 likewise <likewise>

Fixed a multi-line comment.


# df99ce9d 09-Jun-2003 likewise <likewise>

Replaced all tabs with two spaces (regardless of indentation is correct).


# 829744df 09-Jun-2003 likewise <likewise>

More precise comments on address change.


# b0273c92 27-May-2003 jani <jani>

fix warning


# 03bc7c86 01-May-2003 likewise <likewise>

Major stylo search/replace for "One space between keyword and opening bracket."


# 7662015d 15-Apr-2003 jani <jani>

obsolete PCB handling only active when TCP is enabled


# 4ecb01f4 15-Apr-2003 likewise <likewise>

Changed netif name formatting from %s to %c%c.


# 40f10b69 11-Apr-2003 likewise <likewise>

All debug messages now show actual config _after_ setting netif config.


# 1254b42e 09-Apr-2003 likewise <likewise>

Enabled code to abort/replace TCP pcbs upon netif address change.


# a389b630 07-Apr-2003 likewise <likewise>

Added (non-active) code handling pcbs upon changing IP address.


# 6d314971 02-Apr-2003 likewise <likewise>

Print debug message before actually changing netif IP address config.


# af8f2808 01-Apr-2003 likewise <likewise>

Fixed ip_addr_set() to deal with IP_ADDR_ANY. Added "ip_addr.h" include.


# 1a72feb1 01-Apr-2003 likewise <likewise>

etharp_query() has error return type now. Matched dhcp.c with this change.
Added debug messages in other places.


# 6c147709 31-Mar-2003 likewise <likewise>

Documentation changes. Added missing trailing newlines to debug messages.


# fa34d51b 24-Mar-2003 likewise <likewise>

Added documentation and comments.


# cea002a0 24-Mar-2003 likewise <likewise>

Forgot #if LWIP_DHCP around netif->dhcp = NULL;


# ce4dbcec 24-Mar-2003 likewise <likewise>

Initialized netif->dhcp to NULL.


# dbdd0f52 13-Mar-2003 likewise <likewise>

Added source comments.


# 8613f2a4 07-Mar-2003 jani <jani>

factor out netif_set_addr so address of netif can be changed


# 18df3961 21-Feb-2003 jani <jani>

byte-order handling functions are in inet.c now and the uperrcase counterparts are gone. opt.h has all the
configurable items debug does not need to be directly included.


# cc31bb93 20-Feb-2003 jani <jani>

make netif->init return err_t instead of void.Patch from David Le Corfec


# f2d35751 11-Feb-2003 jani <jani>

fix doxygen comment for netif_add


# c68ee2b2 10-Feb-2003 likewise <likewise>

SNMP functions are now unconditionally called and defined empty if LWIP_SNMP == 0
This removes a lot of #if #endif cluttering the source code.


# dd2fa15e 06-Feb-2003 davidhaas <davidhaas>

Add the following features and bugfixes:

Added select() functionality to sockets library.
Support for errno in sockets library.
Byte ordering fixes.
basic lwip_ioctl(), FIONREAD, get/setsockopt() etc. support

- added additional argument to netif_add to pass state pointer so that the
if_init function has access to context information before
the interface is added, without accessing globals.

- added netif_remove()

- to conserve cpu load the tcpip_tcp_timer should only be active
when tcbs that need it exist.

- pass length of available data to callbacks for NETCONN_EVT_RCV events

- added tcpip_link_input(), a hack to allow processing of PPP
packets in tcpip_thread() context. This saves threads and context
switches.

- renamed incompatible ASSERT() macro to LWIP_ASSERT() to avoid name
collision.

- changed a bunch of %d's to %u's in format strings for unsigned values.

- added ip_frag to lwip_stats.

- changed IP_REASS_MAXAGE and IP_REASS_TMO defaults to more realistic
values.

- added sys_timeout_remove() function to cancel timeouts (needed by PPP
amongst other things).

- tolerate NULL returns from sys_arch_timeouts() since some threads might
not need to use or have timeouts.

- added sys_sem_wait_timeout()

- moved mem_malloc() function to end of mem.c to work around tasking
compiler bug.

- automatically bind to local tcp port if 0.

- allow customization of port ranges for automatic local bindings.

- corrected various typos, spelling errors, etc..

Thanks to Marc Boucher for many of these changes.


# cc4df710 08-Jan-2003 likewise <likewise>

Updated lwIP module copyright years to include 2003. Committers must check theirs.


# f06e9550 18-Oct-2002 likewise <likewise>

Initial revision