免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3699 | 回复: 1
打印 上一主题 下一主题

net-SNMP关于agent开发. 获取set 参数问题. 内有具体代码. [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-09-06 15:48 |只看该作者 |倒序浏览
本帖最后由 unix_pro 于 2010-09-07 16:18 编辑

小弟向哥哥姐姐请教一个问题.

net-snmp中的agent程序得到 PC端 (snmpc) 的 set值的 函数入口在哪里?

我看了 example.{c,h} 和scalar.{c,h}.
但是由于自身问题,没有看明白 从pc(snmpc)端 set 值获取函数入口.

希望有经验的前辈能够提示下.

论坛徽章:
0
2 [报告]
发表于 2010-09-07 16:17 |只看该作者
我在开发agent方面碰到了一些问题,希望能得到一些帮助.
非常感谢花费时间阅读.

我阅读了 用NET-SNMP软件包开发简单客户端代理.

我读了  <<用net-snmp软件包开发简单客户代理>> 这个文章.其中display_time.c 并没有关于 set的代码.

看了example.{c,h}这个文件,里面有 write的模块,但是有地方看不明白.请您指教一下.具体代码如下.

这个是我的 代码.  我想让我的 set的值 进入essidvar 这个变量中. 但是不知道如何把 set的值通过什么方式传入进去.请指教.
非常感谢了.占用您宝贵的时间.
  1. int                  essidvar = 8;

  2. var_wlanSettingTable ( struct variable *vp,
  3.                               oid     *name,
  4.                               size_t  *length,
  5.                               int     exact,
  6.                               size_t  *var_len,
  7.                               WriteMethod **        write_method )
  8. {
  9.                 DEBUGMSGTL(("cpxwlanmib", "var_wlanSettingTable entered\n"));
  10.        char *ptr=NULL;
  11.        if (header_generic(vp, name, length, exact, var_len, write_method) ==
  12.         MATCH_FAILED)
  13.         return NULL;

  14.        //printf("SUNBIN:enter var_wlanSettingTable \n");

  15.        switch ( vp->magic ){
  16.             
  17.             case   SSID:
  18.                     if(strcmp(SNMPconfGetSectionKey("sys","wlan0","MODE"), "0") == 0)
  19.                         ptr = SNMPconfGetSectionKey("sys","wlan0","ESSID");   
  20.                     else
  21.                         ptr = SNMPconfGetSectionKey("sys","wlan0","RESSID");           
  22.                    *var_len=strlen(ptr);
  23.                    *write_method = write_cpxwlanmib;
  24.                      return (u_char *) ptr;
  25. return NULL;
  26.                   }
  27. }
  28. //我的写函数
  29. int        write_cpxwlanmib(int action,
  30.         u_char * var_val,
  31.         u_char var_val_type,
  32.         size_t var_val_len,
  33.         u_char * statP, oid * name, size_t name_len)
  34. {/*
  35.     * Define an arbitrary maximum permissible value
  36.     */
  37. #define MAX_ESSIDVAR        100
  38.    static char     intval;
  39.    static char     old_intval;
  40.   
  41.    static char                                tmp[50];


  42.    switch (action) {

  43. case ACTION:
  44.        /*
  45.         *  Set the variable as requested.
  46.         *   Note that this may need to be reversed,
  47.         *   so save any information needed to do this.
  48.         */
  49.        //old_intval = example_int;
  50.                                 //                old_intval = SNMPconfGetSectionKey("sys","wlan0","RESSID");
  51.       // example_int = intval;
  52.           essidvar = intval;
  53.           sprintf(tmp,"iwconfig ath1 essid eth%d",[color=Red]essidvar[/color]);
  54.             system(tmp);
  55.        break;

  56.    case UNDO:
  57.    .....

  58.    case COMMIT:
  59. ......
  60.        break;

  61.    }
  62.    return SNMP_ERR_NOERROR;
  63. }
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP