netstack issueshttps://gitlab.redox-os.org/redox-os/netstack/-/issues2019-12-13T18:22:36Zhttps://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/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#6https://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.