Author: glebius
Date: Tue Nov  5 10:29:47 2013
New Revision: 257696
URL: http://svnweb.freebsd.org/changeset/base/257696

Log:
  Drop support for historic ioctls and also undefine them, so that code
  that checks their presence via ifdef, won't use them.
  
  Bump __FreeBSD_version as safety measure.

Modified:
  head/libexec/rbootd/bpf.c
  head/share/man/man9/ifnet.9
  head/sys/compat/svr4/svr4_sockio.c
  head/sys/net/if.c
  head/sys/net/if.h
  head/sys/net/if_tap.c
  head/sys/sys/param.h
  head/sys/sys/sockio.h

Modified: head/libexec/rbootd/bpf.c
==============================================================================
--- head/libexec/rbootd/bpf.c   Tue Nov  5 09:46:01 2013        (r257695)
+++ head/libexec/rbootd/bpf.c   Tue Nov  5 10:29:47 2013        (r257696)
@@ -237,19 +237,11 @@ BpfGetIntfName(char **errmsg)
        ifc.ifc_len = sizeof ibuf;
        ifc.ifc_buf = (caddr_t)ibuf;
 
-#ifdef OSIOCGIFCONF
-       if (ioctl(fd, OSIOCGIFCONF, (char *)&ifc) < 0 ||
-           ifc.ifc_len < sizeof(struct ifreq)) {
-               (void) strcpy(errbuf, "bpf: ioctl(OSIOCGIFCONF): %m");
-               return(NULL);
-       }
-#else
        if (ioctl(fd, SIOCGIFCONF, (char *)&ifc) < 0 ||
            ifc.ifc_len < sizeof(struct ifreq)) {
                (void) strcpy(errbuf, "bpf: ioctl(SIOCGIFCONF): %m");
                return(NULL);
        }
-#endif
        ifrp = ibuf;
        ifend = (struct ifreq *)((char *)ibuf + ifc.ifc_len);
 

Modified: head/share/man/man9/ifnet.9
==============================================================================
--- head/share/man/man9/ifnet.9 Tue Nov  5 09:46:01 2013        (r257695)
+++ head/share/man/man9/ifnet.9 Tue Nov  5 10:29:47 2013        (r257696)
@@ -1284,9 +1284,8 @@ further interpretation.
 The following commands are handled by
 .Fn ifioctl :
 .Pp
-.Bl -tag -width ".Dv OSIOCGIFNETMASK" -offset indent -compact
+.Bl -tag -width ".Dv SIOCGIFNETMASK" -offset indent -compact
 .It Dv SIOCGIFCONF
-.It Dv OSIOCGIFCONF
 Get interface configuration.
 (No call-down to driver.)
 .Pp
@@ -1380,17 +1379,6 @@ function is called to perform the operat
 The socket's protocol control routine is called to implement the
 requested action.
 .Pp
-.It Dv OSIOCGIFADDR
-.It Dv OSIOCGIFDSTADDR
-.It Dv OSIOCGIFBRDADDR
-.It Dv OSIOCGIFNETMASK
-The socket's protocol control routine is called to implement the
-requested action.
-On return,
-.Vt sockaddr
-structures are converted into old-style (no
-.Va sa_len
-member).
 .El
 .El
 .Pp

