Distributed Name Service (DNS) Management Programming Manual

DNS Programming Example, C
46958 Tandem Computers Incorporated H–7
/*==================================================================*/
/* Look up an alias in a DNS database */
/*==================================================================*/
error_return_def dns_lookup_alias
(int file_desc /* File number */
, char *name /* Alias */
, char *defnode /* Alias's DEFNODE */
, zdns_ddl_info_alias_br_def *basic_response /* Output is */
, zdns_ddl_info_alias_dr_def *detailed_response /* placed here. */
, int *ambiguous) /* If true on */
/* return, name is */
/* ambiguous */
{
error_return_def result;
int have_response = false;
int done = false;
int status;
int retcode;
int more = false;
zdns_ddl_msg_buffer_def request_buf;
zdns_ddl_msg_buffer_def response_buf;
zdns_ddl_info_dnsobj_p_def param;
/*-------------------------------*/
/* Clear caller's AMBIGUOUS flag */
/*-------------------------------*/
*ambiguous = false;
/*----------------------------------*/
/* Initialize INFO DNSOBJ parameter */
/*----------------------------------*/
if (status = SSNULL((short *) &zdns_map_info_dnsobj_p
, (char *) &param))
return dns_return(spi_err, status);
/*----------------*/
/* Get parameters */
/*----------------*/
dns_strtomem(&param.zname, name, ZDNS_VAL_DNSLEN);
dns_strtomem(&param.zdefnode, defnode, ZDNS_VAL_NODELEN);
/*------------------------------------------------*/
/* Default to all nodes if node name not supplied */
/*------------------------------------------------*/
if (! strncmp((char *)&param.zdefnode.u_z_c.z_b, " ", 1))
memcpy(param.zdefnode.u_z_c.z_b, "*", 1);
/*----------------------------*/
/* Request detailed responses */
/*----------------------------*/
param.zdetail = true;