你是否正在寻找关于cwmp的内容?让我把最宝贵的东西奉献给你:

[转载请注明出处]
Easycwmp实现的是一个和snmp差不多的协议。
0.主要看一下easycwmpd与脚本的交互代码,。easycwmpd是通过脚本获取系统参数,然后将参数与服务器进行数据交换。
int external_init() { log_message(NAME, L_NOTICE, ); if (pipe(pfds_out) < 0) return -1; if (pipe(pfds_in) < 0) return -1; if ((pid = fork()) == -1) { log_message(NAME, L_CRIT, ); return -1; } if (pid == 0) { close(pfds_out[0]); dup2(pfds_out[1], STDOUT_FILENO); close(pfds_out[1]); close(pfds_in[1]); dup2(pfds_in[0], STDIN_FILENO); close(pfds_in[0]); int i=0; const char *argv[4]; argv[i++] = ; argv[i++] = fc_script; argv[i++] = ; argv[i++] = NULL; execvp(argv[0], (char **) argv); exit(ESRCH); } else if (pid < 0) return -1; close(pfds_out[1]); close(pfds_in[0]); int r = external_read_pipe(NULL); return r; }
流程图为(打开两个管道,用于子进程与父进程之间进行通信):

1.首先看下需要依赖的软件:
curl-7.29.0
easycwmp-1.2.3
json-c-0.11
libmicroxml-2012-06-11
libubox-2013-10-19
lua-5.1.4
ubus-2013-08-08
uci-2013-06-11.1
2.开始以此移植
curl-7.29.0
#!/bin/sh ./configure --target=mips-linux \ --host=mips-linux \ --prefix=$PWD/../install
json-c-0.11
#!/bin/bash PRJ_PATH=`pwd` CROSS=/opt/toolchain-mips-gc33/usr/bin/mips-linux- make distclean autoreconf -i export CC=${CROSS}gcc export CPP=${CROSS}cpp export AS=${CROSS}as export LD=${CROSS}ld export AR=${CROSS}ar export RANLIB=${CROSS}ranlib export STRIP=${CROSS}strip export ac_cv_func_malloc_0_nonnull=yes export ac_cv_func_realloc_0_nonnull=yes export ac_cv_have_decl_isinf=yes export ac_cv_have_decl_isnan=yes #export LDFLAGS += -lm ./configure --disable-dependency-tracking --with-gnu-ld --target=mips-linux --host=mips-linux --prefix=${PRJ_PATH}/../install
libmicroxml-2012-06-11
#!/bin/sh ./configure --target=mips-linux \ --host=mips-linux \ --prefix=$PWD/../install
libubox-2013-10-19
SET(CMAKE_SYSTEM_NAME Linux) INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/../install/include) LINK_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/../install/lib) #SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) #SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) #SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) SET(CMAKE_C_COMPILER /opt/toolchain/bin/mips-linux-gcc) SET(CMAKE_CXX_COMPILER /opt/toolchain/bin/mips-linux-g++)
#!/bin/sh cmake CMakeLists.txt -DBUILD_LUA=OFF -DCMAKE_INSTALL_PREFIX=$PWD/../install
uci-2013-06-11.1
SET(CMAKE_SYSTEM_NAME Linux) INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/../install/include) LINK_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/../install/lib) #SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) #SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) #SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) SET(CMAKE_C_COMPILER /opt/toolchain/bin/mips-linux-gcc) SET(CMAKE_CXX_COMPILER /opt/toolchain/bin/mips-linux-g++)
#!/bin/sh cmake CMakeLists.txt -DBUILD_LUA=OFF -DCMAKE_INSTALL_PREFIX=$PWD/../install
ubus-2013-08-08
SET(CMAKE_SYSTEM_NAME Linux) INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/../install/include) LINK_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/../install/lib) #SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) #SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) #SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) SET(CMAKE_C_COMPILER /opt/toolchain/bin/mips-linux-gcc) SET(CMAKE_CXX_COMPILER /opt/toolchain/bin/mips-linux-g++)
#!/bin/sh ccmake CMakeLists.txt -DBUILD_LUA=OFF -DCMAKE_INSTALL_PREFIX=$PWD/../install
easycwmp-1.2.3
#!/bin/sh ./configure --target=mips-linux \ --host=mips-linux \ --prefix=$PWD/../install \ LIBCURL_CFLAGS= \ LIBCURL_LIBS= \ MICROXML_CFLAGS= \ MICROXML_LIBS= \ CFLAGS= \ LDFLAGS= \ LIBS=
配置文件只需要修改服务器的地址和端口即可

最后程序运行
ubusd & easycwmpd -b -f &
以上就是关于cwmp的全部内容,相信你一定会非常满意。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-7786-1.html
战争只是牺牲部分地区的秩序
如果钱比较闲放招财宝一年有500多