acl  3.5.3.0
lib_icmp.h 文件参考
#include "lib_icmp_type.h"
+ lib_icmp.h 的引用(Include)关系图:
+ 此图展示该文件直接或间接的被哪些文件引用了:

浏览源代码.

宏定义

#define ICMP_API
 

函数

ICMP_API ICMP_CHATicmp_chat_create (ACL_AIO *aio, int check_tid)
 
ICMP_API void icmp_chat_free (ICMP_CHAT *chat)
 
ICMP_API void icmp_chat (ICMP_HOST *host)
 
ICMP_API int icmp_chat_size (ICMP_CHAT *chat)
 
ICMP_API int icmp_chat_count (ICMP_CHAT *chat)
 
ICMP_API int icmp_chat_finish (ICMP_CHAT *chat)
 
ICMP_API unsigned short icmp_chat_seqno (ICMP_CHAT *chat)
 
ICMP_API void icmp_stat (ICMP_CHAT *chat)
 
ICMP_API void icmp_stat_host (ICMP_HOST *host, int show_flag)
 
ICMP_API ICMP_HOSTicmp_host_new (ICMP_CHAT *chat, const char *domain, const char *ip, size_t npkt, size_t dlen, int delay, int timeout)
 
ICMP_API void icmp_host_free (ICMP_HOST *host)
 
ICMP_API void icmp_host_set (ICMP_HOST *host, void *arg, void(*stat_respond)(ICMP_PKT_STATUS *, void *), void(*stat_timeout)(ICMP_PKT_STATUS *, void *), void(*stat_unreach)(ICMP_PKT_STATUS *, void *), void(*stat_finish)(ICMP_HOST *, void *))
 
ICMP_API void icmp_ping_one (ICMP_CHAT *chat, const char *domain, const char *ip, size_t npkt, int delay, int timeout)
 
ICMP_API ICMP_STREAMicmp_stream_open (ACL_AIO *aio)
 
ICMP_API void icmp_stream_close (ICMP_STREAM *is)
 
ICMP_API ACL_VSTREAMicmp_vstream (ICMP_STREAM *is)
 
ICMP_API void icmp_stream_from (ICMP_STREAM *is, struct sockaddr_in *addr)
 
ICMP_API void icmp_stream_dest (ICMP_STREAM *is, struct sockaddr_in *addr)
 
ICMP_API void icmp_stream_set_dest (ICMP_STREAM *is, struct sockaddr_in addr)
 
ICMP_API ICMP_HOSTicmp_host_alloc (ICMP_CHAT *chat, const char *domain, const char *ip)
 
ICMP_API void icmp_host_init (ICMP_HOST *host, unsigned char type, unsigned char code, size_t npkt, size_t dlen, int delay, int timeout)
 
ICMP_API ICMP_PKTicmp_pkt_alloc (void)
 
ICMP_API void icmp_pkt_free (ICMP_PKT *ipkt)
 
ICMP_API void icmp_pkt_pack (ICMP_PKT *pkt, unsigned char type, unsigned char code, unsigned short id, const void *payload, size_t payload_len)
 
ICMP_API void icmp_pkt_build (ICMP_PKT *pkt, unsigned short seq)
 
ICMP_API void icmp_pkt_save_status (ICMP_PKT *to, const ICMP_PKT *from)
 
ICMP_API int icmp_pkt_unpack (struct sockaddr_in from, const char *buf, int bytes, ICMP_PKT *pkt)
 
ICMP_API ICMP_PKTicmp_pkt_check (const ICMP_HOST *host, const ICMP_PKT *pkt)
 
ICMP_API unsigned char icmp_pkt_type (const ICMP_PKT *pkt)
 
ICMP_API unsigned char icmp_pkt_code (const ICMP_PKT *pkt)
 
ICMP_API unsigned short icmp_pkt_cksum (const ICMP_PKT *pkt)
 
ICMP_API unsigned short icmp_pkt_id (const ICMP_PKT *pkt)
 
