[英]OpenWrt LibUbi implementation
我正在嘗試使用libuci為OpenWrt路由器開發應用程序(用ANSI C編寫)。 我讀了這篇有用的文章: 如何確定eth0模式是靜態還是dhcp?
並且我已經開發了一部分應用程序,它能夠使用uci庫讀取網絡數據(在這種情況下,如果啟用了ppp,則可以讀取)。
char path[]="network.ppp.enabled";
struct uci_ptr ptr;
struct uci_context *c = uci_alloc_context();
if(!c) return;
if (strcmp(typeCmd, "GET") == 0){
if ((uci_lookup_ptr(c, &ptr, path, true) != UCI_OK) || (ptr.o==NULL || ptr.o->v.string==NULL)) {
uci_free_context(c);
return;
}
if(ptr.flags & UCI_LOOKUP_COMPLETE)
strcpy(buffer, ptr.o->v.string);
uci_free_context(c);
printf("\n\nUCI result data: %s\n\n", buffer);
}
現在我想嘗試設置新的網絡數據(所以我想啟用ppp->將ppp設置為1),我寫道:
}else if (strcmp(typeCmd, "SET") == 0){
if ((uci_lookup_ptr(c, &ptr, path, true) != UCI_OK) || (ptr.o==NULL || ptr.o->v.string==NULL)) {
uci_free_context(c);
return;
}
ptr.o->v.string = "1";
if ((uci_set(c, &ptr) != UCI_OK) || (ptr.o==NULL || ptr.o->v.string==NULL)) {
uci_free_context(c);
return;
}
if (uci_commit(c, struct uci_package **p, true) != UCI_OK){
uci_free_context(c);
return;
}
}
LibUci文檔不存在,文件uci.h中只有一些信息,我不知道如何填充uci_ptr結構,因此我已經從uci_lookup_ptr中檢索了它,我更改了ptr.o-> v.string並用新的參數啟動uci_set ,但是關於uci_commit我不知道struct uci_package ** p 。
有人打電話給我分享一些文檔或給我看一些例子嗎?
非常感謝
有關UCI的文檔非常少。 我發現的方法是使用uci結構中的uci_ptr的.value屬性。
從那開始,我改變了這一行:
ptr.o->v.string = "1";
至:
ptr.value = "1";
我還更改了您的提交行,如下所示:
uci_commit(ctx, &ptr.p, false);
那對我有用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.