The multicast handling code in ip_input() has the following lines

 15247                          if (ipha->ipha_protocol != IPPROTO_UDP ||
 15248                              !CLASSD(ipha->ipha_dst)) {
 15249                                  ire = ip_rput_process_broadcast(&q, mp,
 15250                                      ire, ipha, ill, dst, cgtp_flt_pkt,
 15251                                      ll_multicast);
 15252                                  if (ire == NULL)
 15253                                          continue;
 15254                          }

which are preceded by the comment:
                        /*
                         * Skip broadcast checks if packet is UDP multicast;
                         * we'd rather not enter ip_rput_process_broadcast()
                         * unless the packet is broadcast for real, since
                         * that routine is a no-op for multicast.
                         */

My question is: why make a special case of UDP multicast? (For other
protocols, we'd drop into ip_rput_process_broadcast(), do nothing,
and come back to ip_input() from where we'd call ip_proto_input()
to handle the multicast packet). Is this some kind of fast-path for
protocols like ripv2?

--Sowmini

_______________________________________________
networking-discuss mailing list
[email protected]

Reply via email to