mirror of
https://github.com/espressif/esp-idf
synced 2025-03-09 17:19:09 -04:00
feat(ppp): Allow config PPP DNS servers for peer
Make it possible to set the DNS servers to provide to the peer. This is useful when acting as a PPP server. If any DNS server is set, don't request a DNS server from the peer.
This commit is contained in:
parent
877057db3d
commit
f6ab11ed8f
@ -31,6 +31,8 @@ typedef struct esp_netif_ppp_config {
|
|||||||
#ifdef CONFIG_LWIP_PPP_SERVER_SUPPORT
|
#ifdef CONFIG_LWIP_PPP_SERVER_SUPPORT
|
||||||
esp_ip4_addr_t ppp_our_ip4_addr; /**< Set our preferred address, typically used when we're the PPP server */
|
esp_ip4_addr_t ppp_our_ip4_addr; /**< Set our preferred address, typically used when we're the PPP server */
|
||||||
esp_ip4_addr_t ppp_their_ip4_addr; /**< Set our preferred address, typically used when we're the PPP server */
|
esp_ip4_addr_t ppp_their_ip4_addr; /**< Set our preferred address, typically used when we're the PPP server */
|
||||||
|
esp_ip4_addr_t ppp_dns1_addr; /**< DNS to provide if peer asks for it, typically used when we're the PPP server */
|
||||||
|
esp_ip4_addr_t ppp_dns2_addr; /**< DNS to provide if peer asks for it, typically used when we're the PPP server */
|
||||||
#endif // CONFIG_LWIP_PPP_SERVER_SUPPORT
|
#endif // CONFIG_LWIP_PPP_SERVER_SUPPORT
|
||||||
} esp_netif_ppp_config_t;
|
} esp_netif_ppp_config_t;
|
||||||
|
|
||||||
|
@ -37,6 +37,8 @@ typedef struct lwip_peer2peer_ctx {
|
|||||||
#ifdef CONFIG_LWIP_PPP_SERVER_SUPPORT
|
#ifdef CONFIG_LWIP_PPP_SERVER_SUPPORT
|
||||||
esp_ip4_addr_t ppp_our_ip4_addr; // our desired IP (IPADDR_ANY if no preference)
|
esp_ip4_addr_t ppp_our_ip4_addr; // our desired IP (IPADDR_ANY if no preference)
|
||||||
esp_ip4_addr_t ppp_their_ip4_addr; // their desired IP (IPADDR_ANY if no preference)
|
esp_ip4_addr_t ppp_their_ip4_addr; // their desired IP (IPADDR_ANY if no preference)
|
||||||
|
esp_ip4_addr_t ppp_dns1_addr; // dns server 1 IP (IPADDR_ANY if no preference)
|
||||||
|
esp_ip4_addr_t ppp_dns2_addr; // dns server 2 IP (IPADDR_ANY if no preference)
|
||||||
#endif
|
#endif
|
||||||
ppp_pcb *ppp;
|
ppp_pcb *ppp;
|
||||||
} lwip_peer2peer_ctx_t;
|
} lwip_peer2peer_ctx_t;
|
||||||
@ -268,6 +270,17 @@ esp_err_t esp_netif_start_ppp(esp_netif_t *esp_netif)
|
|||||||
ppp_ctx->ppp->ipcp_wantoptions.hisaddr = ppp_ctx->ppp_their_ip4_addr.addr;
|
ppp_ctx->ppp->ipcp_wantoptions.hisaddr = ppp_ctx->ppp_their_ip4_addr.addr;
|
||||||
ppp_ctx->ppp->ipcp_wantoptions.accept_local = 1;
|
ppp_ctx->ppp->ipcp_wantoptions.accept_local = 1;
|
||||||
}
|
}
|
||||||
|
if (ppp_ctx->ppp_dns1_addr.addr != IPADDR_TYPE_ANY) {
|
||||||
|
ppp_set_ipcp_dnsaddr(ppp_ctx->ppp, 0, &ppp_ctx->ppp_dns1_addr);
|
||||||
|
}
|
||||||
|
if (ppp_ctx->ppp_dns2_addr.addr != IPADDR_TYPE_ANY) {
|
||||||
|
ppp_set_ipcp_dnsaddr(ppp_ctx->ppp, 1, &ppp_ctx->ppp_dns2_addr);
|
||||||
|
}
|
||||||
|
if (ppp_ctx->ppp_dns1_addr.addr != IPADDR_TYPE_ANY ||
|
||||||
|
ppp_ctx->ppp_dns2_addr.addr != IPADDR_TYPE_ANY) {
|
||||||
|
// No need to request DNS servers from peer when providing DNS servers.
|
||||||
|
ppp_set_usepeerdns(ppp_ctx->ppp, 0);
|
||||||
|
}
|
||||||
#endif // CONFIG_LWIP_PPP_SERVER_SUPPORT
|
#endif // CONFIG_LWIP_PPP_SERVER_SUPPORT
|
||||||
|
|
||||||
#if ESP_IPV6_AUTOCONFIG
|
#if ESP_IPV6_AUTOCONFIG
|
||||||
@ -338,6 +351,8 @@ esp_err_t esp_netif_ppp_set_params(esp_netif_t *netif, const esp_netif_ppp_confi
|
|||||||
#ifdef CONFIG_LWIP_PPP_SERVER_SUPPORT
|
#ifdef CONFIG_LWIP_PPP_SERVER_SUPPORT
|
||||||
obj->ppp_our_ip4_addr = config->ppp_our_ip4_addr;
|
obj->ppp_our_ip4_addr = config->ppp_our_ip4_addr;
|
||||||
obj->ppp_their_ip4_addr = config->ppp_their_ip4_addr;
|
obj->ppp_their_ip4_addr = config->ppp_their_ip4_addr;
|
||||||
|
obj->ppp_dns1_addr = config->ppp_dns1_addr;
|
||||||
|
obj->ppp_dns2_addr = config->ppp_dns2_addr;
|
||||||
#endif
|
#endif
|
||||||
return ESP_OK;
|
return ESP_OK;
|
||||||
}
|
}
|
||||||
@ -357,6 +372,8 @@ esp_err_t esp_netif_ppp_get_params(esp_netif_t *netif, esp_netif_ppp_config_t *c
|
|||||||
#ifdef CONFIG_LWIP_PPP_SERVER_SUPPORT
|
#ifdef CONFIG_LWIP_PPP_SERVER_SUPPORT
|
||||||
config->ppp_our_ip4_addr = obj->ppp_our_ip4_addr;
|
config->ppp_our_ip4_addr = obj->ppp_our_ip4_addr;
|
||||||
config->ppp_their_ip4_addr = obj->ppp_their_ip4_addr;
|
config->ppp_their_ip4_addr = obj->ppp_their_ip4_addr;
|
||||||
|
config->ppp_dns1_addr = obj->ppp_dns1_addr;
|
||||||
|
config->ppp_dns2_addr = obj->ppp_dns2_addr;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return ESP_OK;
|
return ESP_OK;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user