huyc

导航

随笔分类 -  网络编程相关的库

libipq、libnet、libpcap编程接口
ioctlsocket封装
摘要:遇到一些重口味的客户,非得要求所有平台上按Windows API封装函数,记下备忘。根据MSDN,Windows似乎很不愿意支持ioctl和fcntl,专门弄进来一个ioctlsocket,传递的三个命令分别是FIONBIO用于设置阻塞属性,FIONREAD用于读取缓冲区未读字节数,SIOCATMARK用来测试TCP的紧急指针,网上一搜,发现Linux上也是有对应的这三个cmd,一些人甚至将这三个命令视为套接字常用命令,对于我这样的标准拥护者,就查了一下POSIX标准,发现:FIONREAD这个是文件的通用操作,用来获取可读字节,归属于ioctl函数的命令FIONBIO已经被fcntl(fd, 阅读全文

posted @ 2012-11-26 17:09 huyc 阅读(601) 评论(0) 推荐(0)

pcap(3)
摘要:PCAP(3PCAP)NAME pcap —— 数据包抓取库SYNOPSIS#include <pcap/pcap.h>DESCRIPTION数据包抓取库提供数据包抓取系统的高层接口。所有网络上的数据包,即便他们目标是其他主机,也能通过此机制访问到。它还支持将抓取的数据包保存到“savefile”,并可以从这个“savefile”读取出来。调用pcap_create()可以为一个活动的抓取器打开一个句柄,为其设置适当的选项并调用pcap_activate()激活它。调用pcap_open_offline()可以打开并获取存有离线数据的“savefile”文件的句柄。pcap_cre 阅读全文

posted @ 2011-12-24 22:25 huyc 阅读(5805) 评论(0) 推荐(1)

ipq_errstr,ipq_perror
摘要:IPQ_ERRSTR(3) 2001-10-16NAME ipq_errstr, ipq_perror —— libipq错误处理例程SYNOPSIS#include <linux/netfilter.h>#include <libipq.h>char *ipq_errstr(void);void ipq_perror(const char *s);DESCRIPTION函数ipq_errstr返回一个错误描述,基于内部ipq_errno变量的当前值。所有的libipq的API函数将在错误时设置此变量。函数ipq_perror打印错误消息到stderr,该消息与内部变量 阅读全文

posted @ 2011-11-03 20:31 huyc 阅读(244) 评论(0) 推荐(0)

ipq_set_verdict(3)
摘要:IPQ_SET_VERDICT(3) 2001-10-16NAME ipq_set_verdict —— 下达判决,可选地修改给内核的数据包SYNOPSIS#include <linux/netfilter.h>#include <libipq.h>int ipq_set_verdict(const struct ipq_handle *h, ipq_id_t id, unsigned int verdict, size_t data_len, unsigned char *buf);DESCRIPTION函数ipq_set_verdict对之前调用ipq_read获取 阅读全文

posted @ 2011-11-03 20:23 huyc 阅读(885) 评论(0) 推荐(0)

ipq_set_mode(3)
摘要:IPQ_SET_MODE(3) 2001-10-16NAME ipq_set_mode —— 设置ip_queue的排队模式SYNOPSIS#include <linux/netfilter.h>#include <libipq.h>int ipq_set_mode(const struct ipq_handle *h, u_int8_t mode, size_t range);DESCRIPTION函数ipq_set_mode发送一个消息给内核ip_queue模块,指定是仅发送数据包元数据,还是将数据包负载带着元数据一起拷贝到用户空间。参数h是一个上下文句柄,其必须是 阅读全文

posted @ 2011-11-03 20:05 huyc 阅读(746) 评论(0) 推荐(0)

ipq_message_type,ipq_get_packet,ipq_getmsgerr
摘要:IPQ_MESSAGE_TYPE(3) 2001-10-16NAME ipq_message_type, ipq_get_packet, ipq_getmsgerr —— 查询排队消息SYNOPSIS#include <linux/netfilter.h>#include <libipq.h>int ipq_message_type(const unsigned char *buf);ipq_packet_msg_t *ipq_get_packet(const unsigned char *buf);int ipq_get_msgerr(const unsigned c 阅读全文

posted @ 2011-11-03 19:47 huyc 阅读(952) 评论(0) 推荐(0)

ipq_read(3)
摘要:IPQ_READ(3) 2001-10-16NAME ipq_read —— 将来自ip_queue的消息队列读取到指定的缓冲区SYNOPSIS#include <linux/netfilter.h>#include <libipq.h>ssize_t ipq_read(const struct ipq_handle *h, unsigned char *buf, size_t len, int timeout);DESCRIPTION函数ipq_read从内核读取一个队列消息并将其拷贝到buf指向的内存,最大拷贝长度为len。参数h是一个上下文句柄,它必须是之前调用i 阅读全文

posted @ 2011-11-03 19:14 huyc 阅读(822) 评论(0) 推荐(0)

ipq_create_handle,ipq_destroy_handle
摘要:IPQ_CREATE_HANDLE(3)2001-10-16NAME ipq_create_handle, ipq_destroy_handle —— 创建和销毁libipq句柄。SYNOPSIS#include <linux/netfilter.h>#include <libipq.h>struct ipq_handle *ipq_create_handle(u_int32_t flags, u_int32_t protocol);int ipq_destroy_handle(struct ipq_handle *h);DESCRIPTION函数ipq_create_ 阅读全文

posted @ 2011-11-03 16:39 huyc 阅读(773) 评论(0) 推荐(0)

libipq(3)
摘要:LIBIPQ(3)NAME libipq —— iptables用户空间数据包排队库SYNOPSIS#include <linux/netfilter.h>#include <libipq.h>DESCRIPTION libipq是一个iptables用户空间数据包排队开发库。用户空间数据包排队 Netfilter提供一个机制,将数据包送到栈外在用户空间排队,然后这些数据包送回内核并附带上一个如何处理这个数据包的决定(比如ACCEPT或DROP)。这些数据包在送回内核之前还可能在用户空间被修改。对于每个支持的协议,内核模块调用一个Netfilter注册的队列handle 阅读全文

posted @ 2011-11-02 20:02 huyc 阅读(2367) 评论(0) 推荐(0)