Commit Graph

26 Commits (930ef8466223bcc416dc987989f0819f941ec6b5)

Author SHA1 Message Date
Martin Kojtal ac21ee90a8
Merge pull request #12791 from cy-arsm/cy-arsm/pr/IPv6_Dual_stack_fix
Fix for IPv6 Dual Stack support
2020-04-16 12:10:40 +02:00
Kimmo Vaisanen 09fe16618a Netsocket: Implement set_ip_address to enable setting second address
set_ip_address API can be used to set a static IPv4 address or IPv6 link-local
address to network stack.

This is needed for example in cellular use cases where device gets multiple IP
addresses from cellular context.
2020-04-14 12:04:03 +03:00
Arun S cfcfd11049 Remove ethernet interface logic for SoftAP and STA
Issue: The problem is that there is a race condition introduced in that the LWIP thread is relying on the
interface as it is taken down by a application thread while calling disconnect.
In disconnect api called from application context, whd_emac_wifi_link_state_changed() will refer to netif interface
structure in its callback api netif_link_irq(netif). This netif will be cleared by remove_etherent_interface().
whd_emac_wifi_link_state_changed will post message to tcpip_thread. tcpip_thread will process the message and
call the callback api netif_link_irq(netif)
Calling sequence is whd_emac_wifi_link_state_changed -> remove_etherent_interface(). Hence there is a timing issue
that netif might be cleared first before tcpip thread process the message netif_link_irq(netif)

Fix: remove_etherent_interface() will post message to tcpip thread and tcpip thread process the message delete_interface()
which will actually remove the inferface from the netif_list.
Calling sequence is whd_emac_wifi_link_state_changed() message post -> remove_etherent_interface() message post.
message processing order netif_link_irq(netif) -> delete_interface().
Since both the processing is handled in single thread, processing of message is handled sequentially.
2020-04-13 16:45:23 +05:30
Arun S 19cbfd7c15 Reverting #12312 as it breaking current WiFI
connect()->Disconnect() sequence

This reverts commit 18285e1fc1
2020-03-05 16:44:59 +05:30
Kevin Bracey aa9058a293 C++11-ify virtualisation in lwIP classes
Use `override` and `final` where appropriate, and eliminate unnecessary
`virtual`.

Some other C++11 simplifications.
2020-02-25 10:09:10 +02:00
Kevin Bracey b4c1f7f3da Correct LWIP::get_ip_address
Previous change that removed string-based APIs missed
`LWIP::get_ip_address`. Remove string-based method (which is not
overriding anything in `NetworkInterface`) and add missing binary form
to implement `NetworkInterface::get_ip_address`.
2020-02-25 09:57:56 +02:00
Michal Paszta f21b8c7fc1 Remove remaining string-based API functions
This removes any compiler warnings.
2020-02-06 11:27:50 +02:00
Martin Kojtal 8b829e5c41
Merge pull request #12312 from cy-arsm/cy-arsm/pr/ipv6-fix-SoftAPmode
Fix to sending IPV6 UPD packet fails IPv6 enabled in SoftAP intf
2020-02-03 16:55:09 +00:00
Arun S 18285e1fc1 Pairing fails when IPv6 enabled in SoftAP intf
Issue: udp_sendto() Fails for multicast IPV6 packet when interface is switched from SoftAP to STA mode.
When SoftAP start is called,  add_ethernet_interface() will be called internally to add interface details into  netif_list.
When switching from SoftAP to STA mode,  add_ethernet_interface() will be called again to append the interace details into netif_list.
When udp_sendto() is called, ip6_route() will return interface as NULL since it consider device as single interface.
Fix: SoftAP mode Stop, call remove_ethernet_interface() to remove the interface from the netif_list.
2020-01-29 15:07:52 +05:30
Michal Paszta c2856ef710 Remove deprecated string-based get_ip_address_if 2019-12-12 09:22:32 +02:00
Michal Paszta d5d04ebb90 Move get_ip_address_if to the right class
get_ip_address_if was wrongly added to OnboardNetworkStack::Interface, while it should in fact be placed directly in OnboardNetworkStack.
2019-12-12 09:20:27 +02:00
Michal Paszta fd5b4b9119 Deprecate string-based APIs in IPCore
MBED_DEPRECATE macros is added to string-based APIs.
New, non-string-based APIs are added in their place.
Wiced binaries rebuilt
Any existing stubs or mocks are adjusted to compile and run with the newly added non-string based functions.
2019-11-22 11:31:12 +02:00
Jayasankar Nara cb51fa57e2 Add API to get ipv6 link local address.
Protocols like mdns requires IPv6 link local address to be advertised in its
records (AAAA record). LWIP::Interface::bringup() API is creating IPv6 link
local address;But as of now there is no API exposed by mbed-os to get the
IPv6 link local address.

