/** @file
 * NetLabel Library init/exit Functions
 *
 * Author: Paul Moore <paul@paul-moore.com>
 *
 */

/*
 * (c) Copyright Hewlett-Packard Development Company, L.P., 2006
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of version 2 of the GNU General Public License as
 * published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *
 */

#include <stdlib.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <linux/types.h>

#include <libnetlabel.h>

#include "netlabel_internal.h"
#include "mod_mgmt.h"
#include "mod_unlabeled.h"
#include "mod_cipso.h"
#include "mod_calipso.h"

/**
 * Handle any NetLabel setup needed
 *
 * Initialize the NetLabel communication link, but do not open any general use
 * NetLabel handles.  Returns zero on success, negative values on failure.
 *
 */
int nlbl_init(void)
{
	int rc;

	nlmsg_set_default_size(8192);

	rc = nlbl_mgmt_init();
	if (rc < 0)
		return rc;

	rc = nlbl_cipso_init();
	if (rc < 0)
		return rc;

	rc = nlbl_unlbl_init();
	if (rc < 0)
		return rc;

	/* CALISPO support may not exist in the kernel so
	   don't return an error if it doesn't. */
	nlbl_calipso_init();

	return 0;
}

/**
 * Handle any NetLabel cleanup
 *
 * Perform any cleanup duties for the NetLabel communication link, does not
 * close any handles.
 *
 */
void nlbl_exit(void)
{
	return;
}
