基於OpenWrt新增ubus支援

2021-07-12 05:18:46 字數 1319 閱讀 8261

平台:openwrt 14.07 + 一台路由器

需求:為乙個守護程序新增ubus支援,使之能夠使用ubus call來獲取相關資訊

參考:netifd,ubus原始碼(尤其是examples目錄下的示例)

思路:聽聞ubus有封裝好的api,那麼,一定有某些規則讓我們這些開發者去遵循,帶著這個問題去尋找答案,找到如何從零開始給守護程序新增ubus支援的方法。

……經過數日的努力和分析,以下是核心的實現步驟,授人以魚不如授人以漁,我這裡不會貼出完完全全的**,希望讀者能夠根據這些啟示,結合netifd和ubus的原始碼,自己去領會……

uloop_init(); // 初始化

ubus_path = path;

ubus_ctx = ubus_connect(path);

if (!ubus_ctx)

fprintf(stdout, "connect as %08x\n", ubus_ctx->local_id);

ubus_ctx->connection_lost = rp_ubus_connection_lost; //新增乙個重連機制,可以省略的

rp_ubus_add_fd();

rp_ubus_add_object(&sample_object);// 新增物件

static

void

rp_ubus_add_object(struct ubus_object *obj)

// 處理函式

static

intrp_handle_hook_status(struct ubus_context *ctx, struct ubus_object *obj,

struct ubus_request_data *req, const

char *method,

struct blob_attr *msg)

static

struct ubus_method hook_methods = ,// 這是其中一種成員新增的模板,名字叫什麼,處理函式是誰,說清楚來,

};static

struct ubus_object_type hook_object_type =

ubus_object_type("package.sample", hook_methods);

// 這個結構體就是整個框架的縮影

static

struct ubus_object hook_object = ;

ubus_free(ubus_ctx);

uloop_done();

openwrt之新增OpenWrt軟體包概述

新增軟體包 makefile引入檔案 openwrt 使用三個 makefile 的子檔案,分別為 include topdir rules.mk include include dir kernel.mk include include dir package.mk 由這些 makefile 子檔...

openwrt 新增web介面

要給自己的開發板新增上 web 介面,只需要在 openwrt原始碼中,將 luci 配置進去即可。首先進入 openwrt原始碼頂層目錄,然後執行 make menuconfig 命令。sz yy szyy pc home linux openwrt trunk make menuconfig 然...

OpenWRT新增 crontab開機預設執行

openwrt系統預設已經新增了crond,只是沒有配置預設配置引數,致使服務起不來。1.修改啟動指令碼 etc ini.d cron etc rc.d s50cron為 etc ini.d cron的鏈結 bin sh etc rc.common start 50 service use pid ...