This new API is required to deliver mDNS library support on mbed-os for Cypress
platforms. Unit tested it by invoking get_ipv6_link_local_address with a simple
application.
2019-11-01 03:43:36 +05:30
Mika Leppänen 3864e12172 lwIP changes for PPP service
Created (a new) PPP interface for PPP service. Removed lwip
dependencies to PPP (memory allocations etc.). Moved PPP
configuration options away from lwIP mbed_lib.json to new
PPP service. For backwards compatibility, using the old
options is also currently supported.
2019-08-20 13:37:12 +03:00
Kevin Bracey 3b178a08ef NSAPI/lwIP: Use netconn_recv_tcp_pbuf
Slight RAM+speed efficiency improvement - read the TCP implementation's
native pbufs, rather than forcing netconn_recv to generate netbuf
wrappers for us. Saves one small lwIP heap allocation per TCP packet
received.
2019-06-11 16:00:11 +03:00
Kevin Bracey 2fbbd9d2ca Introduce Semaphore::acquire methods
Deprecate wait() in favour of acquire(), try_acquire(),
try_acquire_for() and try_acquire_until().

Brings Semaphore more into line with CMSIS-RTOS 2 (which uses "acquire"),
itself (as it has "release"), and other classes having "try", "try for"
and "try until".

Also steps away from vague "wait" term - the primary operation here is
to acquire the semaphore, and this will of course sleep.
2019-05-28 17:02:06 +03:00
Martin Kojtal 06cf7871b9
Merge pull request #10602 from tymoteuszblochmobica/dns
Runtime DNS server addition implement
2019-05-22 08:51:54 +01:00
Tymoteusz Bloch cdd31a5fc7 Runtime DNS server addition implement 2019-05-20 14:21:25 +02:00
Tymoteusz Bloch 51610cc90c Fixed TCP connection close.
If TCP FSM is in ESTABLISHED state,  waits  for TCP close handshaking until TIME_WAIT
The purpose is to prevent eth/wifi driver stop and  FIN ACK corrupt.
This may happend if network interface disconnect follows immediately after socket_close.
2019-05-10 17:00:38 +02:00
Kevin Bracey 69c6cc341b Networking: Fix some ARMC6 warnings
Some int-versus-long and signed-versus-unsigned format string
mismatches, and missing `class` keyword.
2019-04-17 16:03:44 +03:00
Tymoteusz Bloch 49141376ee Multihoming initial release
Added Multihoming feature to LWIP (ability to use more than one network interfaces) for increasing networking reliability.
This involves:

    LWIP interface
    LWIP IP routing
    DNS storage
    Sockets (bind to interface name possibility)
    possibility to add non default network interface
    cellular middleware modifications if cellular connection is used
2019-02-19 17:39:46 +02:00
Tymoteusz Bloch fc88922845 L3IP Interface Implementation
LWIP L3IP interface initial implementatioon
2018-12-20 15:23:43 +01:00
deepikabhavnani d5da9eb636 Resolved warning "call_in inherits implicit virtual" 2018-11-26 09:41:15 -06:00
Martin Kojtal 41c1901318 lwipstack: fix astyle coding style 2018-11-07 08:56:35 +00:00
Martin Kojtal 1188f4a0b9 lwip: fix rtx storage types 2018-06-28 14:40:00 +01:00
Seppo Takalo e4d1a9a85a Remove FEATURE_LWIP. The LwIP stack is enabled on all builds now
Leave the FEATURE_LWIP enabled in build scripts so that it does
not break any builds.

Removed 'feature_add: ["LWIP"]' on all targets.
2018-06-21 11:00:00 +03:00