6个版本
0.2.2+libcoap-4.3.1 | 2023年5月24日 |
---|---|
0.2.1+libcoap-4.3.1 | 2022年11月20日 |
0.2.0+libcoap-develop-8b9… | 2022年6月28日 |
0.1.2 | 2020年2月3日 |
0.1.0 | 2020年1月27日 |
#9 in #dtls
139 每月下载量
用于 libcoap-rs
1.5MB
36K SLoC
包含 (神秘的autoconf代码,48KB) src/libcoap/configure.ac
libcoap-sys - libcoap的原始绑定
此crate包含对libcoap CoAP库的原始不安全绑定,这些绑定使用bindgen生成。
功能
我们目前定义了多个功能,这些功能会影响此包装提供的功能以及链接的libcoap库所需的函数。
影响功能的功能
-
dtls
:启用使用DTLS进行传输安全。支持多种不同的后端。请注意,由于Cargo语法的限制,这里没有指定,但DTLS功能依赖于启用了某个DTLS后端,未能启用DTLS后端将导致构建失败。
如果您正在基于libcoap-sys开发库,并且不关心DTLS后端,请启用dtls功能,让用户自行决定使用哪个后端,要么通过重新导出这些功能(参见Cargo手册),要么假设用户会将libcoap-sys作为依赖项并自行启用相应的后端功能,依赖Cargo的功能统一,以便为您自己的crate启用它。
此外,由于C库将这些后端作为互斥功能,因此后端是互斥的。如果启用了多个后端(例如,由于多个依赖项使用libcoap-sys并使用不同的后端),我们将根据在libcoap配置脚本中指定的自动检测顺序选择一个(gnutls > openssl > mbedtls > tinydtls)。
-
dtls_backend_(openssl|gnutls|mbedtls|tinydtls)
:启用相应的DTLS后端。请注意,启用OpenSSL、GnuTLS、TinyDTLS或MbedTLS后端还需要相应的库可用(因此依赖于相应的sys-crate)。TinyDTLS后端默认使用一个供应商版本(静态链接)的TinyDTLS构建,有关更多信息,请参阅tinydtls-sys crate。选择DTLS后端还意味着这些库的许可条款可能适用于您。有关更多信息,请参阅libcoap许可文件的相关部分。
-
-
tcp
(默认):启用CoAP over TCP支持 -
async
(默认):启用异步功能。请注意,此异步功能不是翻译成Rust的异步语言功能,而是向底层C库添加功能,以便可以进行异步请求(即返回响应之前完成的函数调用)。
将libcoap集成到Rust的异步语言功能之外的范围,但可能在libcoap(安全抽象)crate中稍后实现。
-
server
(默认):启用与服务器功能相关的代码 -
client
(默认):启用与客户端功能相关的代码 -
epoll
(默认):允许底层C库使用epoll执行IO操作。
其他功能
vendored
(默认):使用供应商版本的libcoap而不是系统提供的版本。请注意,vendored
意味着static
。static
(默认):将libcoap C库进行静态链接。
影响功能的功能说明
添加或删除功能的功能不会更改生成的绑定,因为libcoap的头文件(与源文件本身不同)不受相应的#define
的影响。
对于链接到libcoap共享版本的库用户,这意味着功能标志没有影响,支持的特性将直接对应于构建共享libcoap实例时启用的特性(使用configure-script)。
对于供应商版本的libcoap用户(请参阅vendored
功能),供应商libcoap支持的特性将在构建期间设置为与cargo功能匹配。
许可
libcoap-sys绑定根据2-Clause/Simplified BSD许可证授权,与它所绑定的libcoap C库的许可证相匹配。
请注意,对于libcoap-sys绑定和生成的二进制文件,libcoap C库以及链接的依赖项(例如TLS库)的许可条款可能适用。
此外,libcoap C库包含一些第三方代码,其适用不同的许可条款。
有关更多信息,请参阅https://github.com/obgm/libcoap/blob/develop/LICENSE以及依赖项的许可证。
依赖项
~0–4MB
~82K SLoC