Modified: head/sys/compat/svr4/svr4_sockio.c
==============================================================================
--- head/sys/compat/svr4/svr4_sockio.c  Tue Nov  5 09:46:01 2013        
(r257695)
+++ head/sys/compat/svr4/svr4_sockio.c  Tue Nov  5 10:29:47 2013        
(r257696)
@@ -144,6 +144,7 @@ svr4_sock_ioctl(fp, td, retval, fd, cmd,
        case SVR4_SIOCGIFCONF:
                {
                        struct svr4_ifconf sc;
+                       struct ifconf *ifc;
 
                        if ((error = copyin(data, &sc, sizeof(sc))) != 0)
                                return error;
@@ -152,9 +153,18 @@ svr4_sock_ioctl(fp, td, retval, fd, cmd,
                                sizeof(struct ifreq), sizeof(struct svr4_ifreq),
                                sc.svr4_ifc_len));
 
-                       if ((error = fo_ioctl(fp, OSIOCGIFCONF,
-                                           (caddr_t) &sc, td->td_ucred,
-                                           td)) != 0)
+                       ifc = (struct ifconf *)&sc;
+                       ifc->ifc_req.ifr_addr.sa_family =
+                           sc.svr4_ifc_req.svr4_ifr_addr.sa_family;
+                       ifc->ifc_req.ifr_addr.sa_len = sizeof(struct osockaddr);
+
+                       error = fo_ioctl(fp, SIOCGIFCONF, &sc,
+                           td->td_ucred, td));
+
+                       sc.svr4_ifc_req.svr4_ifr_addr.sa_family =
+                           ifc->ifc_req.ifr_addr.sa_family;
+
+                       if (error != 0)
                                return error;
 
                        DPRINTF(("SIOCGIFCONF\n"));

