8000 more lwIP physical interfaces by d-a-v · Pull Request #6680 · esp8266/Arduino · GitHub
[go: up one dir, main page]

Skip to content

more lwIP physical interfaces #6680

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 118 commits into from
Dec 22, 2020
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
118 commits
Select commit Hold shift + click to select a range
04bcb88
Extracts dhcp server from lwip2 and add it to the core.
d-a-v Oct 1, 2019
1793b27
ethernet wip
d-a-v Oct 3, 2019
cb198b4
Merge branch 'master' into ethernet
d-a-v Oct 3, 2019
de4a287
ethernet wip
d-a-v Oct 3, 2019
d279c66
ethernet wip
d-a-v Oct 4, 2019
9229ca5
Merge branch 'master' into ethernet
d-a-v Oct 4, 2019
05d5b68
ethernet wip
d-a-v Oct 5, 2019
9a3df51
ethernet wip
d-a-v 10000 Oct 5, 2019
c5c921e
ethernet wip: dhcpserver in a class wip
d-a-v Oct 5, 2019
04b5ed7
ethernet wip
d-a-v Oct 6, 2019
cc2c2ce
now needed: void preinit(){ESP8266WiFiClass::preinitWiFiOff();}
d-a-v Oct 6, 2019
f893c32
ethernet wip
d-a-v Oct 6, 2019
7df15f3
ethernet wip
d-a-v Oct 6, 2019
19146a6
lwip2: no more dhcp inside
d-a-v Oct 7, 2019
e89f352
Merge branch 'master' into ethernet
d-a-v Oct 7, 2019
5898985
ethernet wip
d-a-v Oct 7, 2019
833d3af
Merge branch 'master' into ethernet
d-a-v Oct 7, 2019
deebbcb
ethernet wip
d-a-v Oct 8, 2019
a3b1d91
ethernet wip: dhcp server working for legacy AP on boot, and external…
d-a-v Oct 10, 2019
b8485d1
Merge branch 'master' into ethernet
d-a-v Oct 10, 2019
919839d
ethernet wip
d-a-v Oct 12, 2019
16ddd26
Merge branch 'master' into ethernet
d-a-v Oct 24, 2019
574be13
ppp server updates
d-a-v Oct 26, 2019
8d10e91
restyle
d-a-v Oct 26, 2019
756ce0c
PPPServer: example
d-a-v Oct 26, 2019
5b38c0d
astyle
d-a-v Oct 26, 2019
b79d841
comments
d-a-v Oct 28, 2019
3fec74a
argument reorder common function for ::config()
d-a-v Oct 28, 2019
f15a93c
Merge branch 'ethernet' of github.com:d-a-v/Arduino into ethernet
d-a-v Oct 28, 2019
6ac98da
fix upstream url
d-a-v Oct 28, 2019
f35f712
Merge branch 'master' into ethernet
d-a-v Oct 28, 2019
a8e231b
sync with lwip2
d-a-v Oct 28, 2019
6be2382
Merge branch 'ethernet' of github.com:d-a-v/Arduino into ethernet
d-a-v Oct 28, 2019
c6c3805
sync with lwip2
d-a-v Oct 28, 2019
7bdadd4
missing file
d-a-v Oct 29, 2019
3282a3f
fix dhcp server on AP
d-a-v Oct 30, 2019
370bd62
Merge branch 'master' into ethernet
d-a-v Oct 30, 2019
fc6fb1d
fix example
d-a-v Oct 30, 2019
900c594
fix former declaration of dhcp server, and its current use
d-a-v Oct 30, 2019
4b5a2c4
fix dhcp server when ipv6 is enabled
d-a-v Oct 30, 2019
4ebd5c8
fixes for lwip1
d-a-v Oct 30, 2019
1366903
fi macro arithmetic
d-a-v Oct 30, 2019
d09d62e
fix example
d-a-v Oct 30, 2019
d9d9339
add missing files (ppp)
d-a-v Oct 30, 2019
5816590
fix emulation on host
d-a-v Oct 30, 2019
04d02c3
fix example warnings
d-a-v Oct 30, 2019
6ee5df9
Merge branch 'master' into ethernet
devyte Nov 5, 2019
8f57757
Merge branch 'master' into ethernet
d-a-v Nov 14, 2019
9eb9dee
Merge branch 'ethernet' of github.com:d-a-v/Arduino into ethernet
d-a-v Nov 23, 2019
6b27eaa
Merge branch 'master' into ethernet
d-a-v Nov 23, 2019
bd8b32a
move hostname() from STA to generic interface
d-a-v Nov 23, 2019
55b874c
Merge branch 'master' into ethernet
d-a-v Nov 24, 2019
21694be
Merge branch 'master' into ethernet
d-a-v Nov 28, 2019
9d77d1d
Merge branch 'ethernet' of github.com:d-a-v/Arduino into ethernet
d-a-v Nov 28, 2019
a81d110
Merge branch 'master' into ethernet
d-a-v Dec 4, 2019
b3acf27
Merge branch 'master' into ethernet
d-a-v Dec 6, 2019
df04b3c
Merge branch 'ethernet' of github.com:d-a-v/Arduino into ethernet
d-a-v Dec 21, 2019
51aca37
Merge branch 'master' into ethernet
d-a-v Dec 21, 2019
6e12d9e
Merge branch 'ethernet' of github.com:d-a-v/Arduino into ethernet
d-a-v Feb 18, 2020
540e446
sync with lwip2
d-a-v Feb 18, 2020
29d3de7
Merge branch 'master' into ethernet
d-a-v Feb 25, 2020
50fec05
Merge branch 'master' into ethernet
d-a-v Feb 25, 2020
488ae3e
Merge branch 'ethernet' of github.com:d-a-v/Arduino into ethernet
d-a-v Feb 27, 2020
21ffcfe
Merge branch 'master' into ethernet
d-a-v Feb 27, 2020
0b4689b
style
d-a-v Feb 27, 2020
043d32c
fix using softserial API
d-a-v Feb 27, 2020
cc2be53
fix warning with macro
d-a-v Feb 27, 2020
0dcfc84
fix include file with lwip1.4
d-a-v Feb 27, 2020
967c349
lwIP-1.4 include fix
d-a-v Feb 27, 2020
0f133cc
lwIP-1.4 include fix
d-a-v Feb 27, 2020
3c15b76
+ comments
d-a-v Apr 30, 2020
e0e7cdb
remove non readable characters from comments
d-a-v Apr 30, 2020
af93802
magic_cookie is part of bootp rfc
d-a-v Apr 30, 2020
639ef04
more comments
d-a-v Apr 30, 2020
a60ffaa
rebuild lwip lib
d-a-v Apr 30, 2020
0673d0d
Merge branch 'master' into ethernet
d-a-v Apr 30, 2020
44a680d
rebuild lwip libs
d-a-v Apr 30, 2020
147f5a9
rebuild lwip libs
d-a-v Apr 30, 2020
b18ec7b
fix copy from pointer
d-a-v May 1, 2020
e258e16
Merge branch 'ethernet' of github.com:d-a-v/Arduino into ethernet
d-a-v Jun 2, 2020
fef264e
Merge branch 'master' into ethernet
d-a-v Jun 2, 2020
59fe44e
Merge branch 'ethernet' of github.com:d-a-v/Arduino into ethernet
d-a-v Jun 2, 2020
d80cd31
do not filter mac address from within driver (https://github.com/d-a-…
d-a-v Jun 2, 2020
50d9e83
fix compilation problem with IPv6
d-a-v Jun 2, 2020
8b81709
per https://github.com/d-a-v/W5500lwIP/issues/17#issuecomment-638229509
d-a-v Jun 3, 2020
08dca76
Merge branch 'master' into ethernet
d-a-v Jun 3, 2020
03b0670
update
d-a-v Jul 16, 2020
24f0e9a
Merge branch 'ethernet' of github.com:d-a-v/Arduino into ethernet
d-a-v Jul 16, 2020
90da681
Merge branch 'master' into ethernet
d-a-v Jul 16, 2020
f8c7f10
fix compilation without local lwip1.4
d-a-v Jul 16, 2020
63354f2
merge with master
d-a-v Jul 16, 2020
5af7382
recompile lwip2
d-a-v Jul 16, 2020
49068fd
fix example
d-a-v Jul 16, 2020
96eb899
Merge branch 'master' into ethernet
d-a-v Jul 30, 2020
8be6533
ppp server: release resource on fail
d-a-v Aug 1, 2020
30a2aa7
reorder members
d-a-v Aug 1, 2020
a0239ac
per review and fixes
d-a-v Aug 1, 2020
b2dac9b
Merge branch 'master' into ethernet
d-a-v Aug 15, 2020
5928211
Merge branch 'master' into ethernet
d-a-v Aug 16, 2020
55ef5ef
Merge branch 'master' into ethernet
d-a-v Aug 21, 2020
27ff946
Merge branch 'ethernet' of github.com:d-a-v/Arduino into ethernet
d-a-v Sep 5, 2020
94fb55e
Merge branch 'master' into ethernet
d-a-v Sep 5, 2020
97ad7ab
Merge branch 'master' into ethernet
d-a-v Sep 21, 2020
509999b
Merge branch 'master' into ethernet
d-a-v Sep 27, 2020
0a0f8a5
lwip2: recompiled PPP branch after sync w/ master
d-a-v Sep 27, 2020
788928c
fix file name case confusion after merging from master
d-a-v Sep 27, 2020
38fbe41
fix include file name, remove private constructor
d-a-v Sep 27, 2020
a3aaa49
fix emulatio on host too
d-a-v Sep 27, 2020
29a3e29
Merge branch 'master' into ethernet
d-a-v Oct 15, 2020
dbc55c0
Merge branch 'master' into ethernet
d-a-v Oct 24, 2020
723bed1
Merge branch 'master' into ethernet
earlephilhower Oct 26, 2020
ee5acfe
add lwip_hook_dhcp_parse_option()
d-a-v Nov 9, 2020
8094f2d
Merge branch 'ethernet' of github.com:d-a-v/Arduino into ethernet
d-a-v Nov 9, 2020
823a245
Merge branch 'master' into ethernet
d-a-v Dec 6, 2020
e67e830
Merge branch 'master' into ethernet
d-a-v Dec 22, 2020
3d459da
lwIP recompilation
d-a-v Dec 22, 2020
c5461f6
+ethernet tcp client example in w5500 library examples
d-a-v Dec 22, 2020
90f434f
add cores/esp8266/Lwip* files under AllmanStyle control
d-a-v Dec 22, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
ethernet wip
  • Loading branch information
d-a-v committed Oct 6, 2019
commit f893c325c5a9793f277a656a3aaef817cbaea7e2
57 changes: 30 additions & 27 deletions cores/esp8266/lwIPDhcpServer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -156,9 +156,6 @@ DhcpServer::DhcpServer (netif* netif): _netif(netif)
// wifi_softap_set_station_info is missing in user_interface.h:
extern "C" void wifi_softap_set_station_info (uint8_t* mac, struct ipv4_addr*);

void wifi_softap_dhcps_client_leave(u8 *bssid, struct ipv4_addr *ip, bool force);
uint32 wifi_softap_dhcps_client_update(u8 *bssid, struct ipv4_addr *ip);

void DhcpServer::dhcps_set_dns(int num, const ipv4_addr_t* dns)
{
(void)num;
Expand Down Expand Up @@ -255,12 +252,12 @@ void DhcpServer::node_remove_from_list(list_node **phead, list_node* pdelete)
}

/******************************************************************************
FunctionName : wifi_softap_add_dhcps_lease
FunctionName : add_dhcps_lease
Description : add static lease on the list, this will be the next available @
Parameters : mac address
Returns : true if ok and false if this mac already exist or if all ip are already reserved
*******************************************************************************/
bool DhcpServer::wifi_softap_add_dhcps_lease(uint8 *macaddr)
bool DhcpServer::add_dhcps_lease(uint8 *macaddr)
{
struct dhcps_pool *pdhcps_pool = nullptr;
list_node *pback_node = nullptr;
Expand Down Expand Up @@ -803,13 +800,13 @@ sint16_t DhcpServer::parse_msg(struct dhcps_msg *m, u16_t len)
{
struct ipv4_addr ip;
memcpy(&ip.addr, m->ciaddr, sizeof(ip.addr));
client_address.addr = wifi_softap_dhcps_client_update(m->chaddr, &ip);
client_address.addr = dhcps_client_update(m->chaddr, &ip);

sint16_t ret = parse_options(&m->options[4], len);

if (ret == DHCPS_STATE_RELEASE)
{
wifi_softap_dhcps_client_leave(m->chaddr, &ip, true); // force to delete
dhcps_client_leave(m->chaddr, &ip, true); // force to delete
client_address.addr = ip.addr;
}

Expand Down Expand Up @@ -940,7 +937,7 @@ void DhcpServer::handle_dhcp(
pmsg_dhcps = nullptr;
}
///////////////////////////////////////////////////////////////////////////////////
void DhcpServer::wifi_softap_init_dhcps_lease(uint32 ip)
void DhcpServer::init_dhcps_lease(uint32 ip)
{
uint32 softap_ip = 0, local_ip = 0;
uint32 start_ip = 0;
Expand Down Expand Up @@ -1025,7 +1022,7 @@ void DhcpServer::start (struct ip_info *info)
//XXXFIXMEIPV6 broadcast address?

server_address = info->ip;
wifi_softap_init_dhcps_lease(server_address.addr);
init_dhcps_lease(server_address.addr);

udp_bind(pcb_dhcps, IP_ADDR_ANY, DHCPS_SERVER_PORT);
udp_recv(pcb_dhcps, S_handle_dhcp, this);
Expand Down Expand Up @@ -1060,7 +1057,7 @@ void DhcpServer::stop ()
pnode = pback_node->pnext;
node_remove_from_list(&plist, pback_node);
dhcp_node = (struct dhcps_pool*)pback_node->pnode;
//wifi_softap_dhcps_client_leave(dhcp_node->mac,&dhcp_node->ip,true); // force to delete
//dhcps_client_leave(dhcp_node->mac,&dhcp_node->ip,true); // force to delete
wifi_softap_set_station_info(dhcp_node->mac, &ip_zero);
free(pback_node->pnode);
pback_node->pnode = nullptr;
Expand All @@ -1069,14 +1066,20 @@ void DhcpServer::stop ()
}
}

bool DhcpServer::started ()
{
return !!_netif->state;
}


/******************************************************************************
FunctionName : wifi_softap_set_dhcps_lease
FunctionName : set_dhcps_lease
Description : set the lease information of DHCP server
Parameters : please -- Additional argument to set the lease information,
Little-Endian.
Returns : true or false
*******************************************************************************/
bool DhcpServer::wifi_softap_set_dhcps_lease(struct dhcps_lease *please)
bool DhcpServer::set_dhcps_lease(struct dhcps_lease *please)
{
struct ip_info info;
uint32 softap_ip = 0;
Expand All @@ -1090,7 +1093,7 @@ bool DhcpServer::wifi_softap_set_dhcps_lease(struct dhcps_lease *please)
return false;
}

if (please == nullptr || wifi_softap_dhcps_status() == DHCP_STARTED)
if (please == nullptr || started())
{
return false;
}
Expand Down Expand Up @@ -1134,13 +1137,13 @@ bool DhcpServer::wifi_softap_set_dhcps_lease(struct dhcps_lease *please)
}

/******************************************************************************
FunctionName : wifi_softap_get_dhcps_lease
FunctionName : get_dhcps_lease
Description : get the lease information of DHCP server
Parameters : please -- Additional argument to get the lease information,
Little-Endian.
Returns : true or false
*******************************************************************************/
bool DhcpServer::wifi_softap_get_dhcps_lease(struct dhcps_lease *please)
bool DhcpServer::get_dhcps_lease(struct dhcps_lease *please)
{
uint8 opmode = wifi_get_opmode();

Expand All @@ -1157,21 +1160,21 @@ bool DhcpServer::wifi_softap_get_dhcps_lease(struct dhcps_lease *please)
// if (dhcps_lease_flag){
if (dhcps_lease.enable == false)
{
if (wifi_softap_dhcps_status() == DHCP_STOPPED)
if (started())
{
return false;
}
}
else
{
// bzero(please, sizeof(dhcps_lease));
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why the else with commented code?

// if (wifi_softap_dhcps_status() == DHCP_STOPPED){
// if (!started()){
// please->start_ip.addr = htonl(dhcps_lease.start_ip.addr);
// please->end_ip.addr = htonl(dhcps_lease.end_ip.addr);
// }
}

// if (wifi_softap_dhcps_status() == DHCP_STARTED){
// if (started()){
// bzero(please, sizeof(dhcps_lease));
// please->start_ip.addr = dhcps_lease.start_ip.addr;
// please->end_ip.addr = dhcps_lease.end_ip.addr;
Expand Down Expand Up @@ -1246,11 +1249,11 @@ void DhcpServer::dhcps_coarse_tmr(void)
}
}

