summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/inet/inetddi.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/uts/common/inet/inetddi.c')
-rw-r--r--usr/src/uts/common/inet/inetddi.c27
1 files changed, 15 insertions, 12 deletions
diff --git a/usr/src/uts/common/inet/inetddi.c b/usr/src/uts/common/inet/inetddi.c
index e6a0395ba0..69b1ba8c4f 100644
--- a/usr/src/uts/common/inet/inetddi.c
+++ b/usr/src/uts/common/inet/inetddi.c
@@ -42,46 +42,47 @@
* The symbols that all modules and drivers must define are:
*
* INET_NAME The name of the module/driver.
- * INET_STRTAB The name of the `streamtab' structure.
*
* The symbols that all modules must define are:
*
+ * INET_MODSTRTAB The name of the `streamtab' structure for this module.
* INET_MODDESC The one-line description for this module.
* INET_MODMTFLAGS The mt-streams(9F) flags for the module.
*
* The symbols that all drivers must define are:
*
+ * INET_DEVSTRTAB The name of the `streamtab' structure for this driver.
* INET_DEVDESC The one-line description for this driver.
* INET_DEVMTFLAGS The mt-streams(9F) flags for the driver.
* INET_DEVMINOR The minor number of the driver (usually 0).
*
* Drivers that need to masquerade as IP should set INET_DEVMTFLAGS to
- * IP_DEVMTFLAGS and then call INET_BECOME_IP() in their _init(9E) routine.
+ * IP_DEVMTFLAGS and set INET_DEVSTRTAB to ipinfo.
*/
-#if !defined(INET_STRTAB)
-#error inetddi.c: INET_STRTAB is not defined!
-#elif !defined(INET_NAME)
+#if !defined(INET_NAME)
#error inetddi.c: INET_NAME is not defined!
#elif !defined(INET_DEVDESC) && !defined(INET_MODDESC)
#error inetddi.c: at least one of INET_DEVDESC or INET_MODDESC must be defined!
+#elif defined(INET_DEVDESC) && !defined(INET_DEVSTRTAB)
+#error inetddi.c: INET_DEVDESC is defined but INET_DEVSTRTAB is not!
#elif defined(INET_DEVDESC) && !defined(INET_DEVMTFLAGS)
#error inetddi.c: INET_DEVDESC is defined but INET_DEVMTFLAGS is not!
#elif defined(INET_DEVDESC) && !defined(INET_DEVMINOR)
#error inetddi.c: INET_DEVDESC is defined but INET_DEVMINOR is not!
+#elif defined(INET_MODDESC) && !defined(INET_MODSTRTAB)
+#error inetddi.c: INET_MODDESC is defined but INET_MODSTRTAB is not!
#elif defined(INET_MODDESC) && !defined(INET_MODMTFLAGS)
#error inetddi.c: INET_MODDESC is defined but INET_MODMTFLAGS is not!
#endif
-extern struct streamtab INET_STRTAB, ipinfo;
-
#ifdef INET_DEVDESC
+extern struct streamtab INET_DEVSTRTAB;
+
/*
- * This macro is intended to be called from the _init() routine of drivers
- * that actually want to be IP. Yes, this is a disgusting, vile hack.
+ * Drivers that actually want to be IP would set INET_DEVSTRTAB to ipinfo.
*/
-#define INET_BECOME_IP() (cb_inet_devops.cb_str = &ipinfo)
static dev_info_t *inet_dev_info;
@@ -167,7 +168,7 @@ inet_info(dev_info_t *dip, ddi_info_cmd_t cmd, void *arg, void **result)
}
DDI_DEFINE_STREAM_OPS(inet_devops, nulldev, nulldev, inet_attach, inet_detach,
- nulldev, inet_info, INET_DEVMTFLAGS, &INET_STRTAB);
+ nulldev, inet_info, INET_DEVMTFLAGS, &INET_DEVSTRTAB);
static struct modldrv modldrv = {
&mod_driverops,
@@ -178,9 +179,11 @@ static struct modldrv modldrv = {
#endif /* INET_DEVDESC */
#ifdef INET_MODDESC
+extern struct streamtab INET_MODSTRTAB;
+
static struct fmodsw fsw = {
INET_NAME,
- &INET_STRTAB,
+ &INET_MODSTRTAB,
INET_MODMTFLAGS
};