[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.110 and 1.116

version 1.110, 2003/09/12 09:55:22 version 1.116, 2004/03/24 15:34:54
Line 270  udp_input(m, va_alist)
Line 270  udp_input(m, va_alist)
          */           */
         if (uh->uh_sum) {          if (uh->uh_sum) {
                 switch (m->m_pkthdr.csum_flags &                  switch (m->m_pkthdr.csum_flags &
                         ((m->m_pkthdr.rcvif->if_csum_flags_rx & M_CSUM_UDPv4) |                      ((m->m_pkthdr.rcvif->if_csum_flags_rx & M_CSUM_UDPv4) |
                          M_CSUM_TCP_UDP_BAD | M_CSUM_DATA)) {                      M_CSUM_TCP_UDP_BAD | M_CSUM_DATA)) {
                 case M_CSUM_UDPv4|M_CSUM_TCP_UDP_BAD:                  case M_CSUM_UDPv4|M_CSUM_TCP_UDP_BAD:
                         UDP_CSUM_COUNTER_INCR(&udp_hwcsum_bad);                          UDP_CSUM_COUNTER_INCR(&udp_hwcsum_bad);
                         goto badcsum;                          goto badcsum;
Line 280  udp_input(m, va_alist)
Line 280  udp_input(m, va_alist)
                         u_int32_t hw_csum = m->m_pkthdr.csum_data;                          u_int32_t hw_csum = m->m_pkthdr.csum_data;
                         UDP_CSUM_COUNTER_INCR(&udp_hwcsum_data);                          UDP_CSUM_COUNTER_INCR(&udp_hwcsum_data);
                         if (m->m_pkthdr.csum_flags & M_CSUM_NO_PSEUDOHDR)                          if (m->m_pkthdr.csum_flags & M_CSUM_NO_PSEUDOHDR)
                           hw_csum = in_cksum_phdr(ip->ip_src.s_addr, ip->ip_dst.s_addr,                                  hw_csum = in_cksum_phdr(ip->ip_src.s_addr,
                                 htonl(hw_csum + ntohs(ip->ip_len) + IPPROTO_UDP));                                      ip->ip_dst.s_addr,
                                       htons(hw_csum + len + IPPROTO_UDP));
                         if ((hw_csum ^ 0xffff) != 0)                          if ((hw_csum ^ 0xffff) != 0)
                                 goto badcsum;                                  goto badcsum;
                         break;                          break;
Line 549  udp6_sendup(m, off, src, so)
Line 550  udp6_sendup(m, off, src, so)
         /* check AH/ESP integrity. */          /* check AH/ESP integrity. */
         if (so != NULL && ipsec6_in_reject_so(m, so)) {          if (so != NULL && ipsec6_in_reject_so(m, so)) {
                 ipsec6stat.in_polvio++;                  ipsec6stat.in_polvio++;
                 if ((n = m_copy(n, 0, M_COPYALL)) != NULL)                  if ((n = m_copy(m, 0, M_COPYALL)) != NULL)
                         icmp6_error(n, ICMP6_DST_UNREACH,                          icmp6_error(n, ICMP6_DST_UNREACH,
                             ICMP6_DST_UNREACH_ADMIN, 0);                              ICMP6_DST_UNREACH_ADMIN, 0);
                 return;                  return;
Line 1022  udp_usrreq(so, req, m, nam, control, p)
Line 1023  udp_usrreq(so, req, m, nam, control, p)
                 so->so_state &= ~SS_ISCONNECTED;        /* XXX */                  so->so_state &= ~SS_ISCONNECTED;        /* XXX */
                 in_pcbdisconnect(inp);                  in_pcbdisconnect(inp);
                 inp->inp_laddr = zeroin_addr;           /* XXX */                  inp->inp_laddr = zeroin_addr;           /* XXX */
                 if (inp->inp_ia != NULL) {  
                         LIST_REMOVE(inp, inp_ialink);  
                         IFAFREE(&inp->inp_ia->ia_ifa);  
                         inp->inp_ia = NULL;  
                 }  
                 in_pcbstate(inp, INP_BOUND);            /* XXX */                  in_pcbstate(inp, INP_BOUND);            /* XXX */
                 break;                  break;
   
Line 1071  udp_usrreq(so, req, m, nam, control, p)
Line 1067  udp_usrreq(so, req, m, nam, control, p)
                         in_pcbstate(inp, INP_BOUND);    /* XXX */                          in_pcbstate(inp, INP_BOUND);    /* XXX */
                 }                  }
           die:            die:
                 if (inp->inp_ia != NULL && in_nullhost(inp->inp_laddr)) {  
                         LIST_REMOVE(inp, inp_ialink);  
                         IFAFREE(&inp->inp_ia->ia_ifa);  
                         inp->inp_ia = NULL;  
                 }  
                 if (m)                  if (m)
                         m_freem(m);                          m_freem(m);
         }          }
Line 1118  release:
Line 1109  release:
 /*  /*
  * Sysctl for udp variables.   * Sysctl for udp variables.
  */   */
 int  SYSCTL_SETUP(sysctl_net_inet_udp_setup, "sysctl net.inet.udp subtree setup")
 udp_sysctl(name, namelen, oldp, oldlenp, newp, newlen)  
         int *name;  
         u_int namelen;  
         void *oldp;  
         size_t *oldlenp;  
         void *newp;  
         size_t newlen;  
 {  {
         /* All sysctl names at this level are terminal. */  
         if (namelen != 1)          sysctl_createv(clog, 0, NULL, NULL,
                 return (ENOTDIR);                         CTLFLAG_PERMANENT,
                          CTLTYPE_NODE, "net", NULL,
         switch (name[0]) {                         NULL, 0, NULL, 0,
         case UDPCTL_CHECKSUM:                         CTL_NET, CTL_EOL);
                 return (sysctl_int(oldp, oldlenp, newp, newlen, &udpcksum));          sysctl_createv(clog, 0, NULL, NULL,
         case UDPCTL_SENDSPACE:                         CTLFLAG_PERMANENT,
                 return (sysctl_int(oldp, oldlenp, newp, newlen,                         CTLTYPE_NODE, "inet", NULL,
                     &udp_sendspace));                         NULL, 0, NULL, 0,
         case UDPCTL_RECVSPACE:                         CTL_NET, PF_INET, CTL_EOL);
                 return (sysctl_int(oldp, oldlenp, newp, newlen,          sysctl_createv(clog, 0, NULL, NULL,
                     &udp_recvspace));                         CTLFLAG_PERMANENT,
         default:                         CTLTYPE_NODE, "udp", NULL,
                 return (ENOPROTOOPT);                         NULL, 0, NULL, 0,
         }                         CTL_NET, PF_INET, IPPROTO_UDP, CTL_EOL);
         /* NOTREACHED */  
           sysctl_createv(clog, 0, NULL, NULL,
                          CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
                          CTLTYPE_INT, "checksum", NULL,
                          NULL, 0, &udpcksum, 0,
                          CTL_NET, PF_INET, IPPROTO_UDP, UDPCTL_CHECKSUM,
                          CTL_EOL);
           sysctl_createv(clog, 0, NULL, NULL,
                          CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
                          CTLTYPE_INT, "sendspace", NULL,
                          NULL, 0, &udp_sendspace, 0,
                          CTL_NET, PF_INET, IPPROTO_UDP, UDPCTL_SENDSPACE,
                          CTL_EOL);
           sysctl_createv(clog, 0, NULL, NULL,
                          CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
                          CTLTYPE_INT, "recvspace", NULL,
                          NULL, 0, &udp_recvspace, 0,
                          CTL_NET, PF_INET, IPPROTO_UDP, UDPCTL_RECVSPACE,
                          CTL_EOL);
 }  }
 #endif  #endif

Legend:
Removed from v.1.110  
changed lines
  Added in v.1.116

CVSweb <webmaster@jp.NetBSD.org>