1
0
mirror of https://github.com/esp8266/Arduino.git synced 2025-06-12 01:53:07 +03:00

DHCP custom option (#8582)

* works

* fixup! works

* back to callbacks

* names

* daisy chain

* seconds

* less inline

* fix dns setter

* might as well keep using initlist

/to d-a-v it has automatic storage, here it's the same stack based one
(just one less line for us)

* shift blame

* naming

* fix impl

* revert to ip4 dns

* merge fix

* restyle

* masking done wrong
This commit is contained in:
Max Prokhorov
2022-06-09 00:19:59 +03:00
committed by GitHub
parent 9e2103f27e
commit b7c1cfbc45
9 changed files with 328 additions and 385 deletions

View File

@ -0,0 +1,20 @@
#include <Arduino.h>
#include <ESP8266WiFi.h>
void setup() {
auto& server = WiFi.softAPDhcpServer();
server.onSendOptions([](const DhcpServer& server, auto& options) {
// VENDOR is... vendor specific
options.add(43, { 0xca, 0xfe, 0xca, 0xfe, 0xfe });
// Captive Portal URI
const IPAddress gateway = netif_ip4_addr(server.getNetif());
const String captive = F("http://") + gateway.toString();
options.add(114, captive.c_str(), captive.length());
});
WiFi.softAP("TEST", "testtesttest");
}
void loop() {
delay(100);
}

View File

@ -52,10 +52,13 @@ void setup() {
}
Serial.printf("\nSTA: %s (dns: %s / %s)\n", WiFi.localIP().toString().c_str(), WiFi.dnsIP(0).toString().c_str(), WiFi.dnsIP(1).toString().c_str());
// give DNS servers to AP side
// By default, DNS option will point to the interface IP
// Instead, point it to the real DNS server.
// Notice that:
// - DhcpServer class only supports IPv4
// - Only a single IP can be set
auto& server = WiFi.softAPDhcpServer();
server.dhcps_set_dns(0, WiFi.dnsIP(0));
server.dhcps_set_dns(1, WiFi.dnsIP(1));
server.setDns(WiFi.dnsIP(0));
WiFi.softAPConfig( // enable AP, with android-compatible google domain
IPAddress(172, 217, 28, 254), IPAddress(172, 217, 28, 254), IPAddress(255, 255, 255, 0));