
|
 |
Коментар от: euphoria |
Дата: 16-12-2004 |
[ Други коментари] |
Ubuntu май първи пуснаха patch. Ето част от пача, който оправя IGMP проблема.
+diff -urN x/net/ipv4/igmp.c y/net/ipv4/igmp.c
+--- x/net/ipv4/igmp.c 2004-08-24 17:19:34.000000000 +1000
++++ y/net/ipv4/igmp.c 2004-12-14 22:18:37.000000000 +1100
+@@ -1776,12 +1776,12 @@
+ goto done;
+ rv = !0;
+ for (i=0; i<psl->sl_count; i++) {
+- rv = memcmp(&psl->sl_addr, &mreqs->imr_multiaddr,
++ rv = memcmp(&psl->sl_addr[i], &mreqs->imr_sourceaddr,
+ sizeof(__u32));
+- if (rv >= 0)
++ if (rv == 0)
+ break;
+ }
+- if (!rv) /* source not found */
++ if (rv) /* source not found */
+ goto done;
+
+ /* update the interface filter */
+@@ -1823,9 +1823,9 @@
+ }
+ rv = 1; /* > 0 for insert logic below if sl_count is 0 */
+ for (i=0; i<psl->sl_count; i++) {
+- rv = memcmp(&psl->sl_addr, &mreqs->imr_multiaddr,
++ rv = memcmp(&psl->sl_addr[i], &mreqs->imr_sourceaddr,
+ sizeof(__u32));
+- if (rv >= 0)
++ if (rv == 0)
+ break;
+ }
+ if (rv == 0) /* address already there is an error */
+diff -urN x/net/ipv6/mcast.c y/net/ipv6/mcast.c
+--- x/net/ipv6/mcast.c 2004-08-24 17:19:05.000000000 +1000
++++ y/net/ipv6/mcast.c 2004-12-14 22:18:37.000000000 +1100
+@@ -389,12 +389,12 @@
+ goto done;
+ rv = !0;
+ for (i=0; i<psl->sl_count; i++) {
+- rv = memcmp(&psl->sl_addr, group,
++ rv = memcmp(&psl->sl_addr[i], source,
+ sizeof(struct in6_addr));
+- if (rv >= 0)
++ if (rv == 0)
+ break;
+ }
+- if (!rv) /* source not found */
++ if (rv) /* source not found */
+ goto done;
+
+ /* update the interface filter */
+@@ -435,8 +435,8 @@
+ }
+ rv = 1; /* > 0 for insert logic below if sl_count is 0 */
+ for (i=0; i<psl->sl_count; i++) {
+- rv = memcmp(&psl->sl_addr, group, sizeof(struct in6_addr));
+- if (rv >= 0)
++ rv = memcmp(&psl->sl_addr[i], source, sizeof(struct in6_addr));
++ if (rv == 0)
+ break;
+ }
+ if (rv == 0) /* address already there is an error */
|
<< mi ... | Fix за socket бъга >> |
|
 |
|
|
|
|
|
|