SNMP MIB中的含read-create节点的表的实现
做过snmp/mib开发的知道,常见的节点类型一般只有no-accessible,read-only,read-write三种访问类型。snmp V2中引入了一种新的访问类型:read-create。
最近在一个产品的snmp管理接口开发中,需要实现snmpTargetMIB(.1.3.6.1.6.3.12),其下面两个表snmpTargetAddrEntry和snmpTargetParamsTable的节点都是read-create类型。
read没什么好说的,关键是这个create。Create是指这个表的行可以通过“snmp途径”来操作(增加,删除)。这些行操作是通过表中的“RowStatus”节点来进行的,比如上图中的snmpTargetAddrRowStatus和snmpTargetParamsRowStatus。mib中这两个节点的类型定义如下:
ROWSTATUS INTEGER {active(1), notInService(2), notReady(3), createAndGo(4), createAndWait(5), destroy(6) }
1.表中行的创建/删除操作
如果把rowstauts节点值设成(SnmpSet)4,5则表示在表中建立一个新的行(索引值同rowstatus节点)。
而1,2,3则是用来标记这一行描述的对象的状态的(前提是已经建立)。即建立一行后,应根据对象的=状态来更新rowstatus节点值到1/2/3。
如果把RowStatus的值设成6,则表示要删除这行。
可能有点绕,总结一下,有管理软件(发起snmp命令的)和被管理方(MIB所在处),表的行的节点建立&删除指令由管理软件来发送,由被管理方来执行。
举个例子:
比如表中已经有两条记录:
snmpTargetAdrrRowStatus(1) --->Active
snmpTargetAddrRowStatus(2) ---->notReady
要增加一个索引为3的记录,管理方发起一条 snmpSet snmpTargetAddrRowStatus(3) --->createAndGo,被管理方收到这条消息后,在表中建立一条索引为3的记录,包括snmpTargetAddrRowStatus(3)节点。
2.表中行的节点值的维护/更新
表行中所有的节点的值,除了rowStatus的4,5,6只能由管理软件来写(snmp-set),其他节点的值和RowStatus的2,3,4可以由管理软件或被管理方来更新。这点mib定义是未做约束的,我觉得这样也是合理的,可以根据需要灵活处理。
比如要添加一个告警目标(IP地址),这个地址通过管理软件来设置(snmp-set snmpTargetAddrTAddress),也可以在被管理方上来设置(比如通过Console接口,配置文件等)。 而这个目标是否可以连通则由被管理方来检测(根据结果设置rowStatus的值到1/2/3)。其实每个节点在创建后被管理方都应给它个默认值。
关于read-create节点表的软件实现,提供点思路吧。
管理方软件:
其实就是snmp-get 和snmp-set的命令组合,和read-write节点操作一样。“create”是通过snmp-set RowStatus节点来实现的。
被管理方软件:
对于RowStatus节点,定义好对RowStatus节点操作的回调函数,回调函数中根据写入的值来创建/删除表中的记录行。对于其他节点的实现则和read-write节点一样。
SNMP MIB中的含read-create节点的表的实现的更多相关文章
- SNMP MIB库
-- mib文件的开头指定文件名,并且使用BEGIN开始,文件的最后用END结束 -- IMPORTS就相当与c语言中的include,包含需要使用的一些数据类型 -- 通过FROM指定引用的来源 M ...
- es6 Object.assign ECMAScript 6 笔记(六) ECMAScript 6 笔记(一) react入门——慕课网笔记 jquery中动态新增的元素节点无法触发事件解决办法 响应式图像 弹窗细节 微信浏览器——返回操作 Float 的那些事 Flex布局 HTML5 data-* 自定义属性 参数传递的四种形式
es6 Object.assign 目录 一.基本用法 二.用途 1. 为对象添加属性 2. 为对象添加方法 3. 克隆对象 4. 合并多个对象 5. 为属性指定默认值 三.浏览器支持 ES6 O ...
- lwip 2.0.2 snmp mib ipv6
1.3.6.1.2.1 - SNMP MIB-2 Submitted by Harald.T.Alvestrand at uninett.no from host aun.uninett.no (12 ...
- 单链表 C++ 实现 - 含虚拟头节点
本文例程下载链接:ListDemo 链表 vs 数组 链表和数组的最大区别在于链表不支持随机访问,不能像数组那样对任意一个(索引)位置的元素进行访问,而需要从头节点开始,一个一个往后访问直到查找到目标 ...
- LeetCode 剑指 Offer 22. 链表中倒数第k个节点
剑指 Offer 22. 链表中倒数第k个节点 题意 输入一个链表,输出该链表中倒数第k个节点.为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点. 例如,一个链表有 6 个 ...
- 【前端】js中new和Object.create()的区别
js中new和Object.create()的区别 var Parent = function (id) { this.id = id this.classname = 'Parent' } Pare ...
- 剑指offer-第三章高质量的代码(输出该链表中倒数第K个节点)
题目:输入一个链表,输出这个链表中倒数第K个节点.(代码的鲁棒性) 思路:用两个指针p1和p2,都指向头节点,开始的时候,p2不动,p1移动k-1次,指向第k个节点.此时,如果p1->next! ...
- 向CDH5集群中添加新的主机节点
向CDH5集群中添加新的主机节点 步骤一:首先得在新的主机环境中安装JDK,关闭防火墙.修改selinux.NTP时钟与主机同步.修改hosts.与主机配置ssh免密码登录.保证安装好了perl和py ...
- lintcode:Remove Nth Node From End of Lis 删除链表中倒数第n个节点
题目: 删除链表中倒数第n个节点 给定一个链表,删除链表中倒数第n个节点,返回链表的头节点. 样例 给出链表1->2->3->4->5->null和 n = 2. 删除 ...
随机推荐
- 一个基于PDO的数据库操作类(新) 一个PDO事务实例
<?php /* * 作者:胡睿 * 日期:2011/03/19 * 电邮:hooray0905@foxmail.com * * 20110319 * 常用数据库操作,如:增删改查,获取单条记录 ...
- C# 编写Windows Service(windows服务程序)【转载】
[转]http://www.cnblogs.com/bluestorm/p/3510398.html Windows Service简介: 一个Windows服务程序是在Windows操作系统下能完成 ...
- uimodalpresentationformsheet resize ios7
CROHomeCRAAddController *temp =[[CROHomeCRAAddControlleralloc] init]; temp.modalTransitionStyle = UI ...
- 【转】linux驱动程序中的并发控制
原文网址:http://www.cnblogs.com/geneil/archive/2011/12/03/2274684.html 现代操作系统有三大特性:中断处理.多任务处理和多处理器.这些特性导 ...
- Hadoop学习总结之二:HDFS读写过程解析
一.文件的打开 1.1.客户端 HDFS打开一个文件,需要在客户端调用DistributedFileSystem.open(Path f, int bufferSize),其实现为: public F ...
- Windows下PHP+Eclipse开发环境搭建 及错误解决(apache2.2服务无法启动 发生服务特定错误:1)
前言 Eclipse与php/apache的关系:Eclipse只是用来写代码的,如果想要在浏览器查看运行效果就要让php/apache的运行目录指向你的代码目录.Eclipse貌似不会自己和apac ...
- 关于浮动-float
1.存在浏览器兼容问题:js代码 2.对于这种存在浏览器兼容问题的问题,我们可以绕开兼容性问题,先在css样式写好,然后通过该变className 3.学习的博客 https://paran.io/c ...
- C#-gdi绘图,双缓冲绘图,Paint事件的触发
一. 画面闪烁问题与双缓冲技术 1.1 导致画面闪烁的关键原因分析: 1 绘制窗口由于大小位置状态改变进行重绘操作时 绘图窗口内容或大小每改变一次,都要调用Paint事件进行重绘操作,该操作会使画面 ...
- JAVA CAS原理、unsafe、AQS
concurrent包的实现 由于java的CAS同时具有 volatile 读和volatile写的内存语义,因此Java线程之间的通信现在有了下面四种方式: A线程写volatile变量,随后B线 ...
- VS常用技巧
VS2005代码编辑器的展开和折叠代码确实很方便和实用.以下是展开代码和折叠代码所用到的快捷键,很常用: Ctrl + M + O: 折叠所有方法 Ctrl + M + M: 折叠或者展开当前方法 C ...