ubus是OpenWrt中的进程间通信机制,ubusd实现server,其他进程实现client,例如ubus(cli)、netifd、procd,两个client通信需要通过server转发。
ubus提供了创建socket client端的接口,并且提供了三种现成的客户端供用户直接使用:
- 为shell脚本提供的client端。
- 为lua脚本提供的client接口。
- 为C语言提供的client接口。
这边主要对C语言和shell进行说明
1 ubus method
ubusd已经由openwrt实现了,所以我们就实现client端的ubus,也是基于uloop来实现的,所以其三步骤也是必须的:
void ubus_test(void)
{
uloop_init();
ztest_ubus_init();
uloop_run();
ztest_ubus_clean();
uloop_done();
}
ubus的调用步骤ubus_connect、ubus_add_uloop、ubus_add_object
int ztest_ubus_init(void)
{
int ret;
g_ubus_ctx = ubus_connect(NULL);
if (!g_ubus_ctx) {
ULOG_ERR("Failed t