=====================
NetLabel Introduction
=====================

Paul Moore, paul.moore@hp.com

August 2, 2006

Overview
========

NetLabel is a mechanism which can be used by kernel security modules to attach
security attributes to outgoing network packets generated from user space
applications and read security attributes from incoming network packets.  It
is composed of three main components, the protocol engines, the communication
layer, and the kernel security module API.

Protocol Engines
================

The protocol engines are responsible for both applying and retrieving the
network packet's security attributes.  If any translation between the network
security attributes and those on the host are required then the protocol
engine will handle those tasks as well.  Other kernel subsystems should
refrain from calling the protocol engines directly, instead they should use
the NetLabel kernel security module API described below.

Detailed information about each NetLabel protocol engine can be found in this
directory.

Communication Layer
===================

The communication layer exists to allow NetLabel configuration and monitoring
from user space.  The NetLabel communication layer uses a message based
protocol built on top of the Generic NETLINK transport mechanism.  The exact
formatting of these NetLabel messages as well as the Generic NETLINK family
names can be found in the 'net/netlabel/' directory as comments in the
header files as well as in 'include/net/netlabel.h'.

Security Module API
===================

The purpose of the NetLabel security module API is to provide a protocol
independent interface to the underlying NetLabel protocol engines.  In addition
to protocol independence, the security module API is designed to be completely
LSM independent which should allow multiple LSMs to leverage the same code
base.

Detailed information about the NetLabel security module API can be found in the
'include/net/netlabel.h' header file as well as the 'lsm_interface.txt' file
found in this directory.