Distributed Name Service (DNS) Management Programming Manual

DNS Programming Example, C
46958 Tandem Computers Incorporated H–3
error_return_def dns_send
(int file_desc /* File number */
, zdns_ddl_msg_buffer_def *request /* Request buffer */
, zdns_ddl_msg_buffer_def *response /* Response buffer */
, int move_context) /* If TRUE, move */
/* Context token */
{
int status = 0; /* Error number */
long context_tkn = ZSPI_TKN_CONTEXT; /* Context token token Code */
if (move_context)
/*-----------------------------------------------------------------*/
/* Context token is to be moved from last response to this request */
/*-----------------------------------------------------------------*/
if (status = SSMOVE( (short *) &context_tkn
, (short *) response
, 1
, (short *) request
, 1))
return dns_return(spi_err, status);
/*-----------------------------------*/
/* Copy request into response buffer */
/*-----------------------------------*/
memcpy(response, request, spi_usedlen(request));
/*--------------------------------------*/
/* Send the request to the name manager */
/*--------------------------------------*/
writeread( file_desc
, (char *) response
, spi_usedlen(response)
, ZDNS_VAL_BUFLEN);
if (errno)
/*---------------------*/
/* Error on WRITEREAD */
/*---------------------*/
return dns_return(io_err, errno);
/*------------------*/
/* Reset the buffer */
/*------------------*/
if (status = SSPUTTKN((short *) response
, ZSPI_TKN_RESET_BUFFER
, (char *) request -> z_buflen))
return dns_return(spi_err, status);