+ char ifnsr_name[IFNAMSIZ];
+ u_int8_t ifnsr_family; /* address family */
+ u_int8_t ifnsr_len; /* data length */
+ u_int16_t ifnsr_flags; /* for future */
+ u_int8_t ifnsr_data[IFNET_SIGNATURELEN];
+};
+
+
+#define NAT64_PREFIX_LEN_32 4
+#define NAT64_PREFIX_LEN_40 5
+#define NAT64_PREFIX_LEN_48 6
+#define NAT64_PREFIX_LEN_56 7
+#define NAT64_PREFIX_LEN_64 8
+#define NAT64_PREFIX_LEN_96 12
+#define NAT64_PREFIX_LEN_MAX NAT64_PREFIX_LEN_96
+
+#define NAT64_MAX_NUM_PREFIXES 4
+
+struct ipv6_prefix {
+ struct in6_addr ipv6_prefix;
+ uint32_t prefix_len;
+};
+
+struct if_ipv6_address {
+ struct in6_addr v6_address;
+ uint32_t v6_prefixlen;
+};
+
+/* Structure for SIOC[S/G]IFNAT64PREFIX */
+struct if_nat64req {
+ char ifnat64_name[IFNAMSIZ];
+ struct ipv6_prefix ifnat64_prefixes[NAT64_MAX_NUM_PREFIXES];
+};
+
+/* Structure for SIOCGIFCLAT46ADDR */
+struct if_clat46req {
+ char ifclat46_name[IFNAMSIZ];
+ struct if_ipv6_address ifclat46_addr;
+};
+
+/*
+ * Structure for SIOC[S/G]IFORDER
+ *
+ * When setting, ifo_count is the number of u_int32_t interface indices
+ * in the ifo_ordered_indices array.
+ *
+ * When getting, if ifo_count is 0, the length of the ordered list will
+ * be returned. If the ifo_count is non-0, it is the number of u_int32_t
+ * interface indices allocated. Upon return, ifo_count will contain the number
+ * of indices copied into the array.
+ */
+struct if_order {
+ u_int32_t ifo_count;
+ u_int32_t ifo_reserved;
+ mach_vm_address_t ifo_ordered_indices; /* array of u_int32_t */
+};
+
+/*
+ * Struct for traffic class to DSCP mapping
+ */
+struct if_tdmreq {
+ char iftdm_name[IFNAMSIZ];
+ u_int32_t iftdm_len; /* byte length of the table */
+ struct netsvctype_dscp_map *iftdm_table;
+};
+
+#ifdef BSD_KERNEL_PRIVATE
+struct if_tdmreq32 {
+ char iftdm_name[IFNAMSIZ];
+ u_int32_t iftdm_len; /* byte length of the table */
+ user32_addr_t iftdm_table;
+};
+
+struct if_tdmreq64 {
+ char iftdm_name[IFNAMSIZ];
+ u_int32_t iftdm_len; /* byte length of the table */
+ user64_addr_t iftdm_table __attribute__((aligned(8)));
+};
+#endif
+
+/*
+ * Structure for SIOCGIFPROTOLIST.
+ */
+struct if_protolistreq {
+ char ifpl_name[IFNAMSIZ];
+ u_int32_t ifpl_count;
+ u_int32_t ifpl_reserved; /* must be zero */
+ u_int32_t *ifpl_list;
+};
+
+#ifdef BSD_KERNEL_PRIVATE
+struct if_protolistreq32 {
+ char ifpl_name[IFNAMSIZ];
+ u_int32_t ifpl_count;
+ u_int32_t ifpl_reserved; /* must be zero */
+ user32_addr_t ifpl_list;