+#ifdef XNU_KERNEL_PRIVATE
+/*
+ * Internal, private and extendable representation of domain.
+ */
+struct domain {
+ int dom_family; /* AF_xxx */
+ uint32_t dom_flags; /* domain flags (see below ) */
+ uint32_t dom_refs; /* # socreates outstanding */
+ lck_mtx_t *dom_mtx; /* domain global mutex */
+ decl_lck_mtx_data(, dom_mtx_s);
+ TAILQ_ENTRY(domain) dom_entry; /* next domain in list */
+ TAILQ_HEAD(, protosw) dom_protosw; /* protosw chain */
+ void (*dom_init) /* initialize domain data structures */
+ (struct domain *);
+ int (*dom_externalize) /* externalize access rights */
+ (struct mbuf *);
+ void (*dom_dispose) /* dispose of internalized rights */
+ (struct mbuf *);
+ int (*dom_rtattach) /* initialize routing table */
+ (void **, int);
+ int dom_rtoffset; /* an arg to rtattach, in bits */
+ int dom_maxrtkey; /* for routing layer */
+ int dom_protohdrlen; /* len of protocol header */
+ const char *dom_name;
+ struct domain_old *dom_old; /* domain pointer per net_add_domain */
+};