lwres_packet

TriggerTek Logo
abcdefghijklmnopqrstuvwxyz_
LWRES_PACKET(3)						      LWRES_PACKET(3)



NAME
       lwres_lwpacket_renderheader,  lwres_lwpacket_parseheader - lightweight
       resolver packet handling functions

SYNOPSIS
       #include <lwres/lwpacket.h>

       lwres_result_t lwres_lwpacket_renderheader(lwres_buffer_t *b,
       lwres_lwpacket_t *pkt);

       lwres_result_t lwres_lwpacket_parseheader(lwres_buffer_t *b,
       lwres_lwpacket_t *pkt);


DESCRIPTION
       These functions rely on a struct lwres_lwpacket which  is  defined  in
       lwres/lwpacket.h.

       typedef struct lwres_lwpacket lwres_lwpacket_t;

       struct lwres_lwpacket {
	       lwres_uint32_t	       length;
	       lwres_uint16_t	       version;
	       lwres_uint16_t	       pktflags;
	       lwres_uint32_t	       serial;
	       lwres_uint32_t	       opcode;
	       lwres_uint32_t	       result;
	       lwres_uint32_t	       recvlength;
	       lwres_uint16_t	       authtype;
	       lwres_uint16_t	       authlength;
       };


       The elements of this structure are:

       length the  overall packet length, including the entire packet header.
	      This  field  is	filled	 in   by   the	 lwres_gabn_*()	  and
	      lwres_gnba_*() calls.

       version
	      the   header  format.  There  is	currently  only	 one  format,
	      LWRES_LWPACKETVERSION_0.	 This  field  is  filled  in  by  the
	      lwres_gabn_*() and lwres_gnba_*() calls.

       pktflags
	      library-defined flags for this packet: for instance whether the
	      packet is a request or a reply. Flag values can be set, but not
	      defined by the caller.  This field is filled in by the applica-
	      tion wit the exception of the LWRES_LWPACKETFLAG_RESPONSE	 bit,
	      which   is  set  by  the	library	 in  the  lwres_gabn_*()  and
	      lwres_gnba_*() calls.

       serial is set by the requestor and is returned in all replies. If  two
	      or  more packets from the same source have the same serial num-
	      ber and are from the same source, they are assumed to be dupli-
	      cates  and  the latter ones may be dropped.  This field must be
	      set by the application.

       opcode indicates	 the  operation.   Opcodes  between  0x00000000	  and
	      0x03ffffff  are  reserved	 for  use by the lightweight resolver
	      library. Opcodes between 0x04000000 and 0xffffffff are applica-
	      tion  defined.   This  field is filled in by the lwres_gabn_*()
	      and lwres_gnba_*() calls.

       result is only valid for	 replies.   Results  between  0x04000000  and
	      0xffffffff are application defined.  Results between 0x00000000
	      and 0x03ffffff are reserved for library  use.   This  field  is
	      filled in by the lwres_gabn_*() and lwres_gnba_*() calls.

       recvlength
	      is  the  maximum	buffer	size  that the receiver can handle on
	      requests and the size of the buffer needed to satisfy a request
	      when  the	 buffer is too large for replies.  This field is sup-
	      plied by the application.

       authtype
	      defines the packet level authentication that is used.  Authori-
	      sation  types between 0x1000 and 0xffff are application defined
	      and types between 0x0000 and 0x0fff are  reserved	 for  library
	      use.  Currently these are not used and must be zero.

       authlen
	      gives  the  length  of  the  authentication data.	 Since packet
	      authentication is currently not used, this must be zero.

       The following opcodes are currently defined:

       NOOP   Success is always returned and the packet contents are  echoed.
	      The lwres_noop_*() functions should be used for this type.

       GETADDRSBYNAME
	      returns	all   known   addresses	  for	a  given  name.	  The
	      lwres_gabn_*() functions should be used for this type.

       GETNAMEBYADDR
	      return the hostname for the given address.  The  lwres_gnba_*()
	      functions should be used for this type.

       lwres_lwpacket_renderheader()  transfers	 the  contents of lightweight
       resolver packet structure lwres_lwpacket_t *pkt in network byte	order
       to the lightweight resolver buffer, *b.

       lwres_lwpacket_parseheader()   performs	the  converse  operation.  It
       transfers data in network byte order from buffer *b to resolver packet
       *pkt.   The   contents	of  the	 buffer	 b  should  correspond	to  a
       lwres_lwpacket_t.

RETURN VALUES
       Successful     calls	to     lwres_lwpacket_renderheader()	  and
       lwres_lwpacket_parseheader()   return  LWRES_R_SUCCESS.	If  there  is
       insufficient space to copy data between the buffer *b and  lightweight
       resolver packet *pkt both functions return LWRES_R_UNEXPECTEDEND.



BIND9				 Jun 30, 2000		      LWRES_PACKET(3)