|
Packit |
51d0f7 |
/** @file
|
|
Packit |
51d0f7 |
* NetLabel userspace/kernel interface API.
|
|
Packit |
51d0f7 |
*
|
|
Packit |
51d0f7 |
* The NetLabel system manages static and dynamic security label mappings for
|
|
Packit |
51d0f7 |
* network protocols such as CIPSO and RIPSO.
|
|
Packit |
51d0f7 |
*
|
|
Packit |
51d0f7 |
* Author: Paul Moore <paul@paul-moore.com>
|
|
Packit |
51d0f7 |
*
|
|
Packit |
51d0f7 |
*/
|
|
Packit |
51d0f7 |
|
|
Packit |
51d0f7 |
/*
|
|
Packit |
51d0f7 |
* (c) Copyright Hewlett-Packard Development Company, L.P., 2006
|
|
Packit |
51d0f7 |
*
|
|
Packit |
51d0f7 |
* This program is free software: you can redistribute it and/or modify
|
|
Packit |
51d0f7 |
* it under the terms of version 2 of the GNU General Public License as
|
|
Packit |
51d0f7 |
* published by the Free Software Foundation.
|
|
Packit |
51d0f7 |
*
|
|
Packit |
51d0f7 |
* This program is distributed in the hope that it will be useful,
|
|
Packit |
51d0f7 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit |
51d0f7 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
Packit |
51d0f7 |
* GNU General Public License for more details.
|
|
Packit |
51d0f7 |
*
|
|
Packit |
51d0f7 |
* You should have received a copy of the GNU General Public License
|
|
Packit |
51d0f7 |
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
Packit |
51d0f7 |
*
|
|
Packit |
51d0f7 |
*/
|
|
Packit |
51d0f7 |
|
|
Packit |
51d0f7 |
#ifndef _NETLABEL_H
|
|
Packit |
51d0f7 |
#define _NETLABEL_H
|
|
Packit |
51d0f7 |
|
|
Packit |
51d0f7 |
/* NetLabel NETLINK protocol version
|
|
Packit |
51d0f7 |
* 1: initial version
|
|
Packit |
51d0f7 |
* 2: added static labels for unlabeled connections
|
|
Packit |
51d0f7 |
* 3: network selectors added to the NetLabel/LSM domain mapping
|
|
Packit |
51d0f7 |
*/
|
|
Packit |
51d0f7 |
#define NETLBL_PROTO_VERSION 3
|
|
Packit |
51d0f7 |
|
|
Packit |
51d0f7 |
/* NetLabel NETLINK types/families */
|
|
Packit |
51d0f7 |
#define NETLBL_NLTYPE_NONE 0
|
|
Packit |
51d0f7 |
#define NETLBL_NLTYPE_MGMT 1
|
|
Packit |
51d0f7 |
#define NETLBL_NLTYPE_MGMT_NAME "NLBL_MGMT"
|
|
Packit |
51d0f7 |
#define NETLBL_NLTYPE_RIPSO 2
|
|
Packit |
51d0f7 |
#define NETLBL_NLTYPE_RIPSO_NAME "NLBL_RIPSO"
|
|
Packit |
51d0f7 |
#define NETLBL_NLTYPE_CIPSOV4 3
|
|
Packit |
51d0f7 |
#define NETLBL_NLTYPE_CIPSOV4_NAME "NLBL_CIPSOv4"
|
|
Packit |
51d0f7 |
#define NETLBL_NLTYPE_CIPSOV6 4
|
|
Packit |
51d0f7 |
#define NETLBL_NLTYPE_CIPSOV6_NAME "NLBL_CIPSOv6"
|
|
Packit |
51d0f7 |
#define NETLBL_NLTYPE_UNLABELED 5
|
|
Packit |
51d0f7 |
#define NETLBL_NLTYPE_UNLABELED_NAME "NLBL_UNLBL"
|
|
Packit |
51d0f7 |
#define NETLBL_NLTYPE_ADDRSELECT 6
|
|
Packit |
51d0f7 |
#define NETLBL_NLTYPE_ADDRSELECT_NAME "NLBL_ADRSEL"
|
|
Packit |
51d0f7 |
#define NETLBL_NLTYPE_CALIPSO 7
|
|
Packit |
51d0f7 |
#define NETLBL_NLTYPE_CALIPSO_NAME "NLBL_CALIPSO"
|
|
Packit |
51d0f7 |
|
|
Packit |
51d0f7 |
/*
|
|
Packit |
51d0f7 |
* MGMT
|
|
Packit |
51d0f7 |
*/
|
|
Packit |
51d0f7 |
|
|
Packit |
51d0f7 |
/**
|
|
Packit |
51d0f7 |
* NetLabel Management commands
|
|
Packit |
51d0f7 |
*/
|
|
Packit |
51d0f7 |
enum {
|
|
Packit |
51d0f7 |
NLBL_MGMT_C_UNSPEC,
|
|
Packit |
51d0f7 |
NLBL_MGMT_C_ADD,
|
|
Packit |
51d0f7 |
NLBL_MGMT_C_REMOVE,
|
|
Packit |
51d0f7 |
NLBL_MGMT_C_LISTALL,
|
|
Packit |
51d0f7 |
NLBL_MGMT_C_ADDDEF,
|
|
Packit |
51d0f7 |
NLBL_MGMT_C_REMOVEDEF,
|
|
Packit |
51d0f7 |
NLBL_MGMT_C_LISTDEF,
|
|
Packit |
51d0f7 |
NLBL_MGMT_C_PROTOCOLS,
|
|
Packit |
51d0f7 |
NLBL_MGMT_C_VERSION,
|
|
Packit |
51d0f7 |
__NLBL_MGMT_C_MAX,
|
|
Packit |
51d0f7 |
};
|
|
Packit |
51d0f7 |
#define NLBL_MGMT_C_MAX (__NLBL_MGMT_C_MAX - 1)
|
|
Packit |
51d0f7 |
|
|
Packit |
51d0f7 |
/**
|
|
Packit |
51d0f7 |
* NetLabel Management attributes
|
|
Packit |
51d0f7 |
*/
|
|
Packit |
51d0f7 |
enum {
|
|
Packit |
51d0f7 |
NLBL_MGMT_A_UNSPEC,
|
|
Packit |
51d0f7 |
NLBL_MGMT_A_DOMAIN,
|
|
Packit |
51d0f7 |
NLBL_MGMT_A_PROTOCOL,
|
|
Packit |
51d0f7 |
NLBL_MGMT_A_VERSION,
|
|
Packit |
51d0f7 |
NLBL_MGMT_A_CV4DOI,
|
|
Packit |
51d0f7 |
NLBL_MGMT_A_IPV6ADDR,
|
|
Packit |
51d0f7 |
NLBL_MGMT_A_IPV6MASK,
|
|
Packit |
51d0f7 |
NLBL_MGMT_A_IPV4ADDR,
|
|
Packit |
51d0f7 |
NLBL_MGMT_A_IPV4MASK,
|
|
Packit |
51d0f7 |
NLBL_MGMT_A_ADDRSELECTOR,
|
|
Packit |
51d0f7 |
NLBL_MGMT_A_SELECTORLIST,
|
|
Packit |
51d0f7 |
NLBL_MGMT_A_FAMILY,
|
|
Packit |
51d0f7 |
NLBL_MGMT_A_CLPDOI,
|
|
Packit |
51d0f7 |
__NLBL_MGMT_A_MAX,
|
|
Packit |
51d0f7 |
};
|
|
Packit |
51d0f7 |
#define NLBL_MGMT_A_MAX (__NLBL_MGMT_A_MAX - 1)
|
|
Packit |
51d0f7 |
|
|
Packit |
51d0f7 |
/*
|
|
Packit |
51d0f7 |
* CIPSO V4
|
|
Packit |
51d0f7 |
*/
|
|
Packit |
51d0f7 |
|
|
Packit |
51d0f7 |
/* CIPSOv4 DOI map types */
|
|
Packit |
51d0f7 |
#define CIPSO_V4_MAP_UNKNOWN 0
|
|
Packit |
51d0f7 |
#define CIPSO_V4_MAP_TRANS 1
|
|
Packit |
51d0f7 |
#define CIPSO_V4_MAP_PASS 2
|
|
Packit |
51d0f7 |
#define CIPSO_V4_MAP_LOCAL 3
|
|
Packit |
51d0f7 |
|
|
Packit |
51d0f7 |
/**
|
|
Packit |
51d0f7 |
* NetLabel CIPSOv4 commands
|
|
Packit |
51d0f7 |
*/
|
|
Packit |
51d0f7 |
enum {
|
|
Packit |
51d0f7 |
NLBL_CIPSOV4_C_UNSPEC,
|
|
Packit |
51d0f7 |
NLBL_CIPSOV4_C_ADD,
|
|
Packit |
51d0f7 |
NLBL_CIPSOV4_C_REMOVE,
|
|
Packit |
51d0f7 |
NLBL_CIPSOV4_C_LIST,
|
|
Packit |
51d0f7 |
NLBL_CIPSOV4_C_LISTALL,
|
|
Packit |
51d0f7 |
__NLBL_CIPSOV4_C_MAX,
|
|
Packit |
51d0f7 |
};
|
|
Packit |
51d0f7 |
#define NLBL_CIPSOV4_C_MAX (__NLBL_CIPSOV4_C_MAX - 1)
|
|
Packit |
51d0f7 |
|
|
Packit |
51d0f7 |
/**
|
|
Packit |
51d0f7 |
* NetLabel CIPSOv4 attributes
|
|
Packit |
51d0f7 |
*/
|
|
Packit |
51d0f7 |
enum {
|
|
Packit |
51d0f7 |
NLBL_CIPSOV4_A_UNSPEC,
|
|
Packit |
51d0f7 |
NLBL_CIPSOV4_A_DOI,
|
|
Packit |
51d0f7 |
NLBL_CIPSOV4_A_MTYPE,
|
|
Packit |
51d0f7 |
NLBL_CIPSOV4_A_TAG,
|
|
Packit |
51d0f7 |
NLBL_CIPSOV4_A_TAGLST,
|
|
Packit |
51d0f7 |
NLBL_CIPSOV4_A_MLSLVLLOC,
|
|
Packit |
51d0f7 |
NLBL_CIPSOV4_A_MLSLVLREM,
|
|
Packit |
51d0f7 |
NLBL_CIPSOV4_A_MLSLVL,
|
|
Packit |
51d0f7 |
NLBL_CIPSOV4_A_MLSLVLLST,
|
|
Packit |
51d0f7 |
NLBL_CIPSOV4_A_MLSCATLOC,
|
|
Packit |
51d0f7 |
NLBL_CIPSOV4_A_MLSCATREM,
|
|
Packit |
51d0f7 |
NLBL_CIPSOV4_A_MLSCAT,
|
|
Packit |
51d0f7 |
NLBL_CIPSOV4_A_MLSCATLST,
|
|
Packit |
51d0f7 |
__NLBL_CIPSOV4_A_MAX,
|
|
Packit |
51d0f7 |
};
|
|
Packit |
51d0f7 |
#define NLBL_CIPSOV4_A_MAX (__NLBL_CIPSOV4_A_MAX - 1)
|
|
Packit |
51d0f7 |
|
|
Packit |
51d0f7 |
/*
|
|
Packit |
51d0f7 |
* CALIPSO
|
|
Packit |
51d0f7 |
*/
|
|
Packit |
51d0f7 |
|
|
Packit |
51d0f7 |
/* CALIPSO DOI map types */
|
|
Packit |
51d0f7 |
#define CALIPSO_MAP_UNKNOWN 0
|
|
Packit |
51d0f7 |
#define CALIPSO_MAP_PASS 2
|
|
Packit |
51d0f7 |
|
|
Packit |
51d0f7 |
/**
|
|
Packit |
51d0f7 |
* NetLabel CALIPSO commands
|
|
Packit |
51d0f7 |
*/
|
|
Packit |
51d0f7 |
enum {
|
|
Packit |
51d0f7 |
NLBL_CALIPSO_C_UNSPEC,
|
|
Packit |
51d0f7 |
NLBL_CALIPSO_C_ADD,
|
|
Packit |
51d0f7 |
NLBL_CALIPSO_C_REMOVE,
|
|
Packit |
51d0f7 |
NLBL_CALIPSO_C_LIST,
|
|
Packit |
51d0f7 |
NLBL_CALIPSO_C_LISTALL,
|
|
Packit |
51d0f7 |
__NLBL_CALIPSO_C_MAX,
|
|
Packit |
51d0f7 |
};
|
|
Packit |
51d0f7 |
#define NLBL_CALIPSO_C_MAX (__NLBL_CALIPSO_C_MAX - 1)
|
|
Packit |
51d0f7 |
|
|
Packit |
51d0f7 |
|
|
Packit |
51d0f7 |
/**
|
|
Packit |
51d0f7 |
* NetLabel CALIPSO attributes
|
|
Packit |
51d0f7 |
*/
|
|
Packit |
51d0f7 |
enum {
|
|
Packit |
51d0f7 |
NLBL_CALIPSO_A_UNSPEC,
|
|
Packit |
51d0f7 |
NLBL_CALIPSO_A_DOI,
|
|
Packit |
51d0f7 |
NLBL_CALIPSO_A_MTYPE,
|
|
Packit |
51d0f7 |
__NLBL_CALIPSO_A_MAX,
|
|
Packit |
51d0f7 |
};
|
|
Packit |
51d0f7 |
#define NLBL_CALIPSO_A_MAX (__NLBL_CALIPSO_A_MAX - 1)
|
|
Packit |
51d0f7 |
|
|
Packit |
51d0f7 |
/*
|
|
Packit |
51d0f7 |
* UNLABELED
|
|
Packit |
51d0f7 |
*/
|
|
Packit |
51d0f7 |
|
|
Packit |
51d0f7 |
/**
|
|
Packit |
51d0f7 |
* NetLabel Unlabeled commands
|
|
Packit |
51d0f7 |
*/
|
|
Packit |
51d0f7 |
enum {
|
|
Packit |
51d0f7 |
NLBL_UNLABEL_C_UNSPEC,
|
|
Packit |
51d0f7 |
NLBL_UNLABEL_C_ACCEPT,
|
|
Packit |
51d0f7 |
NLBL_UNLABEL_C_LIST,
|
|
Packit |
51d0f7 |
NLBL_UNLABEL_C_STATICADD,
|
|
Packit |
51d0f7 |
NLBL_UNLABEL_C_STATICREMOVE,
|
|
Packit |
51d0f7 |
NLBL_UNLABEL_C_STATICLIST,
|
|
Packit |
51d0f7 |
NLBL_UNLABEL_C_STATICADDDEF,
|
|
Packit |
51d0f7 |
NLBL_UNLABEL_C_STATICREMOVEDEF,
|
|
Packit |
51d0f7 |
NLBL_UNLABEL_C_STATICLISTDEF,
|
|
Packit |
51d0f7 |
__NLBL_UNLABEL_C_MAX,
|
|
Packit |
51d0f7 |
};
|
|
Packit |
51d0f7 |
#define NLBL_UNLABEL_C_MAX (__NLBL_UNLABEL_C_MAX - 1)
|
|
Packit |
51d0f7 |
|
|
Packit |
51d0f7 |
/**
|
|
Packit |
51d0f7 |
* NetLabel Unlabeled attributes
|
|
Packit |
51d0f7 |
*/
|
|
Packit |
51d0f7 |
enum {
|
|
Packit |
51d0f7 |
NLBL_UNLABEL_A_UNSPEC,
|
|
Packit |
51d0f7 |
NLBL_UNLABEL_A_ACPTFLG,
|
|
Packit |
51d0f7 |
NLBL_UNLABEL_A_IPV6ADDR,
|
|
Packit |
51d0f7 |
NLBL_UNLABEL_A_IPV6MASK,
|
|
Packit |
51d0f7 |
NLBL_UNLABEL_A_IPV4ADDR,
|
|
Packit |
51d0f7 |
NLBL_UNLABEL_A_IPV4MASK,
|
|
Packit |
51d0f7 |
NLBL_UNLABEL_A_IFACE,
|
|
Packit |
51d0f7 |
NLBL_UNLABEL_A_SECCTX,
|
|
Packit |
51d0f7 |
__NLBL_UNLABEL_A_MAX,
|
|
Packit |
51d0f7 |
};
|
|
Packit |
51d0f7 |
#define NLBL_UNLABEL_A_MAX (__NLBL_UNLABEL_A_MAX - 1)
|
|
Packit |
51d0f7 |
|
|
Packit |
51d0f7 |
#endif /* _NETLABEL_H */
|