• Yan Zheng's avatar
    [MCAST] IPv6: Fix algorithm to compute Querier's Query Interval · f12baeab
    Yan Zheng authored
    5.1.3.  Maximum Response Code
    
       The Maximum Response Code field specifies the maximum time allowed
       before sending a responding Report.  The actual time allowed, called
       the Maximum Response Delay, is represented in units of milliseconds,
       and is derived from the Maximum Response Code as follows:
    
       If Maximum Response Code < 32768,
          Maximum Response Delay = Maximum Response Code
    
       If Maximum Response Code >=32768, Maximum Response Code represents a
       floating-point value as follows:
    
           0 1 2 3 4 5 6 7 8 9 A B C D E F
          +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
          |1| exp |          mant         |
          +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    
       Maximum Response Delay = (mant | 0x1000) << (exp+3)
    
    
    5.1.9.  QQIC (Querier's Query Interval Code)
    
       The Querier's Query Interval Code field specifies the [Query
       Interval] used by the Querier.  The actual interval, called the
       Querier's Query Interval (QQI), is represented in units of seconds,
       and is derived from the Querier's Query Interval Code as follows:
    
       If QQIC < 128, QQI = QQIC
    
       If QQIC >= 128, QQIC represents a floating-point value as follows:
    
           0 1 2 3 4 5 6 7
          +-+-+-+-+-+-+-+-+
          |1| exp | mant  |
          +-+-+-+-+-+-+-+-+
    
       QQI = (mant | 0x10) << (exp + 3)
    
                                                    -- rfc3810
    
    #define MLDV2_QQIC(value) MLDV2_EXP(0x80, 4, 3, value)
    #define MLDV2_MRC(value) MLDV2_EXP(0x8000, 12, 3, value)
    
    Above macro are defined in mcast.c. but 1 << 4 == 0x10 and 1 << 12 == 0x1000.
    So the result computed by original Macro is larger.
    Signed-off-by: default avatarYan Zheng <yanzheng@21cn.com>
    Acked-by: default avatarDavid L Stevens <dlstevens@us.ibm.com>
    Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@mandriva.com>
    f12baeab
mcast.c 59.1 KB