Modified: head/sys/net/if.c
==============================================================================
--- head/sys/net/if.c   Tue Nov  5 09:46:01 2013        (r257695)
+++ head/sys/net/if.c   Tue Nov  5 10:29:47 2013        (r257696)
@@ -2511,7 +2511,6 @@ ifioctl(struct socket *so, u_long cmd, c
        CURVNET_SET(so->so_vnet);
        switch (cmd) {
        case SIOCGIFCONF:
-       case OSIOCGIFCONF:
                error = ifconf(cmd, data);
                CURVNET_RESTORE();
                return (error);
@@ -2611,71 +2610,12 @@ ifioctl(struct socket *so, u_long cmd, c
         * layer, and do not perform any credentials checks or input
         * validation.
         */
-#ifndef COMPAT_43
-       error = ((*so->so_proto->pr_usrreqs->pru_control)(so, cmd,
-                                                                data,
-                                                                ifp, td));
+       error = ((*so->so_proto->pr_usrreqs->pru_control)(so, cmd, data,
+           ifp, td));
        if (error == EOPNOTSUPP && ifp != NULL && ifp->if_ioctl != NULL &&
            cmd != SIOCSIFADDR && cmd != SIOCSIFBRDADDR &&
            cmd != SIOCSIFDSTADDR && cmd != SIOCSIFNETMASK)
                error = (*ifp->if_ioctl)(ifp, cmd, data);
-#else
-       {
-               u_long ocmd = cmd;
-
-               switch (cmd) {
-
-               case SIOCSIFDSTADDR:
-               case SIOCSIFADDR:
-               case SIOCSIFBRDADDR:
-               case SIOCSIFNETMASK:
-#if BYTE_ORDER != BIG_ENDIAN
-                       if (ifr->ifr_addr.sa_family == 0 &&
-                           ifr->ifr_addr.sa_len < 16) {
-                               ifr->ifr_addr.sa_family = ifr->ifr_addr.sa_len;
-                               ifr->ifr_addr.sa_len = 16;
-                       }
-#else
-                       if (ifr->ifr_addr.sa_len == 0)
-                               ifr->ifr_addr.sa_len = 16;
-#endif
-                       break;
-
-               case OSIOCGIFADDR:
-                       cmd = SIOCGIFADDR;
-                       break;
-
-               case OSIOCGIFDSTADDR:
-                       cmd = SIOCGIFDSTADDR;
-                       break;
-
-               case OSIOCGIFBRDADDR:
-                       cmd = SIOCGIFBRDADDR;
-                       break;
-
-               case OSIOCGIFNETMASK:
-                       cmd = SIOCGIFNETMASK;
-               }
-               error =  ((*so->so_proto->pr_usrreqs->pru_control)(so,
-                                                                  cmd,
-                                                                  data,
-                                                                  ifp, td));
-               if (error == EOPNOTSUPP && ifp != NULL &&
-                   ifp->if_ioctl != NULL &&
-                   cmd != SIOCSIFADDR && cmd != SIOCSIFBRDADDR &&
-                   cmd != SIOCSIFDSTADDR && cmd != SIOCSIFNETMASK)
-                       error = (*ifp->if_ioctl)(ifp, cmd, data);
-               switch (ocmd) {
-
-               case OSIOCGIFADDR:
-               case OSIOCGIFDSTADDR:
-               case OSIOCGIFBRDADDR:
-               case OSIOCGIFNETMASK:
-                       *(u_short *)&ifr->ifr_addr = ifr->ifr_addr.sa_family;
-
-               }
-       }
-#endif /* COMPAT_43 */
 
        if ((oif_flags ^ ifp->if_flags) & IFF_UP) {
 #ifdef INET6
@@ -2841,16 +2781,6 @@ again:
                        if (prison_if(curthread->td_ucred, sa) != 0)
                                continue;
                        addrs++;
-#ifdef COMPAT_43
-                       if (cmd == OSIOCGIFCONF) {
-                               struct osockaddr *osa =
-                                        (struct osockaddr *)&ifr.ifr_addr;
-                               ifr.ifr_addr = *sa;
-                               osa->sa_family = sa->sa_family;
-                               sbuf_bcat(sb, &ifr, sizeof(ifr));
-                               max_len += sizeof(ifr);
-                       } else
-#endif
                        if (sa->sa_len <= sizeof(*sa)) {
                                ifr.ifr_addr = *sa;
                                sbuf_bcat(sb, &ifr, sizeof(ifr));

Modified: head/sys/net/if.h
==============================================================================
--- head/sys/net/if.h   Tue Nov  5 09:46:01 2013        (r257695)
+++ head/sys/net/if.h   Tue Nov  5 10:29:47 2013        (r257696)
@@ -412,14 +412,6 @@ struct ifaliasreq {
        int     ifra_vhid;
 };
 
-/* Compat with pre-10.x */
-struct oifaliasreq {
-       char    ifra_name[IFNAMSIZ];
-       struct  sockaddr ifra_addr;
-       struct  sockaddr ifra_broadaddr;
-       struct  sockaddr ifra_mask;
-};
-
 struct ifmediareq {
        char    ifm_name[IFNAMSIZ];     /* if name, e.g. "en0" */
        int     ifm_current;            /* current media options */

Modified: head/sys/net/if_tap.c
==============================================================================
--- head/sys/net/if_tap.c       Tue Nov  5 09:46:01 2013        (r257695)
+++ head/sys/net/if_tap.c       Tue Nov  5 10:29:47 2013        (r257696)
@@ -829,8 +829,7 @@ tapioctl(struct cdev *dev, u_long cmd, c
                        mtx_unlock(&tp->tap_mtx);
                        break;
 
-               case OSIOCGIFADDR:      /* get MAC address of the remote side */
-               case SIOCGIFADDR:
+               case SIOCGIFADDR:       /* get MAC address of the remote side */
                        mtx_lock(&tp->tap_mtx);
                        bcopy(tp->ether_addr, data, sizeof(tp->ether_addr));
                        mtx_unlock(&tp->tap_mtx);

Modified: head/sys/sys/param.h
==============================================================================
--- head/sys/sys/param.h        Tue Nov  5 09:46:01 2013        (r257695)
+++ head/sys/sys/param.h        Tue Nov  5 10:29:47 2013        (r257696)
@@ -58,7 +58,7 @@
  *             in the range 5 to 9.
  */
 #undef __FreeBSD_version
-#define __FreeBSD_version 1100001      /* Master, propagated to newvers */
+#define __FreeBSD_version 1100002      /* Master, propagated to newvers */
 
 /*
  * __FreeBSD_kernel__ indicates that this system uses the kernel of FreeBSD,

Modified: head/sys/sys/sockio.h
==============================================================================
--- head/sys/sys/sockio.h       Tue Nov  5 09:46:01 2013        (r257695)
+++ head/sys/sys/sockio.h       Tue Nov  5 10:29:47 2013        (r257696)
@@ -50,25 +50,25 @@
 #define        SIOCGETSGCNT    _IOWR('r', 16, struct sioc_sg_req) /* get s,g 
pkt cnt */
 
 #define        SIOCSIFADDR      _IOW('i', 12, struct ifreq)    /* set ifnet 
address */
-#define        OSIOCGIFADDR    _IOWR('i', 13, struct ifreq)    /* get ifnet 
address */
+/*     OSIOCGIFADDR    _IOWR('i', 13, struct ifreq)    4.3BSD */
 #define        SIOCGIFADDR     _IOWR('i', 33, struct ifreq)    /* get ifnet 
address */
 #define        SIOCSIFDSTADDR   _IOW('i', 14, struct ifreq)    /* set p-p 
address */
-#define        OSIOCGIFDSTADDR _IOWR('i', 15, struct ifreq)    /* get p-p 
address */
+/*     OSIOCGIFDSTADDR _IOWR('i', 15, struct ifreq)    4.3BSD */
 #define        SIOCGIFDSTADDR  _IOWR('i', 34, struct ifreq)    /* get p-p 
address */
 #define        SIOCSIFFLAGS     _IOW('i', 16, struct ifreq)    /* set ifnet 
flags */
 #define        SIOCGIFFLAGS    _IOWR('i', 17, struct ifreq)    /* get ifnet 
flags */
-#define        OSIOCGIFBRDADDR _IOWR('i', 18, struct ifreq)    /* get 
broadcast addr */
+/*     OSIOCGIFBRDADDR _IOWR('i', 18, struct ifreq)    4.3BSD */
 #define        SIOCGIFBRDADDR  _IOWR('i', 35, struct ifreq)    /* get 
broadcast addr */
 #define        SIOCSIFBRDADDR   _IOW('i', 19, struct ifreq)    /* set 
broadcast addr */
-#define        OSIOCGIFCONF    _IOWR('i', 20, struct ifconf)   /* get ifnet 
list */
+/*     OSIOCGIFCONF    _IOWR('i', 20, struct ifconf)   4.3BSD */
 #define        SIOCGIFCONF     _IOWR('i', 36, struct ifconf)   /* get ifnet 
list */
-#define        OSIOCGIFNETMASK _IOWR('i', 21, struct ifreq)    /* get net addr 
mask */
+/*     OSIOCGIFNETMASK _IOWR('i', 21, struct ifreq)    4.3BSD */
 #define        SIOCGIFNETMASK  _IOWR('i', 37, struct ifreq)    /* get net addr 
mask */
 #define        SIOCSIFNETMASK   _IOW('i', 22, struct ifreq)    /* set net addr 
mask */
 #define        SIOCGIFMETRIC   _IOWR('i', 23, struct ifreq)    /* get IF 
metric */
 #define        SIOCSIFMETRIC    _IOW('i', 24, struct ifreq)    /* set IF 
metric */
 #define        SIOCDIFADDR      _IOW('i', 25, struct ifreq)    /* delete IF 
addr */
-#define        OSIOCAIFADDR     _IOW('i', 26, struct oifaliasreq)/* add/chg IF 
alias */
+/*     OSIOCAIFADDR     _IOW('i', 26, struct oifaliasreq) FreeBSD 9.x */
 #define        SIOCALIFADDR     _IOW('i', 27, struct if_laddrreq) /* add IF 
addr */
 #define        SIOCGLIFADDR    _IOWR('i', 28, struct if_laddrreq) /* get IF 
addr */
 #define        SIOCDLIFADDR     _IOW('i', 29, struct if_laddrreq) /* delete IF 
addr */
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to