bool DhcpServer::wifi_softap_set_dhcps_offer_option(uint8 level, void* optarg)
bool DhcpServer::set_dhcps_offer_option(uint8 level, void* optarg)
{
bool offer_flag = true;
//uint8 option = 0;
if (optarg == nullptr && wifi_softap_dhcps_status() == false)
if (optarg == nullptr && !started())
{
return false;
}
Expand All @@ -1273,7 +1276,7 @@ bool DhcpServer::wifi_softap_set_dhcps_offer_option(uint8 level, void* optarg)
return offer_flag;
}

bool DhcpServer::wifi_softap_set_dhcps_lease_time(uint32 minute)
bool DhcpServer::set_dhcps_lease_time(uint32 minute)
{
uint8 opmode = wifi_get_opmode();

Expand All @@ -1282,7 +1285,7 @@ bool DhcpServer::wifi_softap_set_dhcps_lease_time(uint32 minute)
return false;
}

if (wifi_softap_dhcps_status() == DHCP_STARTED)
if (started())
{
return false;
}
Expand All @@ -1295,7 +1298,7 @@ bool DhcpServer::wifi_softap_set_dhcps_lease_time(uint32 minute)
return true;
}

bool DhcpServer::wifi_softap_reset_dhcps_lease_time(void)
bool DhcpServer::reset_dhcps_lease_time(void)
{
uint8 opmode = wifi_get_opmode();

Expand All @@ -1304,20 +1307,20 @@ bool DhcpServer::wifi_softap_reset_dhcps_lease_time(void)
return false;
}

