linux/net/ipv6
Yan Zheng f12baeab9d [MCAST] IPv6: Fix algorithm to compute Querier's Query Interval
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: Yan Zheng <yanzheng@21cn.com>
Acked-by: David L Stevens <dlstevens@us.ibm.com>
Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
2005-10-28 16:35:18 -02:00
..
netfilter [NETFILTER]: Fix ip6_table.c build with NETFILTER_DEBUG enabled. 2005-10-15 16:15:38 -07:00
addrconf.c [IPV4]: Replace __in_dev_get with __in_dev_get_rcu/rtnl 2005-10-03 14:35:55 -07:00
af_inet6.c
ah6.c
anycast.c
datagram.c [XFRM]: Always release dst_entry on error in xfrm_lookup 2005-09-08 15:11:55 -07:00
esp6.c [IPSEC] Fix block size/MTU bugs in ESP 2005-10-10 21:11:34 -07:00
exthdrs_core.c
exthdrs.c [IPV6]: Bring Type 0 routing header in-line with rfc3542. 2005-09-10 00:15:06 -07:00
icmp.c [NET]: Wider use of for_each_*cpu() 2005-10-25 23:54:01 -02:00
inet6_hashtables.c
ip6_fib.c [PATCH] timer initialization cleanup: DEFINE_TIMER 2005-09-09 14:03:48 -07:00
ip6_flowlabel.c [IPV6]: Fix refcnt of struct ip6_flowlabel 2005-10-25 21:17:52 -02:00
ip6_input.c
ip6_output.c [IPv4/IPv6]: UFO Scatter-gather approach 2005-10-28 16:30:00 -02:00
ip6_tunnel.c [IPV6]: Don't redo xfrm_lookup for cached dst entries 2005-09-08 14:27:47 -07:00
ipcomp6.c
ipv6_sockglue.c
ipv6_syms.c
Kconfig
Makefile
mcast.c [MCAST] IPv6: Fix algorithm to compute Querier's Query Interval 2005-10-28 16:35:18 -02:00
ndisc.c [IPV6]: Fix NS handing for proxy/anycast address 2005-10-05 12:11:41 -07:00
netfilter.c
proc.c [NET]: Wider use of for_each_*cpu() 2005-10-25 23:54:01 -02:00
protocol.c
raw.c [PATCH] raw_sendmsg DoS on 2.6 2005-09-19 18:45:42 -07:00
reassembly.c
route.c
sit.c
sysctl_net_ipv6.c
tcp_ipv6.c [INET]: speedup inet (tcp/dccp) lookups 2005-10-03 14:13:38 -07:00
udp.c [IPV6]: Fix infinite loop in udp_v6_get_port(). 2005-10-04 13:00:39 -07:00
xfrm6_input.c
xfrm6_output.c
xfrm6_policy.c
xfrm6_state.c
xfrm6_tunnel.c