mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
lwip/dhcps: Cleanup internal lwip and esp-netif dependency
This commit is contained in:
parent
aab535fe4a
commit
bab051f450
@ -1,16 +1,8 @@
|
||||
// Copyright 2015-2019 Espressif Systems (Shanghai) PTE LTD
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2015-2022 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#ifndef _ESP_NETIF_NET_STACK_H_
|
||||
#define _ESP_NETIF_NET_STACK_H_
|
||||
|
@ -12,7 +12,6 @@
|
||||
#include "lwip/udp.h"
|
||||
#include "lwip/mem.h"
|
||||
#include "lwip/ip_addr.h"
|
||||
#include "esp_netif.h"
|
||||
|
||||
#include "dhcpserver/dhcpserver.h"
|
||||
#include "dhcpserver/dhcpserver_options.h"
|
||||
@ -69,11 +68,16 @@ typedef struct _list_node {
|
||||
struct _list_node *pnext;
|
||||
} list_node;
|
||||
|
||||
typedef struct {
|
||||
ip4_addr_t ip;
|
||||
ip4_addr_t netmask;
|
||||
ip4_addr_t gw;
|
||||
} ip_info_t;
|
||||
////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
static const u32_t magic_cookie = 0x63538263;
|
||||
|
||||
static struct netif *dhcps_netif = NULL;
|
||||
static struct netif *dhcps_netif = NULL;
|
||||
static ip4_addr_t broadcast_dhcps;
|
||||
static ip4_addr_t server_address;
|
||||
static ip4_addr_t dns_server = {0};
|
||||
@ -95,6 +99,16 @@ static dhcps_time_t dhcps_lease_time = DHCPS_LEASE_TIME_DEF; //minute
|
||||
static dhcps_offer_t dhcps_offer = 0xFF;
|
||||
static dhcps_offer_t dhcps_dns = 0x00;
|
||||
static dhcps_cb_t dhcps_cb;
|
||||
static struct udp_pcb *dhcps_pcb = NULL;
|
||||
|
||||
static void get_ip_info(struct netif * netif, ip_info_t *ip_info)
|
||||
{
|
||||
if (netif != NULL && netif_is_up(netif)) {
|
||||
ip4_addr_set(&ip_info->ip, ip_2_ip4(&netif->ip_addr));
|
||||
ip4_addr_set(&ip_info->netmask, ip_2_ip4(&netif->netmask));
|
||||
ip4_addr_set(&ip_info->gw, ip_2_ip4(&netif->gw));
|
||||
}
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
* FunctionName : dhcps_option_info
|
||||
@ -328,9 +342,8 @@ static u8_t *add_offer_options(u8_t *optptr)
|
||||
*optptr++ = ip4_addr4(&ipadd);
|
||||
|
||||
if (dhcps_router_enabled(dhcps_offer)) {
|
||||
esp_netif_ip_info_t if_ip;
|
||||
memset(&if_ip , 0x00, sizeof(esp_netif_ip_info_t));
|
||||
esp_netif_get_ip_info(dhcps_netif->state, &if_ip);
|
||||
ip_info_t if_ip = { 0 };
|
||||
get_ip_info(dhcps_netif, &if_ip);
|
||||
|
||||
ip4_addr_t* gw_ip = (ip4_addr_t*)&if_ip.gw;
|
||||
|
||||
@ -520,12 +533,11 @@ static void send_offer(struct dhcps_msg *m, u16_t len)
|
||||
|
||||
ip_addr_t ip_temp = IPADDR4_INIT(0x0);
|
||||
ip4_addr_set(ip_2_ip4(&ip_temp), &broadcast_dhcps);
|
||||
struct udp_pcb *pcb_dhcps = dhcps_netif->dhcps_pcb;
|
||||
#if DHCPS_DEBUG
|
||||
SendOffer_err_t = udp_sendto(pcb_dhcps, p, &ip_temp, DHCPS_CLIENT_PORT);
|
||||
DHCPS_LOG("dhcps: send_offer>>udp_sendto result %x\n", SendOffer_err_t);
|
||||
#else
|
||||
udp_sendto(pcb_dhcps, p, &ip_temp, DHCPS_CLIENT_PORT);
|
||||
udp_sendto(dhcps_pcb, p, &ip_temp, DHCPS_CLIENT_PORT);
|
||||
#endif
|
||||
|
||||
if (p->ref != 0) {
|
||||
@ -598,12 +610,11 @@ static void send_nak(struct dhcps_msg *m, u16_t len)
|
||||
|
||||
ip_addr_t ip_temp = IPADDR4_INIT(0x0);
|
||||
ip4_addr_set(ip_2_ip4(&ip_temp), &broadcast_dhcps);
|
||||
struct udp_pcb *pcb_dhcps = dhcps_netif->dhcps_pcb;
|
||||
#if DHCPS_DEBUG
|
||||
SendNak_err_t = udp_sendto(pcb_dhcps, p, &ip_temp, DHCPS_CLIENT_PORT);
|
||||
DHCPS_LOG("dhcps: send_nak>>udp_sendto result %x\n", SendNak_err_t);
|
||||
#else
|
||||
udp_sendto(pcb_dhcps, p, &ip_temp, DHCPS_CLIENT_PORT);
|
||||
udp_sendto(dhcps_pcb, p, &ip_temp, DHCPS_CLIENT_PORT);
|
||||
#endif
|
||||
|
||||
if (p->ref != 0) {
|
||||
@ -675,8 +686,7 @@ static void send_ack(struct dhcps_msg *m, u16_t len)
|
||||
|
||||
ip_addr_t ip_temp = IPADDR4_INIT(0x0);
|
||||
ip4_addr_set(ip_2_ip4(&ip_temp), &broadcast_dhcps);
|
||||
struct udp_pcb *pcb_dhcps = dhcps_netif->dhcps_pcb;
|
||||
SendAck_err_t = udp_sendto(pcb_dhcps, p, &ip_temp, DHCPS_CLIENT_PORT);
|
||||
SendAck_err_t = udp_sendto(dhcps_pcb, p, &ip_temp, DHCPS_CLIENT_PORT);
|
||||
#if DHCPS_DEBUG
|
||||
DHCPS_LOG("dhcps: send_ack>>udp_sendto result %x\n", SendAck_err_t);
|
||||
#endif
|
||||
@ -1140,20 +1150,16 @@ void dhcps_set_new_lease_cb(dhcps_cb_t cb)
|
||||
void dhcps_start(struct netif *netif, ip4_addr_t ip)
|
||||
{
|
||||
dhcps_netif = netif;
|
||||
|
||||
if (dhcps_netif->dhcps_pcb != NULL) {
|
||||
udp_remove(dhcps_netif->dhcps_pcb);
|
||||
if (dhcps_pcb != NULL) {
|
||||
udp_remove(dhcps_pcb);
|
||||
}
|
||||
|
||||
dhcps_netif->dhcps_pcb = udp_new();
|
||||
struct udp_pcb *pcb_dhcps = dhcps_netif->dhcps_pcb;
|
||||
dhcps_pcb = udp_new();
|
||||
|
||||
if (pcb_dhcps == NULL || ip4_addr_isany_val(ip)) {
|
||||
if (dhcps_pcb == NULL || ip4_addr_isany_val(ip)) {
|
||||
printf("dhcps_start(): could not obtain pcb\n");
|
||||
}
|
||||
|
||||
dhcps_netif->dhcps_pcb = pcb_dhcps;
|
||||
|
||||
IP4_ADDR(&broadcast_dhcps, 255, 255, 255, 255);
|
||||
|
||||
server_address.addr = ip.addr;
|
||||
@ -1161,8 +1167,8 @@ void dhcps_start(struct netif *netif, ip4_addr_t ip)
|
||||
|
||||
client_address_plus.addr = dhcps_poll.start_ip.addr;
|
||||
|
||||
udp_bind(pcb_dhcps, &netif->ip_addr, DHCPS_SERVER_PORT);
|
||||
udp_recv(pcb_dhcps, handle_dhcp, NULL);
|
||||
udp_bind(dhcps_pcb, &netif->ip_addr, DHCPS_SERVER_PORT);
|
||||
udp_recv(dhcps_pcb, handle_dhcp, NULL);
|
||||
#if DHCPS_DEBUG
|
||||
DHCPS_LOG("dhcps:dhcps_start->udp_recv function Set a receive callback handle_dhcp for UDP_PCB pcb_dhcps\n");
|
||||
#endif
|
||||
@ -1177,17 +1183,15 @@ void dhcps_start(struct netif *netif, ip4_addr_t ip)
|
||||
*******************************************************************************/
|
||||
void dhcps_stop(struct netif *netif)
|
||||
{
|
||||
struct netif *apnetif = netif;
|
||||
|
||||
if (apnetif == NULL) {
|
||||
printf("dhcps_stop: apnetif == NULL\n");
|
||||
if (netif == NULL || dhcps_netif != netif->state) {
|
||||
printf("dhcps_stop: netif is NULL or invalid\n");
|
||||
return;
|
||||
}
|
||||
|
||||
if (apnetif->dhcps_pcb != NULL) {
|
||||
udp_disconnect(apnetif->dhcps_pcb);
|
||||
udp_remove(apnetif->dhcps_pcb);
|
||||
apnetif->dhcps_pcb = NULL;
|
||||
if (dhcps_pcb != NULL) {
|
||||
udp_disconnect(dhcps_pcb);
|
||||
udp_remove(dhcps_pcb);
|
||||
dhcps_pcb = NULL;
|
||||
}
|
||||
|
||||
list_node *pnode = NULL;
|
||||
|
@ -482,7 +482,6 @@ components/esp_local_ctrl/src/esp_local_ctrl_handler.c
|
||||
components/esp_local_ctrl/src/esp_local_ctrl_priv.h
|
||||
components/esp_local_ctrl/src/esp_local_ctrl_transport_ble.c
|
||||
components/esp_local_ctrl/src/esp_local_ctrl_transport_httpd.c
|
||||
components/esp_netif/include/esp_netif_net_stack.h
|
||||
components/esp_netif/include/esp_netif_ppp.h
|
||||
components/esp_netif/include/esp_netif_slip.h
|
||||
components/esp_netif/include/esp_netif_sta_list.h
|
||||
|
Loading…
Reference in New Issue
Block a user