home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
AmigActive 13
/
AACD13.ISO
/
AACD
/
Resources
/
Online
/
Miami
/
MiamiSDK
/
doc
/
MiamiPCap.doc
< prev
next >
Wrap
Text File
|
1997-12-27
|
20KB
|
795 lines
TABLE OF CONTENTS
miamipcap.library/--general information--
miamipcap.library/--PCap callbacks--
miamipcap.library/MiamiPCapAmigaBPFHandle
miamipcap.library/MiamiPCapAmigaDump
miamipcap.library/MiamiPCapAmigaDumpClose
miamipcap.library/MiamiPCapAmigaDumpOpen
miamipcap.library/MiamiPCapAmigaFile
miamipcap.library/MiamiPCapBPFImage
miamipcap.library/MiamiPCapClose
miamipcap.library/MiamiPCapCompile
miamipcap.library/MiamiPCapDatalink
miamipcap.library/MiamiPCapDispatch
miamipcap.library/MiamiPCapGeterr
miamipcap.library/MiamiPCapInit
miamipcap.library/MiamiPCapIsSwapped
miamipcap.library/MiamiPCapLookupdev
miamipcap.library/MiamiPCapLookupnet
miamipcap.library/MiamiPCapLoop
miamipcap.library/MiamiPCapMajorVersion
miamipcap.library/MiamiPCapMinorVersion
miamipcap.library/MiamiPCapNext
miamipcap.library/MiamiPCapOpenLive
miamipcap.library/MiamiPCapOpenOffline
miamipcap.library/MiamiPCapPerror
miamipcap.library/MiamiPCapSetCallbackType
miamipcap.library/MiamiPCapSetFilter
miamipcap.library/MiamiPCapSnapshot
miamipcap.library/MiamiPCapStats
miamipcap.library/MiamiPCapStrerror
miamipcap.library/--general information--
Miami:libs/miamipcap.library is an implementation of the
libpcap software suite, a packet monitoring mechanism built on top of
BPF, which provides high-level filtering functions.
MiamiPCap is implemented on top of MiamiBPF, which in turn uses the
packet monitoring mechanism in Miami 1.9.3 and above, i.e. MiamiPCap
only works with the registered version of Miami.
The main advantage of MiamiPCap over lower-level packet monitoring
mechanisms is that MiamiPCap allows an application to specify ASCII
filter strings to select a set of packets, e.g. something like
icmp[0] != 8 and icmp!= 0
which would select all ICMP packets that are not echo requests or
replies.
MiamiPCap has a built-in compiler and code optimizer to convert such
ASCII strings into the binary BPF program code sequences required by
the underlying MiamiBPF suite.
The primary use of MiamiPCap is in programs such as TCPDump.
miamipcap.library/--PCap callbacks-- miamipcap.library/--PCap callbacks--
PCap calls a callback function in your program for each packet
received, which has not been filtered out. The proper declaration of
the callback function is:
void pcapcallback(void *user,struct pcap_pkthdr *pkthdr,char
*packet);
The default CPU type for callbacks is MIAMICPU_M68KREG (parameters
passed on the stack), regardless of which API is used.
miamipcap.library versions 3 and higher support the new call
MiamiPCapSetCallbackType() to change the CPU type used for callbacks.
miamipcap.library/MiamiPCapAmigaBPFHandle
NAME
MiamiPCapAmigaBPFHandle -- returns the BPF handle associated with a
pcap unit
SYNOPSIS
bpfhandle = MiamiPCapAmigaBPFHandle( p );
D0 A0
int MiamiPCapAmigaBPFHandle( pcap_t *p );
FUNCTION
Returns the BPF handle associated with a pcap unit.
INPUTS
p - pcap unit handle
RESULT
bpfhandle (D0) - BPF handle
miamipcap.library/MiamiPCapAmigaDump miamipcap.library/MiamiPCapAmigaDump
NAME
MiamiPCapAmigaDump -- dump a packet to a save file
SYNOPSIS
MiamiPCapAmigaDump( filehandle, h, sp );
A0 A1 A2
void MiamiPCapAmigaDump( pcap_dumper_t *filehandle, struct
pcap_pkthdr *h, u_char *sp );
FUNCTION
Dumps the packet specified in sp to the specified save file, using
the packet header passed in h.
The file handle MUST have been created by an earlier call to
MiamiPCapAmigaDumpOpen.
INPUTS
filehandle - file handle
h - packet header
sp - data
miamipcap.library/MiamiPCapAmigaDumpClose
NAME
MiamiPCapAmigaDumpClose -- closes an open save file
SYNOPSIS
MiamiPCapAmigaDumpClose( filehandle );
A0
void MiamiPCapAmigaDumpClose( pcap_dumper_t *filehandle );
FUNCTION
Closes the indicated save file.
The file must have been opened earlier by a call to
MiamiPCapAmigaDumpOpen.
INPUTS
filehandle - file handle
miamipcap.library/MiamiPCapAmigaDumpOpen
NAME
MiamiPCapAmigaDumpOpen -- opens a save file to dump packets
SYNOPSIS
filehandle = MiamiPCapAmigaDumpOpen( p, fname );
D0 A0 A1
pcap_dumper_t *MiamiPCapAmigaDumpOpen( pcap_t *p, char *fname );
FUNCTION
Opens a save file for the specified unit. The returned file handle
can later be used in MiamiPCapAmigaDump calls to dump packets to the
save file.
A return value of NULL indicates that an error has occured.
The filehandle later needs to be closed by calling
MiamiPCapAmigaDumpClose.
INPUTS
p - pcap unit handle
fname - file name
RESULT
filehandle (D0) - file handle
miamipcap.library/MiamiPCapAmigaFile miamipcap.library/MiamiPCapAmigaFile
NAME
MiamiPCapAmigaFile -- return Amiga file handle for save file
SYNOPSIS
handle = MiamiPCapAmigaFile( p );
D0 A0
BPTR MiamiPCapAmigaFile( pcap_t *p );
FUNCTION
returns the Amiga file handle for the current save file. For pOS a
(struct pOS_FileHandle *) is returned instead of a BPTR.
INPUTS
p - pcap unit handle
RESULT
handle (D0) - filehandle
miamipcap.library/MiamiPCapBPFImage miamipcap.library/MiamiPCapBPFImage
NAME
MiamiPCapBPFImage -- disassemble a compiled BPF instruction
SYNOPSIS
d = MiamiPCapBPFImage( pi, n );
D0 A0 D0
char *MiamiPCapBPFImage( struct bpf_insn *pi, int n );
FUNCTION
Disassembles a compiled BPF instruction into a text string.
The two parameters are the BPF instruction and the offset (PC) of the
instruction relative to the BPF program.
The returned string contains the disassembled text representing the
BPF instruction. The text pointer points to static space that does
not have to be freed. It is overwritten with the next call to
MiamiPCapBPFImage.
INPUTS
pi - bpf instruction
n - instruction offset (PC)
RESULT
d (D0) - disassembled code
miamipcap.library/MiamiPCapClose miamipcap.library/MiamiPCapClose
NAME
MiamiPCapClose -- closes a pcap unit
SYNOPSIS
MiamiPCapClose( p );
A0
void MiamiPCapClose( pcap_t *p );
FUNCTION
Closes a pcap unit which was previously opened by a call to
MiamiPCapOpenLive or MiamiPCapOpenOffline.
INPUTS
p - pcap unit handle
miamipcap.library/MiamiPCapCompile miamipcap.library/MiamiPCapCompile
NAME
MiamiPCapCompile -- compile a filter string into a BPF program
SYNOPSIS
error = MiamiPCapCompile( p, program, buf, optimize, mask );
D0 A0 A1 A2 D0 D1
int MiamiPCapCompile( pcap_t *p, struct bpf_program *program, char
*buf, int optimize, bpf_u_int32 mask );
FUNCTION
Compiles the filter string passed in 'buf' into a BPF program. The
resulting program is stored in the structure passed in 'program'.
If 'optimize' is different from zero then the BPF code optimizer is
executed on the resulting program to compress the code. 'optimize'
should always be used except if you suspect a bug in the optimizer.
'mask' is the netmask for the interface the program is supposed to
execute on.
The function returns zero on success and a non-zero value on failure.
INPUTS
p - pcap unit handle
program - BPF program structure
buf - filter string
optimize - optimize flag
mask - netmask
RESULT
error (D0) - error code
miamipcap.library/MiamiPCapDatalink miamipcap.library/MiamiPCapDatalink
NAME
MiamiPCapDatalink -- return the datalink layer packet type
SYNOPSIS
type = MiamiPCapDatalink( p );
D0 A0
int MiamiPCapDatalink( pcap_t *p );
FUNCTION
returns the datalink layer packet type, i.e. one of the DLT_...
constants in <net/bpf.h>. For MiamiBPF the only possible value is
currently DLT_MIAMI.
INPUTS
p - pcap unit handle
RESULT
type (D0) - type
miamipcap.library/MiamiPCapDispatch miamipcap.library/MiamiPCapDispatch
NAME
MiamiPCapDispatch -- collect and process packets
SYNOPSIS
count = MiamiPCapDispatch( p, cnt, callback, user );
D0 A0 D0 A1 A2
int MiamiPCapDispatch( pcap_t *p, int cnt, pcap_handler callback,
u_char *user );
FUNCTION
Collect and process packets for the specified pcap unit.
cnt specifies the maximum number of packets to process before
returning. A cnt of -1 processes all the packets received in one
buffer. A cnt of 0 processes all packets until an error occurs (or
EOF is reached for a save file).
callback specifies a PCap callback functions, as explained in -- PCap
callbacks --. The parameter 'user' is the user parameter for the
callback function.
The returned value contains the number of packets read. 0 is
returned if EOF is reached in a save file. -1 is returned to
indicate an error.
INPUTS
p - pcap unit handle
cnt - maximum number of packets
callback - packet callback
user - user data for callback
RESULT
count (D0) - packet count
miamipcap.library/MiamiPCapGeterr miamipcap.library/MiamiPCapGeterr
NAME
MiamiPCapGeterr -- returns the current error string buffer
SYNOPSIS
errbuf = MiamiPCapGeterr( p );
D0 A0
char *MiamiPCapGeterr( pcap_t *p );
FUNCTION
Returns a pointer to the current error string buffer, i.e. the ebuf
parameter for the MiamiPCapOpenLive or MiamiPCapOpenOffline call
INPUTS
p - pcap unit handle
RESULT
errbuf (D0) - error buffer
miamipcap.library/MiamiPCapInit miamipcap.library/MiamiPCapInit
NAME
MiamiPCapInit -- initialize MiamiPCap
SYNOPSIS
MiamiPCapInit( MiamiBase, SocketBase );
A0 A0
void MiamiPCapInit( struct Library *MiamiBase, struct Library
*SocketBase );
FUNCTION
Initializes MiamiPCap for use. You MUST call this function before
calling any other function in miamipcap.library.
INPUTS
MiamiBase - Library base of miami.library
SocketBase - Library base of bsdsocket.library
NOTE
You need to open miami.library V6 or higher and bsdsocket.library V4
or higher before calling this function. Mind the version numbers !
Using miamipcap.library with older library versions will cause
crashes.
miamipcap.library/MiamiPCapIsSwapped miamipcap.library/MiamiPCapIsSwapped
NAME
MiamiPCapIsSwapped -- check byte order of save file
SYNOPSIS
bool = MiamiPCapIsSwapped( p );
D0 A0
int MiamiPCapIsSwapped( pcap_t *p );
FUNCTION
returns TRUE if the save file for this pcap unit uses a different
byte order than the current system, and FALSE if the byte order is
the same.
INPUTS
p - pcap unit handle
RESULT
bool (D0) - bool
miamipcap.library/MiamiPCapLookupdev miamipcap.library/MiamiPCapLookupdev
NAME
MiamiPCapLookupdev -- finds a suitable interface name
SYNOPSIS
name = MiamiPCapLookupdev( ebuf );
D0 A0
char *MiamiPCapLookupdev( char *ebuf );
FUNCTION
Finds a suitable interface name for use with MiamiPCap, that can be
used as a default name if the user has not explicitly specified an
interface.
A NULL return value indicates that an error has occured. If the
return value is non-NULL, then it is a pointer to a valid interface
name in static storage, i.e. the pointer does not have to be freed,
but the name will be overwritten by future calls to
MiamiPCapLookupdev.
INPUTS
ebuf - buffer for error string
RESULT
name (D0) - interface name
miamipcap.library/MiamiPCapLookupnet miamipcap.library/MiamiPCapLookupnet
NAME
MiamiPCapLookupnet -- finds the interface address and netmask
SYNOPSIS
error = MiamiPCapLookupnet( device, netp, maskp, ebuf );
D0 A0 A1 A2 A3
int MiamiPCapLookupnet( char *device, bpf_u_int32 *netp, bpf_u_int32
*maskp, char *ebuf );
FUNCTION
Finds the interface (IP) address and the netmask for the specified
interface.
The return code is zero for success and non-zero for failure, in
which case the error buffer will contain an error message.
The pointers netp and maskp need to point to variables of type
bpf_u_int32, which will be filled with the IP address and netmask of
the specified interface, respectively.
INPUTS
device - interface name
netp - pointer to address
maskp - pointer to netmask
ebuf - buffer for error string
RESULT
error (D0) - error code
miamipcap.library/MiamiPCapLoop miamipcap.library/MiamiPCapLoop
NAME
MiamiPCapLoop -- loop to collect and process packets
SYNOPSIS
count = MiamiPCapLoop( p, cnt, callback, user );
D0 A0 D0 A1 A2
int MiamiPCapLoop( pcap_t *p, int cnt, pcap_handler callback, u_char
*user );
FUNCTION
Same as MiamiPCapDispatch, but with one difference:
MiamiPCapDispatch returns as soon as some packets have been read (or
another condition such as a timeout or an error has occured).
MiamiPCapLoop keeps reading until cnt packets have been read or an
error has occured.
INPUTS
p - pcap unit handle
cnt - number of packets
callback - packet callback
user - user data for callback
RESULT
count (D0) - packet count
miamipcap.library/MiamiPCapMajorVersion
NAME
MiamiPCapMajorVersion -- return major version number for save file
SYNOPSIS
version = MiamiPCapMajorVersion( p );
D0 A0
int MiamiPCapMajorVersion( pcap_t *p );
FUNCTION
returns the major version number of the pcap used to write the save
file.
INPUTS
p - pcap unit handle
RESULT
version (D0) - version
miamipcap.library/MiamiPCapMinorVersion
NAME
MiamiPCapMinorVersion -- return minor version number for save file
SYNOPSIS
version = MiamiPCapMinorVersion( p );
D0 A0
int MiamiPCapMinorVersion( pcap_t *p );
FUNCTION
returns the minor version number of the pcap used to write the save
file.
INPUTS
p - pcap unit handle
RESULT
version (D0) - version
miamipcap.library/MiamiPCapNext miamipcap.library/MiamiPCapNext
NAME
MiamiPCapNext -- read one packet
SYNOPSIS
packet = MiamiPCapNext( p, h );
D0 A0 A1
u_char *MiamiPCapNext( pcap_t *p, struct pcap_pkthdr *h );
FUNCTION
Similar to MiamiPCapDispatch, but reads only a single packet and
returns the pointer to the packet data. No callback function is
called. The specified packet header is used as a template when
reading the packet.
INPUTS
p - pcap unit handle
h - packet header
RESULT
packet (D0) - packet data
miamipcap.library/MiamiPCapOpenLive miamipcap.library/MiamiPCapOpenLive
NAME
MiamiPCapOpenLive -- open a live pcap unit
SYNOPSIS
p = MiamiPCapOpenLive( device, snaplen, promisc, toms, ebuf );
D0 A0 D0 D1 D2 A1
pcap_t *MiamiPCapOpenLive( char *device, int snaplen, int promisc,
int toms, char *ebuf );
FUNCTION
Opens a live PCap monitoring unit, for the specified interface.
A return value of NULL indicates that an error has occured, in which
case the buffer bassed in ebuf will contain an ASCII error message.
snaplen is the maximum packet size you want PCap to preserve.
promisc is a boolean variable indicating promiscuous mode and
currently MUST be zero. Promiscuous mode is not currently supported
because of limitations in the Amiga SANA-II standard.
If toms is a non-zero value then it is considered a read timeout in
milliseconds for later calls to the packet monitoring functions. A
value of zero means 'no timeout', i.e. wait indefinitely.
The error string buffer passed to MiamiPCapOpenLive is used not only
for this single function call, but for ALL error strings resulting
from future function calls for this pcap unit.
INPUTS
device - interface name
snaplen - maximum packet length to copy
promisc - promisc mode, currently MUST be zero
toms - timeout in milliseconds
ebuf - buffer for error string
RESULT
p (D0) - pcap unit handle
miamipcap.library/MiamiPCapOpenOffline miamipcap.library/MiamiPCapOpenOffline
NAME
MiamiPCapOpenOffline -- open a savefile for reading
SYNOPSIS
p = MiamiPCapOpenOffline( fname, ebuf );
D0 A0 A1
pcap_t *MiamiPCapOpenOffline( char *fname, char *ebuf );
FUNCTION
Opens an offline PCap monitoring unit. Packets are read from the
specified file, not from the network. The file must have been
created by MiamiPCap earlier.
A return value of NULL indicates that an error has occured, in which
case the buffer bassed in ebuf will contain an ASCII error message.
The error string buffer passed to MiamiPCapOpenLive is used not only
for this single function call, but for ALL error strings resulting
from future function calls for this pcap unit.
INPUTS
fname - file name
ebuf - buffer for error string
RESULT
p (D0) - pcap unit handle
miamipcap.library/MiamiPCapPerror miamipcap.library/MiamiPCapPerror
NAME
MiamiPCapPerror -- prints the current pcap error string to the
console
SYNOPSIS
MiamiPCapPerror( p, prefix );
A0 A1
void MiamiPCapPerror( pcap_t *p, char *prefix );
FUNCTION
Prints the current pcap error string to the console, in the same
format used by the Un*x perror() function call.
INPUTS
p - pcap unit handle
prefix - error prefix
miamipcap.library/MiamiPCapSetCallbackType
NAME
MiamiPCapSetCallbackType -- set the CPU for callbacks (V3)
SYNOPSIS
success = MiamiPCapSetCallbackType( pi, c );
D0 A0 D0
long MiamiPCapSetCallbackType( pcap_t *pi, long c );
FUNCTION
Set the CPU used for callbacks, i.e. one of MIAMICPU_... The
default CPU is MIAMICPU_M68KREG, regardless of which API (68k or PPC)
is used. Other CPU types require special support in
miamipcap.library and Miami. If the requested CPU is not supported
for callbacks then FALSE is returned. Otherwise TRUE is returned and
all subsequent callbacks use the new CPU calling conventions.
INPUTS
pi - pcap unit handle
c - CPU type
RESULT
success (D0) - success indicator
miamipcap.library/MiamiPCapSetFilter miamipcap.library/MiamiPCapSetFilter
NAME
MiamiPCapSetFilter -- attach a program to a pcap unit as a filter
SYNOPSIS
error = MiamiPCapSetFilter( p, prog );
D0 A0 A1
int MiamiPCapSetFilter( pcap_t *p, struct bpf_program *prog );
FUNCTION
Ataches a compiled program to the specified pcap unit as a filter.
The program has to be a valid BPF program, typically returned by a
previous call to MiamiPCapCompile. The new filter replaces the
previous filter (if any).
A return code of zero indicates success, a non-zero return code
indicates failure.
INPUTS
p - pcap unit handle
prog - compiled program
RESULT
error (D0) - error code
miamipcap.library/MiamiPCapSnapshot miamipcap.library/MiamiPCapSnapshot
NAME
MiamiPCapSnapshot -- return the maximum snapshot length
SYNOPSIS
len = MiamiPCapSnapshot( p );
D0 A0
int MiamiPCapSnapshot( pcap_t *p );
FUNCTION
returns the maximum packet length used for snapshot (i.e. the value
passed in the snaplen parameter to MiamiPCapOpenLive.
INPUTS
p - pcap unit handle
RESULT
len (D0) - length
miamipcap.library/MiamiPCapStats miamipcap.library/MiamiPCapStats
NAME
MiamiPCapStats -- return packet statistics
SYNOPSIS
error = MiamiPCapStats( p, st );
D0 A0 A1
int MiamiPCapStats( pcap_t *p, pcap_stat *st );
FUNCTION
Returns statistics for the specified pcap unit handle, by
filling
in the statistics structure passed to the function.
If the returned error code is 0 then the contents of the statistics
structure are valid.
INPUTS
p - pcap unit handle
st - statistics
RESULT
error (D0) - error code
miamipcap.library/MiamiPCapStrerror miamipcap.library/MiamiPCapStrerror
NAME
MiamiPCapStrerror -- converts an error number to an error string
SYNOPSIS
errstr = MiamiPCapStrerror( errnum );
D0 D0
char *MiamiPCapStrerror( int errnum );
FUNCTION
Converts an error number into an error string. The returned pointer
points to static storage and does not have to be freed. It is
overwritten with the next call to MiamiPCapStrerror.
The returned pointer is independent of pcap units and NOT identical
to the error string buffer for any particular pcap unit.
INPUTS
errnum - error number
RESULT
errstr (D0) - error string