Messages in this thread Patch in this message | | | Date | Fri, 18 Oct 2002 12:52:15 +0900 (JST) | Subject | [PATCH] IPv6: Source Address of MLD Message | From | YOSHIFUJI Hideaki / 吉藤英明 <> |
| |
Hi!
draft-ietf-magma-mld-source-02.txt clarifies that the source address of MLD Report / Done Message MUST be unspecified address when a link-local address is not available. This patch follows this clarification.
This patch is against 2.4.20-pre10.
Thanks in advance.
------------------------------------------------------------------- Patch-Name: Source Address of MLD Message Patch-Id: FIX_2_4_20_pre10_MLD_SADDR-20021017 Patch-Author: YOSHIFUJI Hideaki / USAGI Project <yoshfuji@linux-ipv6.org> Credit: YOSHIFUJI Hideaki / USAGI Project <yoshfuji@linux-ipv6.org> Reference: draft-ietf-magma-mld-source-02.txt ------------------------------------------------------------------- Index: net/ipv6/mcast.c =================================================================== RCS file: /cvsroot/usagi/usagi-backport/linux24/net/ipv6/mcast.c,v retrieving revision 1.1.1.1 retrieving revision 1.1.1.1.30.2 diff -u -r1.1.1.1 -r1.1.1.1.30.2 --- net/ipv6/mcast.c 2002/08/20 09:47:02 1.1.1.1 +++ net/ipv6/mcast.c 2002/10/17 17:33:19 1.1.1.1.30.2 @@ -18,6 +18,9 @@ /* Changes: * * yoshfuji : fix format of router-alert option + * YOSHIFUJI Hideaki @USAGI: + * Fixed source address for MLD message based on + * <draft-ietf-magma-mld-source-02.txt>. */ #define __NO_VERSION__ @@ -451,6 +454,7 @@ struct in6_addr *addrp; struct inet6_dev *idev; struct icmp6hdr *hdr; + int addr_type; /* Our own report looped back. Ignore it. */ if (skb->pkt_type == PACKET_LOOPBACK) @@ -462,7 +466,9 @@ hdr = (struct icmp6hdr*) skb->h.raw; /* Drop reports with not link local source */ - if (!(ipv6_addr_type(&skb->nh.ipv6h->saddr)&IPV6_ADDR_LINKLOCAL)) + addr_type = ipv6_addr_type(&skb->nh.ipv6h->saddr); + if (addr_type != IPV6_ADDR_ANY && + !(addr_type&IPV6_ADDR_LINKLOCAL)) return -EINVAL; addrp = (struct in6_addr *) (hdr + 1); @@ -529,11 +535,11 @@ } if (ipv6_get_lladdr(dev, &addr_buf)) { -#if MCAST_DEBUG >= 1 - printk(KERN_DEBUG "igmp6: %s no linklocal address\n", - dev->name); -#endif - goto out; + /* <draft-ietf-magma-mld-source-02.txt>: + * use unspecified address as the source address + * when a valid link-local address is not available. + */ + memset(&addr_buf, 0, sizeof(addr_buf)); } ip6_nd_hdr(sk, skb, dev, &addr_buf, snd_addr, NEXTHDR_HOP, payload_len); -- Hideaki YOSHIFUJI @ USAGI Project <yoshfuji@linux-ipv6.org> GPG FP: 9022 65EB 1ECF 3AD1 0BDF 80D8 4807 F894 E062 0EEA - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |