Re: KAME ioctl leftovers
On Wed, Oct 18, 2017 at 01:34:27PM +0200, Martin Pieuchot wrote: > Kill ioctl(2) added with original KAME import that have never been used. > FreeBSD also stopped supporting them in 2013. > > ok? OK bluhm@ > Index: sys/sockio.h > === > RCS file: /cvs/src/sys/sys/sockio.h,v > retrieving revision 1.70 > diff -u -p -r1.70 sockio.h > --- sys/sockio.h 27 Jun 2017 22:18:24 - 1.70 > +++ sys/sockio.h 18 Oct 2017 11:28:25 - > @@ -64,12 +64,6 @@ > #define SIOCGIFDATA _IOWR('i', 27, struct ifreq)/* get if_data > */ > #define SIOCSIFLLADDR _IOW('i', 31, struct ifreq) /* set link > level addr */ > > -/* KAME IPv6 */ > -/* SIOCAIFALIAS? */ > -#define SIOCALIFADDR _IOW('i', 28, struct if_laddrreq) /* add IF addr */ > -#define SIOCGLIFADDR _IOWR('i', 29, struct if_laddrreq) /* get IF addr */ > -#define SIOCDLIFADDR _IOW('i', 30, struct if_laddrreq) /* delete IF addr */ > - > #define SIOCADDMULTI _IOW('i', 49, struct ifreq)/* add m'cast > addr */ > #define SIOCDELMULTI _IOW('i', 50, struct ifreq)/* del m'cast > addr */ > #define SIOCGETVIFCNT _IOWR('u', 51, struct sioc_vif_req)/* vif pkt > cnt */ > Index: netinet/in.c > === > RCS file: /cvs/src/sys/netinet/in.c,v > retrieving revision 1.140 > diff -u -p -r1.140 in.c > --- netinet/in.c 11 Aug 2017 19:53:02 - 1.140 > +++ netinet/in.c 18 Oct 2017 11:29:04 - > @@ -83,7 +83,6 @@ > > > void in_socktrim(struct sockaddr_in *); > -int in_lifaddr_ioctl(u_long, caddr_t, struct ifnet *, int); > > void in_purgeaddr(struct ifaddr *); > int in_addhost(struct in_ifaddr *, struct sockaddr_in *); > @@ -182,9 +181,6 @@ in_nam2sin(const struct mbuf *nam, struc > return 0; > } > > -/* > - * Generic internet control operations (ioctl's). > - */ > int > in_control(struct socket *so, u_long cmd, caddr_t data, struct ifnet *ifp) > { > @@ -194,25 +190,13 @@ in_control(struct socket *so, u_long cmd > if ((so->so_state & SS_PRIV) != 0) > privileged++; > > - switch (cmd) { > #ifdef MROUTING > + switch (cmd) { > case SIOCGETVIFCNT: > case SIOCGETSGCNT: > return (mrt_ioctl(so, cmd, data)); > -#endif /* MROUTING */ > - case SIOCALIFADDR: > - case SIOCDLIFADDR: > - if (!privileged) > - return (EPERM); > - /* FALLTHROUGH */ > - case SIOCGLIFADDR: > - if (ifp == NULL) > - return (EINVAL); > - return in_lifaddr_ioctl(cmd, data, ifp, privileged); > - default: > - if (ifp == NULL) > - return (EOPNOTSUPP); > } > +#endif /* MROUTING */ > > return (in_ioctl(cmd, data, ifp, privileged)); > } > @@ -228,6 +212,9 @@ in_ioctl(u_long cmd, caddr_t data, struc > int error; > int newifaddr; > > + if (ifp == NULL) > + return (EOPNOTSUPP); > + > NET_ASSERT_LOCKED(); > > TAILQ_FOREACH(ifa, >if_addrlist, ifa_list) { > @@ -413,187 +400,6 @@ in_ioctl(u_long cmd, caddr_t data, struc > } > return (0); > } > - > -/* > - * SIOC[GAD]LIFADDR. > - * SIOCGLIFADDR: get first address. (???) > - * SIOCGLIFADDR with IFLR_PREFIX: > - * get first address that matches the specified prefix. > - * SIOCALIFADDR: add the specified address. > - * SIOCALIFADDR with IFLR_PREFIX: > - * EINVAL since we can't deduce hostid part of the address. > - * SIOCDLIFADDR: delete the specified address. > - * SIOCDLIFADDR with IFLR_PREFIX: > - * delete the first address that matches the specified prefix. > - * return values: > - * EINVAL on invalid parameters > - * EADDRNOTAVAIL on prefix match failed/specified address not found > - * other values may be returned from in_ioctl() > - */ > -int > -in_lifaddr_ioctl(u_long cmd, caddr_t data, struct ifnet *ifp, int privileged) > -{ > - struct if_laddrreq *iflr = (struct if_laddrreq *)data; > - struct ifaddr *ifa; > - struct sockaddr *sa; > - > - /* sanity checks */ > - if (!data || !ifp) { > - panic("invalid argument to in_lifaddr_ioctl"); > - /*NOTRECHED*/ > - } > - > - switch (cmd) { > - case SIOCGLIFADDR: > - /* address must be specified on GET with IFLR_PREFIX */ > - if ((iflr->flags & IFLR_PREFIX) == 0) > - break; > - /*FALLTHROUGH*/ > - case SIOCALIFADDR: > - case SIOCDLIFADDR: > - /* address must be specified on ADD and DELETE */ > - sa = sstosa(>addr); > - if (sa->sa_family != AF_INET) > - return EINVAL; > - if (sa->sa_len != sizeof(struct sockaddr_in)) > - return EINVAL; > - /* XXX need improvement */ > - sa =
Re: KAME ioctl leftovers
On Wed, Oct 18, 2017 at 01:34:27PM +0200, Martin Pieuchot wrote: > Kill ioctl(2) added with original KAME import that have never been used. > FreeBSD also stopped supporting them in 2013. > > ok? Agreed, if it builds OK claudio. The amount of - is shocking... > Index: sys/sockio.h > === > RCS file: /cvs/src/sys/sys/sockio.h,v > retrieving revision 1.70 > diff -u -p -r1.70 sockio.h > --- sys/sockio.h 27 Jun 2017 22:18:24 - 1.70 > +++ sys/sockio.h 18 Oct 2017 11:28:25 - > @@ -64,12 +64,6 @@ > #define SIOCGIFDATA _IOWR('i', 27, struct ifreq)/* get if_data > */ > #define SIOCSIFLLADDR _IOW('i', 31, struct ifreq) /* set link > level addr */ > > -/* KAME IPv6 */ > -/* SIOCAIFALIAS? */ > -#define SIOCALIFADDR _IOW('i', 28, struct if_laddrreq) /* add IF addr */ > -#define SIOCGLIFADDR _IOWR('i', 29, struct if_laddrreq) /* get IF addr */ > -#define SIOCDLIFADDR _IOW('i', 30, struct if_laddrreq) /* delete IF addr */ > - > #define SIOCADDMULTI _IOW('i', 49, struct ifreq)/* add m'cast > addr */ > #define SIOCDELMULTI _IOW('i', 50, struct ifreq)/* del m'cast > addr */ > #define SIOCGETVIFCNT _IOWR('u', 51, struct sioc_vif_req)/* vif pkt > cnt */ > Index: netinet/in.c > === > RCS file: /cvs/src/sys/netinet/in.c,v > retrieving revision 1.140 > diff -u -p -r1.140 in.c > --- netinet/in.c 11 Aug 2017 19:53:02 - 1.140 > +++ netinet/in.c 18 Oct 2017 11:29:04 - > @@ -83,7 +83,6 @@ > > > void in_socktrim(struct sockaddr_in *); > -int in_lifaddr_ioctl(u_long, caddr_t, struct ifnet *, int); > > void in_purgeaddr(struct ifaddr *); > int in_addhost(struct in_ifaddr *, struct sockaddr_in *); > @@ -182,9 +181,6 @@ in_nam2sin(const struct mbuf *nam, struc > return 0; > } > > -/* > - * Generic internet control operations (ioctl's). > - */ > int > in_control(struct socket *so, u_long cmd, caddr_t data, struct ifnet *ifp) > { > @@ -194,25 +190,13 @@ in_control(struct socket *so, u_long cmd > if ((so->so_state & SS_PRIV) != 0) > privileged++; > > - switch (cmd) { > #ifdef MROUTING > + switch (cmd) { > case SIOCGETVIFCNT: > case SIOCGETSGCNT: > return (mrt_ioctl(so, cmd, data)); > -#endif /* MROUTING */ > - case SIOCALIFADDR: > - case SIOCDLIFADDR: > - if (!privileged) > - return (EPERM); > - /* FALLTHROUGH */ > - case SIOCGLIFADDR: > - if (ifp == NULL) > - return (EINVAL); > - return in_lifaddr_ioctl(cmd, data, ifp, privileged); > - default: > - if (ifp == NULL) > - return (EOPNOTSUPP); > } > +#endif /* MROUTING */ > > return (in_ioctl(cmd, data, ifp, privileged)); > } > @@ -228,6 +212,9 @@ in_ioctl(u_long cmd, caddr_t data, struc > int error; > int newifaddr; > > + if (ifp == NULL) > + return (EOPNOTSUPP); > + > NET_ASSERT_LOCKED(); > > TAILQ_FOREACH(ifa, >if_addrlist, ifa_list) { > @@ -413,187 +400,6 @@ in_ioctl(u_long cmd, caddr_t data, struc > } > return (0); > } > - > -/* > - * SIOC[GAD]LIFADDR. > - * SIOCGLIFADDR: get first address. (???) > - * SIOCGLIFADDR with IFLR_PREFIX: > - * get first address that matches the specified prefix. > - * SIOCALIFADDR: add the specified address. > - * SIOCALIFADDR with IFLR_PREFIX: > - * EINVAL since we can't deduce hostid part of the address. > - * SIOCDLIFADDR: delete the specified address. > - * SIOCDLIFADDR with IFLR_PREFIX: > - * delete the first address that matches the specified prefix. > - * return values: > - * EINVAL on invalid parameters > - * EADDRNOTAVAIL on prefix match failed/specified address not found > - * other values may be returned from in_ioctl() > - */ > -int > -in_lifaddr_ioctl(u_long cmd, caddr_t data, struct ifnet *ifp, int privileged) > -{ > - struct if_laddrreq *iflr = (struct if_laddrreq *)data; > - struct ifaddr *ifa; > - struct sockaddr *sa; > - > - /* sanity checks */ > - if (!data || !ifp) { > - panic("invalid argument to in_lifaddr_ioctl"); > - /*NOTRECHED*/ > - } > - > - switch (cmd) { > - case SIOCGLIFADDR: > - /* address must be specified on GET with IFLR_PREFIX */ > - if ((iflr->flags & IFLR_PREFIX) == 0) > - break; > - /*FALLTHROUGH*/ > - case SIOCALIFADDR: > - case SIOCDLIFADDR: > - /* address must be specified on ADD and DELETE */ > - sa = sstosa(>addr); > - if (sa->sa_family != AF_INET) > - return EINVAL; > - if (sa->sa_len != sizeof(struct sockaddr_in)) > - return EINVAL; > -
Re: KAME ioctl leftovers
On Wed, Oct 18, 2017 at 11:34:27AM +, Martin Pieuchot wrote: > Kill ioctl(2) added with original KAME import that have never been used. > FreeBSD also stopped supporting them in 2013. usr.sbin/bind is looking at SIOCGLIFADDR, but it looks like it's properly guarded by #ifdef. debian codesearch also finds a few things, a cursory look suggests that it's properly guarded. > > ok? if it survived a base build OK florian@ > > Index: sys/sockio.h > === > RCS file: /cvs/src/sys/sys/sockio.h,v > retrieving revision 1.70 > diff -u -p -r1.70 sockio.h > --- sys/sockio.h 27 Jun 2017 22:18:24 - 1.70 > +++ sys/sockio.h 18 Oct 2017 11:28:25 - > @@ -64,12 +64,6 @@ > #define SIOCGIFDATA _IOWR('i', 27, struct ifreq)/* get if_data > */ > #define SIOCSIFLLADDR _IOW('i', 31, struct ifreq) /* set link > level addr */ > > -/* KAME IPv6 */ > -/* SIOCAIFALIAS? */ > -#define SIOCALIFADDR _IOW('i', 28, struct if_laddrreq) /* add IF addr */ > -#define SIOCGLIFADDR _IOWR('i', 29, struct if_laddrreq) /* get IF addr */ > -#define SIOCDLIFADDR _IOW('i', 30, struct if_laddrreq) /* delete IF addr */ > - > #define SIOCADDMULTI _IOW('i', 49, struct ifreq)/* add m'cast > addr */ > #define SIOCDELMULTI _IOW('i', 50, struct ifreq)/* del m'cast > addr */ > #define SIOCGETVIFCNT _IOWR('u', 51, struct sioc_vif_req)/* vif pkt > cnt */ > Index: netinet/in.c > === > RCS file: /cvs/src/sys/netinet/in.c,v > retrieving revision 1.140 > diff -u -p -r1.140 in.c > --- netinet/in.c 11 Aug 2017 19:53:02 - 1.140 > +++ netinet/in.c 18 Oct 2017 11:29:04 - > @@ -83,7 +83,6 @@ > > > void in_socktrim(struct sockaddr_in *); > -int in_lifaddr_ioctl(u_long, caddr_t, struct ifnet *, int); > > void in_purgeaddr(struct ifaddr *); > int in_addhost(struct in_ifaddr *, struct sockaddr_in *); > @@ -182,9 +181,6 @@ in_nam2sin(const struct mbuf *nam, struc > return 0; > } > > -/* > - * Generic internet control operations (ioctl's). > - */ > int > in_control(struct socket *so, u_long cmd, caddr_t data, struct ifnet *ifp) > { > @@ -194,25 +190,13 @@ in_control(struct socket *so, u_long cmd > if ((so->so_state & SS_PRIV) != 0) > privileged++; > > - switch (cmd) { > #ifdef MROUTING > + switch (cmd) { > case SIOCGETVIFCNT: > case SIOCGETSGCNT: > return (mrt_ioctl(so, cmd, data)); > -#endif /* MROUTING */ > - case SIOCALIFADDR: > - case SIOCDLIFADDR: > - if (!privileged) > - return (EPERM); > - /* FALLTHROUGH */ > - case SIOCGLIFADDR: > - if (ifp == NULL) > - return (EINVAL); > - return in_lifaddr_ioctl(cmd, data, ifp, privileged); > - default: > - if (ifp == NULL) > - return (EOPNOTSUPP); > } > +#endif /* MROUTING */ > > return (in_ioctl(cmd, data, ifp, privileged)); > } > @@ -228,6 +212,9 @@ in_ioctl(u_long cmd, caddr_t data, struc > int error; > int newifaddr; > > + if (ifp == NULL) > + return (EOPNOTSUPP); > + > NET_ASSERT_LOCKED(); > > TAILQ_FOREACH(ifa, >if_addrlist, ifa_list) { > @@ -413,187 +400,6 @@ in_ioctl(u_long cmd, caddr_t data, struc > } > return (0); > } > - > -/* > - * SIOC[GAD]LIFADDR. > - * SIOCGLIFADDR: get first address. (???) > - * SIOCGLIFADDR with IFLR_PREFIX: > - * get first address that matches the specified prefix. > - * SIOCALIFADDR: add the specified address. > - * SIOCALIFADDR with IFLR_PREFIX: > - * EINVAL since we can't deduce hostid part of the address. > - * SIOCDLIFADDR: delete the specified address. > - * SIOCDLIFADDR with IFLR_PREFIX: > - * delete the first address that matches the specified prefix. > - * return values: > - * EINVAL on invalid parameters > - * EADDRNOTAVAIL on prefix match failed/specified address not found > - * other values may be returned from in_ioctl() > - */ > -int > -in_lifaddr_ioctl(u_long cmd, caddr_t data, struct ifnet *ifp, int privileged) > -{ > - struct if_laddrreq *iflr = (struct if_laddrreq *)data; > - struct ifaddr *ifa; > - struct sockaddr *sa; > - > - /* sanity checks */ > - if (!data || !ifp) { > - panic("invalid argument to in_lifaddr_ioctl"); > - /*NOTRECHED*/ > - } > - > - switch (cmd) { > - case SIOCGLIFADDR: > - /* address must be specified on GET with IFLR_PREFIX */ > - if ((iflr->flags & IFLR_PREFIX) == 0) > - break; > - /*FALLTHROUGH*/ > - case SIOCALIFADDR: > - case SIOCDLIFADDR: > - /* address must be specified on ADD and DELETE */ > - sa = sstosa(>addr); > - if
KAME ioctl leftovers
Kill ioctl(2) added with original KAME import that have never been used. FreeBSD also stopped supporting them in 2013. ok? Index: sys/sockio.h === RCS file: /cvs/src/sys/sys/sockio.h,v retrieving revision 1.70 diff -u -p -r1.70 sockio.h --- sys/sockio.h27 Jun 2017 22:18:24 - 1.70 +++ sys/sockio.h18 Oct 2017 11:28:25 - @@ -64,12 +64,6 @@ #defineSIOCGIFDATA _IOWR('i', 27, struct ifreq)/* get if_data */ #defineSIOCSIFLLADDR _IOW('i', 31, struct ifreq) /* set link level addr */ -/* KAME IPv6 */ -/* SIOCAIFALIAS? */ -#define SIOCALIFADDR_IOW('i', 28, struct if_laddrreq) /* add IF addr */ -#define SIOCGLIFADDR _IOWR('i', 29, struct if_laddrreq) /* get IF addr */ -#define SIOCDLIFADDR_IOW('i', 30, struct if_laddrreq) /* delete IF addr */ - #defineSIOCADDMULTI _IOW('i', 49, struct ifreq)/* add m'cast addr */ #defineSIOCDELMULTI _IOW('i', 50, struct ifreq)/* del m'cast addr */ #defineSIOCGETVIFCNT _IOWR('u', 51, struct sioc_vif_req)/* vif pkt cnt */ Index: netinet/in.c === RCS file: /cvs/src/sys/netinet/in.c,v retrieving revision 1.140 diff -u -p -r1.140 in.c --- netinet/in.c11 Aug 2017 19:53:02 - 1.140 +++ netinet/in.c18 Oct 2017 11:29:04 - @@ -83,7 +83,6 @@ void in_socktrim(struct sockaddr_in *); -int in_lifaddr_ioctl(u_long, caddr_t, struct ifnet *, int); void in_purgeaddr(struct ifaddr *); int in_addhost(struct in_ifaddr *, struct sockaddr_in *); @@ -182,9 +181,6 @@ in_nam2sin(const struct mbuf *nam, struc return 0; } -/* - * Generic internet control operations (ioctl's). - */ int in_control(struct socket *so, u_long cmd, caddr_t data, struct ifnet *ifp) { @@ -194,25 +190,13 @@ in_control(struct socket *so, u_long cmd if ((so->so_state & SS_PRIV) != 0) privileged++; - switch (cmd) { #ifdef MROUTING + switch (cmd) { case SIOCGETVIFCNT: case SIOCGETSGCNT: return (mrt_ioctl(so, cmd, data)); -#endif /* MROUTING */ - case SIOCALIFADDR: - case SIOCDLIFADDR: - if (!privileged) - return (EPERM); - /* FALLTHROUGH */ - case SIOCGLIFADDR: - if (ifp == NULL) - return (EINVAL); - return in_lifaddr_ioctl(cmd, data, ifp, privileged); - default: - if (ifp == NULL) - return (EOPNOTSUPP); } +#endif /* MROUTING */ return (in_ioctl(cmd, data, ifp, privileged)); } @@ -228,6 +212,9 @@ in_ioctl(u_long cmd, caddr_t data, struc int error; int newifaddr; + if (ifp == NULL) + return (EOPNOTSUPP); + NET_ASSERT_LOCKED(); TAILQ_FOREACH(ifa, >if_addrlist, ifa_list) { @@ -413,187 +400,6 @@ in_ioctl(u_long cmd, caddr_t data, struc } return (0); } - -/* - * SIOC[GAD]LIFADDR. - * SIOCGLIFADDR: get first address. (???) - * SIOCGLIFADDR with IFLR_PREFIX: - * get first address that matches the specified prefix. - * SIOCALIFADDR: add the specified address. - * SIOCALIFADDR with IFLR_PREFIX: - * EINVAL since we can't deduce hostid part of the address. - * SIOCDLIFADDR: delete the specified address. - * SIOCDLIFADDR with IFLR_PREFIX: - * delete the first address that matches the specified prefix. - * return values: - * EINVAL on invalid parameters - * EADDRNOTAVAIL on prefix match failed/specified address not found - * other values may be returned from in_ioctl() - */ -int -in_lifaddr_ioctl(u_long cmd, caddr_t data, struct ifnet *ifp, int privileged) -{ - struct if_laddrreq *iflr = (struct if_laddrreq *)data; - struct ifaddr *ifa; - struct sockaddr *sa; - - /* sanity checks */ - if (!data || !ifp) { - panic("invalid argument to in_lifaddr_ioctl"); - /*NOTRECHED*/ - } - - switch (cmd) { - case SIOCGLIFADDR: - /* address must be specified on GET with IFLR_PREFIX */ - if ((iflr->flags & IFLR_PREFIX) == 0) - break; - /*FALLTHROUGH*/ - case SIOCALIFADDR: - case SIOCDLIFADDR: - /* address must be specified on ADD and DELETE */ - sa = sstosa(>addr); - if (sa->sa_family != AF_INET) - return EINVAL; - if (sa->sa_len != sizeof(struct sockaddr_in)) - return EINVAL; - /* XXX need improvement */ - sa = sstosa(>dstaddr); - if (sa->sa_family -&& sa->sa_family != AF_INET) - return EINVAL; - if (sa->sa_len && sa->sa_len != sizeof(struct