+#ifdef BSD_KERNEL_PRIVATE
+/*
+ @function proto_plumb
+ @discussion Plumbs a protocol to an actual interface. This will find
+ a registered protocol module and call its attach function.
+ The module will typically call dlil_attach_protocol() with the
+ appropriate parameters.
+ @param protocol_family The protocol family.
+ @param ifp The interface to plumb the protocol to.
+ @result 0: No error.
+ ENOENT: No module was registered.
+ Other: Error returned by the attach_proto function
+*/
+extern errno_t proto_plumb(protocol_family_t protocol_family, ifnet_t ifp);
+
+/*
+ @function proto_unplumb
+ @discussion Unplumbs a protocol from an interface. This will find
+ a registered protocol module and call its detach function.
+ The module will typically call dlil_detach_protocol() with
+ the appropriate parameters. If no module is found, this
+ function will call dlil_detach_protocol directly().
+ @param protocol_family The protocol family.
+ @param ifp The interface to unplumb the protocol from.
+ @result 0: No error.
+ ENOENT: No module was registered.
+ Other: Error returned by the attach_proto function
+*/
+extern errno_t proto_unplumb(protocol_family_t protocol_family, ifnet_t ifp);
+
+__private_extern__ void
+proto_kpi_init(void);
+
+#endif /* BSD_KERNEL_PRIVATE */