netstack issueshttps://gitlab.redox-os.org/redox-os/netstack/-/issues2024-02-28T11:40:43Zhttps://gitlab.redox-os.org/redox-os/netstack/-/issues/35Support promiscuous mode2024-02-28T11:40:43Zbjorn3Support promiscuous modeIn other word allow tools like wireshark to receive packets sent to a different application or even different computer (depending on the network connection mechanism used).In other word allow tools like wireshark to receive packets sent to a different application or even different computer (depending on the network connection mechanism used).https://gitlab.redox-os.org/redox-os/netstack/-/issues/34Support multiple network adapters at the same time2024-02-29T11:33:25Zbjorn3Support multiple network adapters at the same timehttps://gitlab.redox-os.org/redox-os/drivers/-/merge_requests/143 and https://gitlab.redox-os.org/redox-os/netstack/-/merge_requests/45 allow multiple network adapters to co-exist, but smolnetd will not actually use any beyond the first ...https://gitlab.redox-os.org/redox-os/drivers/-/merge_requests/143 and https://gitlab.redox-os.org/redox-os/netstack/-/merge_requests/45 allow multiple network adapters to co-exist, but smolnetd will not actually use any beyond the first yet.https://gitlab.redox-os.org/redox-os/netstack/-/issues/33Cannot build with --debug2024-01-08T11:08:51ZRon WilliamsCannot build with --debugWhen building for redox with `--debug`, I get the following errors:
```
error[E0080]: evaluation of constant value failed
--> /home/ron/.cargo/registry/src/index.crates.io-6f17d22bba15001f/smoltcp-0.10.0/src/time.rs:195:21
|
195 |...When building for redox with `--debug`, I get the following errors:
```
error[E0080]: evaluation of constant value failed
--> /home/ron/.cargo/registry/src/index.crates.io-6f17d22bba15001f/smoltcp-0.10.0/src/time.rs:195:21
|
195 | micros: millis * 1000,
| ^^^^^^^^^^^^^ attempt to compute `u64::MAX * 1000_u64`, which would overflow
|
note: inside `smoltcp::time::Duration::from_millis`
--> /home/ron/.cargo/registry/src/index.crates.io-6f17d22bba15001f/smoltcp-0.10.0/src/time.rs:195:21
|
195 | micros: millis * 1000,
| ^^^^^^^^^^^^^
note: inside `MAX_DURATION`
--> src/smolnetd/scheme/mod.rs:41:32
|
41 | const MAX_DURATION: Duration = Duration::from_millis(u64::MAX);
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
note: erroneous constant used
--> src/smolnetd/scheme/mod.rs:240:62
|
240 | Some(delay) => break ::std::cmp::min(MAX_DURATION, delay),
| ^^^^^^^^^^^^
note: erroneous constant used
--> src/smolnetd/scheme/mod.rs:241:39
|
241 | None => break MAX_DURATION,
| ^^^^^^^^^^^^
```https://gitlab.redox-os.org/redox-os/netstack/-/issues/32Build fails for time crate2019-12-13T18:22:36ZThiago Duarte AreiasBuild fails for time crateThis issue and fix is the same one as https://gitlab.redox-os.org/redox-os/drivers/issues/28This issue and fix is the same one as https://gitlab.redox-os.org/redox-os/drivers/issues/28https://gitlab.redox-os.org/redox-os/netstack/-/issues/31Unable to update mio-uds#2936ef822019-07-09T02:30:23ZNicolas PoirotUnable to update mio-uds#2936ef82I believe this is related to https://gitlab.redox-os.org/redox-os/mio-uds/issues/1
It seems to me reference to mio-uds 0.6.6 (Cargo.lock:274) was either from local repo or the mio-uds git has been rebased since then.
Anyway, I believe ...I believe this is related to https://gitlab.redox-os.org/redox-os/mio-uds/issues/1
It seems to me reference to mio-uds 0.6.6 (Cargo.lock:274) was either from local repo or the mio-uds git has been rebased since then.
Anyway, I believe the current referenced commit (mio-uds 0.6.6) should be 8ee05160
[0001-netstack-Fix-mio-uds-git-commit-reference.patch](/uploads/78ea5364a309c071964526f96ddd5fff/0001-netstack-Fix-mio-uds-git-commit-reference.patch)https://gitlab.redox-os.org/redox-os/netstack/-/issues/30Update smoltcp2018-06-19T13:58:03ZDan RobertsonUpdate smoltcpsmoltcp is [currently pinned](https://github.com/redox-os/netstack/blob/master/Cargo.toml#L31). There have been some changes to a few function signatures.smoltcp is [currently pinned](https://github.com/redox-os/netstack/blob/master/Cargo.toml#L31). There have been some changes to a few function signatures.jD91mZM2jD91mZM2https://gitlab.redox-os.org/redox-os/netstack/-/issues/27smolnetd: Edge-triggered model2018-06-13T18:35:09ZJeremy Sollersmolnetd: Edge-triggered model*Created by: jD91mZM2*
Currently smolnetd is level-triggered. This means that when it's writeable, it'll keep announcing itself as writeable over and over. While this is good so you can't miss any events for whatever reason, it means th...*Created by: jD91mZM2*
Currently smolnetd is level-triggered. This means that when it's writeable, it'll keep announcing itself as writeable over and over. While this is good so you can't miss any events for whatever reason, it means that calling `read` on `event:` can be more of a busy-loop rather than actually selecting. It also introduces some issues I had to work around with tokio since it relies on a edge-triggered model normally.
Changing to edge-triggered would also mean a blocking read would have to return EWOULDBLOCK instead of just a 0, so there is a way to detect what is a blocking read and what is an EOF. This would once again get rid of some ugly workarounds used in tokio, which is nice.
## Minimal example:
```Rust
extern crate syscall;
use std::{
fs::File,
io::{self, prelude::*},
net::TcpStream,
os::unix::io::AsRawFd
};
use syscall::{Event, EVENT_WRITE};
fn main() -> io::Result<()> {
let mut events = File::open("event:")?;
let stream = TcpStream::connect("google.com:80")?;
events.write(&Event {
id: stream.as_raw_fd(),
flags: EVENT_WRITE,
data: 0
})?;
let mut event = Event::default();
while events.read(&mut event)? > 0 {
println!("{:?}", event);
}
Ok(())
}
```
You might expect this to print one event when it becomes writeable, but then it continues to send it over and over.https://gitlab.redox-os.org/redox-os/netstack/-/issues/25Feature: benchmarks for packets/s and bits/s2018-06-13T18:35:09ZJeremy SollerFeature: benchmarks for packets/s and bits/s*Created by: dbkaplun*
Hello,
I am keeping tabs on RedoxOS and it has great potential in displacing older operating systems.
It would be great if there were benchmarks for netstack. Measurements for packets/s and bits/s per core o...*Created by: dbkaplun*
Hello,
I am keeping tabs on RedoxOS and it has great potential in displacing older operating systems.
It would be great if there were benchmarks for netstack. Measurements for packets/s and bits/s per core or thread may help differentiate RedoxOS in comparison with Linux and other server operating systems.
Thanks for considering!https://gitlab.redox-os.org/redox-os/netstack/-/issues/24Add documentation for netcfg2018-06-13T18:35:09ZDan RobertsonAdd documentation for netcfgDan RobertsonDan Robertsonhttps://gitlab.redox-os.org/redox-os/netstack/-/issues/23dnsd: Allow starting dnsd without any nameservers configured2018-06-19T11:53:37ZDan Robertsondnsd: Allow starting dnsd without any nameservers configuredOnce static names and the `dnsd` configuration is possible, it should be possible to start dnsd without any nameservers configured, allowing `dnsd` to only use the static names that are configured.
Dependencies: #22 #21 Once static names and the `dnsd` configuration is possible, it should be possible to start dnsd without any nameservers configured, allowing `dnsd` to only use the static names that are configured.
Dependencies: #22 #21 Improve Network Config - RSoC 2018https://gitlab.redox-os.org/redox-os/netstack/-/issues/22dnsd: Allow dnsd to resolve static names2018-06-19T11:53:49ZDan Robertsondnsd: Allow dnsd to resolve static namesRead names and IPs from `/etc/hosts` and resolve properly.Read names and IPs from `/etc/hosts` and resolve properly.Improve Network Config - RSoC 2018https://gitlab.redox-os.org/redox-os/netstack/-/issues/21dnsd: Improve configuration on startup2018-08-17T12:30:39ZDan Robertsondnsd: Improve configuration on startupAt the moment the initial DNS naemserver is hardcoded to `8.8.8.8` [here](https://github.com/redox-os/netstack/blob/master/src/dnsd/scheme.rs#L55). The initial nameservers should be configured through a config file of some type.At the moment the initial DNS naemserver is hardcoded to `8.8.8.8` [here](https://github.com/redox-os/netstack/blob/master/src/dnsd/scheme.rs#L55). The initial nameservers should be configured through a config file of some type.Improve Network Config - RSoC 2018https://gitlab.redox-os.org/redox-os/netstack/-/issues/20dnsd: Allow multiple nameservers2018-06-19T11:52:50ZDan Robertsondnsd: Allow multiple nameserversAllow users to configure multiple nameservers. A first draft should at least allow an IPv6 and IPv4 nameserver.Allow users to configure multiple nameservers. A first draft should at least allow an IPv6 and IPv4 nameserver.Improve Network Config - RSoC 2018https://gitlab.redox-os.org/redox-os/netstack/-/issues/19Improve address configuration2018-06-19T11:52:24ZDan RobertsonImprove address configuration[Smolnetd::new] still uses `getcfg` to read configuration information from `/etc/net`. Now that `netcfg` has been implemented, `smolnetd` should initially configure the interface without a `ipv4_gateway` and assigned IP addresses other t...[Smolnetd::new] still uses `getcfg` to read configuration information from `/etc/net`. Now that `netcfg` has been implemented, `smolnetd` should initially configure the interface without a `ipv4_gateway` and assigned IP addresses other than the loopback. the `/etc/net` files should be removed and a new configuration file should be created along with a file format that allows for:
- multiple interfaces
- configuring an interface to use DHCP
[Smolnetd::new]: https://github.com/redox-os/netstack/blob/master/src/smolnetd/scheme/mod.rs#L57-L114Improve Network Config - RSoC 2018https://gitlab.redox-os.org/redox-os/netstack/-/issues/15Add documentation for dnsd2018-06-13T18:35:09ZDan RobertsonAdd documentation for dnsdAdd documentation for the `dnsd` scheme. A brief review of the endpoints and how they can be used should be good enough for a first pass.Add documentation for the `dnsd` scheme. A brief review of the endpoints and how they can be used should be good enough for a first pass.Dan RobertsonDan Robertsonhttps://gitlab.redox-os.org/redox-os/netstack/-/issues/12Rename Setting::Ttl to Setting::HopLimit2018-06-13T18:35:09ZDan RobertsonRename Setting::Ttl to Setting::HopLimitRename `Setting::Ttl` to `Setting::HopLimit`. [smoltcp] [aims to be an IPv6 first stack] (once IPv6 is supported 😄). We should follow suit and use the IPv6 Hop Limit instead of IPv4's TTL.
[smoltcp]: https://github.com/m-labs/smoltcp
...Rename `Setting::Ttl` to `Setting::HopLimit`. [smoltcp] [aims to be an IPv6 first stack] (once IPv6 is supported 😄). We should follow suit and use the IPv6 Hop Limit instead of IPv4's TTL.
[smoltcp]: https://github.com/m-labs/smoltcp
[aims to be an IPv6 first stack]: https://github.com/m-labs/smoltcp/pull/89#discussion_r155903065
https://gitlab.redox-os.org/redox-os/netstack/-/issues/11Allow binding ICMP sockets to a port for receiving Destination Unreachable me...2018-06-13T18:35:09ZDan RobertsonAllow binding ICMP sockets to a port for receiving Destination Unreachable messagesm-labs/smoltcp#69 allows users to `bind` a icmp socket to a UDP port similar to the second section found at https://www.planet-lab.org/raw_sockets/api_icmp.html. Add `icmp:upd/<port>` to the icmp scheme an allow users to receive ICMP err...m-labs/smoltcp#69 allows users to `bind` a icmp socket to a UDP port similar to the second section found at https://www.planet-lab.org/raw_sockets/api_icmp.html. Add `icmp:upd/<port>` to the icmp scheme an allow users to receive ICMP error responses associated with an open UDP port.https://gitlab.redox-os.org/redox-os/netstack/-/issues/10Use IpEndpoint's FromStr implementation2018-06-13T18:35:09ZDan RobertsonUse IpEndpoint's FromStr implementationm-labs/smoltcp#102 implmented [`FromStr`] for [`IpEndpoint`]. Currently [`parse_endpoint`] parses the port and IP address manually. We should use the [`FromStr`] implementation instead.
~Note: we need to maintain the same defaults. AF...m-labs/smoltcp#102 implmented [`FromStr`] for [`IpEndpoint`]. Currently [`parse_endpoint`] parses the port and IP address manually. We should use the [`FromStr`] implementation instead.
~Note: we need to maintain the same defaults. AFAIK the [current upstream implementation] of the parser will return an error for `:80` while [`parse_endpoint`] will not.~
[`FromStr`]: https://doc.rust-lang.org/std/str/trait.FromStr.html
[`IpEndpoint`]: https://docs.rs/smoltcp/0.4.0/smoltcp/wire/struct.IpEndpoint.html
[`parse_endpoint`]: https://github.com/redox-os/netstack/blob/master/src/smolnetd/scheme/mod.rs#L242-L255
[current upstream implementation]: https://github.com/m-labs/smoltcp/blob/master/src/parsers.rs#L330-L344https://gitlab.redox-os.org/redox-os/netstack/-/issues/9Implement dnsd2018-06-13T18:35:09ZJeremy SollerImplement dnsd*Created by: batonius*
Currently, there's no centralized DNS subsystem in Redox and two independent implementations of `lookup_host` in `stdlib` and `newlib`. By implementing a specialized daemon we'll be able to cache DNS requests, per...*Created by: batonius*
Currently, there's no centralized DNS subsystem in Redox and two independent implementations of `lookup_host` in `stdlib` and `newlib`. By implementing a specialized daemon we'll be able to cache DNS requests, perform reverse queries, and provide clear, user-friendly interface to DNS queries.
The new daemon should implement `dns:` schema, so a process could open `dns:example.org` and read resolved IPv4 (for now) in string format. Other record types could be implemented in the future as "dns:aaaa/example.org". The daemon should keep resolved domains in a cache for a configurable amount of time.
Once #7 is implemented, the daemon should get the addrs of the DNS server from `netcfg:resolv/server`.https://gitlab.redox-os.org/redox-os/netstack/-/issues/7Implement netcfg2018-06-13T18:35:09ZDan RobertsonImplement netcfgImplement _netcfg_ as described in redox-os/rfcs#6Implement _netcfg_ as described in redox-os/rfcs#6