restore: networking stack files from reflog (Phases 1-6)

Recovered from reflog commits 1c80937e and d0ecc067 after force-push data loss.
Includes: filter/, icmp_error.rs, slaac.rs, bond.rs, bridge.rs, gre.rs, ipip.rs,
qdisc.rs, tun.rs, vlan.rs, vxlan.rs, netfilter.rs, tun.rs, conntrack.rs, nat.rs,
rule.rs, table.rs, redbear-ufw/, dhcpv6d/, netdiag/ — 39 files total.
This commit is contained in:
Red Bear OS
2026-07-08 13:27:49 +03:00
parent 4506bfe02a
commit bb3e36e4e0
40 changed files with 6042 additions and 467 deletions
+23 -1
View File
@@ -13,11 +13,14 @@ use smoltcp::wire::EthernetAddress;
mod buffer_pool;
mod error;
mod filter;
mod icmp_error;
mod link;
mod logger;
mod port_set;
mod router;
mod scheme;
mod slaac;
fn get_network_adapter() -> Result<String> {
use std::fs;
@@ -82,6 +85,14 @@ fn run(daemon: daemon::Daemon) -> Result<()> {
let netcfg_fd =
Socket::nonblock().map_err(|e| anyhow!("failed to open netcfg scheme socket {:?}", e))?;
trace!("opening netfilter scheme socket");
let netfilter_fd =
Socket::nonblock().map_err(|e| anyhow!("failed to open netfilter scheme socket: {:?}", e))?;
trace!("opening tun scheme socket");
let tun_fd =
Socket::nonblock().map_err(|e| anyhow!("failed to open tun scheme socket: {:?}", e))?;
let time_path = format!("/scheme/time/{}", syscall::CLOCK_MONOTONIC);
let time_fd = Fd::open(&time_path, O_RDWR, 0).context("failed to open /scheme/time")?;
@@ -94,6 +105,7 @@ fn run(daemon: daemon::Daemon) -> Result<()> {
TcpScheme,
IcmpScheme,
NetcfgScheme,
NetfilterScheme,
}
}
@@ -146,6 +158,14 @@ fn run(daemon: daemon::Daemon) -> Result<()> {
)
.map_err(|e| anyhow!("failed to listen to netcfg scheme events: {:?}", e))?;
event_queue
.subscribe(
netfilter_fd.inner().raw(),
EventSource::NetfilterScheme,
EventFlags::READ,
)
.map_err(|e| anyhow!("failed to listen to netfilter scheme events: {:?}", e))?;
let mut smolnetd = Smolnetd::new(
network_fd,
hardware_addr,
@@ -155,6 +175,7 @@ fn run(daemon: daemon::Daemon) -> Result<()> {
icmp_fd,
time_fd,
netcfg_fd,
netfilter_fd,
)
.context("smolnetd: failed to initialize smolnetd")?;
@@ -162,7 +183,7 @@ fn run(daemon: daemon::Daemon) -> Result<()> {
let all = {
use EventSource::*;
[Network, Time, IpScheme, UdpScheme, IcmpScheme, NetcfgScheme].map(Ok)
[Network, Time, IpScheme, UdpScheme, IcmpScheme, NetcfgScheme, NetfilterScheme].map(Ok)
};
for event_res in all
@@ -177,6 +198,7 @@ fn run(daemon: daemon::Daemon) -> Result<()> {
EventSource::TcpScheme => smolnetd.on_tcp_scheme_event(),
EventSource::IcmpScheme => smolnetd.on_icmp_scheme_event(),
EventSource::NetcfgScheme => smolnetd.on_netcfg_scheme_event(),
EventSource::NetfilterScheme => smolnetd.on_netfilter_scheme_event(),
}
.map_err(|e| error!("Received packet error: {:?}", e));
}