Red Bear OS
19199096c5
promiscuous: per-interface toggle via netcfg (ip link set promisc)
...
LinkDevice trait gains is_promiscuous() and set_promiscuous().
EthernetLink stores promiscuous flag (default: false).
Receive path bypasses MAC check when promiscuous enabled —
captures all frames regardless of destination MAC.
netcfg/ifaces/eth0/promiscuous rw:
cat /scheme/netcfg/ifaces/eth0/promiscuous → 'off' or 'on'
echo on > .../promiscuous → enable promiscuous mode
echo off > .../promiscuous → disable
Accepts: on/off/1/0/yes/no/true/false.
Mirrors Linux 'ip link set dev promisc on/off'.
Required for packet capture tools that need to see all traffic.
2026-07-08 19:03:53 +03:00
Red Bear OS
c899b42d36
arp: static ARP entry add/delete via netcfg (ip neigh add/del)
...
LinkDevice trait gains:
- add_static_neighbor(ip, mac) → Result<(), String>
- remove_neighbor(ip) → bool (true if removed)
EthernetLink implements both with permanent entries (expires_at = i64::MAX/2).
netcfg/ifaces/eth0/arp/ is now:
list → read (existing)
stats → read (existing)
flush → write (existing)
add → write NEW
del → write NEW
Usage:
echo '192.168.1.1 00:11:22:33:44:55' > /scheme/netcfg/ifaces/eth0/arp/add
echo '192.168.1.1' > /scheme/netcfg/ifaces/eth0/arp/del
echo '10.0.0.0/24 gateway-01 11:22:33:44:55:66' > /scheme/netcfg/ifaces/eth0/arp/add
Mirrors Linux 'ip neigh add' / 'ip neigh del'.
MAC format accepts both colon (00:11:22:33:44:55) and dash (00-11-22-33-44-55).
Unicast MAC validation rejects broadcast/multicast addresses.
2026-07-08 18:49:40 +03:00
Red Bear OS
82d8a049cc
stats: add rx_errors, tx_errors, rx_dropped, tx_dropped counters
...
Stats struct gains 4 new u64 fields per RFC 1213 (MIB-II):
- rx_errors: incoming packets with errors
- tx_errors: outgoing packets with errors
- rx_dropped: incoming packets dropped (buffer full, etc.)
- tx_dropped: outgoing packets dropped (qdisc dropped, buffer full)
EthernetLink tx path now increments tx_dropped when qdisc returns None
(qdisc decided to drop the packet, e.g., TokenBucket rate exceeded).
netcfg stats output now exposes all 8 counters:
rx_bytes=N rx_packets=N tx_bytes=N tx_packets=N
rx_errors=N tx_errors=N rx_dropped=N tx_dropped=N
mtu=N link=up
Aggregate fields work for bridge/bond via existing sum logic.
2026-07-08 18:35:22 +03:00
Red Bear OS
f3c18f410c
qdisc: configure traffic shaping type via netcfg
...
LinkDevice trait gains set_qdisc(kind) — Result<(), String>.
EthernetLink supports three kinds:
'none' / unset → QdiscConfig::None
'token_bucket' / 'tbf' → 1 Mbps rate, 1500 byte burst
'priority_queue' / 'pfifo_fast' → 1000 packet max
netcfg/ifaces/eth0/qdisc becomes rw:
cat /scheme/netcfg/ifaces/eth0/qdisc # current config
echo token_bucket > .../qdisc
echo priority_queue > .../qdisc
echo none > .../qdisc (default)
Mirrors Linux 'tc qdisc add/replace' for basic shaping.
TokenBucket rate/burst defaults applied on creation;
set via tb.set_rate() / tb.set_burst() (already in qdisc.rs).
2026-07-08 18:26:47 +03:00
Red Bear OS
9bab466704
netcfg: interface enable/disable control (ip link set eth0 down/up)
...
LinkDevice trait gains is_enabled() and set_enabled() with defaults.
EthernetLink stores enabled flag (default: true). When disabled,
link_state() reports 'down' regardless of hardware_address presence.
netcfg/ifaces/eth0/enabled is rw:
cat /scheme/netcfg/ifaces/eth0/enabled → 'up' or 'down'
echo up > .../enabled → bring interface up
echo down > .../enabled → bring interface down
echo on/off/1/0/yes/no → also accepted
Mirrors Linux 'ip link set dev <state>'.
Pre-existing link state (hardware_address Some/None) unchanged;
the enabled flag adds a software override layer that can be
toggled without restarting the netstack.
2026-07-08 18:24:02 +03:00
Red Bear OS
c015a375b1
mtu: per-interface MTU configuration via netcfg
...
LinkDevice trait gains set_mtu(mtu) with default no-op.
EthernetLink stores mtu in field, clamped to 576-9000 (RFC 791 min/max).
netcfg/ifaces/eth0/mtu becomes rw:
cat /scheme/netcfg/ifaces/eth0/mtu → '1500' (default)
echo 1400 > .../mtu → VPN MTU
echo 9000 > .../mtu → jumbo frames
Clamped to [576, 9000]:
- 576: minimum for IPv4 (RFC 791)
- 9000: standard jumbo frame MTU
Useful for VPNs (MTU 1400 to avoid fragmentation through tunnel overhead),
jumbo frames (MTU 9000 on datacenter networks), and constrained paths.
2026-07-08 17:57:16 +03:00
Red Bear OS
c1cfee3bea
qdisc: expose traffic shaping info via netcfg and LinkDevice trait
...
LinkDevice gains qdisc_info() → String defaulting to 'none'.
EthernetLink reports current qdisc configuration:
none / token_bucket rate=N burst=N tokens=N / priority_queue len=N max=N
TokenBucket and PriorityQueue gain public accessor methods:
rate(), burst(), tokens() / max_len()
netcfg exposes at /scheme/netcfg/ifaces/eth0/qdisc:
cat /scheme/netcfg/ifaces/eth0/qdisc → 'none' (default)
Enables monitoring tools to discover current traffic shaping.
Future: wo node for configuring qdisc type + parameters.
2026-07-08 17:50:31 +03:00
Red Bear OS
27f8e351e6
arp: add statistics counters and netcfg exposure
...
EthernetLink gains per-interface ARP counters:
- arp_requests: ARP requests sent (incremented in send_arp)
- arp_replies: ARP replies received (incremented on cache insert)
- arp_cache_hits: successful neighbor cache lookups
- arp_cache_misses: cache misses (vacant or expired entries)
LinkDevice trait gains arp_stats() → String method.
EthernetLink implementation: 'requests=N replies=N hits=N misses=N entries=N'
netcfg exposes at /scheme/netcfg/ifaces/eth0/arp/stats:
echo /scheme/netcfg/ifaces/eth0/arp/stats
→ requests=5 replies=3 hits=142 misses=8 entries=4
Existing arp/list (MAC→IP) and arp/flush (clear) are unchanged.
Useful for monitoring ARP churn, detecting ARP storms, and debugging
neighbor discovery issues.
2026-07-08 15:38:49 +03:00
Red Bear OS
30db94c970
stp: integrate 802.1D Spanning Tree Protocol into BridgeDevice
...
Adds loop prevention to Ethernet bridges:
- BridgeDevice gains stp: Option<StpState> field
- enable_stp(priority, mac) method initializes STP per-bridge
- BPDU frames (dst 01:80:c2:00:00:00) intercepted in recv(),
processed locally, never forwarded
- STP hello timer sends periodic BPDUs on all ports (root bridge)
- flood() skips STP-blocked ports
- build_bpdu() made public for bridge integration
- stp module declared in link/mod.rs
The recv() flow now: age MACs → check STP hello timer →
poll ports → detect BPDU (absorb) → normal frame (learn + forward).
Reference: Linux 7.1 net/bridge/br_stp.c, br_stp_bpdu.c, br_stp_timer.c
2026-07-08 13:38:38 +03:00
Red Bear OS
bb3e36e4e0
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.
2026-07-08 13:27:49 +03:00
Red Bear OS
4506bfe02a
stp: add IEEE 802.1D Spanning Tree Protocol for bridge loop prevention
2026-07-08 13:26:39 +03:00
Red Bear OS
dd08b76a39
Red Bear OS base baseline from 0.1.0 pre-patched archive
2026-06-27 09:21:43 +03:00