FromBytes and FromBytesWithInput have had the lifetime parameter removed. This
removes the ability to borrow data from the buffer written to by the recv() syscall.
This is intentional as it provides more ergonomic support for NlRouter to send
messages across threads. A new trait, FromBytesWithInputBorrowed, has been added to
support the use case of borrowing payloads from attributes as &str or &[u8].
The async feature API has been completely redesigned to more closely resemble
it's corresponding synchronous API.
All new() methods and public fields on data structures used to construct packets
have been replaced by the builder pattern.
The IO error variant is now the full IO error wrapped in an Arc.
New Cargo features
sync has been added as a Cargo feature. If a user is only interested in asynchronous
functionality, sync can be disabled to disable the higher level synchronous API
and reduce the number of required dependencies.
Features
Extended ACK support. Sockets now support parsing and enabling entended ACKs for more
information in error cases.
New router infrastructure allowing ACK handling, seq management, and PID validation
for requests sent in parallel.
Builder pattern defined for all data structures used to construct netlink packets.
Bug fixes
Fixed a mismatch between libc::socklen_t and usize in the list memberships call.
This was causing failures on s390x in the tests.
Dependency version updates
syn
libc
Migration guide
If you were previously using new() methods defined on structs representing packet
data, all packet data structures have been migrated over to a builder pattern.
Flags in packets have been migrated from a custom data structure to
bitflags. For example &[Nlm::Request, Nlm::Ack] is now NlmF::REQUEST | NlmF::ACK.
Because of previous errors around multicast groups, there is a new data structure
to handle group management that allows either converting from group numbers or a
bitmask. If you previously passed in 0 for groups, you will now use Groups::empty().
If you were previously using convenience methods like NlSocketHandle::iter() or
NlSocketHandle::resolve_genl_family, this functionality has been migrated to the
new NlRouter functionality. NlSocketHandle has been repurposed for a slightly
lower level API providing iteration over all messages in a single recv() buffer.
NlRouter provides a safer, parallelization-capable version of the functionality
previously provided by NlSocketHandle. See the documentation in the neli::router
module for a more detailed explanation of the problem this was meant to solve.
If you were previously using Attr::get_payload_as_with_len() with a &[u8] or
&str type, you should change this to Attr::get_payload_as_with_len_borrowed().
... (truncated)
Commits
d4ce758 Merge pull request #284 from jbaublitz/release-v0.7.0-v0.2.0
37d1c27 Release of neli-v0.7.0 and neli-proc-macros-v0.2.0
324c359 Merge pull request #283 from jbaublitz/neli-275
2e15a8f Rework handling of DONE packets to prepare for connector protocol
e2a617d Merge pull request #282 from jbaublitz/neli-268
5b305da Fix bug in group handling with getsockopt syscall
bd75462 Merge pull request #279 from chrspeich/buffer-perf
6b2fd3b Directly implement FromBytesWithInput and ToBytes for Buffer
4cf3014 Merge pull request #278 from jbaublitz/neli-273
24d6185 Fix rta deserialization test for big endian
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebase will rebase this PR
@dependabot recreate will recreate this PR, overwriting any edits that have been made to it
@dependabot merge will merge this PR after your CI passes on it
@dependabot squash and merge will squash and merge this PR after your CI passes on it
@dependabot cancel merge will cancel a previously requested merge and block automerging
@dependabot reopen will reopen this PR if it is closed
@dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
@dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
@dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
@dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
@dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Bumps [neli](https://github.com/jbaublitz/neli) from 0.6.5 to 0.7.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/jbaublitz/neli/releases">neli's releases</a>.</em></p>
<blockquote>
<h2>neli-v0.7.0</h2>
<p>See milestone: <a href="https://github.com/jbaublitz/neli/milestone/11?closed=1">https://github.com/jbaublitz/neli/milestone/11?closed=1</a></p>
<h2>neli-v0.7.0-rc3</h2>
<p>No release notes provided.</p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/jbaublitz/neli/blob/main/CHANGELOG.md">neli's changelog</a>.</em></p>
<blockquote>
<h2>0.7.0</h2>
<h3>Breaking changes</h3>
<ul>
<li><code>FromBytes</code> and <code>FromBytesWithInput</code> have had the lifetime parameter removed. This
removes the ability to borrow data from the buffer written to by the <code>recv()</code> syscall.
This is intentional as it provides more ergonomic support for <code>NlRouter</code> to send
messages across threads. A new trait, <code>FromBytesWithInputBorrowed</code>, has been added to
support the use case of borrowing payloads from attributes as <code>&str</code> or <code>&[u8]</code>.</li>
<li>The <code>async</code> feature API has been completely redesigned to more closely resemble
it's corresponding synchronous API.</li>
<li>All <code>new()</code> methods and public fields on data structures used to construct packets
have been replaced by the builder pattern.</li>
<li>The IO error variant is now the full IO error wrapped in an <code>Arc</code>.</li>
</ul>
<h3>New Cargo features</h3>
<ul>
<li><code>sync</code> has been added as a Cargo feature. If a user is only interested in asynchronous
functionality, <code>sync</code> can be disabled to disable the higher level synchronous API
and reduce the number of required dependencies.</li>
</ul>
<h3>Features</h3>
<ul>
<li>Extended ACK support. Sockets now support parsing and enabling entended ACKs for more
information in error cases.</li>
<li>New router infrastructure allowing ACK handling, seq management, and PID validation
for requests sent in parallel.</li>
<li>Builder pattern defined for all data structures used to construct netlink packets.</li>
</ul>
<h2>Bug fixes</h2>
<ul>
<li>Fixed a mismatch between <code>libc::socklen_t</code> and <code>usize</code> in the list memberships call.
This was causing failures on s390x in the tests.</li>
</ul>
<h3>Dependency version updates</h3>
<ul>
<li>syn</li>
<li>libc</li>
</ul>
<h3>Migration guide</h3>
<ul>
<li>If you were previously using <code>new()</code> methods defined on structs representing packet
data, all packet data structures have been migrated over to a builder pattern.</li>
<li>Flags in packets have been migrated from a custom data structure to
<a href="https://docs.rs/bitflags"><code>bitflags</code></a>. For example <code>&[Nlm::Request, Nlm::Ack]</code> is now <code>NlmF::REQUEST | NlmF::ACK</code>.</li>
<li>Because of previous errors around multicast groups, there is a new data structure
to handle group management that allows either converting from group numbers or a
bitmask. If you previously passed in 0 for groups, you will now use <code>Groups::empty()</code>.</li>
<li>If you were previously using convenience methods like <code>NlSocketHandle::iter()</code> or
<code>NlSocketHandle::resolve_genl_family</code>, this functionality has been migrated to the
new <code>NlRouter</code> functionality. <code>NlSocketHandle</code> has been repurposed for a slightly
lower level API providing iteration over all messages in a single <code>recv()</code> buffer.
<code>NlRouter</code> provides a safer, parallelization-capable version of the functionality
previously provided by <code>NlSocketHandle</code>. See the documentation in the <code>neli::router</code>
module for a more detailed explanation of the problem this was meant to solve.</li>
<li>If you were previously using <code>Attr::get_payload_as_with_len()</code> with a <code>&[u8]</code> or
<code>&str</code> type, you should change this to <code>Attr::get_payload_as_with_len_borrowed()</code>.</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/jbaublitz/neli/commit/d4ce7582cb73aec2881f8997488c40ded46aaa44"><code>d4ce758</code></a> Merge pull request <a href="https://redirect.github.com/jbaublitz/neli/issues/284">#284</a> from jbaublitz/release-v0.7.0-v0.2.0</li>
<li><a href="https://github.com/jbaublitz/neli/commit/37d1c27f434d1c6bf1e7bd032be3d0678c2074ce"><code>37d1c27</code></a> Release of neli-v0.7.0 and neli-proc-macros-v0.2.0</li>
<li><a href="https://github.com/jbaublitz/neli/commit/324c359d891e933d81dc40f2ead765ba84e48271"><code>324c359</code></a> Merge pull request <a href="https://redirect.github.com/jbaublitz/neli/issues/283">#283</a> from jbaublitz/neli-275</li>
<li><a href="https://github.com/jbaublitz/neli/commit/2e15a8f9272ce33f9ab1f155f2c69a76b33fbea7"><code>2e15a8f</code></a> Rework handling of DONE packets to prepare for connector protocol</li>
<li><a href="https://github.com/jbaublitz/neli/commit/e2a617ddeddf4e6776a67e12f476fb493e1670e5"><code>e2a617d</code></a> Merge pull request <a href="https://redirect.github.com/jbaublitz/neli/issues/282">#282</a> from jbaublitz/neli-268</li>
<li><a href="https://github.com/jbaublitz/neli/commit/5b305da88dc8144be117d61c5d8b7858e458c250"><code>5b305da</code></a> Fix bug in group handling with getsockopt syscall</li>
<li><a href="https://github.com/jbaublitz/neli/commit/bd75462637f7b5efec81231d71fa1bd4e94ed1c7"><code>bd75462</code></a> Merge pull request <a href="https://redirect.github.com/jbaublitz/neli/issues/279">#279</a> from chrspeich/buffer-perf</li>
<li><a href="https://github.com/jbaublitz/neli/commit/6b2fd3b33b0476a95574a308fe517ff57a162af4"><code>6b2fd3b</code></a> Directly implement FromBytesWithInput and ToBytes for Buffer</li>
<li><a href="https://github.com/jbaublitz/neli/commit/4cf30141af9a7b770e2599038658740f480db256"><code>4cf3014</code></a> Merge pull request <a href="https://redirect.github.com/jbaublitz/neli/issues/278">#278</a> from jbaublitz/neli-273</li>
<li><a href="https://github.com/jbaublitz/neli/commit/24d618557bb264fedeebdc75db83ca13db90a54e"><code>24d6185</code></a> Fix rta deserialization test for big endian</li>
<li>Additional commits viewable in <a href="https://github.com/jbaublitz/neli/compare/neli-v0.6.5...neli-v0.7.0">compare view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Bumps neli from 0.6.5 to 0.7.0.
Release notes
Sourced from neli's releases.
Changelog
Sourced from neli's changelog.
... (truncated)
Commits
d4ce758Merge pull request #284 from jbaublitz/release-v0.7.0-v0.2.037d1c27Release of neli-v0.7.0 and neli-proc-macros-v0.2.0324c359Merge pull request #283 from jbaublitz/neli-2752e15a8fRework handling of DONE packets to prepare for connector protocole2a617dMerge pull request #282 from jbaublitz/neli-2685b305daFix bug in group handling with getsockopt syscallbd75462Merge pull request #279 from chrspeich/buffer-perf6b2fd3bDirectly implement FromBytesWithInput and ToBytes for Buffer4cf3014Merge pull request #278 from jbaublitz/neli-27324d6185Fix rta deserialization test for big endianDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebasewill rebase this PR@dependabot recreatewill recreate this PR, overwriting any edits that have been made to it@dependabot mergewill merge this PR after your CI passes on it@dependabot squash and mergewill squash and merge this PR after your CI passes on it@dependabot cancel mergewill cancel a previously requested merge and block automerging@dependabot reopenwill reopen this PR if it is closed@dependabot closewill close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually@dependabot show <dependency name> ignore conditionswill show all of the ignore conditions of the specified dependency@dependabot ignore this major versionwill close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this minor versionwill close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this dependencywill close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)Superseded by #26.
Pull request closed