首页 > 其他分享 >snmp源结构分析

snmp源结构分析

时间:2023-04-11 15:55:57浏览次数:23  
标签:分析 int netsnmp snmp session timeout block 结构

在应用程序代码中 #include<net-snmp-includes.h>

#include<net-snmp/net-snmp-config.h>

net-snmp-config.h主要定义了各种配置的宏,以下是net-snmp-includes.h的结构图

 

 

 

 

 


黄色星星:函数说明

1、int netsnmp_daemonize(intquit_immediately, int stderr_log);(system.h)

将程序变为守护进程,将会fork子进程并调用setsid().

未改变工作目录和关闭文件描述符

2、 netsnmp_session *snmp_open(netsnmp_session*);

根据用户提供的会话信息建立snmp会话,打开并绑定必要的UDP端口。将会返回被创建会话的句柄(不同于传递给snmp_open的指针变量)无论出现何种错误,都返回NULL,并且创建snmp_errno错误码。

3、int snmp_close(netsnmp_session *);

int snmp_close_sessions(void);

关闭参数描述的会话。释放被该回话分配的数据,重排在队列中所有未决(未处理的)请求,并关闭所有该回话打开的套接字。出错返回0,否则返回1.

 

4、intsnmp_send(netsnmp_session *, netsnmp_pdu *);

在调用snmp_build创建一个连续的数据包之后发送输入消息报文。如果有必要,根据会话默认值设置PDU的某些字段。并在该会话的请求列表上添加一与该PDU相对应的请求,然后发送消息。返回请求ID或1,出错返回0.消息报文会被该函数释放,除非发生错误。

5、int snmp_async_send(netsnmp_session*, netsnmp_pdu *,

netsnmp_callback, void *);

异步发送

6、void snmp_read(fd_set*);

查看是否参数所描述的文件描述符集中的所有文件描述符都属于snmp。每一个带有各自 文件描述符的套接字都会得到一个数据包,当收到数据包时会调用snmp_parse。处理过 的PDU将会发送给

snmp_read2()和snmp_read()一样,但是可以接受大文件的文件描述符集,而不仅仅是常规文件。

7、intsnmp_select_info(numfds, fdset, timeout, block)

int *numfds;

fd_set *fdset;

structtimeval *timeout;

int *block;

输入:如果输入的timeout没有被定义,block设为1;如果输入的timeout被定义了,block设为0。

输出:如果输出的timeout没有被定义,block被视为1;如果输出的timeout被定义了,block被设为0。

上面的输入输出指定是参数timeout和block。

该函数的返回值为可以操作的socket数量,并且这些socket已经被选到了fdset里,供后续的select操作。

Snmp_read, snmp_select_info,and snmp_timeout provide an interface for the use of the select(2) system callso that SNMP transactions can occur asynchronously.

 


红色星星:数据结构说明

 

 

 



标签:分析,int,netsnmp,snmp,session,timeout,block,结构
From: https://www.cnblogs.com/cqx6388/p/17306491.html

相关文章

  • 通过snmp-备份华为配置 -S5735-S48PX
    对象名hwCfgOperateTypeOID1.3.6.1.4.1.2011.6.10.1.2.4.1.2对象类型MIB表节点数据类型INTEGER最大访问权限read-create对象名hwCfgOperateProtocolOID1.3.6.1.4.1.2011.6.10.1.2.4.1.3对象类型MIB表节点数据类型INTEGER最大访问......
  • sql提高 循环结构
    循环结构 分类:while、loop、repeat——对应java中:for、while、dowhile  循环控制:iterate类似于continue,继续,结束本次循环,继续下一次循环leave类似于break,跳出,结束当前所在的循环 1.while语法:【标签:】while循环条件do循环体;endwhile;联想:whil......
  • 31、图像连通域分析
    图像的连通域是指图像中具有相同像素值并且位置相邻的像素组成的区域,连通域分析是指在图像中寻找出彼此互相独立的连通域并将其标记出来。提取图像中不同的连通域是图像处理中较为常用的方法,例如在车牌识别、文字识别、目标检测等领域对感兴趣区域分割与识别。一般情况下,一个......
  • JVM:并发的可达性分析
    当前主流编程语言的垃圾收集器基本上都是依靠可达性分析算法来判定对象是否存活的,可达性分析算法理论上要求全过程都基于一个能保障一致性的快照中才能够进行分析,这意味着必须全程冻结用户线程的运行。在根节点枚举这个步骤中,由于GCRoots相比起整个Java堆中全部的对象毕竟......
  • 【SDR学习】RTL-SDR基本结构
    最近对无线电很有兴趣,故而本篇博客介绍一下自己购买的RTL-SDR的基本结构首先SDR就是SoftwareDefinedRadio,即软件定义的无线电,而RTL-SDR是一款非常便宜的SDR设备,可用于接收射频无线电信号,我购买的如下图所示:把外壳拆开后可以看一下里面的结构:......
  • 深度剖析Redis九种数据结构实现原理,建议收藏
    1.Redis介绍Redis是一个高性能的键值存储系统,支持多种数据结构。包含五种基本类型String(字符串)、Hash(哈希)、List(列表)、Set(集合)、Zset(有序集合),和三种特殊类型Geo(地理位置)、HyperLogLog(基数统计)、Bitmaps(位图)。每种数据结构都是为了解决特定问题而设计的,适用不同的场景。想要......
  • PCA主成分分析
     PCA的数学原理参见这条博客,写的通俗易懂:http://blog.codinglabs.org/articles/pca-tutorial.html 其中几个重点步骤如下: ......
  • 面向对象 程序分析 友元函数
    什么是友元函数?友元函数(friendfunction)是C++中一个特殊的函数类型。它不是类的成员函数,但它可以访问类的私有(private)和保护(protected)成员。友元函数提供了一种突破类封装的机制,允许在类之外的代码访问类的私有和保护成员。当你想要让某个函数访问一个类的私有和保护成员时,可以......
  • 麻省理工提出非结构化环境中基于语义的车辆全局定位新方法
    以下内容来自小六的机器人SLAM学习圈知识星球每日更新内容点击领取学习资料→机器人SLAM学习资料大礼包论文#GlobalLocalizationinUnstructuredEnvironmentsusingSemanticObjectMapsBuiltfromVariousViewpoints论文地址:https://arxiv.org/abs/2303.04658作者单......
  • ELK、ELFK企业级日志分析系统
    一、ELK简介1、什么是ELKELK日志分析系统:由3个组件组成Elasticesearch、Kiabana、Logstash完成更强大的用户对日志的查询排序和统计需求日志服务器作用:提高安全性、集中存放日志、缺陷:对日志分析困难2、ELK工作原理及过程①、将日志进行集中化管理,从消息队列进入logstash......