mirror of
https://github.com/zerotier/ZeroTierOne.git
synced 2024-12-22 22:32:22 +00:00
85 lines
2.5 KiB
Markdown
85 lines
2.5 KiB
Markdown
# Socket2
|
|
|
|
Socket2 is a crate that provides utilities for creating and using sockets.
|
|
|
|
The goal of this crate is to create and use a socket using advanced
|
|
configuration options (those that are not available in the types in the standard
|
|
library) without using any unsafe code.
|
|
|
|
This crate provides as direct as possible access to the system's functionality
|
|
for sockets, this means little effort to provide cross-platform utilities. It is
|
|
up to the user to know how to use sockets when using this crate. *If you don't
|
|
know how to create a socket using libc/system calls then this crate is not for
|
|
you*. Most, if not all, functions directly relate to the equivalent system call
|
|
with no error handling applied, so no handling errors such as `EINTR`. As a
|
|
result using this crate can be a little wordy, but it should give you maximal
|
|
flexibility over configuration of sockets.
|
|
|
|
See the [API documentation] for more.
|
|
|
|
[API documentation]: https://docs.rs/socket2
|
|
|
|
# Two branches
|
|
|
|
Currently Socket2 supports two versions: v0.4 and v0.3. Version 0.4 is developed
|
|
in the master branch, version 0.3 in the [v0.3.x branch].
|
|
|
|
[v0.3.x branch]: https://github.com/rust-lang/socket2/tree/v0.3.x
|
|
|
|
# OS support
|
|
|
|
Socket2 attempts to support the same OS/architectures as Rust does, see
|
|
https://doc.rust-lang.org/nightly/rustc/platform-support.html. However this is
|
|
not always possible, below is current list of support OSs.
|
|
|
|
*If your favorite OS is not on the list consider contributing it! See [issue
|
|
#78].*
|
|
|
|
[issue #78]: https://github.com/rust-lang/socket2/issues/78
|
|
|
|
### Tier 1
|
|
|
|
These OSs are tested with each commit in the CI and must always pass the tests.
|
|
All functions/types/etc., excluding ones behind the `all` feature, must work on
|
|
these OSs.
|
|
|
|
* Linux
|
|
* macOS
|
|
* Windows
|
|
|
|
### Tier 2
|
|
|
|
These OSs are currently build in the CI, but not tested. Not all
|
|
functions/types/etc. may work on these OSs, even ones **not** behind the `all`
|
|
feature flag.
|
|
|
|
* Android
|
|
* FreeBSD
|
|
* Fuchsia
|
|
* iOS
|
|
* illumos
|
|
* NetBSD
|
|
* Redox
|
|
* Solaris
|
|
|
|
# Minimum Supported Rust Version (MSRV)
|
|
|
|
Socket2 uses 1.46.0 as MSRV.
|
|
|
|
# License
|
|
|
|
This project is licensed under either of
|
|
|
|
* Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or
|
|
http://www.apache.org/licenses/LICENSE-2.0)
|
|
* MIT license ([LICENSE-MIT](LICENSE-MIT) or
|
|
http://opensource.org/licenses/MIT)
|
|
|
|
at your option.
|
|
|
|
### Contribution
|
|
|
|
Unless you explicitly state otherwise, any contribution intentionally submitted
|
|
for inclusion in this project by you, as defined in the Apache-2.0 license,
|
|
shall be dual licensed as above, without any additional terms or conditions.
|