[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.34 and 1.35

version 1.34, 1996/09/09 14:51:23 version 1.35, 1996/09/15 18:11:11
Line 86  void
Line 86  void
 udp_init()  udp_init()
 {  {
   
         in_pcbinit(&udbtable, udbhashsize);          in_pcbinit(&udbtable, udbhashsize, udbhashsize);
 }  }
   
 void  void
Line 266  udp_input(m, va_alist)
Line 266  udp_input(m, va_alist)
         /*          /*
          * Locate pcb for datagram.           * Locate pcb for datagram.
          */           */
         inp = in_pcbhashlookup(&udbtable, ip->ip_src, uh->uh_sport,          inp = in_pcblookup_connect(&udbtable, ip->ip_src, uh->uh_sport,
             ip->ip_dst, uh->uh_dport);              ip->ip_dst, uh->uh_dport);
         if (inp == 0) {          if (inp == 0) {
                 ++udpstat.udps_pcbhashmiss;                  ++udpstat.udps_pcbhashmiss;
                 inp = in_pcblookup(&udbtable, ip->ip_src, uh->uh_sport,                  inp = in_pcblookup_bind(&udbtable, ip->ip_dst, uh->uh_dport);
                     ip->ip_dst, uh->uh_dport, INPLOOKUP_WILDCARD);  
                 if (inp == 0) {                  if (inp == 0) {
                         udpstat.udps_noport++;                          udpstat.udps_noport++;
                         if (m->m_flags & (M_BCAST | M_MCAST)) {                          if (m->m_flags & (M_BCAST | M_MCAST)) {
Line 554  udp_usrreq(so, req, m, nam, control, p)
Line 553  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 */
                   in_pcbstate(inp, INP_BOUND);            /* XXX */
                 break;                  break;
   
         case PRU_SHUTDOWN:          case PRU_SHUTDOWN:
Line 572  udp_usrreq(so, req, m, nam, control, p)
Line 572  udp_usrreq(so, req, m, nam, control, p)
                         break;                          break;
                 }                  }
         {          {
                 struct in_addr laddr;                  struct in_addr laddr;                   /* XXX */
   
                 if (nam) {                  if (nam) {
                         laddr = inp->inp_laddr;                          laddr = inp->inp_laddr;         /* XXX */
                         if ((so->so_state & SS_ISCONNECTED) != 0) {                          if ((so->so_state & SS_ISCONNECTED) != 0) {
                                 error = EISCONN;                                  error = EISCONN;
                                 goto die;                                  goto die;
Line 595  udp_usrreq(so, req, m, nam, control, p)
Line 595  udp_usrreq(so, req, m, nam, control, p)
                 error = udp_output(m, inp);                  error = udp_output(m, inp);
                 if (nam) {                  if (nam) {
                         in_pcbdisconnect(inp);                          in_pcbdisconnect(inp);
                         inp->inp_laddr = laddr;                          inp->inp_laddr = laddr;         /* XXX */
                           in_pcbstate(inp, INP_BOUND);    /* XXX */
                 }                  }
         }          }
                 break;                  break;

Legend:
Removed from v.1.34  
changed lines
  Added in v.1.35

CVSweb <webmaster@jp.NetBSD.org>