ICMP_API unsigned short icmp_pkt_seq (const ICMP_PKT *pkt)
 
ICMP_API unsigned int icmp_pkt_gid (const ICMP_PKT *pkt)
 
ICMP_API const ICMP_PKTicmp_pkt_peer (const ICMP_PKT *pkt)
 
ICMP_API const ICMP_PKT_STATUSicmp_pkt_status (const ICMP_PKT *pkt)
 
ICMP_API size_t icmp_pkt_len (const ICMP_PKT *pkt)
 
ICMP_API size_t icmp_pkt_wlen (const ICMP_PKT *pkt)
 
ICMP_API size_t icmp_pkt_payload (const ICMP_PKT *pkt, char *buf, size_t size)
 
ICMP_API size_t icmp_pkt_set_extra (ICMP_PKT *pkt, const void *data, size_t len)
 
ICMP_API void icmp_pkt_set_type (ICMP_PKT *pkt, unsigned char type)
 
ICMP_API void icmp_pkt_set_code (ICMP_PKT *pkt, unsigned char code)
 
ICMP_API void icmp_pkt_set_cksum (ICMP_PKT *pkt, unsigned short cksum)
 
ICMP_API void icmp_pkt_set_id (ICMP_PKT *pkt, unsigned short id)
 
ICMP_API void icmp_pkt_set_seq (ICMP_PKT *pkt, unsigned short seq)
 
ICMP_API void icmp_pkt_set_data (ICMP_PKT *pkt, void *data, size_t size)
 

宏定义说明

◆ ICMP_API

#define ICMP_API

在文件 lib_icmp.h24 行定义.

函数说明

◆ icmp_chat()

ICMP_API void icmp_chat ( ICMP_HOST host)

开始与某个目的主机进行会话

参数
host{ICMP_HOST*} 调用 icmp_host_new 返回的对象

◆ icmp_chat_count()

ICMP_API int icmp_chat_count ( ICMP_CHAT chat)

当前的ICMP会话对象中已经完成的探测的主机个数

参数
chat{ICMP_CHAT*} 会话对象句柄
返回
{int} 已完成的被探测主机个数

◆ icmp_chat_create()

ICMP_API ICMP_CHAT* icmp_chat_create ( ACL_AIO aio,
int  check_tid 
)

创建ICMP会话对象

参数
aio{ACL_AIO*} 如果该项不为空,则内部在通信过程中采用非阻塞模式, 否则采用阻塞模式
check_tid{int} 是否在校验响应包时检查数据中的线程号字段
返回
{ICMP_CHAT*} ICMP会话对象句柄

◆ icmp_chat_finish()

ICMP_API int icmp_chat_finish ( ICMP_CHAT chat)

判断当前的ICMP会话对象中所有探测任务是否已经完成

参数
chat{ICMP_CHAT*} 会话对象句柄
返回
{int} != 0: 表示完成; 0: 表示未完成

◆ icmp_chat_free()

ICMP_API void icmp_chat_free ( ICMP_CHAT chat)

释放ICMP会话对象

参数
chat{ICMP_CHAT*} ICMP会话对象句柄

◆ icmp_chat_seqno()

ICMP_API unsigned short icmp_chat_seqno ( ICMP_CHAT chat)

取得当前ICMP会话对象中的当前会话序列号值

参数
chat{ICMP_CHAT*} 会话对象句柄
返回
{unsigned short} 会话序列号值

◆ icmp_chat_size()

ICMP_API int icmp_chat_size ( ICMP_CHAT chat)

当前的ICMP会话对象中被探测的主机个数

参数
chat{ICMP_CHAT*} 会话对象句柄
返回
{int} 被探测主机个数

◆ icmp_host_alloc()

ICMP_API ICMP_HOST* icmp_host_alloc ( ICMP_CHAT chat,
const char *  domain,
const char *  ip 
)

◆ icmp_host_free()

