libubox-sys
Raw bindgen FFI bindings to OpenWrt's libubox (blob, blobmsg, uloop, avl, kvlist, vlist, ulog, usock, md5, runqueue, ustream, safe_list).
For an idiomatic Rust API, use the libubox crate instead.
Usage
[]
= "0.0.1"
The crate vendors libubox as a git submodule and builds it via CMake by default, so consumers do not need an OpenWrt SDK or a system libubox install.
Build prerequisites
- A C compiler and CMake >= 3.13
pkg-configand json-c dev headers (libjson-c-dev/json-c-devel) — required even with thejsonfeature off, because libubox's own CMakeLists unconditionally probes json-c.
Cargo features
| Feature | Default | Effect |
|---|---|---|
json |
off | Link libblobmsg_json + libjson_script and expose their FFI items. |
bindgen |
off | Regenerate bindings at build time instead of using the committed pregenerated file. |
static |
off | Statically link libubox (equivalent to LIBUBOX_STATIC=1). libjson_script is always linked dynamically — upstream provides no static target. |
System-mode build (skip the vendored CMake build)
Useful for OpenWrt SDK / cross builds where libubox is already installed:
LIBUBOX_DIR— prefix withinclude/libubox/*.handlib/libubox.*.LIBUBOX_INCLUDE_DIR/LIBUBOX_LIB_DIR— fine-grained overrides.LIBUBOX_STATIC=1— equivalent to thestaticfeature.
If any of those are set, the vendored CMake build is skipped.
Version & ABI
The crate version tracks the wrapper API, not libubox. The vendored libubox commit is pinned in vendor/libubox and recorded in +libubox-<sha> build-metadata where applicable.
MSRV: 1.90.
License
Dual licensed under MIT or Apache-2.0, at your option. The vendored libubox sources are under ISC.