SNMP常用数据操作

snmp编程中常见的数据类型基本上就是integer32/oct_str(字节数组)/counter64/timeticks/dateAndTime这些。很多其它的比如TruthValue这样的数据在编程的时候一般都比较少用,而且一般都有对应的替代。

Counter32类型

Counter32其实对应C语言中的32位无符号整型(0~2^32-1)。在snmpv1中它的解释是:“计数器是一个非负的整数,它递增至最大值,而后归零”。

对counter32的操作,在32位机器上,其一般使用unsigned int来表示。是比较简单的数据类型,所以无需使用特别的操作。

Counter64类型

Counter64对应64位的计数器,它表示的范围(0~2^64-1)就比counter32大多了,在net-snmp中提供了对它操作的相关函数。

Net-snmp中并没有直接使用C语言中的64位无符号整型,而是使用了一个结构体来表示

    struct counter64 {
u_long high;
u_long low;
};

为什么这么做呢?这个不好说,可能是为了操作方便吧。在snmp++中定义了一个类Counter64来提供对这个数据类型的操作,它也是如同此处将其分为高位部分(hipart)和低位(lopart)部分。

同时还定义了一些用于操作counter64数据类型的函数。

 typedef struct counter64 U64;

#define I64CHARSZ 21

    void            divBy10(U64, U64 *, unsigned int *);
void multBy10(U64, U64 *);
void incrByU16(U64 *, unsigned int);
void incrByU32(U64 *, unsigned int);
NETSNMP_IMPORT
void zeroU64(U64 *);
int isZeroU64(const U64 *);
NETSNMP_IMPORT
void printU64(char *, const U64 *);
NETSNMP_IMPORT
void printI64(char *, const U64 *);
int read64(U64 *, const char *);
NETSNMP_IMPORT
void u64Subtract(const U64 * pu64one, const U64 * pu64two,
U64 * pu64out);
void u64Incr(U64 * pu64out, const U64 * pu64one);
void u64UpdateCounter(U64 * pu64out, const U64 * pu64one,
const U64 * pu64two);
void u64Copy(U64 * pu64one, const U64 * pu64two); int netsnmp_c64_check_for_32bit_wrap(U64 *old_val, U64 *new_val,
int adjust);
NETSNMP_IMPORT
int netsnmp_c64_check32_and_update(struct counter64 *prev_val,
struct counter64 *new_val,
struct counter64 *old_prev_val,
int *need_wrap_check);

在net-snmp中对Counter64数据的操作应该使用下面的函数来进行,而不用直接使用unsigned long long等原生的数据类型。为什么要这么做呢?因为这涉及到将counter64数据的解析转换等操作。

具体可见asn_build_unsigned_int64函数,它在net-snmp-5.7.3\snmplib\asn1.c文件中。

u_char         *
asn_build_unsigned_int64(u_char * data,
size_t * datalength,
u_char type,
const struct counter64 * cp, size_t countersize)

time ticks类型

time ticks:是一个时间单位,表示以0.01秒为单位计算的时间;

这其实就是一个32位无符号整型。这里要注意一下的是它的单位,在使用的时候应该进行单位换算。

DateAndTime类型

这是一个用来表示时间的数据类型,长度为11个字节。

在snmp中有具体的规定,每一个字节表示什么。

以前解释过它,这里就不详述的了。可用看这里http://www.cnblogs.com/oloroso/p/4595127.html

