7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed/*
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed * CDDL HEADER START
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed *
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed * The contents of this file are subject to the terms of the
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed * Common Development and Distribution License (the "License").
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed * You may not use this file except in compliance with the License.
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed *
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed * or http://www.opensolaris.org/os/licensing.
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed * See the License for the specific language governing permissions
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed * and limitations under the License.
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed *
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed * When distributing Covered Code, include this CDDL HEADER in each
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed * If applicable, add the following below this CDDL HEADER, with the
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed * fields enclosed by brackets "[]" replaced with your own identifying
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed * information: Portions Copyright [yyyy] [name of copyright owner]
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed *
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed * CDDL HEADER END
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed */
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed/*
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed * Use is subject to license terms.
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed */
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed#include <sys/param.h>
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed#include <sys/modctl.h>
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed#include <sys/neti.h>
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed/*
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed * Module linkage information for the kernel.
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed */
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reedstatic struct modldrv modlmisc = {
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed &mod_miscops, /* drv_modops */
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed "netinfo module", /* drv_linkinfo */
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed};
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reedstatic struct modlinkage modlinkage = {
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed MODREV_1, /* ml_rev */
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed &modlmisc, /* ml_linkage */
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed NULL
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed};
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed/*
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed * Module entry points.
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed */
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reedint
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed_init(void)
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed{
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed int error;
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed neti_init();
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed error = mod_install(&modlinkage);
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed if (error != 0)
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed neti_fini();
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed return (error);
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed}
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reedint
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed_fini(void)
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed{
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed int error;
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed error = mod_remove(&modlinkage);
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed if (error == 0)
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed neti_fini();
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed return (error);
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed}
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reedint
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed_info(struct modinfo *modinfop)
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed{
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed return (mod_info(&modlinkage, modinfop));
7ddc9b1afd18f260b9fb78ec7732facd91769131Darren Reed}