This commit is contained in:
Luna Yao
2026-04-06 11:54:50 +02:00
parent 7c895c401b
commit b6afe6305a
3 changed files with 15 additions and 30 deletions
+6 -6
View File
@@ -1,10 +1,10 @@
use hickory_proto::rr::Record;
use hickory_proto::serialize::binary::BinEncoder;
use hickory_server::authority::MessageResponse;
use hickory_server::server::{ResponseHandler, ResponseInfo};
use parking_lot::Mutex;
use std::io; use std::io;
use std::sync::Arc; use std::sync::Arc;
use hickory_proto::rr::Record;
use parking_lot::Mutex;
use hickory_server::server::{ResponseHandler, ResponseInfo};
use hickory_server::authority::MessageResponse;
use hickory_proto::serialize::binary::BinEncoder;
// ResponseWrapper for serializing DNS responses into a byte buffer. // ResponseWrapper for serializing DNS responses into a byte buffer.
// Used by the address hijacking NIC packet filter to produce DNS replies in-place. // Used by the address hijacking NIC packet filter to produce DNS replies in-place.
@@ -55,4 +55,4 @@ impl ResponseHandler for ResponseHandle {
.destructive_emit(&mut encoder) .destructive_emit(&mut encoder)
.map_err(io::Error::other) .map_err(io::Error::other)
} }
} }
+6 -23
View File
@@ -194,7 +194,6 @@ mod tests {
use super::*; use super::*;
use crate::common::log; use crate::common::log;
use crate::dns::config::DnsConfig; use crate::dns::config::DnsConfig;
use crate::dns::server::DynamicCatalog;
use crate::dns::utils::response::ResponseHandle; use crate::dns::utils::response::ResponseHandle;
use hickory_client::client::{Client, ClientHandle}; use hickory_client::client::{Client, ClientHandle};
use hickory_proto::op::{Message, MessageType, OpCode, Query, ResponseCode}; use hickory_proto::op::{Message, MessageType, OpCode, Query, ResponseCode};
@@ -203,7 +202,7 @@ mod tests {
use hickory_proto::serialize::binary::{BinDecodable, BinEncodable, BinEncoder}; use hickory_proto::serialize::binary::{BinDecodable, BinEncodable, BinEncoder};
use hickory_proto::udp::UdpClientStream; use hickory_proto::udp::UdpClientStream;
use hickory_proto::xfer::Protocol; use hickory_proto::xfer::Protocol;
use hickory_server::authority::MessageRequest; use hickory_server::authority::{Catalog, MessageRequest};
use hickory_server::server::Request; use hickory_server::server::Request;
use hickory_server::ServerFuture; use hickory_server::ServerFuture;
use std::net::{Ipv4Addr, SocketAddrV4}; use std::net::{Ipv4Addr, SocketAddrV4};
@@ -259,7 +258,7 @@ mod tests {
async fn test_config() -> anyhow::Result<()> { async fn test_config() -> anyhow::Result<()> {
log::tests::init(); log::tests::init();
let catalog = DynamicCatalog::new(); let mut catalog = Catalog::new();
let sep = "=".repeat(80); let sep = "=".repeat(80);
let config = toml::from_str::<DnsConfig>(CONFIG)?; let config = toml::from_str::<DnsConfig>(CONFIG)?;
@@ -280,11 +279,7 @@ mod tests {
let mut authorities = Vec::new(); let mut authorities = Vec::new();
authorities.extend(zone.create_memory_authority().into_iter()); authorities.extend(zone.create_memory_authority().into_iter());
authorities.extend(zone.create_forward_authority().into_iter()); authorities.extend(zone.create_forward_authority().into_iter());
catalog catalog.upsert(zone.origin.clone().into(), authorities);
.inner
.write()
.await
.upsert(zone.origin.clone().into(), authorities);
let mut record = Record::update0(zone.origin.clone().into(), 60, RecordType::A); let mut record = Record::update0(zone.origin.clone().into(), 60, RecordType::A);
record.set_data(RData::A(rdata::a::A("100.100.100.100".parse()?))); record.set_data(RData::A(rdata::a::A("100.100.100.100".parse()?)));
@@ -346,21 +341,14 @@ mod tests {
let mut authorities = Vec::new(); let mut authorities = Vec::new();
authorities.extend(zone.create_memory_authority().into_iter()); authorities.extend(zone.create_memory_authority().into_iter());
authorities.extend(zone.create_forward_authority().into_iter()); authorities.extend(zone.create_forward_authority().into_iter());
catalog catalog.upsert(zone.origin.clone().into(), authorities);
.inner
.write()
.await
.upsert(zone.origin.clone().into(), authorities);
let mut query = Message::new(); let mut query = Message::new();
query.set_id(0x1234); query.set_id(0x1234);
query.set_message_type(MessageType::Query); query.set_message_type(MessageType::Query);
query.set_op_code(OpCode::Query); query.set_op_code(OpCode::Query);
query.set_recursion_desired(true); query.set_recursion_desired(true);
query.add_query(Query::query( query.add_query(Query::query(Name::from_ascii("et.top.")?, RecordType::A));
Name::from_ascii("et.top.")?,
RecordType::A,
));
let mut request = Vec::new(); let mut request = Vec::new();
let mut encoder = BinEncoder::new(&mut request); let mut encoder = BinEncoder::new(&mut request);
@@ -373,12 +361,7 @@ mod tests {
); );
let response = ResponseHandle::new(512); let response = ResponseHandle::new(512);
let info = catalog let info = catalog.lookup(&request, None, response.clone()).await;
.inner
.read()
.await
.lookup(&request, None, response.clone())
.await;
assert_eq!(info.response_code(), ResponseCode::NoError); assert_eq!(info.response_code(), ResponseCode::NoError);
+3 -1
View File
@@ -492,7 +492,9 @@ impl NetworkConfig {
.parse() .parse()
.with_context(|| format!("failed to parse instance id: {:?}", self.instance_id))?, .with_context(|| format!("failed to parse instance id: {:?}", self.instance_id))?,
); );
if let Some(n) = self.hostname.as_ref() { cfg.set_hostname(n) } if let Some(n) = self.hostname.as_ref() {
cfg.set_hostname(n)
}
cfg.set_dhcp(self.dhcp.unwrap_or_default()); cfg.set_dhcp(self.dhcp.unwrap_or_default());
cfg.set_inst_name(self.network_name.clone().unwrap_or_default()); cfg.set_inst_name(self.network_name.clone().unwrap_or_default());