设为首页 加入收藏

TOP

libnet 函数列表(一)
2015-07-16 12:57:23 来源: 作者: 【 】 浏览:19
Tags:libnet 数列

libnet提供的接口函数按其作用可分为四类:
* 内存管理(分配和释放)函数
* 地址解析函数
* 数据包构造函数
* 数据包发送函数


以下分别列出这些接口函数及其功能(其参数含义简单易懂,不再解释):


★内存管理函数


单数据包内存初始化:
int libnet_init_packet(u_short packet_size, u_char **buf);


单数据包内存释放:
void libnet_destroy_packet(u_char **buf);


多数据包内存初始化:
int libnet_init_packet_arena(struct libnet_arena **arena,u_short packet_num, u_short packet_size);


访问多数据包内存中的下一个数据包:
u_char *libnet_next_packet_from_arena(struct libnet_arena **arena,u_short packet_size);


多数据包内存释放:
void libnet_destroy_packet_arena(struct libnet_arena **arena);



★ 地址解析函数


解析主机名:
u_char *libnet_host_lookup(u_long ip, u_short use_name);


解析主机名(可重入函数):
void libnet_host_lookup_r(u_long ip, u_short use_name, u_char *buf);


域名解析:
u_long libnet_name_resolve(u_char *ip, u_short use_name);


获取接口设备IP地址:
u_long libnet_get_ipaddr(struct libnet_link_int *l,const u_char *device, const u_char *ebuf);


获取接口设备硬件地址:
struct ether_addr *libnet_get_hwaddr(struct libnet_link_int *l,const u_char *device,const u_char *ebuf);



★ 数据包构造函数


ARP协议数据包:
int libnet_build_arp(u_short hrdw, u_short prot, u_short h_len,u_short p_len, u_short op, u_char *s_ha,
u_char *s_pa, u_char *t_ha, u_char *t_pa,const u_char *payload, int payload_len,u_char *packet_buf);


DNS协议数据包:
int libnet_build_dns(u_short id, u_short flags, u_short num_q,u_short num_answ_rr, u_short num_auth_rr,
u_short num_add_rr, const u_char * payload,int payload_len, u_char *packet_buf);


以太网协议数据包:
int libnet_build_ethernet(u_char *daddr, u_char *saddr, u_short id,const u_char *payload, int payload_len,
u_char *packet_buf);


ICMP协议数据包(ICMP_ECHO / ICMP_ECHOREPLY):
int libnet_build_icmp_echo(u_char type, u_char code, u_short id,
u_short seq, const u_char *payload,int payload_len, u_char *packet_buf);


ICMP协议数据包(ICMP_MASKREQ / ICMP_MASKREPLY):
int libnet_build_icmp_mask(u_char type, u_char code, u_short id,
u_short seq, u_long mask,const u_char *payload, int payload_len,
u_char *packet_buf);


ICMP协议数据包(ICMP_UNREACH):
int libnet_build_icmp_unreach(u_char type, u_char code,
u_short orig_len, u_char orig_tos,u_short orig_id, u_short orig_frag,
u_char orig_ttl, u_char orig_prot,u_long orig_saddr, u_long orig_daddr,
const u_char *payload, int payload_len,u_char *packet_buf);


ICMP协议数据包(ICMP_TIMEXCEED):
int libnet_build_icmp_timeexceed(u_char type, u_char code,
u_short orig_len, u_char orig_tos,u_short orig_id, u_short orig_frag,
u_char orig_ttl, u_char orig_prot,u_long orig_saddr, u_long orig_daddr,
const u_char *payload, int payload_len,u_char *packet_buf);


ICMP协议数据包(ICMP_REDIRECT):
int libnet_build_icmp_redirect(u_char type, u_char code, u_long gateway,
u_short orig_len, u_char orig_tos,u_short orig_id, u_short orig_frag,
u_char orig_ttl, u_char orig_prot,u_long orig_saddr, u_long orig_daddr,
const u_char *payload, int payload_len,u_char *packet_buf);


ICMP协议数据包(ICMP_TSTAMP / ICMP_TSTAMPREPLY):
int libnet_build_icmp_timestamp(u_char type, u_char code, u_short id,
u_short seq, n_time otime, n_time rtime,n_time ttime, const u_char *payload,
int payload_len, u_char *packet_buf);


IGMP协议数据包:
int libnet_build_igmp(u_char type, u_char code, u_long ip,
const u_char *payload, int payload_len,u_char *packet_buf);


IP协议数据包:
int libnet_build_ip(u_short len, u_char tos, u_short ip_id, u_short frag,u_char ttl, u_char protocol, u_long saddr, u_long daddr, const u_char *payload, int payload_len,u_char *packet_buf)

首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Linux 网络编程—— libnet 使用.. 下一篇深入理解二进制补码

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: