Router Renumbering was never supported, prefix ioctls were deprecated
back in 2002, nobody uses them anymore out there.  struct in6_prefix
still uses a few bits from the prefix ioctl code, I've moved those bits
to nd6.h. The last (pointless) use of struct in6_prefixreq was in
rtadvd.

SIOCSIFADDR_IN6, SIOCSIFDSTADDR_IN6 and SIOCSIFNETMASK_IN6 were
introduced as mirrors of their IPv4 counterparts but they never made
sense in IPv6, where there is no such thing as "the first interface
address".

I propose to get rid of all that stuff (in two commits).

The diff below caused no fallout in a bulk ports build (thanks
ajacoutot@).

ok?

Index: sys/netinet6/in6.c
===================================================================
RCS file: /cvs/src/sys/netinet6/in6.c,v
retrieving revision 1.184
diff -u -p -r1.184 in6.c
--- sys/netinet6/in6.c  28 Feb 2016 07:15:34 -0000      1.184
+++ sys/netinet6/in6.c  29 Feb 2016 12:51:57 -0000
@@ -200,19 +200,6 @@ in6_control(struct socket *so, u_long cm
        }
 
        switch (cmd) {
-       case SIOCSIFPREFIX_IN6:
-       case SIOCDIFPREFIX_IN6:
-       case SIOCAIFPREFIX_IN6:
-       case SIOCCIFPREFIX_IN6:
-       case SIOCSGIFPREFIX_IN6:
-       case SIOCGIFPREFIX_IN6:
-               log(LOG_NOTICE,
-                   "prefix ioctls are now invalidated. "
-                   "please use ifconfig.\n");
-               return (EOPNOTSUPP);
-       }
-
-       switch (cmd) {
        case SIOCALIFADDR:
        case SIOCDLIFADDR:
                if (!privileged)
@@ -239,10 +226,7 @@ in6_control(struct socket *so, u_long cm
        case SIOCSIFPHYADDR_IN6:
                sa6 = &ifra->ifra_addr;
                break;
-       case SIOCSIFADDR_IN6:
        case SIOCGIFADDR_IN6:
-       case SIOCSIFDSTADDR_IN6:
-       case SIOCSIFNETMASK_IN6:
        case SIOCGIFDSTADDR_IN6:
        case SIOCGIFNETMASK_IN6:
        case SIOCDIFADDR_IN6:
@@ -292,15 +276,6 @@ in6_control(struct socket *so, u_long cm
                ia6 = NULL;
 
        switch (cmd) {
-       case SIOCSIFADDR_IN6:
-       case SIOCSIFDSTADDR_IN6:
-       case SIOCSIFNETMASK_IN6:
-               /*
-                * Since IPv6 allows a node to assign multiple addresses
-                * on a single interface, SIOCSIFxxx ioctls are deprecated.
-                */
-               return (EINVAL);
-
        case SIOCDIFADDR_IN6:
                /*
                 * for IPv4, we look for existing in_ifaddr here to allow
Index: sys/netinet6/in6_var.h
===================================================================
RCS file: /cvs/src/sys/netinet6/in6_var.h,v
retrieving revision 1.60
diff -u -p -r1.60 in6_var.h
--- sys/netinet6/in6_var.h      28 Feb 2016 07:15:34 -0000      1.60
+++ sys/netinet6/in6_var.h      29 Feb 2016 12:51:57 -0000
@@ -269,91 +269,6 @@ struct     in6_aliasreq {
        struct in6_addrlifetime ifra_lifetime;
 };
 
-/* prefix type macro */
-#define IN6_PREFIX_ND  1
-#define IN6_PREFIX_RR  2
-
-/*
- * prefix related flags passed between kernel(NDP related part) and
- * userland command(ifconfig) and daemon(rtadvd).
- */
-struct prf_ra {
-       u_int onlink : 1;
-       u_int autonomous : 1;
-       u_int router : 1;
-       u_int reserved : 5;
-};
-
-struct in6_prflags {
-       struct prf_ra prf_ra;
-       u_char prf_reserved1;
-       u_short prf_reserved2;
-       /* want to put this on 4byte offset */
-       struct prf_rr {
-               u_int decrvalid : 1;
-               u_int decrprefd : 1;
-               u_int reserved : 6;
-       } prf_rr;
-       u_char prf_reserved3;
-       u_short prf_reserved4;
-};
-
-struct  in6_prefixreq {
-       char    ipr_name[IFNAMSIZ];
-       u_char  ipr_origin;
-       u_char  ipr_plen;
-       u_int32_t ipr_vltime;
-       u_int32_t ipr_pltime;
-       struct in6_prflags ipr_flags;
-       struct  sockaddr_in6 ipr_prefix;
-};
-
-#define PR_ORIG_RA     0
-#define PR_ORIG_RR     1
-#define PR_ORIG_STATIC 2
-#define PR_ORIG_KERNEL 3
-
-#define ipr_raf_onlink         ipr_flags.prf_ra.onlink
-#define ipr_raf_auto           ipr_flags.prf_ra.autonomous
-
-#define ipr_statef_onlink      ipr_flags.prf_state.onlink
-
-#define ipr_rrf_decrvalid      ipr_flags.prf_rr.decrvalid
-#define ipr_rrf_decrprefd      ipr_flags.prf_rr.decrprefd
-
-struct in6_rrenumreq {
-       char    irr_name[IFNAMSIZ];
-       u_char  irr_origin;
-       u_char  irr_m_len;      /* match len for matchprefix */
-       u_char  irr_m_minlen;   /* minlen for matching prefix */
-       u_char  irr_m_maxlen;   /* maxlen for matching prefix */
-       u_char  irr_u_uselen;   /* uselen for adding prefix */
-       u_char  irr_u_keeplen;  /* keeplen from matching prefix */
-       struct irr_raflagmask {
-               u_int onlink : 1;
-               u_int autonomous : 1;
-               u_int reserved : 6;
-       } irr_raflagmask;
-       u_int32_t irr_vltime;
-       u_int32_t irr_pltime;
-       struct in6_prflags irr_flags;
-       struct  sockaddr_in6 irr_matchprefix;
-       struct  sockaddr_in6 irr_useprefix;
-};
-
-#define irr_raf_mask_onlink    irr_raflagmask.onlink
-#define irr_raf_mask_auto      irr_raflagmask.autonomous
-#define irr_raf_mask_reserved  irr_raflagmask.reserved
-
-#define irr_raf_onlink         irr_flags.prf_ra.onlink
-#define irr_raf_auto           irr_flags.prf_ra.autonomous
-
-#define irr_statef_onlink      irr_flags.prf_state.onlink
-
-#define irr_rrf                        irr_flags.prf_rr
-#define irr_rrf_decrvalid      irr_flags.prf_rr.decrvalid
-#define irr_rrf_decrprefd      irr_flags.prf_rr.decrprefd
-
 /*
  * Given a pointer to an in6_ifaddr (ifaddr),
  * return a pointer to the addr as a sockaddr_in6
@@ -374,18 +289,8 @@ struct     in6_rrenumreq {
        (((d)->s6_addr32[3] ^ (a)->s6_addr32[3]) & (m)->s6_addr32[3]) == 0 )
 #endif /* _KERNEL */
 
-#define SIOCSIFADDR_IN6                 _IOW('i', 12, struct in6_ifreq)
 #define SIOCGIFADDR_IN6                _IOWR('i', 33, struct in6_ifreq)
 
-#ifdef _KERNEL
-/*
- * SIOCSxxx ioctls should be unused (see comments in in6.c), but
- * we do not shift numbers for binary compatibility.
- */
-#define SIOCSIFDSTADDR_IN6      _IOW('i', 14, struct in6_ifreq)
-#define SIOCSIFNETMASK_IN6      _IOW('i', 22, struct in6_ifreq)
-#endif /* _KERNEL */
-
 #define SIOCGIFDSTADDR_IN6     _IOWR('i', 34, struct in6_ifreq)
 #define SIOCGIFNETMASK_IN6     _IOWR('i', 37, struct in6_ifreq)
 
@@ -409,15 +314,6 @@ struct     in6_rrenumreq {
 #define SIOCGIFSTAT_ICMP6      _IOWR('i', 84, struct in6_ifreq)
 
 #define SIOCSIFINFO_FLAGS      _IOWR('i', 87, struct in6_ndireq) /* XXX */
-
-#define SIOCSIFPREFIX_IN6      _IOW('i', 100, struct in6_prefixreq) /* set */
-#define SIOCGIFPREFIX_IN6      _IOWR('i', 101, struct in6_prefixreq) /* get */
-#define SIOCDIFPREFIX_IN6      _IOW('i', 102, struct in6_prefixreq) /* del */
-#define SIOCAIFPREFIX_IN6      _IOW('i', 103, struct in6_rrenumreq) /* add */
-#define SIOCCIFPREFIX_IN6      _IOW('i', 104, \
-                                    struct in6_rrenumreq) /* change */
-#define SIOCSGIFPREFIX_IN6     _IOW('i', 105, \
-                                    struct in6_rrenumreq) /* set global */
 
 #define SIOCGETSGCNT_IN6       _IOWR('u', 106, \
                                      struct sioc_sg_req6) /* get s,g pkt cnt */
Index: sys/netinet6/nd6.h
===================================================================
RCS file: /cvs/src/sys/netinet6/nd6.h,v
retrieving revision 1.56
diff -u -p -r1.56 nd6.h
--- sys/netinet6/nd6.h  18 Dec 2015 10:55:51 -0000      1.56
+++ sys/netinet6/nd6.h  29 Feb 2016 12:51:57 -0000
@@ -81,6 +81,13 @@ struct       in6_defrouter {
        u_char  flags;
 };
 
+struct prf_ra {
+       u_int onlink : 1;
+       u_int autonomous : 1;
+       u_int router : 1;
+       u_int reserved : 5;
+};
+
 struct in6_prefix {
        struct  sockaddr_in6 prefix;
        struct  prf_ra raflags;
@@ -93,6 +100,10 @@ struct in6_prefix {
        u_short advrtrs; /* number of advertisement routers */
        u_char  prefixlen;
        u_char  origin;
+#define PR_ORIG_RA     0
+#define PR_ORIG_RR     1
+#define PR_ORIG_STATIC 2
+#define PR_ORIG_KERNEL 3
        /* struct sockaddr_in6 advrtr[] */
 };
 


-- 
jca | PGP : 0x1524E7EE / 5135 92C1 AD36 5293 2BDF  DDCC 0DFA 74AE 1524 E7EE

Reply via email to