Home | History | Annotate | Download | only in dns
      1 /*
      2  * CDDL HEADER START
      3  *
      4  * The contents of this file are subject to the terms of the
      5  * Common Development and Distribution License (the License).
      6  * You may not use this file except in compliance with the License.
      7  *
      8  * You can obtain a copy of the license at usr/src/CDDL.txt
      9  * or http://www.opensolaris.org/os/licensing.
     10  * See the License for the specific language governing permissions
     11  * and limitations under the License.
     12  *
     13  * When distributing Covered Code, include this CDDL HEADER in each
     14  * file and include the License file at usr/src/CDDL.txt.
     15  * If applicable, add the following below this CDDL HEADER, with the
     16  * fields enclosed by brackets [] replaced with your own identifying
     17  * information: Portions Copyright [yyyy] [name of copyright owner]
     18  *
     19  * CDDL HEADER END
     20  */
     21 
     22 /*
     23  * Copyright 1998-2002 Sun Microsystems, Inc.  All rights reserved.
     24  * Use is subject to license terms.
     25  *
     26  * dns_probe.c - Probe for highly available dns
     27  */
     28 
     29 #pragma ident	"@(#)dns_probe.c	1.15	07/06/06 SMI"
     30 
     31 #include <signal.h>
     32 #include <sys/time.h>
     33 #include <sys/socket.h>
     34 #include <netdb.h>
     35 #include <strings.h>
     36 #include "dns.h"
     37 
     38 int
     39 main(int argc, char *argv[])
     40 {
     41 	scds_handle_t	handle;
     42 	int		probe_result;
     43 	hrtime_t	ht1, ht2;
     44 	unsigned long	dt;
     45 
     46 	if (scds_initialize(&handle, argc, argv) != SCHA_ERR_NOERR)
     47 		return (1);
     48 
     49 	for (;;) {
     50 
     51 		/*
     52 		 * sleep for a duration of thorough_probe_interval between
     53 		 *  successive probes.
     54 		 */
     55 		(void) scds_fm_sleep(handle,
     56 		    scds_get_rs_thorough_probe_interval(handle));
     57 
     58 		probe_result = 0;
     59 		ht1 = gethrtime(); /* Latch probe start time */
     60 
     61 		probe_result = svc_probe(handle, B_TRUE);
     62 
     63 		ht2 = gethrtime();
     64 
     65 		/* Convert to milliseconds */
     66 		dt = (ulong_t)((ht2 - ht1) / 1e6);
     67 
     68 		/*
     69 		 * Compute failure history and take action if needed
     70 		 */
     71 		(void) scds_fm_action(handle, probe_result, (long)dt);
     72 
     73 	} 	/* Keep probing forever */
     74 }
     75