Lines Matching defs:probe

27  * Probe types for probe()
29 #define PROBE_UNI 0x1234 /* Unicast probe packet */
30 #define PROBE_MULTI 0x5678 /* Multicast probe packet */
31 #define PROBE_RTT 0x9abc /* RTT only probe packet */
36 * Format of probe / probe response packets. This is an ICMP Echo request
88 * Probe success - A matching probe reply received before CRTT ms has elapsed
89 * after sending the probe.
90 * Probe failure - No probe reply received and more than CRTT ms has elapsed
91 * after sending the probe.
93 * TLS - Time last success. Most recent probe ack received at this time.
94 * TFF - Time first fail. The time of the earliest probe failure in
95 * a consecutive series of probe failures.
98 * NUM_PROBE_FAILS - Number of consecutive probe failures required to
108 * (the common case) and probe targets, then a phyint must also successfully
113 * unable to find any probe targets, it will transition to the PI_NOTARGETS
193 * probe packets are used.
215 probe(struct phyint_instance *pii, uint_t probe_type, hrtime_t start_hrtime)
222 int pr_ndx; /* probe index in pii->pii_probes[] */
227 logdebug("probe(%s %s %d %lld)\n", AF_STR(pii->pii_af),
304 * lower layer. We pretend the probe was actually sent, the daemon will
305 * not see a reply to the probe and will fail the interface if normal
312 logperror_pii(pii, "probe: probe sendto");
316 * If this is a PROBE_UNI probe packet being unicast to a target, then
317 * update our tables. We will need this info in processing the probe
346 * probe for both rtt probes and failure detection probes, we
348 * probe targets become disjoint from the rtt probe targets.
351 * we also reset pii_rtt_target_next for every fdt probe,
436 * Subtract the IP hdr length, 'len' will be length of the probe
453 /* Not in response to our probe */
458 logtrace("probe reply code %d from %s on %s\n",
464 logtrace("probe reply too short: %d bytes from %s on %s\n",
478 /* Unicast probe reply */
486 /* Probably not in response to our probe */
487 logtrace("probe reply type: %d from %s on %s\n",
559 /* Not in response to our probe */
573 /* Can't allow routing headers in probe replies */
580 logtrace("probe reply code: %d from %s on %s\n",
585 logtrace("probe reply too short: %d bytes from %s on %s\n",
604 /* Probably not in response to our probe */
605 logtrace("probe reply type: %d from %s on %s\n",
611 * Process the incoming rtt reply, in response to our rtt probe.
613 * have any stored information about the probe we sent. So we don't log
644 * Don't update rtt until we see NUM_PROBE_REPAIRS probe responses
660 * update the rtt. We are having more than 1 outstanding probe and
701 * Process the incoming echo reply, in response to our unicast probe.
731 /* Reject out of window probe replies */
734 logtrace("out of window probe seq %u snxt %u on %s from %s\n",
752 * Get the probe index pr_ndx corresponding to the received icmp seq.
754 * pii_snxt corresponds to the probe index pii->pii_probe_next
764 * Perform sanity checks, whether this probe reply that we
770 * probe reply with the target address in our tables.
774 * We don't have any record of having sent a probe to
775 * this target. This is a fake probe reply. Log an error
777 logtrace("probe status %d Fake probe reply seq %u "
786 * this probe reply has been acked already. So this
787 * is a duplicate probe reply. Log an error
789 logtrace("probe status %d Duplicate probe reply seq %u "
803 * The probe stats slot is unused. So we didn't
804 * send out any probe to this target. This is a fake.
807 logtrace("probe status %d Fake probe reply seq %u "
824 * If the probe corresponding to this received response
835 * Don't update rtt until we see NUM_PROBE_REPAIRS probe responses
852 * Always update the rtt. This is a failure detection probe
901 probe(pii, PROBE_MULTI, cur_hrtime);
962 * probe response, based on the echo reply we have received now, if
966 * This means we have not received probe responses for a
993 * Get the seq number of the most recent probe sent so far,
994 * and also get the corresponding probe index in the probe stats
1002 * Start from the most recent probe and walk back, trying to find
1003 * an acked probe corresponding to target tg.
1072 * the probe interval of its group. Compare against other targets
1097 * We know that this target's crtt exceeds the group's probe interval.
1099 * crtt < (this group's probe interval) / EXCEPTION_FACTOR,
1154 logtrace("probe response from %s on %s\n",
1162 * valid probe target.
1193 * crtt = Conservative round trip time. Used to determine whether probe
1276 * If this probe's round trip time would singlehandedly cause an
1277 * increase in the group's probe interval consider it suspect.
1281 logdebug("Received a suspect probe on %s, new_crtt ="
1312 * If this is a normal probe, or an RTT probe that would lead to a
1314 * a normal probe, pitch any deferred probes since our probes are
1650 * Randomize the next probe time, between MIN_RANDOM_FACTOR
1651 * and MAX_RANDOM_FACTOR with respect to the base probe time.
1652 * Base probe time is strictly periodic.
1660 * Check if the current time > next time to probe. If so, we missed
1690 * probe type is PROBE_MULTI. We'll check back in 'interval' msec
1696 probe(pii, PROBE_MULTI, cur_time);
1703 * the failure detection (fd) probe timer has not yet fired.
1704 * Need to send only an rtt probe. The probe type is PROBE_RTT.
1706 probe(pii, PROBE_RTT, cur_hrtime);
1710 * the fd probe timer has fired. Need to do all failure
1711 * detection / recovery calculations, and then send an fd probe
1735 * PR_LOST or PR_ACKED. An unacknowledged probe is considered
1736 * timed out if the probe's time_start + the CRTT < currenttime.
1738 * out. If so, mark it PR_LOST. The probe stats is a circular array.
1755 logdebug("successful probe on %s; "
1768 * not available use group's probe interval,
1782 * We are forced to consider this probe
1785 * probe at the end of this function.
1799 * Only the most recent probe can enter
1801 * probe must take either of the above arms,
1812 * We send out 1 probe randomly in the interval between one half
1813 * and one probe interval for the group. Given that the CRTT is always
1814 * less than the group's probe interval, we can have at most 1
1815 * unacknowledged probe now. All previous probes are either lost or
1830 * If the most recent probe (excluding unacked probes that
1865 * Start the next probe. probe() will also set pii->pii_probe_time_left
1866 * to the group's probe interval. If phyint_failed -> target_flush_hosts
1870 probe(pii, PROBE_UNI, cur_hrtime);
1872 * If we have just the one probe target, and we're not using
1877 probe(pii, PROBE_MULTI, cur_hrtime);
1879 probe(pii, PROBE_MULTI, cur_hrtime);
1885 * Start the probe timer for an interface instance.
1893 * Spread the base probe times (pi_snxt_basetime) across phyints
1896 * the group's probe interval. The actual probe time pi_snxt_time
1897 * adds some randomness to pi_snxt_basetime and happens in probe().
1898 * For the 1st probe on each phyint after the timer is started,
1911 * Restart the probe timer on an interface instance.
1938 * Clear the probe statistics arrays, we don't want the repair
2051 * If the interface has failed, return the time of the first probe failure
2096 probe(pii, PROBE_MULTI, gethrtime());
2217 * If there's no probe-based failure detection on this
2276 * Return the information associated with consecutive probe successes
2277 * starting with the most recent probe. At most the last 2 probes can be
2302 * Start with the most recent probe, and count the number
2303 * of consecutive probe successes. Latch the number of successes
2325 * not available use the value of the group's probe
2357 * Bump up the count of probe successes, if we
2370 * the most recent probe success.
2403 * Return the information associated with consecutive probe failures
2404 * starting with the most recent probe. Only the last 2 probes can be in the
2428 * Start with the most recent probe, and count the number
2429 * of consecutive probe failures. Latch the number of failures
2430 * on hitting a probe success.
2456 * not available use the group's probe interval,
2504 * Change the state of probe `pr' on phyint_instance `pii' to state `state'.