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<--------