152 ippctl_info, /* devo_getinfo */
153 nulldev, /* devo_identify */
154 nulldev, /* devo_probe */
155 ippctl_attach, /* devo_attach */
156 ippctl_detach, /* devo_detach */
157 nodev, /* devo_reset */
158 &ippctl_cb_ops, /* devo_cb_ops */
159 (struct bus_ops *)0, /* devo_bus_ops */
160 NULL, /* devo_power */
161 ddi_quiesce_not_needed, /* devo_quiesce */
162 };
163
164 static struct modldrv modldrv = {
165 &mod_driverops,
166 "IP Policy Configuration Driver",
167 &ippctl_dev_ops,
168 };
169
170 static struct modlinkage modlinkage = {
171 MODREV_1,
172 &modldrv,
173 NULL
174 };
175
176 /*
177 * Local definitions, types and prototypes.
178 */
179
180 #define MAXUBUFLEN (1 << 16)
181
182 #define FREE_TEXT(_string) \
183 kmem_free((_string), strlen(_string) + 1)
184
185 #define FREE_TEXT_ARRAY(_array, _nelt) \
186 { \
187 int j; \
188 \
189 for (j = 0; j < (_nelt); j++) \
190 if ((_array)[j] != NULL) \
191 FREE_TEXT((_array)[j]); \
192 kmem_free((_array), (_nelt) * sizeof (char *)); \
193 }
|
152 ippctl_info, /* devo_getinfo */
153 nulldev, /* devo_identify */
154 nulldev, /* devo_probe */
155 ippctl_attach, /* devo_attach */
156 ippctl_detach, /* devo_detach */
157 nodev, /* devo_reset */
158 &ippctl_cb_ops, /* devo_cb_ops */
159 (struct bus_ops *)0, /* devo_bus_ops */
160 NULL, /* devo_power */
161 ddi_quiesce_not_needed, /* devo_quiesce */
162 };
163
164 static struct modldrv modldrv = {
165 &mod_driverops,
166 "IP Policy Configuration Driver",
167 &ippctl_dev_ops,
168 };
169
170 static struct modlinkage modlinkage = {
171 MODREV_1,
172 { &modldrv, NULL }
173 };
174
175 /*
176 * Local definitions, types and prototypes.
177 */
178
179 #define MAXUBUFLEN (1 << 16)
180
181 #define FREE_TEXT(_string) \
182 kmem_free((_string), strlen(_string) + 1)
183
184 #define FREE_TEXT_ARRAY(_array, _nelt) \
185 { \
186 int j; \
187 \
188 for (j = 0; j < (_nelt); j++) \
189 if ((_array)[j] != NULL) \
190 FREE_TEXT((_array)[j]); \
191 kmem_free((_array), (_nelt) * sizeof (char *)); \
192 }
|