[BACK]Return to raw_ip.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/raw_ip.c between version 1.1.1.2 and 1.1.1.3

version 1.1.1.2, 1998/01/05 09:54:16 version 1.1.1.3, 1998/01/05 09:56:02
Line 30 
Line 30 
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF   * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.   * SUCH DAMAGE.
  *   *
  *      @(#)raw_ip.c    8.2 (Berkeley) 1/4/94   *      @(#)raw_ip.c    8.7 (Berkeley) 5/15/95
  */   */
   
 #include <sys/param.h>  #include <sys/param.h>
Line 93  rip_input(m)
Line 93  rip_input(m)
                 if (inp->inp_ip.ip_p && inp->inp_ip.ip_p != ip->ip_p)                  if (inp->inp_ip.ip_p && inp->inp_ip.ip_p != ip->ip_p)
                         continue;                          continue;
                 if (inp->inp_laddr.s_addr &&                  if (inp->inp_laddr.s_addr &&
                     inp->inp_laddr.s_addr == ip->ip_dst.s_addr)                      inp->inp_laddr.s_addr != ip->ip_dst.s_addr)
                         continue;                          continue;
                 if (inp->inp_faddr.s_addr &&                  if (inp->inp_faddr.s_addr &&
                     inp->inp_faddr.s_addr == ip->ip_src.s_addr)                      inp->inp_faddr.s_addr != ip->ip_src.s_addr)
                         continue;                          continue;
                 if (last) {                  if (last) {
                         struct mbuf *n;                          struct mbuf *n;
                         if (n = m_copy(m, 0, (int)M_COPYALL)) {                          if (n = m_copy(m, 0, (int)M_COPYALL)) {
                                 if (sbappendaddr(&last->so_rcv, &ripsrc,                                  if (sbappendaddr(&last->so_rcv,
                                     n, (struct mbuf *)0) == 0)                                      (struct sockaddr *)&ripsrc, n,
                                       (struct mbuf *)0) == 0)
                                         /* should notify about lost packet */                                          /* should notify about lost packet */
                                         m_freem(n);                                          m_freem(n);
                                 else                                  else
Line 112  rip_input(m)
Line 113  rip_input(m)
                 last = inp->inp_socket;                  last = inp->inp_socket;
         }          }
         if (last) {          if (last) {
                 if (sbappendaddr(&last->so_rcv, &ripsrc,                  if (sbappendaddr(&last->so_rcv, (struct sockaddr *)&ripsrc,
                     m, (struct mbuf *)0) == 0)                      m, (struct mbuf *)0) == 0)
                         m_freem(m);                          m_freem(m);
                 else                  else
Line 179  rip_ctloutput(op, so, level, optname, m)
Line 180  rip_ctloutput(op, so, level, optname, m)
         register struct inpcb *inp = sotoinpcb(so);          register struct inpcb *inp = sotoinpcb(so);
         register int error;          register int error;
   
         if (level != IPPROTO_IP)          if (level != IPPROTO_IP) {
                   if (op == PRCO_SETOPT && *m)
                           (void) m_free(*m);
                 return (EINVAL);                  return (EINVAL);
           }
   
         switch (optname) {          switch (optname) {
   
         case IP_HDRINCL:          case IP_HDRINCL:
                 if (op == PRCO_SETOPT || op == PRCO_GETOPT) {                  error = 0;
                         if (m == 0 || *m == 0 || (*m)->m_len < sizeof (int))                  if (op == PRCO_SETOPT) {
                                 return (EINVAL);                          if (*m == 0 || (*m)->m_len < sizeof (int))
                         if (op == PRCO_SETOPT) {                                  error = EINVAL;
                                 if (*mtod(*m, int *))                          else if (*mtod(*m, int *))
                                         inp->inp_flags |= INP_HDRINCL;                                  inp->inp_flags |= INP_HDRINCL;
                                 else                          else
                                         inp->inp_flags &= ~INP_HDRINCL;                                  inp->inp_flags &= ~INP_HDRINCL;
                           if (*m)
                                 (void)m_free(*m);                                  (void)m_free(*m);
                         } else {                  } else {
                                 (*m)->m_len = sizeof (int);                          *m = m_get(M_WAIT, MT_SOOPTS);
                                 *mtod(*m, int *) = inp->inp_flags & INP_HDRINCL;                          (*m)->m_len = sizeof (int);
                         }                          *mtod(*m, int *) = inp->inp_flags & INP_HDRINCL;
                         return (0);  
                 }                  }
                 break;                  return (error);
   
         case DVMRP_INIT:          case DVMRP_INIT:
         case DVMRP_DONE:          case DVMRP_DONE:
Line 223  rip_ctloutput(op, so, level, optname, m)
Line 227  rip_ctloutput(op, so, level, optname, m)
                         (void)m_free(*m);                          (void)m_free(*m);
                 return (EOPNOTSUPP);                  return (EOPNOTSUPP);
 #endif  #endif
   
           default:
                   if (optname >= DVMRP_INIT) {
   #ifdef MROUTING
                           if (op == PRCO_SETOPT) {
                                   error = ip_mrouter_cmd(optname, so, *m);
                                   if (*m)
                                           (void)m_free(*m);
                           } else
                                   error = EINVAL;
                           return (error);
   #else
                           if (op == PRCO_SETOPT && *m)
                                   (void)m_free(*m);
                           return (EOPNOTSUPP);
   #endif
                   }
   
         }          }
         return (ip_ctloutput(op, so, level, optname, m));          return (ip_ctloutput(op, so, level, optname, m));
 }  }

Legend:
Removed from v.1.1.1.2  
changed lines
  Added in v.1.1.1.3

CVSweb <webmaster@jp.NetBSD.org>