ICMP_API void icmp_host_free ( ICMP_HOST host)

释放一个被探测主机对象

参数
host{ICMP_HOST*} 被探测主机对象

◆ icmp_host_init()

ICMP_API void icmp_host_init ( ICMP_HOST host,
unsigned char  type,
unsigned char  code,
size_t  npkt,
size_t  dlen,
int  delay,
int  timeout 
)

◆ icmp_host_new()

ICMP_API ICMP_HOST* icmp_host_new ( ICMP_CHAT chat,
const char *  domain,
const char *  ip,
size_t  npkt,
size_t  dlen,
int  delay,
int  timeout 
)

创建一个新的被探测的主机对象

参数
chat{ICMP_CHAT*} 会话对象句柄
domain{const char*} 域名标识字符串,可以为空
ip{const char*} 主机IP地址,不能为空
npkt{size_t} 对该主机发送的数据包个数
dlen{size_t} 每个探测数据包的长度
delay{int} 发送探测数据包的时间间隔(毫秒)
timeout{int} 被探测主机的响应包超时时间(毫秒)
返回
{ICMP_HOST*} 被探测主机对象, 如果为空则表示出错

◆ icmp_host_set()

ICMP_API void icmp_host_set ( ICMP_HOST host,
void *  arg,
void(*)(ICMP_PKT_STATUS *, void *)  stat_respond,
void(*)(ICMP_PKT_STATUS *, void *)  stat_timeout,
void(*)(ICMP_PKT_STATUS *, void *)  stat_unreach,
void(*)(ICMP_HOST *, void *)  stat_finish 
)

设置探测结果的回调函数

参数
host{ICMP_HOST*} 被探测主机对象
arg{void*} 回调函数的参数之一
stat_respond{void (*)(ICMP_PKT_STATUS*)} 正常响应时的回调函数
stat_timeout{void (*)(ICMP_PKT_STATUS*)} 超时响应时的回调函数
stat_unreach{void (*)(ICMP_PKT_STATUS*}} 主机不可达时的回调函数
stat_finish{void (*)(ICMP_HOST*)} 针对该主机的探测任务时的回调函数

◆ icmp_ping_one()

ICMP_API void icmp_ping_one ( ICMP_CHAT chat,
const char *  domain,
const char *  ip,
size_t  npkt,
int  delay,
int  timeout 
)

ping 一台主机(内部默认每个探测包长度为64个字节)

参数
chat{ICMP_CHAT*} 会话对象句柄
domain{const char*} 域名标识字符串,可以为空
ip{const char*} 主机IP地址,不能为空
npkt{size_t} 对该主机发送的数据包个数
delay{int} 发送探测数据包的时间间隔(毫秒)
timeout{int} 被探测主机的响应包超时时间(毫秒)

◆ icmp_pkt_alloc()

ICMP_API ICMP_PKT* icmp_pkt_alloc ( void  )

◆ icmp_pkt_build()

ICMP_API void icmp_pkt_build ( ICMP_PKT pkt,
unsigned short  seq 
)

◆ icmp_pkt_check()

ICMP_API ICMP_PKT* icmp_pkt_check ( const ICMP_HOST host,
const ICMP_PKT pkt 
)

◆ icmp_pkt_cksum()

ICMP_API unsigned short icmp_pkt_cksum ( const ICMP_PKT pkt)

◆ icmp_pkt_code()

ICMP_API unsigned char icmp_pkt_code ( const ICMP_PKT pkt)

◆ icmp_pkt_free()

ICMP_API void icmp_pkt_free ( ICMP_PKT ipkt)

◆ icmp_pkt_gid()

ICMP_API unsigned int icmp_pkt_gid ( const ICMP_PKT pkt)

◆ icmp_pkt_id()

ICMP_API unsigned short icmp_pkt_id ( const ICMP_PKT pkt)

◆ icmp_pkt_len()

ICMP_API size_t icmp_pkt_len ( const ICMP_PKT pkt)

