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

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

Diff for /src/sys/netinet6/udp6_usrreq.c between version 1.30 and 1.30.2.4

version 1.30, 2000/06/08 13:51:34 version 1.30.2.4, 2001/05/09 19:38:47
Line 1 
Line 1 
 /*      $NetBSD$        */  /*      $NetBSD$        */
 /*      $KAME: udp6_usrreq.c,v 1.52 2000/06/05 00:41:58 itojun Exp $    */  /*      $KAME: udp6_usrreq.c,v 1.62 2000/10/19 01:11:05 itojun Exp $    */
   
 /*  /*
  * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.   * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
Line 103 
Line 103 
 #endif /*IPSEC*/  #endif /*IPSEC*/
   
 #include "faith.h"  #include "faith.h"
   #if defined(NFAITH) && NFAITH > 0
   #include <net/if_faith.h>
   #endif
   
 /*  /*
  * UDP protocol inplementation.   * UDP protocol inplementation.
Line 161  udp6_input(mp, offp, proto)
Line 164  udp6_input(mp, offp, proto)
         u_int32_t plen, ulen;          u_int32_t plen, ulen;
         struct sockaddr_in6 udp_in6;          struct sockaddr_in6 udp_in6;
   
           ip6 = mtod(m, struct ip6_hdr *);
   
 #if defined(NFAITH) && 0 < NFAITH  #if defined(NFAITH) && 0 < NFAITH
         if (m->m_pkthdr.rcvif) {          if (faithprefix(&ip6->ip6_dst)) {
                 if (m->m_pkthdr.rcvif->if_type == IFT_FAITH) {                  /* send icmp6 host unreach? */
                         /* send icmp6 host unreach? */                  m_freem(m);
                         m_freem(m);                  return IPPROTO_DONE;
                         return IPPROTO_DONE;  
                 }  
         }          }
 #endif  #endif
   
         udp6stat.udp6s_ipackets++;          udp6stat.udp6s_ipackets++;
   
         ip6 = mtod(m, struct ip6_hdr *);  
         /* check for jumbogram is done in ip6_input.  we can trust pkthdr.len */          /* check for jumbogram is done in ip6_input.  we can trust pkthdr.len */
         plen = m->m_pkthdr.len - off;          plen = m->m_pkthdr.len - off;
 #ifndef PULLDOWN_TEST  #ifndef PULLDOWN_TEST
Line 528  udp6_ctlinput(cmd, sa, d)
Line 531  udp6_ctlinput(cmd, sa, d)
                 if (IN6_IS_ADDR_LINKLOCAL(&s))                  if (IN6_IS_ADDR_LINKLOCAL(&s))
                         s.s6_addr16[1] = htons(m->m_pkthdr.rcvif->if_index);                          s.s6_addr16[1] = htons(m->m_pkthdr.rcvif->if_index);
   
                   /* check if we can safely examine src and dst ports */
                   if (m->m_pkthdr.len < off + sizeof(uh))
                           return;
   
                 if (m->m_len < off + sizeof(uh)) {                  if (m->m_len < off + sizeof(uh)) {
                         /*                          /*
                          * this should be rare case,                           * this should be rare case,
Line 729  udp6_output(in6p, m, addr6, control, p)
Line 736  udp6_output(in6p, m, addr6, control, p)
   
                 udp6stat.udp6s_opackets++;                  udp6stat.udp6s_opackets++;
 #ifdef IPSEC  #ifdef IPSEC
                 ipsec_setsocket(m, in6p->in6p_socket);                  if (ipsec_setsocket(m, in6p->in6p_socket) != 0) {
                           error = ENOBUFS;
                           goto release;
                   }
 #endif /*IPSEC*/  #endif /*IPSEC*/
                 error = ip6_output(m, in6p->in6p_outputopts, &in6p->in6p_route,                  error = ip6_output(m, in6p->in6p_outputopts, &in6p->in6p_route,
                             0, in6p->in6p_moptions, NULL);                              0, in6p->in6p_moptions, NULL);
Line 746  udp6_output(in6p, m, addr6, control, p)
Line 756  udp6_output(in6p, m, addr6, control, p)
   
                 ip->ip_len = plen;                  ip->ip_len = plen;
                 ip->ip_p = IPPROTO_UDP;                  ip->ip_p = IPPROTO_UDP;
                 ip->ip_ttl = in6p->in6p_hops;   /*XXX*/                  ip->ip_ttl = in6_selecthlim(in6p, NULL);        /*XXX*/
                 ip->ip_tos = 0;                 /*XXX*/                  ip->ip_tos = 0;                 /*XXX*/
                 bcopy(&laddr->s6_addr[12], &ip->ip_src, sizeof(ip->ip_src));                  bcopy(&laddr->s6_addr[12], &ip->ip_src, sizeof(ip->ip_src));
                 bcopy(&faddr->s6_addr[12], &ip->ip_dst, sizeof(ip->ip_dst));                  bcopy(&faddr->s6_addr[12], &ip->ip_dst, sizeof(ip->ip_dst));
Line 757  udp6_output(in6p, m, addr6, control, p)
Line 767  udp6_output(in6p, m, addr6, control, p)
   
                 udpstat.udps_opackets++;                  udpstat.udps_opackets++;
 #ifdef IPSEC  #ifdef IPSEC
                 ipsec_setsocket(m, NULL);       /*XXX*/                  (void)ipsec_setsocket(m, NULL); /*XXX*/
 #endif /*IPSEC*/  #endif /*IPSEC*/
                 error = ip_output(m, NULL, &in6p->in6p_route, 0 /*XXX*/);                  error = ip_output(m, NULL, &in6p->in6p_route, 0 /*XXX*/);
                 break;                  break;

Legend:
Removed from v.1.30  
changed lines
  Added in v.1.30.2.4

CVSweb <webmaster@jp.NetBSD.org>