On Wed, Oct 25, 2017 at 12:20:45PM +0200, Martin Pieuchot wrote:
> Diff below remove some more deprecated ioctl(2). The first group below
> correspond to features now deprecated by slaacd(8):
>
> SIOCSIFINFO_FLAGS, SIOCSNDFLUSH_IN6, SIOCSPFXFLUSH_IN6, SIOCSRTRFLUSH_IN6
>
> Removing those might break some ports. This is good! Because now they
> are broken at compile time and can be fixed. Currently they might or
> might not work. On codesearch.debian.net only dhcpcd5 seems to try to use
> them.
>
> The second group of ioctl(2)s is not used in base and should be used
> conditionally in ports, so it should be safe:
> SIOCGIFADDR_IN6, SIOCGIFSTAT_IN6, SIOCGIFSTAT_ICMP6
>
> Diff below also move some define around in netinet6/in6_var.h to reduce
> the number of #ifdef _KERNEL chunks.
>
> ok?
no, this will break the build
src/usr.sbin/ndp/ndp.c: if (ioctl(s, SIOCSNDFLUSH_IN6, (caddr_t)&dummyif) < 0)
>
> Index: netinet6/in6.c
> ===================================================================
> RCS file: /cvs/src/sys/netinet6/in6.c,v
> retrieving revision 1.215
> diff -u -p -r1.215 in6.c
> --- netinet6/in6.c 24 Oct 2017 09:30:15 -0000 1.215
> +++ netinet6/in6.c 25 Oct 2017 10:06:05 -0000
> @@ -213,13 +213,6 @@ in6_ioctl(u_long cmd, caddr_t data, stru
> return (EOPNOTSUPP);
>
> switch (cmd) {
> - case SIOCSNDFLUSH_IN6:
> - case SIOCSPFXFLUSH_IN6:
> - case SIOCSRTRFLUSH_IN6:
> - case SIOCSIFINFO_FLAGS:
> - if (!privileged)
> - return (EPERM);
> - /* FALLTHROUGH */
> case SIOCGIFINFO_IN6:
> case SIOCGNBRINFO_IN6:
> return (nd6_ioctl(cmd, data, ifp));
> @@ -241,17 +234,11 @@ in6_ioctl(u_long cmd, caddr_t data, stru
> case SIOCAIFADDR_IN6:
> sa6 = &ifra->ifra_addr;
> break;
> - case SIOCGIFADDR_IN6:
> case SIOCGIFDSTADDR_IN6:
> case SIOCGIFNETMASK_IN6:
> case SIOCDIFADDR_IN6:
> case SIOCGIFAFLAG_IN6:
> - case SIOCSNDFLUSH_IN6:
> - case SIOCSPFXFLUSH_IN6:
> - case SIOCSRTRFLUSH_IN6:
> case SIOCGIFALIFETIME_IN6:
> - case SIOCGIFSTAT_IN6:
> - case SIOCGIFSTAT_ICMP6:
> sa6 = &ifr->ifr_addr;
> break;
> case SIOCSIFADDR:
> @@ -313,9 +300,6 @@ in6_ioctl(u_long cmd, caddr_t data, stru
>
> break;
>
> - case SIOCGIFADDR_IN6:
> - /* This interface is basically deprecated. use SIOCGIFCONF. */
> - /* FALLTHROUGH */
> case SIOCGIFAFLAG_IN6:
> case SIOCGIFNETMASK_IN6:
> case SIOCGIFDSTADDR_IN6:
> @@ -328,10 +312,6 @@ in6_ioctl(u_long cmd, caddr_t data, stru
>
> switch (cmd) {
>
> - case SIOCGIFADDR_IN6:
> - ifr->ifr_addr = ia6->ia_addr;
> - break;
> -
> case SIOCGIFDSTADDR_IN6:
> if ((ifp->if_flags & IFF_POINTOPOINT) == 0)
> return (EINVAL);
> @@ -349,10 +329,6 @@ in6_ioctl(u_long cmd, caddr_t data, stru
> case SIOCGIFAFLAG_IN6:
> ifr->ifr_ifru.ifru_flags6 = ia6->ia6_flags;
> break;
> -
> - case SIOCGIFSTAT_IN6:
> - case SIOCGIFSTAT_ICMP6:
> - return (EOPNOTSUPP);
>
> case SIOCGIFALIFETIME_IN6:
> ifr->ifr_ifru.ifru_lifetime = ia6->ia6_lifetime;
> Index: netinet6/in6_var.h
> ===================================================================
> RCS file: /cvs/src/sys/netinet6/in6_var.h,v
> retrieving revision 1.70
> diff -u -p -r1.70 in6_var.h
> --- netinet6/in6_var.h 24 Oct 2017 09:36:13 -0000 1.70
> +++ netinet6/in6_var.h 25 Oct 2017 10:06:05 -0000
> @@ -278,40 +278,21 @@ struct in6_aliasreq {
> #define IFA_IN6(x) (&((struct sockaddr_in6 *)((x)->ifa_addr))->sin6_addr)
> #define IFA_DSTIN6(x) (&((struct sockaddr_in6
> *)((x)->ifa_dstaddr))->sin6_addr)
>
> -#ifdef _KERNEL
> -#define IN6_ARE_MASKED_ADDR_EQUAL(d, a, m) ( \
> - (((d)->s6_addr32[0] ^ (a)->s6_addr32[0]) & (m)->s6_addr32[0]) == 0 && \
> - (((d)->s6_addr32[1] ^ (a)->s6_addr32[1]) & (m)->s6_addr32[1]) == 0 && \
> - (((d)->s6_addr32[2] ^ (a)->s6_addr32[2]) & (m)->s6_addr32[2]) == 0 && \
> - (((d)->s6_addr32[3] ^ (a)->s6_addr32[3]) & (m)->s6_addr32[3]) == 0 )
> -#endif /* _KERNEL */
> -
> -#define SIOCGIFADDR_IN6 _IOWR('i', 33, struct in6_ifreq)
> +#define SIOCDIFADDR_IN6 _IOW('i', 25, struct in6_ifreq)
> +#define SIOCAIFADDR_IN6 _IOW('i', 26, struct in6_aliasreq)
>
> #define SIOCGIFDSTADDR_IN6 _IOWR('i', 34, struct in6_ifreq)
> #define SIOCGIFNETMASK_IN6 _IOWR('i', 37, struct in6_ifreq)
>
> -#define SIOCDIFADDR_IN6 _IOW('i', 25, struct in6_ifreq)
> -#define SIOCAIFADDR_IN6 _IOW('i', 26, struct in6_aliasreq)
> -
> #define SIOCGIFAFLAG_IN6 _IOWR('i', 73, struct in6_ifreq)
>
> #define SIOCGIFINFO_IN6 _IOWR('i', 108, struct in6_ndireq)
> -#define SIOCSNDFLUSH_IN6 _IOWR('i', 77, struct in6_ifreq)
> #define SIOCGNBRINFO_IN6 _IOWR('i', 78, struct in6_nbrinfo)
> -#define SIOCSPFXFLUSH_IN6 _IOWR('i', 79, struct in6_ifreq)
> -#define SIOCSRTRFLUSH_IN6 _IOWR('i', 80, struct in6_ifreq)
>
> #define SIOCGIFALIFETIME_IN6 _IOWR('i', 81, struct in6_ifreq)
> -#define SIOCGIFSTAT_IN6 _IOWR('i', 83, struct in6_ifreq)
> -#define SIOCGIFSTAT_ICMP6 _IOWR('i', 84, struct in6_ifreq)
> -
> -#define SIOCSIFINFO_FLAGS _IOWR('i', 87, struct in6_ndireq) /* XXX */
>
> -#define SIOCGETSGCNT_IN6 _IOWR('u', 106, \
> - struct sioc_sg_req6) /* get s,g pkt cnt */
> -#define SIOCGETMIFCNT_IN6 _IOWR('u', 107, \
> - struct sioc_mif_req6) /* get pkt cnt per
> if */
> +#define SIOCGETSGCNT_IN6 _IOWR('u', 106, struct sioc_sg_req6)
> +#define SIOCGETMIFCNT_IN6 _IOWR('u', 107, struct sioc_mif_req6)
>
> #define IN6_IFF_ANYCAST 0x01 /* anycast address */
> #define IN6_IFF_TENTATIVE 0x02 /* tentative address */
> @@ -322,6 +303,12 @@ struct in6_aliasreq {
> #define IN6_IFF_PRIVACY 0x80 /* RFC 4941 temporary address */
>
> #ifdef _KERNEL
> +#define IN6_ARE_MASKED_ADDR_EQUAL(d, a, m) ( \
> + (((d)->s6_addr32[0] ^ (a)->s6_addr32[0]) & (m)->s6_addr32[0]) == 0 && \
> + (((d)->s6_addr32[1] ^ (a)->s6_addr32[1]) & (m)->s6_addr32[1]) == 0 && \
> + (((d)->s6_addr32[2] ^ (a)->s6_addr32[2]) & (m)->s6_addr32[2]) == 0 && \
> + (((d)->s6_addr32[3] ^ (a)->s6_addr32[3]) & (m)->s6_addr32[3]) == 0 )
> +
> #define IN6_ARE_SCOPE_CMP(a,b) ((a)-(b))
> #define IN6_ARE_SCOPE_EQUAL(a,b) ((a)==(b))
>
> Index: netinet6/nd6.c
> ===================================================================
> RCS file: /cvs/src/sys/netinet6/nd6.c,v
> retrieving revision 1.219
> diff -u -p -r1.219 nd6.c
> --- netinet6/nd6.c 11 Aug 2017 21:24:20 -0000 1.219
> +++ netinet6/nd6.c 25 Oct 2017 10:06:05 -0000
> @@ -996,25 +996,6 @@ nd6_ioctl(u_long cmd, caddr_t data, stru
> case SIOCGIFINFO_IN6:
> ndi->ndi = *ND_IFINFO(ifp);
> break;
> - case SIOCSIFINFO_FLAGS:
> - error = ENOTSUP;
> - break;
> - case SIOCSNDFLUSH_IN6: /* XXX: the ioctl name is confusing... */
> - /* sync kernel routing table with the default router list */
> - error = ENOTSUP;
> - break;
> - case SIOCSPFXFLUSH_IN6:
> - {
> - /* flush all the prefix advertised by routers */
> - error = ENOTSUP;
> - break;
> - }
> - case SIOCSRTRFLUSH_IN6:
> - {
> - /* flush all the default routers */
> - error = ENOTSUP;
> - break;
> - }
> case SIOCGNBRINFO_IN6:
> {
> struct llinfo_nd6 *ln;
>