if (wifi_softap_dhcps_status() == DHCP_STARTED)
if (started())
{
return false;
}
dhcps_lease_time = DHCPS_LEASE_TIME_DEF;
return true;
}

uint32 DhcpServer::wifi_softap_get_dhcps_lease_time(void) // minute
uint32 DhcpServer::get_dhcps_lease_time(void) // minute
{
return dhcps_lease_time;
}

void DhcpServer::wifi_softap_dhcps_client_leave(u8 *bssid, struct ipv4_addr *ip, bool force)
void DhcpServer::dhcps_client_leave(u8 *bssid, struct ipv4_addr *ip, bool force)
{
struct dhcps_pool *pdhcps_pool = nullptr;
list_node *pback_node = nullptr;
Expand Down Expand Up @@ -1363,7 +1366,7 @@ void DhcpServer::wifi_softap_dhcps_client_leave(u8 *bssid, struct ipv4_addr *ip,
}
}

uint32 DhcpServer::wifi_softap_dhcps_client_update(u8 *bssid, struct ipv4_addr *ip)
uint32 DhcpServer::dhcps_client_update(u8 *bssid, struct ipv4_addr *ip)
{
struct dhcps_pool *pdhcps_pool = nullptr;
list_node *pback_node = nullptr;
Expand Down
22 changes: 12 additions & 10 deletions cores/esp8266/lwIPDhcpServer.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,15 @@ class DhcpServer
void start (struct ip_info *info);
void stop ();

void wifi_softap_init_dhcps_lease(uint32 ip);
bool wifi_softap_set_dhcps_lease(struct dhcps_lease *please);
bool wifi_softap_get_dhcps_lease(struct dhcps_lease *please);
bool wifi_softap_set_dhcps_offer_option(uint8 level, void* optarg);
bool wifi_softap_set_dhcps_lease_time(uint32 minute);
bool wifi_softap_reset_dhcps_lease_time(void);
uint32 wifi_softap_get_dhcps_lease_time(void);
void init_dhcps_lease(uint32 ip);
bool set_dhcps_lease(struct dhcps_lease *please);
bool get_dhcps_lease(struct dhcps_lease *please);
bool set_dhcps_offer_option(uint8 level, 10000 void* optarg);
bool set_dhcps_lease_time(uint32 minute);
bool reset_dhcps_lease_time(void);
uint32 get_dhcps_lease_time(void);

bool started ();

protected:

Expand All @@ -35,7 +37,7 @@ class DhcpServer
void dhcps_set_dns(int num, const ipv4_addr_t* dns);
void node_insert_to_list(list_node **phead, list_node* pinsert);
void node_remove_from_list(list_node **phead, list_node* pdelete);
bool wifi_softap_add_dhcps_lease(uint8 *macaddr);
bool add_dhcps_lease(uint8 *macaddr);
uint8_t* add_msg_type(uint8_t *optptr, uint8_t type);
uint8_t* add_offer_options(uint8_t *optptr);
uint8_t* add_end(uint8_t *optptr);
Expand All @@ -57,8 +59,8 @@ class DhcpServer
uint16_t port);
void kill_oldest_dhcps_pool(void);
void dhcps_coarse_tmr(void);
void wifi_softap_dhcps_client_leave(u8 *bssid, struct ipv4_addr *ip, bool force);
uint32 wifi_softap_dhcps_client_update(u8 *bssid, struct ipv4_addr *ip);
void dhcps_client_leave(u8 *bssid, struct ipv4_addr *ip, bool force);
uint32 dhcps_client_update(u8 *bssid, struct ipv4_addr *ip);

