Hello,

just for my curiosity:

    why do you leave some returns untreated? is that intentional?
    just like here:
    @@ -2048,8 +2048,11 @@ ifioctl(struct socket *so, u_long cmd, caddr_t data, 
struct proc *p)
            case SIOCGVNETID:
            case SIOCGIFPAIR:
            case SIOCGIFPARENT:
    -               if (ifp->if_ioctl == 0)
    -                       return (EOPNOTSUPP);
    +               if (ifp->if_ioctl == 0) {
    +                       /* ??? sashan@ */
    +                       error = EOPNOTSUPP;
    +                       break;
    +               }
                    error = (*ifp->if_ioctl)(ifp, cmd, data);
                    break;
 

below is patch, which makes switch in ifioctl() consistent by converting
all return (error) to breaks;

thanks and
regards
sasha

--------8<---------------8<---------------8<------------------8<--------
diff --git a/sys/net/if.c b/sys/net/if.c
index 60020606df5..40f6fe1b776 100644
--- a/sys/net/if.c
+++ b/sys/net/if.c
@@ -1876,7 +1876,7 @@ ifioctl(struct socket *so, u_long cmd, caddr_t data, 
struct proc *p)
                        break;
 #endif /* INET6 */
                default:
-                       return (EAFNOSUPPORT);
+                       error = EAFNOSUPPORT;
                }
                if (oif_flags != ifp->if_flags || oif_xflags != ifp->if_xflags)
                        rtm_ifchg(ifp);
@@ -1920,7 +1920,7 @@ ifioctl(struct socket *so, u_long cmd, caddr_t data, 
struct proc *p)
 
        case SIOCSIFFLAGS:
                if ((error = suser(p, 0)) != 0)
-                       return (error);
+                       break;
 
                ifp->if_flags = (ifp->if_flags & IFF_CANTCHANGE) |
                        (ifr->ifr_flags & ~IFF_CANTCHANGE);
@@ -1945,13 +1945,13 @@ ifioctl(struct socket *so, u_long cmd, caddr_t data, 
struct proc *p)
 
        case SIOCSIFXFLAGS:
                if ((error = suser(p, 0)) != 0)
-                       return (error);
+                       break;
 
 #ifdef INET6
                if (ISSET(ifr->ifr_flags, IFXF_AUTOCONF6)) {
                        error = in6_ifattach(ifp);
                        if (error != 0)
-                               return (error);
+                               break;
                }
 #endif /* INET6 */
 
@@ -1983,7 +1983,7 @@ ifioctl(struct socket *so, u_long cmd, caddr_t data, 
struct proc *p)
                                error = ifp->if_wol(ifp, 1);
                                splx(s);
                                if (error)
