PK(4) Kernel Interfaces Manual PK(4)NAME
pk - packet driver
DESCRIPTION
The packet driver implements a full-duplex end-to-end flow control strategy for machine-to-machine communication. Packet driver protocol
is established by calling pkon(2) with a character device file descriptor and a desired packet size in bytes. The packet size must be a
power of 2, 32<=size<=4096. The file descriptor must represent an 8-bit data path. This is normally obtained by setting the device in
raw mode (see ioctl(2)).
The actual packet size, which may be smaller than the desired packet size, is arrived at by negotiation with the packet driver at the
remote end of the data link.
The packet driver maintains two data areas for incoming and outgoing packets. The output area is needed to implement retransmission on
errors, and arriving packets are queued in the input area. Data arriving for a file not open for reading is discarded. Initially the size
of both areas is set to two packets.
It is not necessary that reads and writes be multiples of the packet size although there is less system overhead if they are. Read opera-
tions return the maximum amount of data available from the input area up to the number of bytes specified in the system call. The buffer
sizes in write operations are not normally transmitted across the link. However, writes of zero length are treated specially and are
reflected at the remote end as a zero-length read. This facilitates marking the serial byte stream, usually for delimiting files.
When one side of a packet driver link is shut down by close(2)or pkoff (see pkon(2)), read(2) on the other side will return 0, and write on
the other side will raise a SIGPIPE signal.
SEE ALSO pkon(2), pkopen(3)
local PK(4)
Check Out this Related Man Page
PCAP_NEXT_EX(3) Library Functions Manual PCAP_NEXT_EX(3)NAME
pcap_next_ex, pcap_next - read the next packet from a pcap_t
SYNOPSIS
#include <pcap/pcap.h>
int pcap_next_ex(pcap_t *p, struct pcap_pkthdr **pkt_header,
const u_char **pkt_data);
const u_char *pcap_next(pcap_t *p, struct pcap_pkthdr *h);
DESCRIPTION
pcap_next_ex() reads the next packet and returns a success/failure indication. If the packet was read without problems, the pointer
pointed to by the pkt_header argument is set to point to the pcap_pkthdr struct for the packet, and the pointer pointed to by the pkt_data
argument is set to point to the data in the packet.
pcap_next() reads the next packet (by calling pcap_dispatch() with a cnt of 1) and returns a u_char pointer to the data in that packet.
The pcap_pkthdr structure pointed to by h is filled in with the appropriate values for the packet.
RETURN VALUE
pcap_next_ex() returns 1 if the packet was read without problems, 0 if packets are being read from a live capture, and the timeout expired,
-1 if an error occurred while reading the packet, and -2 if packets are being read from a ``savefile'', and there are no more packets to
read from the savefile. If -1 is returned, pcap_geterr() or pcap_perror() may be called with p as an argument to fetch or display the
error text.
pcap_next() returns a pointer to the packet data on success, and returns NULL if an error occured, or if no packets were read from a live
capture (if, for example, they were discarded because they didn't pass the packet filter, or if, on platforms that support a read timeout
that starts before any packets arrive, the timeout expires before any packets arrive, or if the file descriptor for the capture device is
in non-blocking mode and no packets were available to be read), or if no more packets are available in a ``savefile.'' Unfortunately,
there is no way to determine whether an error occured or not.
SEE ALSO pcap(3), pcap_geterr(3), pcap_dispatch(3)
5 April 2008 PCAP_NEXT_EX(3)