netif* _netif;

Expand Down
6 changes: 3 additions & 3 deletions libraries/ESP8266WiFi/src/ESP8266WiFiAP.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -238,19 +238,19 @@ bool ESP8266WiFiAPClass::softAPConfig(IPAddress local_ip, IPAddress gateway, IPA
dhcp_lease.end_ip.addr = ip.v4();
DEBUG_WIFI("[APConfig] DHCP IP end: %s\n", ip.toString().c_str());

if(!dhcpSoftAP.wifi_softap_set_dhcps_lease(&dhcp_lease)) {
if(!dhcpSoftAP.set_dhcps_lease(&dhcp_lease)) {
DEBUG_WIFI("[APConfig] wifi_set_ip_info failed!\n");
ret = false;
}

// set lease time to 720min --> 12h
if(!dhcpSoftAP.wifi_softap_set_dhcps_lease_time(720)) {
if(!dhcpSoftAP.set_dhcps_lease_time(720)) {
DEBUG_WIFI("[APConfig] wifi_softap_set_dhcps_lease_time failed!\n");
ret = false;
}

uint8 mode = info.gw.addr ? 1 : 0;
if(!dhcpSoftAP.wifi_softap_set_dhcps_offer_option(OFFER_ROUTER, &mode)) {
if(!dhcpSoftAP.set_dhcps_offer_option(OFFER_ROUTER, &mode)) {
DEBUG_WIFI("[APConfig] wifi_softap_set_dhcps_offer_option failed!\n");
ret = false;
}
Expand Down
0