We have a socket option guarded by ifdef _KERNEL that therefore cannot be used by userland (nor used in kernel). No pcb code tests for the flag either.
Index: netinet/in_pcb.h =================================================================== RCS file: /cvs/src/sys/netinet/in_pcb.h,v retrieving revision 1.91 diff -u -p -r1.91 in_pcb.h --- netinet/in_pcb.h 24 Oct 2015 16:08:48 -0000 1.91 +++ netinet/in_pcb.h 2 Dec 2015 17:48:17 -0000 @@ -196,7 +196,6 @@ struct inpcbtable { #define IN6P_HOPOPTS 0x040000 /* receive hop-by-hop options */ #define IN6P_DSTOPTS 0x080000 /* receive dst options after rthdr */ #define IN6P_RTHDR 0x100000 /* receive routing header */ -#define IN6P_RTHDRDSTOPTS 0x200000 /* receive dstoptions before rthdr */ #define IN6P_TCLASS 0x400000 /* receive traffic class value */ #define IN6P_AUTOFLOWLABEL 0x800000 /* attach flowlabel automatically */ @@ -207,7 +206,7 @@ struct inpcbtable { #define IN6P_MINMTU 0x20000000 /* use minimum MTU */ #define IN6P_CONTROLOPTS (IN6P_PKTINFO|IN6P_HOPLIMIT|IN6P_HOPOPTS|\ - IN6P_DSTOPTS|IN6P_RTHDR|IN6P_RTHDRDSTOPTS|\ + IN6P_DSTOPTS|IN6P_RTHDR|\ IN6P_TCLASS|IN6P_AUTOFLOWLABEL|IN6P_RFC2292|\ IN6P_MTU|IN6P_RECVDSTPORT) Index: netinet6/in6.h =================================================================== RCS file: /cvs/src/sys/netinet6/in6.h,v retrieving revision 1.86 diff -u -p -r1.86 in6.h --- netinet6/in6.h 29 Oct 2015 16:04:10 -0000 1.86 +++ netinet6/in6.h 2 Dec 2015 17:47:02 -0000 @@ -315,9 +315,6 @@ struct route_in6 { #define IPV6_RECVRTHDR 38 /* bool; recv routing header */ #define IPV6_RECVHOPOPTS 39 /* bool; recv hop-by-hop option */ #define IPV6_RECVDSTOPTS 40 /* bool; recv dst option after rthdr */ -#ifdef _KERNEL -#define IPV6_RECVRTHDRDSTOPTS 41 /* bool; recv dst option before rthdr */ -#endif #define IPV6_USE_MIN_MTU 42 /* bool; send packets at the minimum MTU */ #define IPV6_RECVPATHMTU 43 /* bool; notify an according MTU */ Index: netinet6/ip6_output.c =================================================================== RCS file: /cvs/src/sys/netinet6/ip6_output.c,v retrieving revision 1.200 diff -u -p -r1.200 ip6_output.c --- netinet6/ip6_output.c 29 Nov 2015 15:12:36 -0000 1.200 +++ netinet6/ip6_output.c 2 Dec 2015 17:47:34 -0000 @@ -1229,7 +1229,6 @@ ip6_ctloutput(int op, struct socket *so, */ case IPV6_RECVHOPOPTS: case IPV6_RECVDSTOPTS: - case IPV6_RECVRTHDRDSTOPTS: if (!privileged) { error = EPERM; break; @@ -1299,10 +1298,6 @@ do { \ OPTSET(IN6P_DSTOPTS); break; - case IPV6_RECVRTHDRDSTOPTS: - OPTSET(IN6P_RTHDRDSTOPTS); - break; - case IPV6_RECVRTHDR: OPTSET(IN6P_RTHDR); break; @@ -1538,7 +1533,6 @@ do { \ case IPV6_RECVHOPOPTS: case IPV6_RECVDSTOPTS: - case IPV6_RECVRTHDRDSTOPTS: case IPV6_UNICAST_HOPS: case IPV6_RECVPKTINFO: case IPV6_RECVHOPLIMIT: @@ -1558,10 +1552,6 @@ do { \ case IPV6_RECVDSTOPTS: optval = OPTBIT(IN6P_DSTOPTS); - break; - - case IPV6_RECVRTHDRDSTOPTS: - optval = OPTBIT(IN6P_RTHDRDSTOPTS); break; case IPV6_UNICAST_HOPS: