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

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

Diff for /src/sys/net/if.c between version 1.242.4.1 and 1.242.4.2

version 1.242.4.1, 2010/07/03 01:19:59 version 1.242.4.2, 2011/03/05 20:55:51
Line 981  if_clone_lookup(const char *name, int *u
Line 981  if_clone_lookup(const char *name, int *u
   
         unit = 0;          unit = 0;
         while (cp - name < IFNAMSIZ && *cp) {          while (cp - name < IFNAMSIZ && *cp) {
                 if (*cp < '0' || *cp > '9' || unit > INT_MAX / 10) {                  if (*cp < '0' || *cp > '9' || unit >= INT_MAX / 10) {
                         /* Bogus unit number. */                          /* Bogus unit number. */
                         return NULL;                          return NULL;
                 }                  }
Line 1477  ifunit(const char *name)
Line 1477  ifunit(const char *name)
         return NULL;          return NULL;
 }  }
   
   ifnet_t *
   if_byindex(u_int idx)
   {
   
           return (idx < if_indexlim) ? ifindex2ifnet[idx] : NULL;
   }
   
 /* common */  /* common */
 int  int
 ifioctl_common(struct ifnet *ifp, u_long cmd, void *data)  ifioctl_common(struct ifnet *ifp, u_long cmd, void *data)
Line 1688  ifioctl(struct socket *so, u_long cmd, v
Line 1695  ifioctl(struct socket *so, u_long cmd, v
 {  {
         struct ifnet *ifp;          struct ifnet *ifp;
         struct ifreq *ifr;          struct ifreq *ifr;
         struct ifcapreq *ifcr;  
         struct ifdatareq *ifdr;  
         int error = 0;          int error = 0;
 #if defined(COMPAT_OSOCK) || defined(COMPAT_OIFREQ)  #if defined(COMPAT_OSOCK) || defined(COMPAT_OIFREQ)
         u_long ocmd = cmd;          u_long ocmd = cmd;
Line 1726  ifioctl(struct socket *so, u_long cmd, v
Line 1731  ifioctl(struct socket *so, u_long cmd, v
         } else          } else
 #endif  #endif
                 ifr = data;                  ifr = data;
         ifcr = data;  
         ifdr = data;  
   
         ifp = ifunit(ifr->ifr_name);          ifp = ifunit(ifr->ifr_name);
   
Line 1779  ifioctl(struct socket *so, u_long cmd, v
Line 1782  ifioctl(struct socket *so, u_long cmd, v
         case SIOCS80211POWER:          case SIOCS80211POWER:
         case SIOCS80211BSSID:          case SIOCS80211BSSID:
         case SIOCS80211CHANNEL:          case SIOCS80211CHANNEL:
           case SIOCSLINKSTR:
                 if (l != NULL) {                  if (l != NULL) {
                         error = kauth_authorize_network(l->l_cred,                          error = kauth_authorize_network(l->l_cred,
                             KAUTH_NETWORK_INTERFACE,                              KAUTH_NETWORK_INTERFACE,
Line 1817  ifioctl(struct socket *so, u_long cmd, v
Line 1821  ifioctl(struct socket *so, u_long cmd, v
         }          }
 #ifdef COMPAT_OIFREQ  #ifdef COMPAT_OIFREQ
         if (cmd != ocmd)          if (cmd != ocmd)
                 ifreqn2o(ifr, oifr);                  ifreqn2o(oifr, ifr);
 #endif  #endif
   
         return error;          return error;
Line 1916  ifconf(u_long cmd, void *data)
Line 1920  ifconf(u_long cmd, void *data)
 }  }
   
 int  int
 ifreq_setaddr(const u_long cmd, struct ifreq *ifr, const struct sockaddr *sa)  ifreq_setaddr(u_long cmd, struct ifreq *ifr, const struct sockaddr *sa)
 {  {
         uint8_t len;          uint8_t len;
         u_long ncmd;  #ifdef COMPAT_OIFREQ
           struct ifreq ifrb;
         if ((ncmd = compat_cvtcmd(cmd)) != cmd)          struct oifreq *oifr = NULL;
                 len = sizeof(ifr->ifr_addr);          u_long ocmd = cmd;
         else          cmd = compat_cvtcmd(cmd);
           if (cmd != ocmd) {
                   oifr = (struct oifreq *)(void *)ifr;
                   ifr = &ifrb;
                   ifreqo2n(oifr, ifr);
                   len = sizeof(oifr->ifr_addr);
           } else
   #endif
                 len = sizeof(ifr->ifr_ifru.ifru_space);                  len = sizeof(ifr->ifr_ifru.ifru_space);
   
         if (len < sa->sa_len)          if (len < sa->sa_len)
                 return EFBIG;                  return EFBIG;
   
         memset(&ifr->ifr_addr, 0, len);          memset(&ifr->ifr_addr, 0, len);
         sockaddr_copy(&ifr->ifr_addr, len, sa);          sockaddr_copy(&ifr->ifr_addr, len, sa);
   
   #ifdef COMPAT_OIFREQ
           if (cmd != ocmd)
                   ifreqn2o(oifr, ifr);
   #endif
         return 0;          return 0;
 }  }
   

Legend:
Removed from v.1.242.4.1  
changed lines
  Added in v.1.242.4.2

CVSweb <webmaster@jp.NetBSD.org>