|
| 1 | +use core::str::FromStr; |
1 | 2 | #[cfg(feature = "async")] |
2 | 3 | use core::task::Waker; |
3 | 4 |
|
| 5 | +use crate::config::DHCP_MAX_DOMAIN_NAME_SIZE; |
4 | 6 | use crate::iface::Context; |
5 | 7 | use crate::time::{Duration, Instant}; |
6 | 8 | use crate::wire::dhcpv4::field as dhcpv4_field; |
7 | 9 | use crate::wire::{ |
8 | 10 | DhcpMessageType, DhcpPacket, DhcpRepr, IpAddress, IpProtocol, Ipv4Address, Ipv4Cidr, Ipv4Repr, |
9 | | - UdpRepr, DHCP_CLIENT_PORT, DHCP_MAX_DNS_SERVER_COUNT, DHCP_MAX_DOMAIN_NAME_LEN, |
10 | | - DHCP_SERVER_PORT, UDP_HEADER_LEN, |
| 11 | + UdpRepr, DHCP_CLIENT_PORT, DHCP_MAX_DNS_SERVER_COUNT, DHCP_SERVER_PORT, UDP_HEADER_LEN, |
11 | 12 | }; |
12 | 13 | use crate::wire::{DhcpOption, HardwareAddress}; |
13 | 14 | use heapless::{String, Vec}; |
@@ -41,7 +42,7 @@ pub struct Config<'a> { |
41 | 42 | /// DNS servers |
42 | 43 | pub dns_servers: Vec<Ipv4Address, DHCP_MAX_DNS_SERVER_COUNT>, |
43 | 44 | /// Domain name |
44 | | - pub domain_name: Option<String<DHCP_MAX_DOMAIN_NAME_LEN>>, |
| 45 | + pub domain_name: Option<String<DHCP_MAX_DOMAIN_NAME_SIZE>>, |
45 | 46 | /// Received DHCP packet |
46 | 47 | pub packet: Option<DhcpPacket<&'a [u8]>>, |
47 | 48 | } |
@@ -498,7 +499,11 @@ impl<'a> Socket<'a> { |
498 | 499 | address: Ipv4Cidr::new(dhcp_repr.your_ip, prefix_len), |
499 | 500 | router: dhcp_repr.router, |
500 | 501 | dns_servers, |
501 | | - domain_name: dhcp_repr.domain_name.clone(), |
| 502 | + domain_name: dhcp_repr |
| 503 | + .domain_name |
| 504 | + .map(String::from_str) |
| 505 | + .map(Result::ok) |
| 506 | + .flatten(), |
502 | 507 | packet: None, |
503 | 508 | }; |
504 | 509 |
|
@@ -1004,7 +1009,7 @@ mod test { |
1004 | 1009 | router: Some(SERVER_IP), |
1005 | 1010 | subnet_mask: Some(MASK_24), |
1006 | 1011 | dns_servers: Some(Vec::from_slice(DNS_IPS).unwrap()), |
1007 | | - domain_name: Some(String::from_str(DOMAIN_NAME).unwrap()), |
| 1012 | + domain_name: Some(DOMAIN_NAME), |
1008 | 1013 | lease_duration: Some(1000), |
1009 | 1014 |
|
1010 | 1015 | ..DHCP_DEFAULT |
@@ -1032,7 +1037,7 @@ mod test { |
1032 | 1037 | router: Some(SERVER_IP), |
1033 | 1038 | subnet_mask: Some(MASK_24), |
1034 | 1039 | dns_servers: Some(Vec::from_slice(DNS_IPS).unwrap()), |
1035 | | - domain_name: Some(String::from_str(DOMAIN_NAME).unwrap()), |
| 1040 | + domain_name: Some(DOMAIN_NAME), |
1036 | 1041 | lease_duration: Some(1000), |
1037 | 1042 |
|
1038 | 1043 | ..DHCP_DEFAULT |
|
0 commit comments