Merge commit 'crater/master'
[dragonfly.git] / usr.sbin / mrouted / igmpv2.h
1 /*
2  * The mrouted program is covered by the license in the accompanying file
3  * named "LICENSE".  Use of the mrouted program represents acceptance of
4  * the terms and conditions listed in that file.
5  *
6  * The mrouted program is COPYRIGHT 1989 by The Board of Trustees of
7  * Leland Stanford Junior University.
8  *
9  *
10  * igmpv2.h,v 3.8.4.1 1997/11/18 23:25:58 fenner Exp
11  */
12
13 /*
14  * Constants for IGMP Version 2.  Several of these, especially the
15  * robustness variable, should be variables and not constants.
16  */
17 #define IGMP_ROBUSTNESS_VARIABLE                2
18 #define IGMP_QUERY_INTERVAL                     125
19 #define IGMP_QUERY_RESPONSE_INTERVAL            10
20 #define IGMP_GROUP_MEMBERSHIP_INTERVAL          (IGMP_ROBUSTNESS_VARIABLE * \
21                                         IGMP_QUERY_INTERVAL + \
22                                         IGMP_QUERY_RESPONSE_INTERVAL)
23 #define IGMP_OTHER_QUERIER_PRESENT_INTERVAL     (IGMP_ROBUSTNESS_VARIABLE * \
24                                         IGMP_QUERY_INTERVAL + \
25                                         IGMP_QUERY_RESPONSE_INTERVAL / 2)
26                                                 /* Round to the nearest TIMER_INTERVAL */
27 #define IGMP_STARTUP_QUERY_INTERVAL             (((IGMP_QUERY_INTERVAL / 4) \
28                                                         / TIMER_INTERVAL) * TIMER_INTERVAL)
29 #define IGMP_STARTUP_QUERY_COUNT                IGMP_ROBUSTNESS_VARIABLE
30 #define IGMP_LAST_MEMBER_QUERY_INTERVAL         1
31 #define IGMP_LAST_MEMBER_QUERY_COUNT            IGMP_ROBUSTNESS_VARIABLE
32
33 /*
34  * OLD_AGE_THRESHOLD is the number of IGMP_QUERY_INTERVAL's to remember the
35  * presence of an IGMPv1 group member.  According to the IGMPv2 specification,
36  * routers remember this presence for [Robustness Variable] * [Query Interval] +
37  * [Query Response Interval].  However, OLD_AGE_THRESHOLD is in units of
38  * [Query Interval], so doesn't have sufficient resolution to represent
39  * [Query Response Interval].  When the timer mechanism gets an efficient
40  * method of refreshing timers, this should get fixed.
41  */
42 #define OLD_AGE_THRESHOLD               IGMP_ROBUSTNESS_VARIABLE