6个版本

0.2.2+libcoap-4.3.12023年5月24日
0.2.1+libcoap-4.3.12022年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

Download history 25/week @ 2024-03-10 27/week @ 2024-03-31 1/week @ 2024-04-07

139 每月下载量
用于 libcoap-rs

BSD-2-Clause AND BSD-1-Clause 和可能 LGPL-2.1

1.5MB
36K SLoC

C 32K SLoC // 0.1% comments Visual Studio Project 2.5K SLoC Shell 677 SLoC // 0.5% comments Automake 615 SLoC // 0.2% comments Rust 432 SLoC // 0.2% comments Visual Studio Solution 144 SLoC M4 115 SLoC // 0.6% comments Batch 12 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