Re: [PATCH] Fallback to ipv4 if we try to add join IPv4 multicast group via ipv4-mapped address.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello,

David Stevens wrote:
Dmitry,
        Good catch; a couple comments:

Thank you for the response.


    struct ipv6_pinfo *np = inet6_sk(sk);
    int err;
+   int addr_type = ipv6_addr_type(addr);
+
+   if (addr_type == IPV6_ADDR_MAPPED) {
+      __be32 v4addr = addr->s6_addr32[3];
+      struct ip_mreqn mreq;
+      mreq.imr_multiaddr.s_addr = v4addr;
+      mreq.imr_address.s_addr = INADDR_ANY;
+      mreq.imr_ifindex = ifindex;
+
+      return ip_mc_join_group(sk, &mreq);
+   }

        ipv6_addr_type() returns a bitmask, so you should use:

        if (addr_type & IPV6_ADDR_MAPPED) {

I just c'n'pasted the code that checks for mapped addresses. In most cases it's just ==, not bitmask operation.


Also, you should have a blank line after the "mreq" declaration.

ok.


Ditto for both in ipv6_mc_sock_drop().


I don't expect the multicast source filtering interface will
behave well for mapped addresses, either. The mapped multicast
address won't appear to be a multicast address (and return
error there), and all the source filters would have to be
v4mapped addresses and modify the v4 source filters for this
to do as you expect. So, there's more to it (and it may be a
bit messy) to support mapped multicast addresses fully. I'll
think about that part some more.


Didn't have time to test it throughly. I've only checked that call succeeds and that all necessary igmp are sent. I hope, this weekend I'll have more time to check.

--
With best wishes
Dmitry Baryshkov

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux