[BACK]Return to udp_usrreq.c CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / sys / netinet

Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.

Diff for /src/sys/netinet/udp_usrreq.c between version 1.59 and 1.62

version 1.59, 2000/02/01 22:52:10 version 1.62, 2000/02/29 16:21:56
Line 240  udp_input(m, va_alist)
Line 240  udp_input(m, va_alist)
          * Checksum extended UDP header and data.           * Checksum extended UDP header and data.
          */           */
         if (uh->uh_sum) {          if (uh->uh_sum) {
 #ifndef PULLDOWN_TEST  
                 struct ip save_ip;  
   
                 /*  
                  * Save a copy of the IP header in case we want restore it  
                  * for sending an ICMP error message in response.  
                  */  
                 save_ip = *ip;  
   
                 bzero(((struct ipovly *)ip)->ih_x1,  
                     sizeof ((struct ipovly *)ip)->ih_x1);  
                 ((struct ipovly *)ip)->ih_len = uh->uh_ulen;  
                 if (in_cksum(m, len + sizeof (struct ip)) != 0) {  
                         udpstat.udps_badsum++;  
                         m_freem(m);  
                         return;  
                 }  
   
                 *ip = save_ip;  
 #else  
                 if (in4_cksum(m, IPPROTO_UDP, iphlen, len) != 0) {                  if (in4_cksum(m, IPPROTO_UDP, iphlen, len) != 0) {
                         udpstat.udps_badsum++;                          udpstat.udps_badsum++;
                         m_freem(m);                          m_freem(m);
                         return;                          return;
                 }                  }
 #endif  
         }          }
   
         /* construct source and dst sockaddrs. */          /* construct source and dst sockaddrs. */
Line 305  udp_input(m, va_alist)
Line 284  udp_input(m, va_alist)
 #endif  #endif
   
         if (n == 0) {          if (n == 0) {
                 udpstat.udps_noport++;  
                 if (m->m_flags & (M_BCAST | M_MCAST)) {                  if (m->m_flags & (M_BCAST | M_MCAST)) {
                         udpstat.udps_noportbcast++;                          udpstat.udps_noportbcast++;
                         goto bad;                          goto bad;
                 }                  }
                   udpstat.udps_noport++;
 #if NIPKDB > 0  #if NIPKDB > 0
                 if (checkipkdb(&ip->ip_src, uh->uh_sport, uh->uh_dport,                  if (checkipkdb(&ip->ip_src, uh->uh_sport, uh->uh_dport,
                                 m, iphlen + sizeof(struct udphdr),                                  m, iphlen + sizeof(struct udphdr),
Line 433  udp6_input(mp, offp, proto)
Line 412  udp6_input(mp, offp, proto)
         dst.sin6_port = uh->uh_dport;          dst.sin6_port = uh->uh_dport;
   
         if (udp6_realinput(AF_INET6, &src, &dst, m, off) == 0) {          if (udp6_realinput(AF_INET6, &src, &dst, m, off) == 0) {
                 udp6stat.udp6s_noport++;  
                 if (m->m_flags & M_MCAST) {                  if (m->m_flags & M_MCAST) {
                         udp6stat.udp6s_noportmcast++;                          udp6stat.udp6s_noportmcast++;
                         goto bad;                          goto bad;
                 }                  }
                   udp6stat.udp6s_noport++;
                 icmp6_error(m, ICMP6_DST_UNREACH, ICMP6_DST_UNREACH_NOPORT, 0);                  icmp6_error(m, ICMP6_DST_UNREACH, ICMP6_DST_UNREACH_NOPORT, 0);
                 m = NULL;                  m = NULL;
         }          }
Line 638  udp4_realinput(src, dst, m, off)
Line 617  udp4_realinput(src, dst, m, off)
                          * (No need to send an ICMP Port Unreachable                           * (No need to send an ICMP Port Unreachable
                          * for a broadcast or multicast datgram.)                           * for a broadcast or multicast datgram.)
                          */                           */
                         udpstat.udps_noport++;  
                         udpstat.udps_noportbcast++;                          udpstat.udps_noportbcast++;
                         goto bad;                          goto bad;
                 }                  }
Line 655  udp4_realinput(src, dst, m, off)
Line 633  udp4_realinput(src, dst, m, off)
 #if 0  #if 0
                                 struct mbuf *n;                                  struct mbuf *n;
   
                                 udpstat.udps_noport++;  
                                 if (m->m_flags & (M_BCAST | M_MCAST)) {                                  if (m->m_flags & (M_BCAST | M_MCAST)) {
                                         udpstat.udps_noportbcast++;                                          udpstat.udps_noportbcast++;
                                         goto bad;                                          goto bad;
                                 }                                  }
                                   udpstat.udps_noport++;
 #if NIPKDB > 0  #if NIPKDB > 0
                                 if (checkipkdb(src4, *sport, *dport, m, off,                                  if (checkipkdb(src4, *sport, *dport, m, off,
                                                m->m_pkthdr.len - off)) {                                                 m->m_pkthdr.len - off)) {
Line 821  udp6_realinput(af, src, dst, m, off)
Line 799  udp6_realinput(af, src, dst, m, off)
                          */                           */
                         switch (af) {                          switch (af) {
                         case AF_INET:                          case AF_INET:
                                 udpstat.udps_noport++;  
                                 udpstat.udps_noportbcast++;                                  udpstat.udps_noportbcast++;
                                 break;                                  break;
                         case AF_INET6:                          case AF_INET6:
                                 udp6stat.udp6s_noport++;  
                                 udp6stat.udp6s_noportmcast++;                                  udp6stat.udp6s_noportmcast++;
                                 break;                                  break;
                         }                          }
Line 847  udp6_realinput(af, src, dst, m, off)
Line 823  udp6_realinput(af, src, dst, m, off)
                                 n = m_copy(m, 0, M_COPYALL);                                  n = m_copy(m, 0, M_COPYALL);
                                 switch (af) {                                  switch (af) {
                                 case AF_INET:                                  case AF_INET:
                                         udpstat.udps_noport++;  
                                         if (m->m_flags & (M_BCAST | M_MCAST)) {                                          if (m->m_flags & (M_BCAST | M_MCAST)) {
                                                 udpstat.udps_noportbcast++;                                                  udpstat.udps_noportbcast++;
                                                 goto bad;                                                  goto bad;
                                         }                                          }
                                           udpstat.udps_noport++;
                                         if (n != NULL)                                          if (n != NULL)
                                                 icmp_error(n, ICMP_UNREACH,                                                  icmp_error(n, ICMP_UNREACH,
                                                     ICMP_UNREACH_PORT, 0, 0);                                                      ICMP_UNREACH_PORT, 0, 0);
                                         break;                                          break;
                                 case AF_INET6:                                  case AF_INET6:
                                         udp6stat.udp6s_noport++;  
                                         if (m->m_flags & M_MCAST) {                                          if (m->m_flags & M_MCAST) {
                                                 udp6stat.udp6s_noportmcast++;                                                  udp6stat.udp6s_noportmcast++;
                                                 goto bad;                                                  goto bad;
                                         }                                          }
                                           udp6stat.udp6s_noport++;
                                         if (n != NULL)                                          if (n != NULL)
                                                 icmp6_error(n, ICMP6_DST_UNREACH,                                                  icmp6_error(n, ICMP6_DST_UNREACH,
                                                     ICMP6_DST_UNREACH_NOPORT, 0);                                                      ICMP6_DST_UNREACH_NOPORT, 0);
Line 1075  udp_input(m, va_alist)
Line 1051  udp_input(m, va_alist)
                          * (No need to send an ICMP Port Unreachable                           * (No need to send an ICMP Port Unreachable
                          * for a broadcast or multicast datgram.)                           * for a broadcast or multicast datgram.)
                          */                           */
                         udpstat.udps_noport++;  
                         udpstat.udps_noportbcast++;                          udpstat.udps_noportbcast++;
                         goto bad;                          goto bad;
                 }                  }
Line 1109  udp_input(m, va_alist)
Line 1084  udp_input(m, va_alist)
                 ++udpstat.udps_pcbhashmiss;                  ++udpstat.udps_pcbhashmiss;
                 inp = in_pcblookup_bind(&udbtable, ip->ip_dst, uh->uh_dport);                  inp = in_pcblookup_bind(&udbtable, ip->ip_dst, uh->uh_dport);
                 if (inp == 0) {                  if (inp == 0) {
                         udpstat.udps_noport++;  
                         if (m->m_flags & (M_BCAST | M_MCAST)) {                          if (m->m_flags & (M_BCAST | M_MCAST)) {
                                 udpstat.udps_noportbcast++;                                  udpstat.udps_noportbcast++;
                                 goto bad;                                  goto bad;
                         }                          }
                           udpstat.udps_noport++;
                         *ip = save_ip;                          *ip = save_ip;
 #if NIPKDB > 0  #if NIPKDB > 0
                         if (checkipkdb(&ip->ip_src,                          if (checkipkdb(&ip->ip_src,
Line 1309  udp_usrreq(so, req, m, nam, control, p)
Line 1284  udp_usrreq(so, req, m, nam, control, p)
                 return (in_control(so, (long)m, (caddr_t)nam,                  return (in_control(so, (long)m, (caddr_t)nam,
                     (struct ifnet *)control, p));                      (struct ifnet *)control, p));
   
         if (req == PRU_PURGEADDR) {          if (req == PRU_PURGEIF) {
                 in_purgeaddr((struct ifaddr *)nam, (struct ifnet *)control);                  in_purgeif((struct ifnet *)control);
                   in_pcbpurgeif(&udbtable, (struct ifnet *)control);
                 return (0);                  return (0);
         }          }
   

Legend:
Removed from v.1.59  
changed lines
  Added in v.1.62

CVSweb <webmaster@jp.NetBSD.org>