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