◆ icmp_pkt_pack()

ICMP_API void icmp_pkt_pack ( ICMP_PKT pkt,
unsigned char  type,
unsigned char  code,
unsigned short  id,
const void *  payload,
size_t  payload_len 
)

◆ icmp_pkt_payload()

ICMP_API size_t icmp_pkt_payload ( const ICMP_PKT pkt,
char *  buf,
size_t  size 
)

◆ icmp_pkt_peer()

ICMP_API const ICMP_PKT* icmp_pkt_peer ( const ICMP_PKT pkt)

◆ icmp_pkt_save_status()

ICMP_API void icmp_pkt_save_status ( ICMP_PKT to,
const ICMP_PKT from 
)

◆ icmp_pkt_seq()

ICMP_API unsigned short icmp_pkt_seq ( const ICMP_PKT pkt)

◆ icmp_pkt_set_cksum()

ICMP_API void icmp_pkt_set_cksum ( ICMP_PKT pkt,
unsigned short  cksum 
)

◆ icmp_pkt_set_code()

ICMP_API void icmp_pkt_set_code ( ICMP_PKT pkt,
unsigned char  code 
)

◆ icmp_pkt_set_data()

ICMP_API void icmp_pkt_set_data ( ICMP_PKT pkt,
void *  data,
size_t  size 
)

◆ icmp_pkt_set_extra()

ICMP_API size_t icmp_pkt_set_extra ( ICMP_PKT pkt,
const void *  data,
size_t  len 
)

◆ icmp_pkt_set_id()

ICMP_API void icmp_pkt_set_id ( ICMP_PKT pkt,
unsigned short  id 
)

◆ icmp_pkt_set_seq()

ICMP_API void icmp_pkt_set_seq ( ICMP_PKT pkt,
unsigned short  seq 
)

◆ icmp_pkt_set_type()

ICMP_API void icmp_pkt_set_type ( ICMP_PKT pkt,
unsigned char  type 
)

◆ icmp_pkt_status()

ICMP_API const ICMP_PKT_STATUS* icmp_pkt_status ( const ICMP_PKT pkt)

◆ icmp_pkt_type()

ICMP_API unsigned char icmp_pkt_type ( const ICMP_PKT pkt)

◆ icmp_pkt_unpack()

ICMP_API int icmp_pkt_unpack ( struct sockaddr_in  from,
const char *  buf,
int  bytes,
ICMP_PKT pkt 
)

◆ icmp_pkt_wlen()

ICMP_API size_t icmp_pkt_wlen ( const ICMP_PKT pkt)

◆ icmp_stat()

ICMP_API void icmp_stat ( ICMP_CHAT chat)

输出当前ICMP的会话状态

参数
chat{ICMP_CHAT*} 会话对象句柄

◆ icmp_stat_host()

ICMP_API void icmp_stat_host ( ICMP_HOST host,
int  show_flag 
)

计算某个主机的ICMP会话状态

参数
host{ICMP_HOST*} 被探测主机对象
show_flag{int} 是否输出结果至日志文件

◆ icmp_stream_close()

ICMP_API void icmp_stream_close ( ICMP_STREAM is)

◆ icmp_stream_dest()

ICMP_API void icmp_stream_dest ( ICMP_STREAM is,
struct sockaddr_in *  addr 
)

◆ icmp_stream_from()

ICMP_API void icmp_stream_from ( ICMP_STREAM is,
struct sockaddr_in *  addr 
)

◆ icmp_stream_open()

ICMP_API ICMP_STREAM* icmp_stream_open ( ACL_AIO aio)

low level interface for operating ICMP.

◆ icmp_stream_set_dest()

ICMP_API void icmp_stream_set_dest ( ICMP_STREAM is,
struct sockaddr_in  addr 
)

◆ icmp_vstream()

ICMP_API ACL_VSTREAM* icmp_vstream ( ICMP_STREAM is)