huyc

导航

ipq_read(3)

IPQ_READ(3) 2001-10-16

NAME
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是一个上下文句柄,它必须是之前调用ipq_create_handle成功返回的句柄。

调用者有责任确保buf指向的内存确实能够容纳len个字节。

参数timeout用于为这个操作设置一个超时,单位是微秒。这在库内部是通过select系统调用实现的。0值表示正常的,向后兼容的,永不超时的阻塞行为。负值将导致函数立即返回。

不应该直接访问buf返回的数据。使用ipq_message_type,ipq_get_packet和ipq_get_msgerr函数访问缓冲区里面的排队消息。

RETURN VALUE
失败时返回-1。
成功时,当没有指定timeout值时返回一个非0的正数。
成功并且指定了timeout值,如果没有数据可用或被一个信号打断,返回0。后面这种情况下会将全局变量errno设置为EINTR。

ERRORS
发生错误时,可以通过函数ipq_errstr获取一个错误消息。

DIAGNOSTICS
虽然函数ipq_read确实是成功返回,但拷贝到缓冲的却可能是一个来自内核高层组建的错误消息。使用ipq_message_type以确定其是否为错误消息,通过ipq_getmsgerr以访问消息的值。 

BUGS
None known.

AUTHOR
James Morris <jmorris@intercode.com.au>

COPYRIGHT
Copyright (c) 2000-2001 Netfilter Core Team.

Distributed under the GNU General Public License.

CREDITS
Joost Remijn implemented the timeout feature, which appeared in the
1.2.4 release of iptables.

SEE ALSO
iptables(8), libipq(3), select(2).



posted on 2011-11-03 19:14  huyc  阅读(798)  评论(0编辑  收藏  举报