我正在尝试使用 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。
有人打电话给我分享一些文档或给我看一些例子吗?
非常感谢