[BACK]Return to ip_input.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/ip_input.c between version 1.357 and 1.358

version 1.357, 2017/07/06 17:12:34 version 1.358, 2017/07/08 22:56:15
Line 1515  ip_savecontrol(struct inpcb *inp, struct
Line 1515  ip_savecontrol(struct inpcb *inp, struct
     struct mbuf *m)      struct mbuf *m)
 {  {
         struct socket *so = inp->inp_socket;          struct socket *so = inp->inp_socket;
         ifnet_t *ifp;  
         int inpflags = inp->inp_flags;          int inpflags = inp->inp_flags;
         struct psref psref;  
   
         ifp = m_get_rcvif_psref(m, &psref);  
         if (__predict_false(ifp == NULL))  
                 return; /* XXX should report error? */  
   
         if (SOOPT_TIMESTAMP(so->so_options))          if (SOOPT_TIMESTAMP(so->so_options))
                 mp = sbsavetimestamp(so->so_options, m, mp);                  mp = sbsavetimestamp(so->so_options, m, mp);
Line 1532  ip_savecontrol(struct inpcb *inp, struct
Line 1526  ip_savecontrol(struct inpcb *inp, struct
                 if (*mp)                  if (*mp)
                         mp = &(*mp)->m_next;                          mp = &(*mp)->m_next;
         }          }
   
           if (inpflags & INP_RECVTTL) {
                   *mp = sbcreatecontrol(&ip->ip_ttl,
                       sizeof(uint8_t), IP_RECVTTL, IPPROTO_IP);
                   if (*mp)
                           mp = &(*mp)->m_next;
           }
   
           struct psref psref;
           ifnet_t *ifp = m_get_rcvif_psref(m, &psref);
           if (__predict_false(ifp == NULL)) {
   #ifdef DIAGNOSTIC
                   printf("%s: missing receive interface\n", __func__);
   #endif
                   return; /* XXX should report error? */
           }
   
         if (inpflags & INP_RECVPKTINFO) {          if (inpflags & INP_RECVPKTINFO) {
                 struct in_pktinfo ipi;                  struct in_pktinfo ipi;
                 ipi.ipi_addr = ip->ip_src;                  ipi.ipi_addr = ip->ip_src;
Line 1559  ip_savecontrol(struct inpcb *inp, struct
Line 1570  ip_savecontrol(struct inpcb *inp, struct
                 if (*mp)                  if (*mp)
                         mp = &(*mp)->m_next;                          mp = &(*mp)->m_next;
         }          }
         if (inpflags & INP_RECVTTL) {  
                 *mp = sbcreatecontrol(&ip->ip_ttl,  
                     sizeof(uint8_t), IP_RECVTTL, IPPROTO_IP);  
                 if (*mp)  
                         mp = &(*mp)->m_next;  
         }  
         m_put_rcvif_psref(ifp, &psref);          m_put_rcvif_psref(ifp, &psref);
 }  }
   

Legend:
Removed from v.1.357  
changed lines
  Added in v.1.358

CVSweb <webmaster@jp.NetBSD.org>