Age | Commit message (Collapse) | Author |
|
|
|
|
|
1891: Prepare for release 0.26.0 r=rtzoeller a=asomers
Co-authored-by: Alan Somers <asomers@gmail.com>
|
|
|
|
[skip ci] add CHANGELOG entries for old point releases.
|
|
I opted to preserve explicit entries for backports in both the original
feature release and the backported point release, rather than trying to
pretend that the releases were actually sequential.
Also, remove some empty subsections from the file.
|
|
[skip ci] fix CHANGELOG formatting
|
|
|
|
1788: Workaround XNU bug in getifaddrs netmasks r=asomers a=roblabla
Fixes #1709
Co-authored-by: roblabla <unfiltered@roblab.la>
Co-authored-by: Alan Somers <asomers@gmail.com>
|
|
|
|
1885: Update to memoffset 0.7 r=asomers a=sdroege
Co-authored-by: Sebastian Dröge <sebastian@centricular.com>
|
|
1877: PollFd utility functions r=asomers a=JonathanWoollett-Light
Adds `poll::PollFd::any()` and `poll::PollFd::all()` functions which returns if any/all of the events of interest occurred in the last call to `poll` or `ppoll`.
Consider the case:
```rust
let (first_fd, second_fd) = /* ... */;
let mut poll_fds = [
poll::PollFd::new(interrupt_fd, poll::PollFlags::POLLIN),
poll::PollFd::new(transfer_fd, poll::PollFlags::POLLIN),
];
let _ = poll::poll(&mut poll_fds, -1)?;
let first = poll_fds[0].revents()? != poll::PollFlags::empty();
let second = poll_fds[1].revents()? != poll::PollFlags::empty();;
if first { /* ... */ }
if second { /* ... */ }
```
which can now be reduced:
```rust
let (first_fd, second_fd) = /* ... */;
let mut poll_fds = [
poll::PollFd::new(interrupt_fd, poll::PollFlags::POLLIN),
poll::PollFd::new(transfer_fd, poll::PollFlags::POLLIN),
];
let _ = poll::poll(&mut poll_fds, -1)?;
let first = poll_fds[0].any()?;
let second = poll_fds[1].any()?;
if first { /* ... */ }
if second { /* ... */ }
```
Co-authored-by: Jonathan <jonathanwoollettlight@gmail.com>
|
|
|
|
1886: Update use of libc::timespec to prepare for future libc version r=asomers a=wesleywiser
In a future release of the `libc` crate, `libc::timespec` will contain private padding fields on `*-linux-musl` targets and so the struct will no longer be able to be created using the literal initialization syntax.
Update places where `libc::timespec` is created to first zero initialize the value and then update the `tv_sec` and `tv_nsec` fields manually. Many of these places are in `const fn`s so a helper function `zero_init_timespec()` is introduced to help with this as `std::mem::MaybeUninit::zeroed()` is not a `const` function.
Some matches on `libc::timespec` are also updated to include a trailing `..` pattern which works when `libc::timespec` has additional, private fields as well as when it does not (like for
`x86_64-unknown-linux-gnu`).
See also https://github.com/rust-lang/libc/pull/2088
Co-authored-by: Wesley Wiser <wesleywiser@microsoft.com>
|
|
In a future release of the `libc` crate, `libc::timespec` will contain
private padding fields on `*-linux-musl` targets and so the struct will
no longer be able to be created using the literal initialization syntax.
Update places where `libc::timespec` is created to first zero initialize
the value and then update the `tv_sec` and `tv_nsec` fields manually.
Many of these places are in `const fn`s so a helper function
`zero_init_timespec()` is introduced to help with this as
`std::mem::MaybeUninit::zeroed()` is not a `const` function.
Some matches on `libc::timespec` are also updated to include a trailing
`..` pattern which works when `libc::timespec` has additional, private
fields as well as when it does not (like for
`x86_64-unknown-linux-gnu`).
|
|
|
|
1865: Add IpMtu sockopt r=asomers a=ShadowJonathan
Resolves https://github.com/nix-rust/nix/issues/1864
Co-authored-by: Jonathan de Jong <jonathandejong02@gmail.com>
|
|
1883: Clippy cleanup with the latest nightly. r=rtzoeller a=asomers
Co-authored-by: Alan Somers <asomers@gmail.com>
|
|
|
|
|
|
1848: SockProtocol::Raw = libc::IPPROTO_RAW for raw sockets r=asomers a=StackOverflowExcept1on
Hey, I wanna to make call like `socket(af_type, SOCK_RAW, IPPROTO_RAW)` but currently there is no way to do it with rust
https://github.com/rickettm/SendIP/blob/aad12a001157489ab9053c8665e09aec24a2ff6d/sendip.c#L143
Update: Feel free to add `#[cfg]` attribute if I made mistakes that might cause errors on some platforms
Co-authored-by: StackOverflowExcept1on <109800286+StackOverflowExcept1on@users.noreply.github.com>
|
|
1880: Use the new UnixAddr::new_unnamed in the unit tests r=rtzoeller a=asomers
Use it in the from_sockaddr_un_abstract_unnamed test. That test and this method were introduced by PRs #1871 and #1857, which crossed each other.
Co-authored-by: Alan Somers <asomers@gmail.com>
|
|
Use it in the from_sockaddr_un_abstract_unnamed test. That test and
this method were introduced by PRs #1871 and #1857, which crossed each
other.
|
|
|
|
1857: Add better support for unnamed unix socket addrs r=asomers a=stevenengler
This adds the following 2 functions/methods: `UnixAddr::new_unnamed` and `UnixAddr::is_unnamed`.
Closes #1585
unix(7) on Linux:
> unnamed: A stream socket that has not been bound to a pathname using bind(2) has no name. Likewise, the two sockets created by socketpair(2) are unnamed. When the address of an unnamed socket is returned, its length is `sizeof(sa_family_t)`, and `sun_path` should not be inspected.
**Edit:** This currently isn't working on BSD, but I see why. Will fix it shortly.
Co-authored-by: Steven Engler <opara@cs.georgetown.edu>
|
|
1871: Fix using SockaddrStorage to store Unix domain addresses on Linux r=rtzoeller a=asomers
Since it has variable length, the user of a sockaddr_un must keep track of its true length. On the BSDs, this is handled by the builtin sun_len field. But on Linux-like operating systems it isn't. Fix this bug by explicitly tracking it for SockaddrStorage just like we already do for UnixAddr.
Fixes #1866
Co-authored-by: Alan Somers <asomers@gmail.com>
|
|
Removed test assertion
|
|
Changelog
|
|
Make Linux-only
|
|
|
|
1873: mmap non-zero length r=asomers a=JonathanWoollett-Light
When calling [`mmap`](https://man7.org/linux/man-pages/man2/mmap.2.html) the passed length needs to be greater than zero, else an error is returned:
> EINVAL (since Linux 2.6.12) length was 0.
By specifying the argument as `std::num::NonZeroUsize` we eliminate this error case.
Co-authored-by: Jonathan <jonathanwoollettlight@gmail.com>
|
|
|
|
1853: Adds IP_TOS, IPV6_TCLASS and SO_PRIORITY sockopt wrappers for Linux r=asomers a=mzachar
Added socket option wrappers for DiffServ related parameters on Linux
Co-authored-by: mzachar <mzachar@users.noreply.github.com>
|
|
1870: mmap addr r=asomers a=JonathanWoollett-Light
Uses `Some<size_t>` instead of `*mut c_void` for the `addr` passed to [`sys::mman::mmap`](https://docs.rs/nix/latest/nix/sys/mman/fn.mmap.html).
In this instance we are not usefully passing a pointer, it will never be dereferenced. We are passing a location which represents where to attach the shared memory to.
In this case `size_t` better represents an address and not a pointer, and `Option<size_t>` better represents an optional argument than `NULLPTR`.
In C since there is no optional type this is a pointer as this allows it be null which is an alias here for `None`.
Co-authored-by: Jonathan <jonathanwoollettlight@gmail.com>
|
|
|
|
|
|
|
|
1872: Misc internal optimizations r=rtzoeller a=asomers
* Make ipv4addr_to_libc const
* Use mem::transmute in ipv4addr_to_libc and ipv6addr_to_libc
Fixes #1687
Fixes #1688
Co-authored-by: Alan Somers <asomers@gmail.com>
|
|
1869: Mode flag documentation r=asomers a=JonathanWoollett-Light
Adds rustdoc to the `sys::stat::Mode` bit flags.
Co-authored-by: Jonathan <jonathanwoollettlight@gmail.com>
|
|
* Make ipv4addr_to_libc const
* Use mem::transmute in ipv4addr_to_libc and ipv6addr_to_libc
Fixes #1687
Fixes #1688
|
|
Since it has variable length, the user of a sockaddr_un must keep track
of its true length. On the BSDs, this is handled by the builtin sun_len
field. But on Linux-like operating systems it isn't. Fix this bug by
explicitly tracking it for SockaddrStorage just like we already do for
UnixAddr.
Fixes #1866
|
|
|
|
1860: Nuke deprecated Errno flags r=rtzoeller a=SUPERCILEX
`@rtzoeller` It's been quite a few releases since these have been deprecated, more bloat removal.
Co-authored-by: Alex Saveau <saveau.alexandre@gmail.com>
|
|
Signed-off-by: Alex Saveau <saveau.alexandre@gmail.com>
|
|
1854: Reformat everything r=rtzoeller a=SUPERCILEX
Unfortunately, https://github.com/nix-rust/nix/pull/1748 didn't do the trick because of https://github.com/rust-lang/rustfmt/issues/3253. This PR fully enforces global formatting.
Closes https://github.com/nix-rust/nix/issues/770
Co-authored-by: Alex Saveau <saveau.alexandre@gmail.com>
|
|
Signed-off-by: Alex Saveau <saveau.alexandre@gmail.com>
|
|
Signed-off-by: Alex Saveau <saveau.alexandre@gmail.com>
|
|
1849: Add a Statfs::flags method r=rtzoeller a=asomers
It returns the mount flags on the BSDs. On Linux, it returns a slightly different set of flags.
Co-authored-by: Alan Somers <asomers@gmail.com>
|
|
It returns the mount flags on the BSDs. On Linux, it returns a slightly
different set of flags.
|
|
|