Updating NAL to support TCP port randomization

master
Ryan Summers 2021-04-08 15:28:11 +02:00
parent c24eb17d1e
commit 1b4d31dbd9
3 changed files with 27 additions and 8 deletions

9
Cargo.lock generated
View File

@ -437,6 +437,12 @@ dependencies = [
"heapless 0.6.1",
]
[[package]]
name = "nanorand"
version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ac1378b66f7c93a1c0f8464a19bf47df8795083842e5090f4b7305973d5a22d0"
[[package]]
name = "nb"
version = "0.1.3"
@ -710,10 +716,11 @@ dependencies = [
[[package]]
name = "smoltcp-nal"
version = "0.1.0"
source = "git+https://github.com/quartiq/smoltcp-nal.git?rev=7572183#757218316620e074405bc38ff5502ef17a8a3499"
source = "git+https://github.com/quartiq/smoltcp-nal.git?branch=feature/random-port#462adc56a8cc95bc1324f6d96fdbe82e85ca6d36"
dependencies = [
"embedded-nal",
"heapless 0.6.1",
"nanorand",
"smoltcp",
]

View File

@ -60,7 +60,7 @@ rev = "314fa5587d"
[dependencies.smoltcp-nal]
git = "https://github.com/quartiq/smoltcp-nal.git"
rev = "7572183"
branch = "feature/random-port"
[patch.crates-io.minimq]
git = "https://github.com/quartiq/minimq.git"

View File

@ -594,13 +594,25 @@ pub fn setup(
)
};
let random_seed = {
let mut rng =
device.RNG.constrain(ccdr.peripheral.RNG, &ccdr.clocks);
let mut data = [0u8; 4];
rng.fill(&mut data).unwrap();
data
};
let mut stack = smoltcp_nal::NetworkStack::new(
interface,
sockets,
&handles,
Some(dhcp_client),
);
stack.seed_random_port(&random_seed);
NetworkDevices {
stack: smoltcp_nal::NetworkStack::new(
interface,
sockets,
&handles,
Some(dhcp_client),
),
stack,
phy: lan8742a,
}
};