# Default Dual License

Unless otherwise stated this software is available to you under a choice of
one of two licenses.  You may choose to be licensed under the terms of the
OpenIB.org BSD (MIT variant) license (see COPYING.BSD_MIT) or the GNU General
Public License (GPL) Version 2 (see COPYING.GPL2), both included in this
package.

Files marked 'See COPYING file' are licensed under the above Dual License.

# Other Options

Individual source files may use a license different from the above Defaul Dual
License. If a license is declared in the file then it supersedes the Default
License.

If a directory contains a COPYING file then the License from that file becomes
the Default License for files in that directory and below.

# Copyright Holders

Refer to individual files for information on the copyright holders.

# License Catalog (Informative, Non Binding)

## Utilities

Utility source code that may be linked into any binary are available under
several licenses:

   - MIT license (see ccan/LICENSE.MIT)
   - Creative Commons CC0 1.0 Universal License (see ccan/LICENSE.CC0)

## Providers

The following providers use a different license than the Default Dual
License. Refer to files in each directory for details.

hfi1verbs
: Dual License: GPLv2 or Intel 3 clause BSD license

ipathverbs
: Dual License: GPLv2 or PathScale BSD Patent license

ocrdma
: Dual License: GPLv2 or OpenIB.org BSD (FreeBSD variant), See COPYING.BSD_FB

## Libraries

All library compilable source code (.c and .h files) are available under the
Default Dual License.

Unmarked ancillary files may be available under a Dual License: GPLv2 or
OpenIB.org BSD (FreeBSD variant).

## Tools (iwpmd, srp_daemon, ibacm)

All compilable source code (.c and .h files) are available under the Default
Dual License.

Unmarked ancillary files may be available under a Dual License: GPLv2 or
OpenIB.org BSD (FreeBSD variant).

srp_daemon/srp_daemon/srp_daemon.sh: Any one of the GPLv2, a 2 clause BSD
license or the CPLv1.
