aboutsummaryrefslogtreecommitdiff
path: root/embassy-net/src/config/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'embassy-net/src/config/mod.rs')
-rw-r--r--embassy-net/src/config/mod.rs38
1 files changed, 38 insertions, 0 deletions
diff --git a/embassy-net/src/config/mod.rs b/embassy-net/src/config/mod.rs
new file mode 100644
index 000000000..16470f7e6
--- /dev/null
+++ b/embassy-net/src/config/mod.rs
@@ -0,0 +1,38 @@
1use heapless::consts::*;
2use heapless::Vec;
3use smoltcp::time::Instant;
4use smoltcp::wire::{Ipv4Address, Ipv4Cidr};
5
6use crate::fmt::*;
7use crate::{Interface, SocketSet};
8
9mod statik;
10pub use statik::StaticConfigurator;
11
12#[cfg(feature = "dhcpv4")]
13mod dhcp;
14#[cfg(feature = "dhcpv4")]
15pub use dhcp::DhcpConfigurator;
16
17/// Return value for the `Configurator::poll` function
18#[derive(Debug, Clone)]
19pub enum Event {
20 /// No change has occured to the configuration.
21 NoChange,
22 /// Configuration has been lost (for example, DHCP lease has expired)
23 Deconfigured,
24 /// Configuration has been newly acquired, or modified.
25 Configured(Config),
26}
27
28#[derive(Debug, Clone, PartialEq, Eq)]
29pub struct Config {
30 pub address: Ipv4Cidr,
31 pub gateway: Option<Ipv4Address>,
32 pub dns_servers: Vec<Ipv4Address, U3>,
33}
34
35pub trait Configurator {
36 fn poll(&mut self, iface: &mut Interface, sockets: &mut SocketSet, timestamp: Instant)
37 -> Event;
38}