SNMP常用数据操作的更多相关文章

  1. Android 常用数据操作封装类案例

    1.DbHelper类 继承自SQLiteOpenHelper类,实现对数据库的基本操作 package com.example.utils; import android.content.Conte ...

  2. mybatis 2 -常用数据操作

    1.写入数据并获取自增ID XML配置: <!-- 写入数据获取自增ID --> <insert id="insertLog" parameterType=&qu ...

  3. MySql常用数据操作

    1.数据库操作: MySQL服务管理命令: 1.启动服务:sudo service mysql start 2.停止服务:sudo service mysql stop 3.重新启动服务:sudo s ...

  4. 大数据(5) - HDFS中的常用API操作

    一.安装java 二.IntelliJ IDEA(2018)安装和破解与初期配置 参考链接 1.进入官网下载IntelliJ IDEA https://www.jetbrains.com/idea/d ...

  5. 配置监听器 服务器启动时 检索常用数据 保存在application中 减少数据的查询操作(OA项目)

    模型 大致介绍一下:左侧菜单是用户登录成功之后显示的页面  这些数据就是通过查询数据库 然后在页面中把查到的数据  循环遍历出来   构成了操作菜单 第一个解决的问题:常用数据  在服务器启动的时候 ...

  6. 入门大数据---Hive常用DML操作

    Hive 常用DML操作 一.加载文件数据到表 1.1 语法 LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename ...

  7. Mysql常用表操作 | 单表查询

    160905 常用表操作 1. mysql -u root -p 回车 输入密码   2. 显示数据库列表 show databases     3. 进入某数据库 use database data ...

  8. Django数据操作F和Q、model多对多操作、Django中间件、信号、读数据库里的数据实现分页

    models.tb.objects.all().using('default'),根据using来指定在哪个库里查询,default是settings中配置的数据库的连接名称. 外话:django中引 ...

  9. Entity Framework 5.0系列之数据操作

    Entity Framework将概念模型中定义的实体和关系映射到数据源,利用实体框架可以将数据源返回的数据具体化为对象:跟踪对象所做的更改:并发处理:将对象更改传播到数据源等.今天我们就一起讨论如何 ...

随机推荐

  1. ecstore小记

    主要app base 基础MVCdbeav 数据库扩展pam 登录认证setup 系统安装工具image 图片存取site 站点desktop 后台操作ectools 电商基础工具b2c 订单,商品, ...

  2. 删除ibus之后导致系统设置进不了

    sudo apt-get instal ubuntu-desktop 快捷键调出sogou拼音,默认为"ctrl+,"

  3. FingerGestures for Unity3D

    FingerGestures http://fingergestures.fatalfrog.com

  4. 新创建一个git远程仓库

    1.git 服务器项目初始化已经完毕,请把相关的资料和源码上传到git服务器. 2.第一次需要clone,执行命令:git clone git@192.168.10.184:listenbox_mc_ ...

  5. winform只能有一个实例运行且打开已运行窗口

    static class Program { private static Mutex onlyOne; [STAThread] static void Main() { onlyOne = new ...

  6. ASP.NET MVC URL重写与优化(进阶篇)-继承RouteBase玩转URL

    http://www.cnblogs.com/John-Connor/archive/2012/05/03/2478821.html 引言-- 在初级篇中,我们介绍了如何利用基于ASP.NET MVC ...

  7. Tomcat服务器原理详解

    [目录]本文主要讲解Tomcat启动和部署webapp时的原理和过程,以及其使用的配置文件的详解.主要有三大部分: 第一部分.Tomcat的简介和启动过程 第二部分.Tomcat部署webapp 第三 ...

  8. MIT Scheme 使用 Edwin

    MIT Scheme 的基本使用:http://www.math.pku.edu.cn/teachers/qiuzy/progtech/scheme/mit_scheme.htm 安装过程 安装bre ...

  9. 几种 Java 序列化方案的性能比较

    较结果: create ser deser total size +dfl java-built-in 62 5608 29649 35257 889 514 hessian 65 3812 6708 ...

  10. [转] 安装DotNetCore.1.0.1-VS2015Tools.Preview2.0.2出现0x80072f8a未指定的错误

    原文地址:安装DotNetCore.1.0.1-VS2015Tools.Preview2.0.2出现0x80072f8a未指定的错误 最近DotNetCore更新到了1.0.1,Azure tools ...