Distributed Name Service (DNS) Management Programming Manual

DNS Programming Example, C
46958 Tandem Computers Incorporated H–11
error_return_def dns_lookup
(int file_desc /* File number */
, char *name /* Name to be looked up */
, char *defnode /* Name's DEFNODE */
, long mask /* Mask of possible name */
/* types */
, zdns_ddl_info_name_br_def *response /* Output returned here */
, int *ambiguous)/* If true is returned, */
/* name is ambiguous */
{
error_return_def result;
int have_response = false;
int done = false;
int status;
int retcode;
int more = false;
int match;
zdns_ddl_msg_buffer_def req_buf;
zdns_ddl_msg_buffer_def resp_buf;
zdns_ddl_info_name_p_def param;
zdns_ddl_info_name_br_def candidate;
zdns_ddl_info_alias_br_def alias_br;
zdns_ddl_info_alias_dr_def alias_dr;
/*-------------------------------*/
/* Clear caller's AMBIGUOUS flag */
/*-------------------------------*/
*ambiguous = false;
/*--------------------------------*/
/* Initialize INFO NAME parameter */
/*--------------------------------*/
if (status = SSNULL((short *) &zdns_map_info_name_p
, (char *) &param))
return dns_return(spi_err, status);
/*----------------*/
/* Get parameters */
/*----------------*/
dns_strtomem(&param.zname, name, ZDNS_VAL_OBJLEN);
dns_strtomem(&param.zdefnode, defnode, ZDNS_VAL_NODELEN);
/*-----------------------------------------------*/
/* Assume all systems if DEFNODE isn't specified */
/*-----------------------------------------------*/
if (! strncmp((char *)&param.zdefnode.u_z_c.z_b, " ", 1))
memcpy(param.zdefnode.u_z_c.z_b, "*", 1);
/*------------------------------*/
/* Initialize INFO NAME request */
/*------------------------------*/