[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.30 and 1.31

version 1.30, 1996/05/28 23:27:04 version 1.31, 1996/06/23 12:12:49
Line 206  rip_ctloutput(op, so, level, optname, m)
Line 206  rip_ctloutput(op, so, level, optname, m)
         struct mbuf **m;          struct mbuf **m;
 {  {
         register struct inpcb *inp = sotoinpcb(so);          register struct inpcb *inp = sotoinpcb(so);
 #ifdef MROUTING          int error = 0;
         int error;  
 #endif  
   
         if (level != IPPROTO_IP) {          if (level != IPPROTO_IP) {
                 if (m != 0 && *m != 0)                  error = ENOPROTOOPT;
                         (void)m_free(*m);                  if (op == PRCO_SETOPT && *m != 0)
                 return (EINVAL);                          (void) m_free(*m);
         }          } else switch (op) {
   
         switch (optname) {          case PRCO_SETOPT:
                   switch (optname) {
         case IP_HDRINCL:                  case IP_HDRINCL:
                 if (op == PRCO_SETOPT || op == PRCO_GETOPT) {                          if (*m == 0 || (*m)->m_len < sizeof (int))
                         if (m == 0 || *m == 0 || (*m)->m_len < sizeof (int))                                  error = EINVAL;
                                 return (EINVAL);                          else {
                         if (op == PRCO_SETOPT) {  
                                 if (*mtod(*m, int *))                                  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;
                                 (void)m_free(*m);  
                         } else {  
                                 (*m)->m_len = sizeof (int);  
                                 *mtod(*m, int *) = inp->inp_flags & INP_HDRINCL;  
                         }                          }
                         return (0);                          if (*m != 0)
                                   (void) m_free(*m);
                           break;
   
   #ifdef MROUTING
                   case MRT_INIT:
                   case MRT_DONE:
                   case MRT_ADD_VIF:
                   case MRT_DEL_VIF:
                   case MRT_ADD_MFC:
                   case MRT_DEL_MFC:
                   case MRT_ASSERT:
                           error = ip_mrouter_set(so, optname, m);
                           break;
   #endif
   
                   default:
                           error = ip_ctloutput(op, so, level, optname, m);
                           break;
                 }                  }
                 break;                  break;
   
         case MRT_INIT:          case PRCO_GETOPT:
         case MRT_DONE:                  switch (optname) {
         case MRT_ADD_VIF:                  case IP_HDRINCL:
         case MRT_DEL_VIF:                          *m = m_get(M_WAIT, M_SOOPTS);
         case MRT_ADD_MFC:                          (*m)->m_len = sizeof (int);
         case MRT_DEL_MFC:                          *mtod(*m, int *) = inp->inp_flags & INP_HDRINCL ? 1 : 0;
         case MRT_VERSION:  
         case MRT_ASSERT:  
 #ifdef MROUTING  
                 switch (op) {  
                 case PRCO_SETOPT:  
                         error = ip_mrouter_set(optname, so, m);  
                         break;                          break;
                 case PRCO_GETOPT:  
                         error = ip_mrouter_get(optname, so, m);  #ifdef MROUTING
                   case MRT_VERSION:
                   case MRT_ASSERT:
                           error = ip_mrouter_get(so, optname, m);
                         break;                          break;
   #endif
   
                 default:                  default:
                         error = EINVAL;                          error = ip_ctloutput(op, so, level, optname, m);
                         break;                          break;
                 }                  }
                 return (error);                  break;
 #else  
                 if (op == PRCO_SETOPT && *m)  
                         m_free(*m);  
                 return (EOPNOTSUPP);  
 #endif  
         }          }
         return (ip_ctloutput(op, so, level, optname, m));          return (error);
 }  }
   
 int  int

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

CVSweb <webmaster@jp.NetBSD.org>