This is an automated email from the ASF dual-hosted git repository.

xiaoxiang781216 pushed a commit to branch releases/13.1
in repository https://gitbox.apache.org/repos/asf/nuttx.git

commit 6a37b2587b276c753e04caad2a7cecb0d1c36b2c
Author: chao an <[email protected]>
AuthorDate: Thu Oct 29 14:33:49 2026 +0800

    net/icmpv6: Fix coding style
    
    Fix switch/case indentation and wrap long comments and continuations to 
satisfy nxstyle.
    
    Signed-off-by: chao an <[email protected]>
---
 net/icmpv6/icmpv6_input.c | 752 +++++++++++++++++++++++-----------------------
 1 file changed, 383 insertions(+), 369 deletions(-)

diff --git a/net/icmpv6/icmpv6_input.c b/net/icmpv6/icmpv6_input.c
index a80c476b418..b083b035364 100644
--- a/net/icmpv6/icmpv6_input.c
+++ b/net/icmpv6/icmpv6_input.c
@@ -291,419 +291,433 @@ void icmpv6_input(FAR struct net_driver_s *dev, 
unsigned int iplen)
 
   switch (icmpv6->type)
     {
-    /* If we get a neighbor solicitation for our address we should send
-     * a neighbor advertisement message back.
-     */
-
-    case ICMPv6_NEIGHBOR_SOLICIT:
-      {
-        FAR struct icmpv6_neighbor_solicit_s *sol;
-
-        /* Check if we are the target of the solicitation */
-
-        sol = ICMPv6SOLICIT;
-        if (NETDEV_IS_MY_V6ADDR(dev, sol->tgtaddr))
-          {
-            if (sol->opttype == ICMPv6_OPT_SRCLLADDR)
-              {
-                /* Save the sender's address mapping in our Neighbor Table. */
-
-                neighbor_add(dev, ipv6->srcipaddr, sol->srclladdr);
-              }
-
-            /* Yes.. Send a neighbor advertisement back to where the neighbor
-             * solicitation came from.
-             */
-
-            icmpv6_advertise(dev, sol->tgtaddr, ipv6->srcipaddr);
-
-            /* All statistics have been updated.  Nothing to do but exit. */
-
-            return;
-          }
-        else
-          {
-            goto icmpv6_drop_packet;
-          }
-      }
-      break;
-
-    /* Check if we received a Neighbor Advertisement */
-
-    case ICMPv6_NEIGHBOR_ADVERTISE:
-      {
-        FAR struct icmpv6_neighbor_advertise_s *adv;
-
-        /* If the IPv6 destination address matches our address, and if so,
-         * add the neighbor address mapping to the list of neighbors.
-         *
-         * Missing checks:
-         *   optlen = 1 (8 octets)
-         *   Should only update Neighbor Table if
-         *     [O]verride bit is set in flags
-         */
-
-        adv = ICMPv6ADVERTISE;
-        if (NETDEV_IS_MY_V6ADDR(dev, ipv6->destipaddr))
-          {
-            /* This message is required to support the Target link-layer
-             * address option.
-             */
-
-            if (adv->opttype == ICMPv6_OPT_TGTLLADDR)
-              {
-                /* Save the sender's address mapping in our Neighbor Table. */
-
-                neighbor_add(dev, ipv6->srcipaddr, adv->tgtlladdr);
-              }
+      /* If we get a neighbor solicitation for our address we should send
+       * a neighbor advertisement message back.
+       */
+
+      case ICMPv6_NEIGHBOR_SOLICIT:
+        {
+          FAR struct icmpv6_neighbor_solicit_s *sol;
+
+          /* Check if we are the target of the solicitation */
+
+          sol = ICMPv6SOLICIT;
+          if (NETDEV_IS_MY_V6ADDR(dev, sol->tgtaddr))
+            {
+              if (sol->opttype == ICMPv6_OPT_SRCLLADDR)
+                {
+                  /* Save the sender's address mapping in our Neighbor
+                   * Table.
+                   */
+
+                  neighbor_add(dev, ipv6->srcipaddr, sol->srclladdr);
+                }
+
+              /* Yes.. Send a neighbor advertisement back to where the
+               * neighbor solicitation came from.
+               */
+
+              icmpv6_advertise(dev, sol->tgtaddr, ipv6->srcipaddr);
+
+              /* All statistics have been updated.  Nothing to do but exit. */
+
+              return;
+            }
+          else
+            {
+              goto icmpv6_drop_packet;
+            }
+        }
+        break;
+
+      /* Check if we received a Neighbor Advertisement */
+
+      case ICMPv6_NEIGHBOR_ADVERTISE:
+        {
+          FAR struct icmpv6_neighbor_advertise_s *adv;
+
+          /* If the IPv6 destination address matches our address, and if so,
+           * add the neighbor address mapping to the list of neighbors.
+           *
+           * Missing checks:
+           *   optlen = 1 (8 octets)
+           *   Should only update Neighbor Table if
+           *     [O]verride bit is set in flags
+           */
+
+          adv = ICMPv6ADVERTISE;
+          if (NETDEV_IS_MY_V6ADDR(dev, ipv6->destipaddr))
+            {
+              /* This message is required to support the Target link-layer
+               * address option.
+               */
+
+              if (adv->opttype == ICMPv6_OPT_TGTLLADDR)
+                {
+                  /* Save the sender's address mapping in our Neighbor
+                   * Table.
+                   */
+
+                  neighbor_add(dev, ipv6->srcipaddr, adv->tgtlladdr);
+                }
 
 #ifdef CONFIG_NET_ICMPv6_NEIGHBOR
-            /* Then notify any logic waiting for the Neighbor Advertisement */
+              /* Then notify any logic waiting for the Neighbor
+               * Advertisement.
+               */
 
-            icmpv6_notify(ipv6->srcipaddr);
+              icmpv6_notify(ipv6->srcipaddr);
 #endif
 
-            /* We consumed the packet but we don't send anything in
-             * response.
-             */
+              /* We consumed the packet but we don't send anything in
+               * response.
+               */
 
-            goto icmpv6_send_nothing;
-          }
+              goto icmpv6_send_nothing;
+            }
 
-        goto icmpv6_drop_packet;
-      }
-      break;
+          goto icmpv6_drop_packet;
+        }
+        break;
 
 #ifdef CONFIG_NET_ICMPv6_ROUTER
-    /* Check if we received a Router Solicitation */
+      /* Check if we received a Router Solicitation */
 
-    case ICMPV6_ROUTER_SOLICIT:
-      {
-        /* Just give a knee-jerk Router Advertisement in respond with no
-         * further examination of the Router Solicitation.
-         */
+      case ICMPV6_ROUTER_SOLICIT:
+        {
+          /* Just give a knee-jerk Router Advertisement in respond with no
+           * further examination of the Router Solicitation.
+           */
 
-        icmpv6_radvertise(dev);
+          icmpv6_radvertise(dev);
 
-        /* All statistics have been updated.  Nothing to do but exit. */
+          /* All statistics have been updated.  Nothing to do but exit. */
 
-        return;
-      }
+          return;
+        }
 #endif
 
 #ifdef CONFIG_NET_ICMPv6_AUTOCONF
-    /* Check if we received a Router Advertisement */
-
-    case ICMPV6_ROUTER_ADVERTISE:
-      {
-        FAR struct icmpv6_router_advertise_s *adv;
-        FAR uint8_t *options;
-        bool prefix = false;
-        uint16_t pktlen;
-        uint16_t optlen;
-        int ndx;
-
-        /* Get the length of the option data */
-
-        pktlen = ICMPv6SIZE;
-        if (pktlen <= ICMPv6_RADV_MINLEN)
-          {
-            /* Too small to contain any options */
-
-            goto icmpv6_drop_packet;
-          }
-
-        optlen = ICMPv6_RADV_OPTLEN(pktlen);
-
-        /* We need to have a valid router advertisement with a Prefix and
-         * with the "A" bit set in the flags.  Options immediately follow
-         * the ICMPv6 router advertisement.
-         */
-
-        adv     = ICMPv6RADVERTISE;
-        options = (FAR uint8_t *)adv +
-                   sizeof(struct icmpv6_router_advertise_s);
-
-        for (ndx = 0; ndx < optlen; )
-          {
-            FAR struct icmpv6_generic_s *opt;
-            uint16_t optbytes;
-
-            if (optlen - ndx < 2)
-              {
-                goto icmpv6_drop_packet;
-              }
-
-            opt = (FAR struct icmpv6_generic_s *)&options[ndx];
-
-            /* RFC 4861 4.6: "The value 0 is invalid. Nodes MUST silently
-             * discard a packet that contains an option with length zero."
-             */
-
-            if (opt->optlen == 0)
-              {
-                goto icmpv6_drop_packet;
-              }
-
-            optbytes = opt->optlen << 3;
-            if (optbytes > optlen - ndx)
-              {
-                goto icmpv6_drop_packet;
-              }
-
-            switch (opt->opttype)
-              {
-                case ICMPv6_OPT_SRCLLADDR:
-                  {
-                    FAR struct icmpv6_srclladdr_s *sllopt =
-                                      (FAR struct icmpv6_srclladdr_s *)opt;
-
-                    if (optbytes < sizeof(*sllopt))
-                      {
-                        goto icmpv6_drop_packet;
-                      }
-
-                    neighbor_add(dev, ipv6->srcipaddr, sllopt->srclladdr);
-                  }
-                  break;
-
-                case ICMPv6_OPT_PREFIX:
-                  {
-                    FAR struct icmpv6_prefixinfo_s *prefixopt =
-                                      (FAR struct icmpv6_prefixinfo_s *)opt;
-
-                    if (optbytes < sizeof(*prefixopt))
-                      {
-                        goto icmpv6_drop_packet;
-                      }
-
-                    /* Is the "A" flag set? */
-
-                    if ((prefixopt->flags & ICMPv6_PRFX_FLAG_A) != 0)
-                      {
-                        /* Yes.. Set the new network addresses. */
-
-                        icmpv6_setaddresses(dev, ipv6->srcipaddr,
-                                    prefixopt->prefix, prefixopt->preflen);
-                        netlink_ipv6_prefix_notify(dev, RTM_NEWPREFIX,
-                                                   prefixopt);
-                      }
-                    else if ((adv->flags & ICMPv6_RADV_FLAG_M) != 0)
-                      {
-                        net_ipv6addr_copy(dev->d_ipv6draddr,
-                                          ipv6->srcipaddr);
-                      }
-
-                    /* Notify any waiting threads */
-
-                    icmpv6_rnotify(dev, (adv->flags & ICMPv6_RADV_FLAG_M) ?
-                                        -EADDRNOTAVAIL : OK);
-                    prefix = true;
-                  }
-                  break;
-
-                case ICMPv6_OPT_MTU:
-                  {
-                    FAR struct icmpv6_mtu_s *mtuopt =
-                                        (FAR struct icmpv6_mtu_s *)opt;
-
-                    if (optbytes < sizeof(*mtuopt))
-                      {
-                        goto icmpv6_drop_packet;
-                      }
-
-                    dev->d_pktsize = MIN(dev->d_pktsize,
-                        NTOHS(mtuopt->mtu[1]) + dev->d_llhdrlen);
-                  }
-                  break;
+      /* Check if we received a Router Advertisement */
+
+      case ICMPV6_ROUTER_ADVERTISE:
+        {
+          FAR struct icmpv6_router_advertise_s *adv;
+          FAR uint8_t *options;
+          bool prefix = false;
+          uint16_t pktlen;
+          uint16_t optlen;
+          int ndx;
+
+          /* Get the length of the option data */
+
+          pktlen = ICMPv6SIZE;
+          if (pktlen <= ICMPv6_RADV_MINLEN)
+            {
+              /* Too small to contain any options */
+
+              goto icmpv6_drop_packet;
+            }
+
+          optlen = ICMPv6_RADV_OPTLEN(pktlen);
+
+          /* We need to have a valid router advertisement with a Prefix and
+           * with the "A" bit set in the flags.  Options immediately follow
+           * the ICMPv6 router advertisement.
+           */
+
+          adv     = ICMPv6RADVERTISE;
+          options = (FAR uint8_t *)adv +
+                     sizeof(struct icmpv6_router_advertise_s);
+
+          for (ndx = 0; ndx < optlen; )
+            {
+              FAR struct icmpv6_generic_s *opt;
+              uint16_t optbytes;
+
+              if (optlen - ndx < 2)
+                {
+                  goto icmpv6_drop_packet;
+                }
+
+              opt = (FAR struct icmpv6_generic_s *)&options[ndx];
+
+              /* RFC 4861 4.6: "The value 0 is invalid. Nodes MUST silently
+               * discard a packet that contains an option with length zero."
+               */
+
+              if (opt->optlen == 0)
+                {
+                  goto icmpv6_drop_packet;
+                }
+
+              optbytes = opt->optlen << 3;
+              if (optbytes > optlen - ndx)
+                {
+                  goto icmpv6_drop_packet;
+                }
+
+              switch (opt->opttype)
+                {
+                  case ICMPv6_OPT_SRCLLADDR:
+                    {
+                      FAR struct icmpv6_srclladdr_s *sllopt =
+                                        (FAR struct icmpv6_srclladdr_s *)opt;
+
+                      if (optbytes < sizeof(*sllopt))
+                        {
+                          goto icmpv6_drop_packet;
+                        }
+
+                      neighbor_add(dev, ipv6->srcipaddr, sllopt->srclladdr);
+                    }
+                    break;
+
+                  case ICMPv6_OPT_PREFIX:
+                    {
+                      FAR struct icmpv6_prefixinfo_s *prefixopt =
+                        (FAR struct icmpv6_prefixinfo_s *)opt;
+
+                      if (optbytes < sizeof(*prefixopt))
+                        {
+                          goto icmpv6_drop_packet;
+                        }
+
+                      /* Is the "A" flag set? */
+
+                      if ((prefixopt->flags & ICMPv6_PRFX_FLAG_A) != 0)
+                        {
+                          /* Yes.. Set the new network addresses. */
+
+                          icmpv6_setaddresses(dev, ipv6->srcipaddr,
+                                      prefixopt->prefix, prefixopt->preflen);
+                          netlink_ipv6_prefix_notify(dev, RTM_NEWPREFIX,
+                                                     prefixopt);
+                        }
+                      else if ((adv->flags & ICMPv6_RADV_FLAG_M) != 0)
+                        {
+                          net_ipv6addr_copy(dev->d_ipv6draddr,
+                                            ipv6->srcipaddr);
+                        }
+
+                      /* Notify any waiting threads */
+
+                      icmpv6_rnotify(dev, (adv->flags & ICMPv6_RADV_FLAG_M) ?
+                                          -EADDRNOTAVAIL : OK);
+                      prefix = true;
+                    }
+                    break;
+
+                  case ICMPv6_OPT_MTU:
+                    {
+                      FAR struct icmpv6_mtu_s *mtuopt =
+                                          (FAR struct icmpv6_mtu_s *)opt;
+
+                      if (optbytes < sizeof(*mtuopt))
+                        {
+                          goto icmpv6_drop_packet;
+                        }
+
+                      dev->d_pktsize = MIN(dev->d_pktsize,
+                          NTOHS(mtuopt->mtu[1]) + dev->d_llhdrlen);
+                    }
+                    break;
 
 #ifdef CONFIG_ICMPv6_AUTOCONF_RDNSS
-                case ICMPv6_OPT_RDNSS:
-                  {
-                    FAR struct icmpv6_rdnss_s *rdnss =
-                                          (FAR struct icmpv6_rdnss_s *)opt;
-                    FAR struct in6_addr *servers;
-                    struct sockaddr_in6 addr;
-                    int nservers;
-                    int ret;
-
-                    if (rdnss->optlen < 3 ||
-                        optbytes < offsetof(struct icmpv6_rdnss_s,
-                                            servers) +
-                                   sizeof(struct in6_addr))
-                      {
-                        nerr("rdnss error length %d\n", rdnss->optlen);
-                        break;
-                      }
-
-                    /* optlen is in units of 8 bytes. The header is 1 unit
-                     * (8 bytes) and each address is another 2 units
-                     * (16 bytes). So the number of addresses is equal to
-                     * (optlen - 1) / 2.
-                     */
-
-                    servers  = (FAR struct in6_addr *)rdnss->servers;
-                    nservers = (rdnss->optlen - 1) / 2;
-
-                    if (nservers > 0)
-                      {
-                        /* Set the IPv6 DNS server address */
-
-                        memset(&addr, 0, sizeof(addr));
-                        addr.sin6_family = AF_INET6;
-                        net_ipv6addr_copy(&addr.sin6_addr, servers);
-                        ret = dns_add_nameserver(
-                                          (FAR const struct sockaddr *)&addr,
-                                          sizeof(struct sockaddr_in6));
-                        if (ret < 0 && ret != -EEXIST)
-                          {
-                            nerr("dns add nameserver failed %d", ret);
-                          }
-                      }
-                  }
-                  break;
+                  case ICMPv6_OPT_RDNSS:
+                    {
+                      FAR struct icmpv6_rdnss_s *rdnss =
+                                            (FAR struct icmpv6_rdnss_s *)opt;
+                      FAR struct in6_addr *servers;
+                      struct sockaddr_in6 addr;
+                      int nservers;
+                      int ret;
+
+                      if (rdnss->optlen < 3 ||
+                          optbytes < offsetof(struct icmpv6_rdnss_s,
+                                              servers) +
+                                     sizeof(struct in6_addr))
+                        {
+                          nerr("rdnss error length %d\n", rdnss->optlen);
+                          break;
+                        }
+
+                      /* optlen is in units of 8 bytes. The header is 1 unit
+                       * (8 bytes) and each address is another 2 units
+                       * (16 bytes). So the number of addresses is equal to
+                       * (optlen - 1) / 2.
+                       */
+
+                      servers  = (FAR struct in6_addr *)rdnss->servers;
+                      nservers = (rdnss->optlen - 1) / 2;
+
+                      if (nservers > 0)
+                        {
+                          /* Set the IPv6 DNS server address */
+
+                          memset(&addr, 0, sizeof(addr));
+                          addr.sin6_family = AF_INET6;
+                          net_ipv6addr_copy(&addr.sin6_addr, servers);
+                          ret = dns_add_nameserver((FAR const
+                            struct sockaddr *)&addr,
+                            sizeof(struct sockaddr_in6));
+                          if (ret < 0 && ret != -EEXIST)
+                            {
+                              nerr("dns add nameserver failed %d", ret);
+                            }
+                        }
+                    }
+                    break;
 #endif
 
-                default:
-                  break;
-              }
+                  default:
+                    break;
+                }
 
-            /* Skip to the next option (units of octets) */
+              /* Skip to the next option (units of octets) */
 
-            ndx += optbytes;
-          }
+              ndx += optbytes;
+            }
 
-        if (prefix)
-          {
-            goto icmpv6_send_nothing;
-          }
+          if (prefix)
+            {
+              goto icmpv6_send_nothing;
+            }
 
-        goto icmpv6_drop_packet;
-      }
-      break;
+          goto icmpv6_drop_packet;
+        }
+        break;
 #endif
 
-    /* Handle the ICMPv6 Echo Request */
+      /* Handle the ICMPv6 Echo Request */
 
-    case ICMPv6_ECHO_REQUEST:
-      {
-        /* ICMPv6 echo (i.e., ping) processing. This is simple, we only
-         * change the ICMPv6 type from ECHO to ECHO_REPLY and update the
-         * ICMPv6 checksum before we return the packet.
-         */
+      case ICMPv6_ECHO_REQUEST:
+        {
+          /* ICMPv6 echo (i.e., ping) processing. This is simple, we only
+           * change the ICMPv6 type from ECHO to ECHO_REPLY and update the
+           * ICMPv6 checksum before we return the packet.
+           */
 
-        FAR const uint16_t *srcaddr;
+          FAR const uint16_t *srcaddr;
 
-        icmpv6->type = ICMPv6_ECHO_REPLY;
+          icmpv6->type = ICMPv6_ECHO_REPLY;
 
-        srcaddr = netdev_ipv6_srcaddr(dev, ipv6->destipaddr);
-        net_ipv6addr_copy(ipv6->destipaddr, ipv6->srcipaddr);
-        net_ipv6addr_copy(ipv6->srcipaddr, srcaddr);
+          srcaddr = netdev_ipv6_srcaddr(dev, ipv6->destipaddr);
+          net_ipv6addr_copy(ipv6->destipaddr, ipv6->srcipaddr);
+          net_ipv6addr_copy(ipv6->srcipaddr, srcaddr);
 
-        icmpv6->chksum = 0;
+          icmpv6->chksum = 0;
 
 #ifdef CONFIG_NET_ICMPv6_CHECKSUMS
-        icmpv6->chksum = ~icmpv6_chksum(dev, iplen);
+          icmpv6->chksum = ~icmpv6_chksum(dev, iplen);
 #endif
-      }
-      break;
+        }
+        break;
 
 #if (CONFIG_NET_ICMPv6_PMTU_ENTRIES > 0)
-    case ICMPv6_PACKET_TOO_BIG:
-      {
-        FAR struct icmpv6_pmtu_entry *entry;
-        FAR struct ipv6_hdr_s *inner;
-        int mtu;
-
-        mtu = (ntohs(icmpv6->data[0]) << 16) | (ntohs(icmpv6->data[1]));
-        if (mtu <= 0)
-          {
-            goto icmpv6_type_error;
-          }
-
-        inner = (FAR struct ipv6_hdr_s *)(icmpv6 + 1);
-        entry = icmpv6_find_pmtu_entry(inner->destipaddr);
-        if (entry == NULL)
-          {
-            icmpv6_add_pmtu_entry(inner->destipaddr, mtu);
-          }
-        else
-          {
-            entry->pmtu = mtu;
-          }
-
-        goto icmpv6_send_nothing;
-      }
+      case ICMPv6_PACKET_TOO_BIG:
+        {
+          FAR struct icmpv6_pmtu_entry *entry;
+          FAR struct ipv6_hdr_s *inner;
+          int mtu;
+
+          mtu = (ntohs(icmpv6->data[0]) << 16) | (ntohs(icmpv6->data[1]));
+          if (mtu <= 0)
+            {
+              goto icmpv6_type_error;
+            }
+
+          inner = (FAR struct ipv6_hdr_s *)(icmpv6 + 1);
+          entry = icmpv6_find_pmtu_entry(inner->destipaddr);
+          if (entry == NULL)
+            {
+              icmpv6_add_pmtu_entry(inner->destipaddr, mtu);
+            }
+          else
+            {
+              entry->pmtu = mtu;
+            }
+
+          goto icmpv6_send_nothing;
+        }
 #endif
 
 #ifdef CONFIG_NET_MLD
-    /* Dispatch received Multicast Listener Discovery (MLD) packets. */
-
-    case ICMPV6_MCAST_LISTEN_QUERY:      /* Multicast Listener Query, RFC 2710 
and RFC 3810 */
-      {
-        FAR struct mld_mcast_listen_query_s *query = MLDQUERY;
-        int ret;
-
-        ret = mld_query(dev, query);
-        if (ret < 0)
-          {
-            goto icmpv6_drop_packet;
-          }
-      }
-      break;
-
-    case ICMPV6_MCAST_LISTEN_REPORT_V1:  /* Version 1 Multicast Listener 
Report, RFC 2710 */
-      {
-        FAR struct mld_mcast_listen_report_v1_s *report = MLDREPORT_V1;
-        int ret;
-
-        ret = mld_report_v1(dev, report);
-        if (ret < 0)
-          {
-            goto icmpv6_drop_packet;
-          }
-      }
-      break;
-
-    case ICMPV6_MCAST_LISTEN_REPORT_V2:  /* Version 2 Multicast Listener 
Report, RFC 3810 */
-      {
-        FAR struct mld_mcast_listen_report_v2_s *report = MLDREPORT_V2;
-        int ret;
-
-        ret = mld_report_v2(dev, report);
-        if (ret < 0)
-          {
-            goto icmpv6_drop_packet;
-          }
-      }
-      break;
-
-    case ICMPV6_MCAST_LISTEN_DONE:       /* Multicast Listener Done, RFC 2710 
*/
-      {
-        FAR struct mld_mcast_listen_done_s *done = MLDDONE;
-        int ret;
-
-        ret = mld_done(dev, done);
-        if (ret < 0)
-          {
-            goto icmpv6_drop_packet;
-          }
-      }
-      break;
+      /* Dispatch received Multicast Listener Discovery (MLD) packets. */
+
+      /* Multicast Listener Query, RFC 2710 and RFC 3810 */
+
+      case ICMPV6_MCAST_LISTEN_QUERY:
+        {
+          FAR struct mld_mcast_listen_query_s *query = MLDQUERY;
+          int ret;
+
+          ret = mld_query(dev, query);
+          if (ret < 0)
+            {
+              goto icmpv6_drop_packet;
+            }
+        }
+        break;
+
+      /* Version 1 Multicast Listener Report, RFC 2710 */
+
+      case ICMPV6_MCAST_LISTEN_REPORT_V1:
+        {
+          FAR struct mld_mcast_listen_report_v1_s *report = MLDREPORT_V1;
+          int ret;
+
+          ret = mld_report_v1(dev, report);
+          if (ret < 0)
+            {
+              goto icmpv6_drop_packet;
+            }
+        }
+        break;
+
+      /* Version 2 Multicast Listener Report, RFC 3810 */
+
+      case ICMPV6_MCAST_LISTEN_REPORT_V2:
+        {
+          FAR struct mld_mcast_listen_report_v2_s *report = MLDREPORT_V2;
+          int ret;
+
+          ret = mld_report_v2(dev, report);
+          if (ret < 0)
+            {
+              goto icmpv6_drop_packet;
+            }
+        }
+        break;
+
+      /* Multicast Listener Done, RFC 2710 */
+
+      case ICMPV6_MCAST_LISTEN_DONE:
+        {
+          FAR struct mld_mcast_listen_done_s *done = MLDDONE;
+          int ret;
+
+          ret = mld_done(dev, done);
+          if (ret < 0)
+            {
+              goto icmpv6_drop_packet;
+            }
+        }
+        break;
 #endif
 
-    default:
-      {
+      default:
+        {
 #ifdef CONFIG_NET_ICMPv6_SOCKET
-        if (delivered)
-          {
-            goto icmpv6_send_nothing;
-          }
+          if (delivered)
+            {
+              goto icmpv6_send_nothing;
+            }
 #endif
 
-        nwarn("WARNING: Unknown ICMPv6 type: %d\n", icmpv6->type);
-        goto icmpv6_type_error;
-      }
+          nwarn("WARNING: Unknown ICMPv6 type: %d\n", icmpv6->type);
+          goto icmpv6_type_error;
+        }
     }
 
 #ifdef CONFIG_NET_STATISTICS

Reply via email to