-                                       return (error);
+                                       break;
                        }
                        if (ISSET(ifp->if_xflags, IFXF_WOL) &&
                            !ISSET(ifr->ifr_flags, IFXF_WOL)) {
@@ -1992,7 +1992,7 @@ ifioctl(struct socket *so, u_long cmd, caddr_t data, 
struct proc *p)
                                error = ifp->if_wol(ifp, 0);
                                splx(s);
                                if (error)
-                                       return (error);
+                                       break;
                        }
                } else if (ISSET(ifr->ifr_flags, IFXF_WOL)) {
                        ifr->ifr_flags &= ~IFXF_WOL;
@@ -2007,13 +2007,13 @@ ifioctl(struct socket *so, u_long cmd, caddr_t data, 
struct proc *p)
 
        case SIOCSIFMETRIC:
                if ((error = suser(p, 0)) != 0)
-                       return (error);
+                       break;
                ifp->if_metric = ifr->ifr_metric;
                break;
 
        case SIOCSIFMTU:
                if ((error = suser(p, 0)) != 0)
-                       return (error);
+                       break;
                if (ifp->if_ioctl == NULL)
                        return (EOPNOTSUPP);
                error = (*ifp->if_ioctl)(ifp, cmd, data);
@@ -2037,7 +2037,7 @@ ifioctl(struct socket *so, u_long cmd, caddr_t data, 
struct proc *p)
        case SIOCSIFPARENT:
        case SIOCDIFPARENT:
                if ((error = suser(p, 0)) != 0)
-                       return (error);
+                       break;
                /* FALLTHROUGH */
        case SIOCGIFPSRCADDR:
        case SIOCGIFPDSTADDR:
@@ -2048,8 +2048,10 @@ ifioctl(struct socket *so, u_long cmd, caddr_t data, 
struct proc *p)
        case SIOCGVNETID:
        case SIOCGIFPAIR:
        case SIOCGIFPARENT:
-               if (ifp->if_ioctl == 0)
-                       return (EOPNOTSUPP);
+               if (ifp->if_ioctl == 0) {
+                       error = EOPNOTSUPP;
+                       break;
+               }
                error = (*ifp->if_ioctl)(ifp, cmd, data);
                break;
 
@@ -2061,7 +2063,7 @@ ifioctl(struct socket *so, u_long cmd, caddr_t data, 
struct proc *p)
 
        case SIOCSIFDESCR:
                if ((error = suser(p, 0)) != 0)
-                       return (error);
+                       break;
                error = copyinstr(ifr->ifr_data, ifdescrbuf,
                    IFDESCRSIZE, &bytesdone);
                if (error == 0) {
@@ -2082,7 +2084,7 @@ ifioctl(struct socket *so, u_long cmd, caddr_t data, 
struct proc *p)
 
        case SIOCSIFRTLABEL:
                if ((error = suser(p, 0)) != 0)
-                       return (error);
+                       break;
                error = copyinstr(ifr->ifr_data, ifrtlabelbuf,
                    RTLABEL_LEN, &bytesdone);
                if (error == 0) {
@@ -2097,9 +2099,11 @@ ifioctl(struct socket *so, u_long cmd, caddr_t data, 
struct proc *p)
 
        case SIOCSIFPRIORITY:
                if ((error = suser(p, 0)) != 0)
-                       return (error);
-               if (ifr->ifr_metric < 0 || ifr->ifr_metric > 15)
-                       return (EINVAL);
+                       break;
+               if (ifr->ifr_metric < 0 || ifr->ifr_metric > 15) {
+                       error = EINVAL;
+                       break;
+               }
                ifp->if_priority = ifr->ifr_metric;
                break;
 
@@ -2109,44 +2113,50 @@ ifioctl(struct socket *so, u_long cmd, caddr_t data, 
struct proc *p)
 
        case SIOCSIFRDOMAIN:
                if ((error = suser(p, 0)) != 0)
-                       return (error);
-               if ((error = if_setrdomain(ifp, ifr->ifr_rdomainid)) != 0)
-                       return (error);
+                       break;
+               error = if_setrdomain(ifp, ifr->ifr_rdomainid);
                break;
 
        case SIOCAIFGROUP:
                if ((error = suser(p, 0)))
-                       return (error);
-               ifgr = (struct ifgroupreq *)data;
+                       break;
                if ((error = if_addgroup(ifp, ifgr->ifgr_group)))
-                       return (error);
-               (*ifp->if_ioctl)(ifp, cmd, data); /* XXX error check */
+                       break;
+               error = (*ifp->if_ioctl)(ifp, cmd, data);
+               if (error == ENOTTY)
+                       error = 0;
                break;
 
        case SIOCGIFGROUP:
-               if ((error = if_getgroup(data, ifp)))
-                       return (error);
+               error = if_getgroup(data, ifp);
                break;
 
        case SIOCDIFGROUP:
                if ((error = suser(p, 0)))
-                       return (error);
-               (*ifp->if_ioctl)(ifp, cmd, data); /* XXX error check */
-               ifgr = (struct ifgroupreq *)data;
-               if ((error = if_delgroup(ifp, ifgr->ifgr_group)))
-                       return (error);
+                       break;
+               error = (*ifp->if_ioctl)(ifp, cmd, data);
+               if (error == ENOTTY)
+                       error = 0;
+               if (error == 0)
+                       error = if_delgroup(ifp, ifgr->ifgr_group);
                break;
 
        case SIOCSIFLLADDR:
                if ((error = suser(p, 0)))
-                       return (error);
+                       break;
                sdl = ifp->if_sadl;
-               if (sdl == NULL)
-                       return (EINVAL);
-               if (ifr->ifr_addr.sa_len != ETHER_ADDR_LEN)
-                       return (EINVAL);
-               if (ETHER_IS_MULTICAST(ifr->ifr_addr.sa_data))
-                       return (EINVAL);
+               if (sdl == NULL) {
+                       error = EINVAL;
+                       break;
+               }
+               if (ifr->ifr_addr.sa_len != ETHER_ADDR_LEN) {
+                       error = EINVAL;
+                       break;
+               }
+               if (ETHER_IS_MULTICAST(ifr->ifr_addr.sa_data)) {
+                       error = EINVAL;
+                       break;
+               }
                switch (ifp->if_type) {
                case IFT_ETHER:
                case IFT_CARP:
@@ -2158,7 +2168,7 @@ ifioctl(struct socket *so, u_long cmd, caddr_t data, 
struct proc *p)
                                error = 0;
                        break;
                default:
-                       return (ENODEV);
+                       error = ENODEV;
                }
 
                ifnewlladdr(ifp);
@@ -2170,9 +2180,11 @@ ifioctl(struct socket *so, u_long cmd, caddr_t data, 
struct proc *p)
 
        case SIOCSIFLLPRIO:
                if ((error = suser(p, 0)))
-                       return (error);
-               if (ifr->ifr_llprio > UCHAR_MAX)
-                       return (EINVAL);
+                       break;
+               if (ifr->ifr_llprio > UCHAR_MAX) {
+                       error = EINVAL;
+                       break;
+               }
                ifp->if_llprio = ifr->ifr_llprio;
                break;
 
--------8<---------------8<---------------8<------------------8<--------

Reply via email to