mirror of
https://github.com/espressif/ESP8266_RTOS_SDK.git
synced 2025-06-13 01:28:43 +08:00
feat(lwip): Refactor dhcpserver APIs
This commit is contained in:
components
esp8266/include
lwip
@ -82,23 +82,6 @@ void os_install_putc1(void (*p)(char c));
|
|||||||
*/
|
*/
|
||||||
void os_putc(char c);
|
void os_putc(char c);
|
||||||
|
|
||||||
enum dhcp_status {
|
|
||||||
DHCP_STOPPED, /**< disable DHCP */
|
|
||||||
DHCP_STARTED /**< enable DHCP */
|
|
||||||
};
|
|
||||||
|
|
||||||
struct dhcps_lease {
|
|
||||||
bool enable; /**< enable DHCP lease or not */
|
|
||||||
struct ip4_addr start_ip; /**< start IP of IP range */
|
|
||||||
struct ip4_addr end_ip; /**< end IP of IP range */
|
|
||||||
};
|
|
||||||
|
|
||||||
enum dhcps_offer_option {
|
|
||||||
OFFER_START = 0x00, /**< DHCP offer option start */
|
|
||||||
OFFER_ROUTER = 0x01, /**< DHCP offer router, only support this option now */
|
|
||||||
OFFER_END /**< DHCP offer option start */
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -1,90 +1,95 @@
|
|||||||
|
// Copyright 2018 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.
|
||||||
#ifndef __DHCPS_H__
|
#ifndef __DHCPS_H__
|
||||||
#define __DHCPS_H__
|
#define __DHCPS_H__
|
||||||
|
|
||||||
#define USE_DNS
|
|
||||||
|
|
||||||
#include "sdkconfig.h"
|
#include "sdkconfig.h"
|
||||||
#include "esp_wifi.h"
|
#include "lwip/ip_addr.h"
|
||||||
|
|
||||||
typedef struct dhcps_state {
|
typedef struct dhcps_state{
|
||||||
s16_t state;
|
s16_t state;
|
||||||
} dhcps_state;
|
} dhcps_state;
|
||||||
|
|
||||||
// <20><><EFBFBD><EFBFBD>dhcpclient<6E>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>DHCP msg<73>ṹ<EFBFBD><E1B9B9>
|
|
||||||
typedef struct dhcps_msg {
|
typedef struct dhcps_msg {
|
||||||
u8_t op, htype, hlen, hops;
|
u8_t op, htype, hlen, hops;
|
||||||
u8_t xid[4];
|
u8_t xid[4];
|
||||||
u16_t secs, flags;
|
u16_t secs, flags;
|
||||||
u8_t ciaddr[4];
|
u8_t ciaddr[4];
|
||||||
u8_t yiaddr[4];
|
u8_t yiaddr[4];
|
||||||
u8_t siaddr[4];
|
u8_t siaddr[4];
|
||||||
u8_t giaddr[4];
|
u8_t giaddr[4];
|
||||||
u8_t chaddr[16];
|
u8_t chaddr[16];
|
||||||
u8_t sname[64];
|
u8_t sname[64];
|
||||||
u8_t file[128];
|
u8_t file[128];
|
||||||
u8_t options[312];
|
u8_t options[312];
|
||||||
} dhcps_msg;
|
}dhcps_msg;
|
||||||
|
|
||||||
struct dhcps_pool {
|
/* Defined in esp_misc.h */
|
||||||
struct ip4_addr ip;
|
typedef struct {
|
||||||
u8_t mac[6];
|
bool enable;
|
||||||
u32_t lease_timer;
|
ip4_addr_t start_ip;
|
||||||
|
ip4_addr_t end_ip;
|
||||||
|
} dhcps_lease_t;
|
||||||
|
|
||||||
|
enum dhcps_offer_option{
|
||||||
|
OFFER_START = 0x00,
|
||||||
|
OFFER_ROUTER = 0x01,
|
||||||
|
OFFER_DNS = 0x02,
|
||||||
|
OFFER_END
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct _list_node {
|
|
||||||
void* pnode;
|
|
||||||
struct _list_node* pnext;
|
|
||||||
} list_node;
|
|
||||||
|
|
||||||
extern u32_t dhcps_lease_time;
|
|
||||||
#define DHCPS_COARSE_TIMER_SECS 1
|
#define DHCPS_COARSE_TIMER_SECS 1
|
||||||
#define DHCPS_LEASE_TIMER dhcps_lease_time //0x05A0
|
|
||||||
#define DHCPS_MAX_LEASE 0x64
|
#define DHCPS_MAX_LEASE 0x64
|
||||||
#define BOOTP_BROADCAST 0x8000
|
#define DHCPS_LEASE_TIME_DEF (120)
|
||||||
|
#define DHCPS_LEASE_UNIT CONFIG_LWIP_DHCPS_LEASE_UNIT
|
||||||
|
|
||||||
#define DHCP_REPLY 2
|
struct dhcps_pool{
|
||||||
#define DHCP_HTYPE_ETHERNET 1
|
ip4_addr_t ip;
|
||||||
#define DHCP_HLEN_ETHERNET 6
|
u8_t mac[6];
|
||||||
|
u32_t lease_timer;
|
||||||
|
};
|
||||||
|
|
||||||
#define DHCPS_SERVER_PORT 67
|
typedef u32_t dhcps_time_t;
|
||||||
#define DHCPS_CLIENT_PORT 68
|
typedef u8_t dhcps_offer_t;
|
||||||
|
|
||||||
#define DHCPDISCOVER 1
|
typedef struct {
|
||||||
#define DHCPOFFER 2
|
dhcps_offer_t dhcps_offer;
|
||||||
#define DHCPREQUEST 3
|
dhcps_offer_t dhcps_dns;
|
||||||
#define DHCPDECLINE 4
|
dhcps_time_t dhcps_time;
|
||||||
#define DHCPACK 5
|
dhcps_lease_t dhcps_poll;
|
||||||
#define DHCPNAK 6
|
} dhcps_options_t;
|
||||||
#define DHCPRELEASE 7
|
|
||||||
|
|
||||||
#define DHCP_OPTION_SUBNET_MASK 1
|
typedef void (*dhcps_cb_t)(u8_t client_ip[4]);
|
||||||
#define DHCP_OPTION_ROUTER 3
|
|
||||||
#define DHCP_OPTION_DNS_SERVER 6
|
|
||||||
#define DHCP_OPTION_REQ_IPADDR 50
|
|
||||||
#define DHCP_OPTION_LEASE_TIME 51
|
|
||||||
#define DHCP_OPTION_MSG_TYPE 53
|
|
||||||
#define DHCP_OPTION_SERVER_ID 54
|
|
||||||
#define DHCP_OPTION_INTERFACE_MTU 26
|
|
||||||
#define DHCP_OPTION_PERFORM_ROUTER_DISCOVERY 31
|
|
||||||
#define DHCP_OPTION_BROADCAST_ADDRESS 28
|
|
||||||
#define DHCP_OPTION_REQ_LIST 55
|
|
||||||
#define DHCP_OPTION_END 255
|
|
||||||
|
|
||||||
//#define USE_CLASS_B_NET 1
|
static inline bool dhcps_router_enabled (dhcps_offer_t offer)
|
||||||
#define DHCPS_DEBUG CONFIG_LWIP_DHCP_SERVER_DEBUG
|
{
|
||||||
#define MAX_STATION_NUM CONFIG_LWIP_DHCPS_MAX_STATION_NUM
|
return (offer & OFFER_ROUTER) != 0;
|
||||||
|
}
|
||||||
|
|
||||||
#define DHCPS_STATE_OFFER 1
|
static inline bool dhcps_dns_enabled (dhcps_offer_t offer)
|
||||||
#define DHCPS_STATE_DECLINE 2
|
{
|
||||||
#define DHCPS_STATE_ACK 3
|
return (offer & OFFER_DNS) != 0;
|
||||||
#define DHCPS_STATE_NAK 4
|
}
|
||||||
#define DHCPS_STATE_IDLE 5
|
|
||||||
#define DHCPS_STATE_RELEASE 6
|
|
||||||
|
|
||||||
#define dhcps_router_enabled(offer) ((offer & OFFER_ROUTER) != 0)
|
void dhcps_start(struct netif *netif, ip4_addr_t ip);
|
||||||
|
void dhcps_stop(struct netif *netif);
|
||||||
void dhcps_start(tcpip_adapter_ip_info_t* info);
|
void *dhcps_option_info(u8_t op_id, u32_t opt_len);
|
||||||
void dhcps_stop(void);
|
void dhcps_set_option_info(u8_t op_id, void *opt_info, u32_t opt_len);
|
||||||
|
bool dhcp_search_ip_on_mac(u8_t *mac, ip4_addr_t *ip);
|
||||||
|
void dhcps_dns_setserver(const ip_addr_t *dnsserver);
|
||||||
|
ip4_addr_t dhcps_dns_getserver();
|
||||||
|
void dhcps_set_new_lease_cb(dhcps_cb_t cb);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -0,0 +1,134 @@
|
|||||||
|
// Copyright 2018 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.
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
/** DHCP Options
|
||||||
|
|
||||||
|
This macros are not part of the public dhcpserver.h interface.
|
||||||
|
**/
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
/* RFC 1497 Vendor Extensions */
|
||||||
|
|
||||||
|
PAD = 0,
|
||||||
|
END = 255,
|
||||||
|
|
||||||
|
SUBNET_MASK = 1,
|
||||||
|
TIME_OFFSET = 2,
|
||||||
|
ROUTER = 3,
|
||||||
|
TIME_SERVER = 4,
|
||||||
|
NAME_SERVER = 5,
|
||||||
|
DOMAIN_NAME_SERVER = 6,
|
||||||
|
LOG_SERVER = 7,
|
||||||
|
COOKIE_SERVER = 8,
|
||||||
|
LPR_SERVER = 9,
|
||||||
|
IMPRESS_SERVER = 10,
|
||||||
|
RESOURCE_LOCATION_SERVER = 11,
|
||||||
|
HOST_NAME = 12,
|
||||||
|
BOOT_FILE_SIZE = 13,
|
||||||
|
MERIT_DUMP_FILE = 14,
|
||||||
|
DOMAIN_NAME = 15,
|
||||||
|
SWAP_SERVER = 16,
|
||||||
|
ROOT_PATH = 17,
|
||||||
|
EXTENSIONS_PATH = 18,
|
||||||
|
|
||||||
|
/* IP Layer Parameters per Host */
|
||||||
|
|
||||||
|
IP_FORWARDING = 19,
|
||||||
|
NON_LOCAL_SOURCE_ROUTING = 20,
|
||||||
|
POLICY_FILTER = 21,
|
||||||
|
MAXIMUM_DATAGRAM_REASSEMBLY_SIZE = 22,
|
||||||
|
DEFAULT_IP_TIME_TO_LIVE = 23,
|
||||||
|
PATH_MTU_AGING_TIMEOUT = 24,
|
||||||
|
PATH_MTU_PLATEAU_TABLE = 25,
|
||||||
|
|
||||||
|
/* IP Layer Parameters per Interface */
|
||||||
|
|
||||||
|
INTERFACE_MTU = 26,
|
||||||
|
ALL_SUBNETS_ARE_LOCAL = 27,
|
||||||
|
BROADCAST_ADDRESS = 28,
|
||||||
|
PERFORM_MASK_DISCOVERY = 29,
|
||||||
|
MASK_SUPPLIER = 30,
|
||||||
|
PERFORM_ROUTER_DISCOVERY = 31,
|
||||||
|
ROUTER_SOLICITATION_ADDRESS = 32,
|
||||||
|
STATIC_ROUTE = 33,
|
||||||
|
|
||||||
|
/* Link Layer Parameters per Interface */
|
||||||
|
|
||||||
|
TRAILER_ENCAPSULATION = 34,
|
||||||
|
ARP_CACHE_TIMEOUT = 35,
|
||||||
|
ETHERNET_ENCAPSULATION = 36,
|
||||||
|
|
||||||
|
/* TCP Parameters */
|
||||||
|
|
||||||
|
TCP_DEFAULT_TTL = 37,
|
||||||
|
TCP_KEEPALIVE_INTERVAL = 38,
|
||||||
|
TCP_KEEPALIVE_GARBAGE = 39,
|
||||||
|
|
||||||
|
/* Application and Service Parameters */
|
||||||
|
|
||||||
|
NETWORK_INFORMATION_SERVICE_DOMAIN = 40,
|
||||||
|
NETWORK_INFORMATION_SERVERS = 41,
|
||||||
|
NETWORK_TIME_PROTOCOL_SERVERS = 42,
|
||||||
|
VENDOR_SPECIFIC_INFORMATION = 43,
|
||||||
|
NETBIOS_OVER_TCP_IP_NAME_SERVER = 44,
|
||||||
|
NETBIOS_OVER_TCP_IP_DATAGRAM_DISTRIBUTION_SERVER = 45,
|
||||||
|
NETBIOS_OVER_TCP_IP_NODE_TYPE = 46,
|
||||||
|
NETBIOS_OVER_TCP_IP_SCOPE = 47,
|
||||||
|
X_WINDOW_SYSTEM_FONT_SERVER = 48,
|
||||||
|
X_WINDOW_SYSTEM_DISPLAY_MANAGER = 49,
|
||||||
|
NETWORK_INFORMATION_SERVICE_PLUS_DOMAIN = 64,
|
||||||
|
NETWORK_INFORMATION_SERVICE_PLUS_SERVERS = 65,
|
||||||
|
MOBILE_IP_HOME_AGENT = 68,
|
||||||
|
SMTP_SERVER = 69,
|
||||||
|
POP3_SERVER = 70,
|
||||||
|
NNTP_SERVER = 71,
|
||||||
|
DEFAULT_WWW_SERVER = 72,
|
||||||
|
DEFAULT_FINGER_SERVER = 73,
|
||||||
|
DEFAULT_IRC_SERVER = 74,
|
||||||
|
STREETTALK_SERVER = 75,
|
||||||
|
STREETTALK_DIRECTORY_ASSISTANCE_SERVER = 76,
|
||||||
|
|
||||||
|
/* DHCP Extensions */
|
||||||
|
|
||||||
|
REQUESTED_IP_ADDRESS = 50,
|
||||||
|
IP_ADDRESS_LEASE_TIME = 51,
|
||||||
|
OPTION_OVERLOAD = 52,
|
||||||
|
TFTP_SERVER_NAME = 66,
|
||||||
|
BOOTFILE_NAME = 67,
|
||||||
|
DHCP_MESSAGE_TYPE = 53,
|
||||||
|
SERVER_IDENTIFIER = 54,
|
||||||
|
PARAMETER_REQUEST_LIST = 55,
|
||||||
|
MESSAGE = 56,
|
||||||
|
MAXIMUM_DHCP_MESSAGE_SIZE = 57,
|
||||||
|
RENEWAL_T1_TIME_VALUE = 58,
|
||||||
|
REBINDING_T2_TIME_VALUE = 59,
|
||||||
|
VENDOR_CLASS_IDENTIFIER = 60,
|
||||||
|
CLIENT_IDENTIFIER = 61,
|
||||||
|
|
||||||
|
USER_CLASS = 77,
|
||||||
|
FQDN = 81,
|
||||||
|
DHCP_AGENT_OPTIONS = 82,
|
||||||
|
NDS_SERVERS = 85,
|
||||||
|
NDS_TREE_NAME = 86,
|
||||||
|
NDS_CONTEXT = 87,
|
||||||
|
CLIENT_LAST_TRANSACTION_TIME = 91,
|
||||||
|
ASSOCIATED_IP = 92,
|
||||||
|
USER_AUTHENTICATION_PROTOCOL = 98,
|
||||||
|
AUTO_CONFIGURE = 116,
|
||||||
|
NAME_SERVICE_SEARCH = 117,
|
||||||
|
SUBNET_SELECTION = 118,
|
||||||
|
DOMAIN_SEARCH = 119,
|
||||||
|
CLASSLESS_ROUTE = 121,
|
||||||
|
} dhcp_msg_option;
|
Reference in New Issue
Block a user