add freeipmi source
This commit is contained in:
57
source/freeipmi/usr/share/doc/freeipmi/AUTHORS
Normal file
57
source/freeipmi/usr/share/doc/freeipmi/AUTHORS
Normal file
@ -0,0 +1,57 @@
|
||||
Maintainer:
|
||||
Albert Chu <chu11@llnl.gov>
|
||||
|
||||
Developers:
|
||||
Albert Chu <chu11@llnl.gov>
|
||||
Anand Babu <ab@zresearch.com>
|
||||
Anand Avati <avati@zresearch.com>
|
||||
Balamurugan <bala@zresearch.com>
|
||||
Ian Zimmerman <itz@buug.org>
|
||||
Raghavendra <raghavendra@zresearch.com>
|
||||
|
||||
Patch Contributions:
|
||||
Dmitry Frolov <frolov@riss-telecom.ru>
|
||||
Ingo van Lil <inguin@gmx.de>
|
||||
Levi Pearson <lpearson@lnxi.com>
|
||||
Tom Zimmerman <tzimmerman@lnxi.com>
|
||||
Phil Knirsch <pknirsch@redhat.com>
|
||||
Jan Forch <Jan.Forch@sun.com>
|
||||
Fillod Stephane <stephane.fillod@grassvalley.com>
|
||||
Holger Liebig <holger.liebig@ts.fujitsu.com>
|
||||
Dan Lukes <dan+freeipmi@obluda.cz>
|
||||
Arnaud Quette <arnaud.quette@free.fr>
|
||||
Diego Elio Pettenò <flameeyes@flameeyes.eu>
|
||||
Kaiwang Chen <kaiwang.chen@gmail.com>
|
||||
Jan Safranek <jsafrane@redhat.com>
|
||||
Thomas Renninger <trenn@suse.de>
|
||||
Dave Love <fx@gnu.org>
|
||||
Dan Lukes <dan+freeipmi@obluda.cz>
|
||||
Shashi Dande <Shashi.Dande@hp.com>
|
||||
Markus Blank-Burian <burian@muenster.de>
|
||||
David Binderman <dcb314@hotmail.com>
|
||||
Denys Vlasenko <dvlasenk@redhat.com>
|
||||
Ales Ledvinka <aledvink@redhat.com>
|
||||
Klaus Kaempf <kkaempf@suse.de>
|
||||
Dick Detweiler <Dick.Detweiler@Emerson.com>
|
||||
Dave Walker <DaveWalker@ubuntu.com>,
|
||||
Claudio Cesar Sanchez Tejeda <demonccc@gmail.com>
|
||||
Mark Rusk <mark.rusk@hp.com>
|
||||
And probably others ...
|
||||
|
||||
Package Maintainers:
|
||||
Dmitry Frolov <frol@nov.net> - FreeBSD
|
||||
Phil Knirsch <pknirsch@redhat.com> - Redhat & Fedora
|
||||
Jan Safranek <jsafrane@redhat.com> - Redhat & Fedora
|
||||
Yaroslav Halchenko <debian@onerussian.com> - Debian
|
||||
|
||||
Contrib Contributions:
|
||||
Kaiwang Chen <kaiwang.chen@gmail.com>
|
||||
|
||||
Web Site:
|
||||
Anand Babu <ab@zresearch.com>
|
||||
|
||||
Evaluation/Testing/Reverse Engineering:
|
||||
Joseph Ruscio <ruscio@californiadigital.com>
|
||||
Shuichi Ihara <ihara@sun.com>
|
||||
Ryan Cox <ryan_cox@byu.edu>
|
||||
and others ...
|
674
source/freeipmi/usr/share/doc/freeipmi/COPYING
Normal file
674
source/freeipmi/usr/share/doc/freeipmi/COPYING
Normal file
@ -0,0 +1,674 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The GNU General Public License is a free, copyleft license for
|
||||
software and other kinds of works.
|
||||
|
||||
The licenses for most software and other practical works are designed
|
||||
to take away your freedom to share and change the works. By contrast,
|
||||
the GNU General Public License is intended to guarantee your freedom to
|
||||
share and change all versions of a program--to make sure it remains free
|
||||
software for all its users. We, the Free Software Foundation, use the
|
||||
GNU General Public License for most of our software; it applies also to
|
||||
any other work released this way by its authors. You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
them if you wish), that you receive source code or can get it if you
|
||||
want it, that you can change the software or use pieces of it in new
|
||||
free programs, and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to prevent others from denying you
|
||||
these rights or asking you to surrender the rights. Therefore, you have
|
||||
certain responsibilities if you distribute copies of the software, or if
|
||||
you modify it: responsibilities to respect the freedom of others.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must pass on to the recipients the same
|
||||
freedoms that you received. You must make sure that they, too, receive
|
||||
or can get the source code. And you must show them these terms so they
|
||||
know their rights.
|
||||
|
||||
Developers that use the GNU GPL protect your rights with two steps:
|
||||
(1) assert copyright on the software, and (2) offer you this License
|
||||
giving you legal permission to copy, distribute and/or modify it.
|
||||
|
||||
For the developers' and authors' protection, the GPL clearly explains
|
||||
that there is no warranty for this free software. For both users' and
|
||||
authors' sake, the GPL requires that modified versions be marked as
|
||||
changed, so that their problems will not be attributed erroneously to
|
||||
authors of previous versions.
|
||||
|
||||
Some devices are designed to deny users access to install or run
|
||||
modified versions of the software inside them, although the manufacturer
|
||||
can do so. This is fundamentally incompatible with the aim of
|
||||
protecting users' freedom to change the software. The systematic
|
||||
pattern of such abuse occurs in the area of products for individuals to
|
||||
use, which is precisely where it is most unacceptable. Therefore, we
|
||||
have designed this version of the GPL to prohibit the practice for those
|
||||
products. If such problems arise substantially in other domains, we
|
||||
stand ready to extend this provision to those domains in future versions
|
||||
of the GPL, as needed to protect the freedom of users.
|
||||
|
||||
Finally, every program is threatened constantly by software patents.
|
||||
States should not allow patents to restrict development and use of
|
||||
software on general-purpose computers, but in those that do, we wish to
|
||||
avoid the special danger that patents applied to a free program could
|
||||
make it effectively proprietary. To prevent this, the GPL assures that
|
||||
patents cannot be used to render the program non-free.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
TERMS AND CONDITIONS
|
||||
|
||||
0. Definitions.
|
||||
|
||||
"This License" refers to version 3 of the GNU General Public License.
|
||||
|
||||
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||
works, such as semiconductor masks.
|
||||
|
||||
"The Program" refers to any copyrightable work licensed under this
|
||||
License. Each licensee is addressed as "you". "Licensees" and
|
||||
"recipients" may be individuals or organizations.
|
||||
|
||||
To "modify" a work means to copy from or adapt all or part of the work
|
||||
in a fashion requiring copyright permission, other than the making of an
|
||||
exact copy. The resulting work is called a "modified version" of the
|
||||
earlier work or a work "based on" the earlier work.
|
||||
|
||||
A "covered work" means either the unmodified Program or a work based
|
||||
on the Program.
|
||||
|
||||
To "propagate" a work means to do anything with it that, without
|
||||
permission, would make you directly or secondarily liable for
|
||||
infringement under applicable copyright law, except executing it on a
|
||||
computer or modifying a private copy. Propagation includes copying,
|
||||
distribution (with or without modification), making available to the
|
||||
public, and in some countries other activities as well.
|
||||
|
||||
To "convey" a work means any kind of propagation that enables other
|
||||
parties to make or receive copies. Mere interaction with a user through
|
||||
a computer network, with no transfer of a copy, is not conveying.
|
||||
|
||||
An interactive user interface displays "Appropriate Legal Notices"
|
||||
to the extent that it includes a convenient and prominently visible
|
||||
feature that (1) displays an appropriate copyright notice, and (2)
|
||||
tells the user that there is no warranty for the work (except to the
|
||||
extent that warranties are provided), that licensees may convey the
|
||||
work under this License, and how to view a copy of this License. If
|
||||
the interface presents a list of user commands or options, such as a
|
||||
menu, a prominent item in the list meets this criterion.
|
||||
|
||||
1. Source Code.
|
||||
|
||||
The "source code" for a work means the preferred form of the work
|
||||
for making modifications to it. "Object code" means any non-source
|
||||
form of a work.
|
||||
|
||||
A "Standard Interface" means an interface that either is an official
|
||||
standard defined by a recognized standards body, or, in the case of
|
||||
interfaces specified for a particular programming language, one that
|
||||
is widely used among developers working in that language.
|
||||
|
||||
The "System Libraries" of an executable work include anything, other
|
||||
than the work as a whole, that (a) is included in the normal form of
|
||||
packaging a Major Component, but which is not part of that Major
|
||||
Component, and (b) serves only to enable use of the work with that
|
||||
Major Component, or to implement a Standard Interface for which an
|
||||
implementation is available to the public in source code form. A
|
||||
"Major Component", in this context, means a major essential component
|
||||
(kernel, window system, and so on) of the specific operating system
|
||||
(if any) on which the executable work runs, or a compiler used to
|
||||
produce the work, or an object code interpreter used to run it.
|
||||
|
||||
The "Corresponding Source" for a work in object code form means all
|
||||
the source code needed to generate, install, and (for an executable
|
||||
work) run the object code and to modify the work, including scripts to
|
||||
control those activities. However, it does not include the work's
|
||||
System Libraries, or general-purpose tools or generally available free
|
||||
programs which are used unmodified in performing those activities but
|
||||
which are not part of the work. For example, Corresponding Source
|
||||
includes interface definition files associated with source files for
|
||||
the work, and the source code for shared libraries and dynamically
|
||||
linked subprograms that the work is specifically designed to require,
|
||||
such as by intimate data communication or control flow between those
|
||||
subprograms and other parts of the work.
|
||||
|
||||
The Corresponding Source need not include anything that users
|
||||
can regenerate automatically from other parts of the Corresponding
|
||||
Source.
|
||||
|
||||
The Corresponding Source for a work in source code form is that
|
||||
same work.
|
||||
|
||||
2. Basic Permissions.
|
||||
|
||||
All rights granted under this License are granted for the term of
|
||||
copyright on the Program, and are irrevocable provided the stated
|
||||
conditions are met. This License explicitly affirms your unlimited
|
||||
permission to run the unmodified Program. The output from running a
|
||||
covered work is covered by this License only if the output, given its
|
||||
content, constitutes a covered work. This License acknowledges your
|
||||
rights of fair use or other equivalent, as provided by copyright law.
|
||||
|
||||
You may make, run and propagate covered works that you do not
|
||||
convey, without conditions so long as your license otherwise remains
|
||||
in force. You may convey covered works to others for the sole purpose
|
||||
of having them make modifications exclusively for you, or provide you
|
||||
with facilities for running those works, provided that you comply with
|
||||
the terms of this License in conveying all material for which you do
|
||||
not control copyright. Those thus making or running the covered works
|
||||
for you must do so exclusively on your behalf, under your direction
|
||||
and control, on terms that prohibit them from making any copies of
|
||||
your copyrighted material outside their relationship with you.
|
||||
|
||||
Conveying under any other circumstances is permitted solely under
|
||||
the conditions stated below. Sublicensing is not allowed; section 10
|
||||
makes it unnecessary.
|
||||
|
||||
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||
|
||||
No covered work shall be deemed part of an effective technological
|
||||
measure under any applicable law fulfilling obligations under article
|
||||
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||
similar laws prohibiting or restricting circumvention of such
|
||||
measures.
|
||||
|
||||
When you convey a covered work, you waive any legal power to forbid
|
||||
circumvention of technological measures to the extent such circumvention
|
||||
is effected by exercising rights under this License with respect to
|
||||
the covered work, and you disclaim any intention to limit operation or
|
||||
modification of the work as a means of enforcing, against the work's
|
||||
users, your or third parties' legal rights to forbid circumvention of
|
||||
technological measures.
|
||||
|
||||
4. Conveying Verbatim Copies.
|
||||
|
||||
You may convey verbatim copies of the Program's source code as you
|
||||
receive it, in any medium, provided that you conspicuously and
|
||||
appropriately publish on each copy an appropriate copyright notice;
|
||||
keep intact all notices stating that this License and any
|
||||
non-permissive terms added in accord with section 7 apply to the code;
|
||||
keep intact all notices of the absence of any warranty; and give all
|
||||
recipients a copy of this License along with the Program.
|
||||
|
||||
You may charge any price or no price for each copy that you convey,
|
||||
and you may offer support or warranty protection for a fee.
|
||||
|
||||
5. Conveying Modified Source Versions.
|
||||
|
||||
You may convey a work based on the Program, or the modifications to
|
||||
produce it from the Program, in the form of source code under the
|
||||
terms of section 4, provided that you also meet all of these conditions:
|
||||
|
||||
a) The work must carry prominent notices stating that you modified
|
||||
it, and giving a relevant date.
|
||||
|
||||
b) The work must carry prominent notices stating that it is
|
||||
released under this License and any conditions added under section
|
||||
7. This requirement modifies the requirement in section 4 to
|
||||
"keep intact all notices".
|
||||
|
||||
c) You must license the entire work, as a whole, under this
|
||||
License to anyone who comes into possession of a copy. This
|
||||
License will therefore apply, along with any applicable section 7
|
||||
additional terms, to the whole of the work, and all its parts,
|
||||
regardless of how they are packaged. This License gives no
|
||||
permission to license the work in any other way, but it does not
|
||||
invalidate such permission if you have separately received it.
|
||||
|
||||
d) If the work has interactive user interfaces, each must display
|
||||
Appropriate Legal Notices; however, if the Program has interactive
|
||||
interfaces that do not display Appropriate Legal Notices, your
|
||||
work need not make them do so.
|
||||
|
||||
A compilation of a covered work with other separate and independent
|
||||
works, which are not by their nature extensions of the covered work,
|
||||
and which are not combined with it such as to form a larger program,
|
||||
in or on a volume of a storage or distribution medium, is called an
|
||||
"aggregate" if the compilation and its resulting copyright are not
|
||||
used to limit the access or legal rights of the compilation's users
|
||||
beyond what the individual works permit. Inclusion of a covered work
|
||||
in an aggregate does not cause this License to apply to the other
|
||||
parts of the aggregate.
|
||||
|
||||
6. Conveying Non-Source Forms.
|
||||
|
||||
You may convey a covered work in object code form under the terms
|
||||
of sections 4 and 5, provided that you also convey the
|
||||
machine-readable Corresponding Source under the terms of this License,
|
||||
in one of these ways:
|
||||
|
||||
a) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by the
|
||||
Corresponding Source fixed on a durable physical medium
|
||||
customarily used for software interchange.
|
||||
|
||||
b) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by a
|
||||
written offer, valid for at least three years and valid for as
|
||||
long as you offer spare parts or customer support for that product
|
||||
model, to give anyone who possesses the object code either (1) a
|
||||
copy of the Corresponding Source for all the software in the
|
||||
product that is covered by this License, on a durable physical
|
||||
medium customarily used for software interchange, for a price no
|
||||
more than your reasonable cost of physically performing this
|
||||
conveying of source, or (2) access to copy the
|
||||
Corresponding Source from a network server at no charge.
|
||||
|
||||
c) Convey individual copies of the object code with a copy of the
|
||||
written offer to provide the Corresponding Source. This
|
||||
alternative is allowed only occasionally and noncommercially, and
|
||||
only if you received the object code with such an offer, in accord
|
||||
with subsection 6b.
|
||||
|
||||
d) Convey the object code by offering access from a designated
|
||||
place (gratis or for a charge), and offer equivalent access to the
|
||||
Corresponding Source in the same way through the same place at no
|
||||
further charge. You need not require recipients to copy the
|
||||
Corresponding Source along with the object code. If the place to
|
||||
copy the object code is a network server, the Corresponding Source
|
||||
may be on a different server (operated by you or a third party)
|
||||
that supports equivalent copying facilities, provided you maintain
|
||||
clear directions next to the object code saying where to find the
|
||||
Corresponding Source. Regardless of what server hosts the
|
||||
Corresponding Source, you remain obligated to ensure that it is
|
||||
available for as long as needed to satisfy these requirements.
|
||||
|
||||
e) Convey the object code using peer-to-peer transmission, provided
|
||||
you inform other peers where the object code and Corresponding
|
||||
Source of the work are being offered to the general public at no
|
||||
charge under subsection 6d.
|
||||
|
||||
A separable portion of the object code, whose source code is excluded
|
||||
from the Corresponding Source as a System Library, need not be
|
||||
included in conveying the object code work.
|
||||
|
||||
A "User Product" is either (1) a "consumer product", which means any
|
||||
tangible personal property which is normally used for personal, family,
|
||||
or household purposes, or (2) anything designed or sold for incorporation
|
||||
into a dwelling. In determining whether a product is a consumer product,
|
||||
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||
product received by a particular user, "normally used" refers to a
|
||||
typical or common use of that class of product, regardless of the status
|
||||
of the particular user or of the way in which the particular user
|
||||
actually uses, or expects or is expected to use, the product. A product
|
||||
is a consumer product regardless of whether the product has substantial
|
||||
commercial, industrial or non-consumer uses, unless such uses represent
|
||||
the only significant mode of use of the product.
|
||||
|
||||
"Installation Information" for a User Product means any methods,
|
||||
procedures, authorization keys, or other information required to install
|
||||
and execute modified versions of a covered work in that User Product from
|
||||
a modified version of its Corresponding Source. The information must
|
||||
suffice to ensure that the continued functioning of the modified object
|
||||
code is in no case prevented or interfered with solely because
|
||||
modification has been made.
|
||||
|
||||
If you convey an object code work under this section in, or with, or
|
||||
specifically for use in, a User Product, and the conveying occurs as
|
||||
part of a transaction in which the right of possession and use of the
|
||||
User Product is transferred to the recipient in perpetuity or for a
|
||||
fixed term (regardless of how the transaction is characterized), the
|
||||
Corresponding Source conveyed under this section must be accompanied
|
||||
by the Installation Information. But this requirement does not apply
|
||||
if neither you nor any third party retains the ability to install
|
||||
modified object code on the User Product (for example, the work has
|
||||
been installed in ROM).
|
||||
|
||||
The requirement to provide Installation Information does not include a
|
||||
requirement to continue to provide support service, warranty, or updates
|
||||
for a work that has been modified or installed by the recipient, or for
|
||||
the User Product in which it has been modified or installed. Access to a
|
||||
network may be denied when the modification itself materially and
|
||||
adversely affects the operation of the network or violates the rules and
|
||||
protocols for communication across the network.
|
||||
|
||||
Corresponding Source conveyed, and Installation Information provided,
|
||||
in accord with this section must be in a format that is publicly
|
||||
documented (and with an implementation available to the public in
|
||||
source code form), and must require no special password or key for
|
||||
unpacking, reading or copying.
|
||||
|
||||
7. Additional Terms.
|
||||
|
||||
"Additional permissions" are terms that supplement the terms of this
|
||||
License by making exceptions from one or more of its conditions.
|
||||
Additional permissions that are applicable to the entire Program shall
|
||||
be treated as though they were included in this License, to the extent
|
||||
that they are valid under applicable law. If additional permissions
|
||||
apply only to part of the Program, that part may be used separately
|
||||
under those permissions, but the entire Program remains governed by
|
||||
this License without regard to the additional permissions.
|
||||
|
||||
When you convey a copy of a covered work, you may at your option
|
||||
remove any additional permissions from that copy, or from any part of
|
||||
it. (Additional permissions may be written to require their own
|
||||
removal in certain cases when you modify the work.) You may place
|
||||
additional permissions on material, added by you to a covered work,
|
||||
for which you have or can give appropriate copyright permission.
|
||||
|
||||
Notwithstanding any other provision of this License, for material you
|
||||
add to a covered work, you may (if authorized by the copyright holders of
|
||||
that material) supplement the terms of this License with terms:
|
||||
|
||||
a) Disclaiming warranty or limiting liability differently from the
|
||||
terms of sections 15 and 16 of this License; or
|
||||
|
||||
b) Requiring preservation of specified reasonable legal notices or
|
||||
author attributions in that material or in the Appropriate Legal
|
||||
Notices displayed by works containing it; or
|
||||
|
||||
c) Prohibiting misrepresentation of the origin of that material, or
|
||||
requiring that modified versions of such material be marked in
|
||||
reasonable ways as different from the original version; or
|
||||
|
||||
d) Limiting the use for publicity purposes of names of licensors or
|
||||
authors of the material; or
|
||||
|
||||
e) Declining to grant rights under trademark law for use of some
|
||||
trade names, trademarks, or service marks; or
|
||||
|
||||
f) Requiring indemnification of licensors and authors of that
|
||||
material by anyone who conveys the material (or modified versions of
|
||||
it) with contractual assumptions of liability to the recipient, for
|
||||
any liability that these contractual assumptions directly impose on
|
||||
those licensors and authors.
|
||||
|
||||
All other non-permissive additional terms are considered "further
|
||||
restrictions" within the meaning of section 10. If the Program as you
|
||||
received it, or any part of it, contains a notice stating that it is
|
||||
governed by this License along with a term that is a further
|
||||
restriction, you may remove that term. If a license document contains
|
||||
a further restriction but permits relicensing or conveying under this
|
||||
License, you may add to a covered work material governed by the terms
|
||||
of that license document, provided that the further restriction does
|
||||
not survive such relicensing or conveying.
|
||||
|
||||
If you add terms to a covered work in accord with this section, you
|
||||
must place, in the relevant source files, a statement of the
|
||||
additional terms that apply to those files, or a notice indicating
|
||||
where to find the applicable terms.
|
||||
|
||||
Additional terms, permissive or non-permissive, may be stated in the
|
||||
form of a separately written license, or stated as exceptions;
|
||||
the above requirements apply either way.
|
||||
|
||||
8. Termination.
|
||||
|
||||
You may not propagate or modify a covered work except as expressly
|
||||
provided under this License. Any attempt otherwise to propagate or
|
||||
modify it is void, and will automatically terminate your rights under
|
||||
this License (including any patent licenses granted under the third
|
||||
paragraph of section 11).
|
||||
|
||||
However, if you cease all violation of this License, then your
|
||||
license from a particular copyright holder is reinstated (a)
|
||||
provisionally, unless and until the copyright holder explicitly and
|
||||
finally terminates your license, and (b) permanently, if the copyright
|
||||
holder fails to notify you of the violation by some reasonable means
|
||||
prior to 60 days after the cessation.
|
||||
|
||||
Moreover, your license from a particular copyright holder is
|
||||
reinstated permanently if the copyright holder notifies you of the
|
||||
violation by some reasonable means, this is the first time you have
|
||||
received notice of violation of this License (for any work) from that
|
||||
copyright holder, and you cure the violation prior to 30 days after
|
||||
your receipt of the notice.
|
||||
|
||||
Termination of your rights under this section does not terminate the
|
||||
licenses of parties who have received copies or rights from you under
|
||||
this License. If your rights have been terminated and not permanently
|
||||
reinstated, you do not qualify to receive new licenses for the same
|
||||
material under section 10.
|
||||
|
||||
9. Acceptance Not Required for Having Copies.
|
||||
|
||||
You are not required to accept this License in order to receive or
|
||||
run a copy of the Program. Ancillary propagation of a covered work
|
||||
occurring solely as a consequence of using peer-to-peer transmission
|
||||
to receive a copy likewise does not require acceptance. However,
|
||||
nothing other than this License grants you permission to propagate or
|
||||
modify any covered work. These actions infringe copyright if you do
|
||||
not accept this License. Therefore, by modifying or propagating a
|
||||
covered work, you indicate your acceptance of this License to do so.
|
||||
|
||||
10. Automatic Licensing of Downstream Recipients.
|
||||
|
||||
Each time you convey a covered work, the recipient automatically
|
||||
receives a license from the original licensors, to run, modify and
|
||||
propagate that work, subject to this License. You are not responsible
|
||||
for enforcing compliance by third parties with this License.
|
||||
|
||||
An "entity transaction" is a transaction transferring control of an
|
||||
organization, or substantially all assets of one, or subdividing an
|
||||
organization, or merging organizations. If propagation of a covered
|
||||
work results from an entity transaction, each party to that
|
||||
transaction who receives a copy of the work also receives whatever
|
||||
licenses to the work the party's predecessor in interest had or could
|
||||
give under the previous paragraph, plus a right to possession of the
|
||||
Corresponding Source of the work from the predecessor in interest, if
|
||||
the predecessor has it or can get it with reasonable efforts.
|
||||
|
||||
You may not impose any further restrictions on the exercise of the
|
||||
rights granted or affirmed under this License. For example, you may
|
||||
not impose a license fee, royalty, or other charge for exercise of
|
||||
rights granted under this License, and you may not initiate litigation
|
||||
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||
any patent claim is infringed by making, using, selling, offering for
|
||||
sale, or importing the Program or any portion of it.
|
||||
|
||||
11. Patents.
|
||||
|
||||
A "contributor" is a copyright holder who authorizes use under this
|
||||
License of the Program or a work on which the Program is based. The
|
||||
work thus licensed is called the contributor's "contributor version".
|
||||
|
||||
A contributor's "essential patent claims" are all patent claims
|
||||
owned or controlled by the contributor, whether already acquired or
|
||||
hereafter acquired, that would be infringed by some manner, permitted
|
||||
by this License, of making, using, or selling its contributor version,
|
||||
but do not include claims that would be infringed only as a
|
||||
consequence of further modification of the contributor version. For
|
||||
purposes of this definition, "control" includes the right to grant
|
||||
patent sublicenses in a manner consistent with the requirements of
|
||||
this License.
|
||||
|
||||
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||
patent license under the contributor's essential patent claims, to
|
||||
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||
propagate the contents of its contributor version.
|
||||
|
||||
In the following three paragraphs, a "patent license" is any express
|
||||
agreement or commitment, however denominated, not to enforce a patent
|
||||
(such as an express permission to practice a patent or covenant not to
|
||||
sue for patent infringement). To "grant" such a patent license to a
|
||||
party means to make such an agreement or commitment not to enforce a
|
||||
patent against the party.
|
||||
|
||||
If you convey a covered work, knowingly relying on a patent license,
|
||||
and the Corresponding Source of the work is not available for anyone
|
||||
to copy, free of charge and under the terms of this License, through a
|
||||
publicly available network server or other readily accessible means,
|
||||
then you must either (1) cause the Corresponding Source to be so
|
||||
available, or (2) arrange to deprive yourself of the benefit of the
|
||||
patent license for this particular work, or (3) arrange, in a manner
|
||||
consistent with the requirements of this License, to extend the patent
|
||||
license to downstream recipients. "Knowingly relying" means you have
|
||||
actual knowledge that, but for the patent license, your conveying the
|
||||
covered work in a country, or your recipient's use of the covered work
|
||||
in a country, would infringe one or more identifiable patents in that
|
||||
country that you have reason to believe are valid.
|
||||
|
||||
If, pursuant to or in connection with a single transaction or
|
||||
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||
covered work, and grant a patent license to some of the parties
|
||||
receiving the covered work authorizing them to use, propagate, modify
|
||||
or convey a specific copy of the covered work, then the patent license
|
||||
you grant is automatically extended to all recipients of the covered
|
||||
work and works based on it.
|
||||
|
||||
A patent license is "discriminatory" if it does not include within
|
||||
the scope of its coverage, prohibits the exercise of, or is
|
||||
conditioned on the non-exercise of one or more of the rights that are
|
||||
specifically granted under this License. You may not convey a covered
|
||||
work if you are a party to an arrangement with a third party that is
|
||||
in the business of distributing software, under which you make payment
|
||||
to the third party based on the extent of your activity of conveying
|
||||
the work, and under which the third party grants, to any of the
|
||||
parties who would receive the covered work from you, a discriminatory
|
||||
patent license (a) in connection with copies of the covered work
|
||||
conveyed by you (or copies made from those copies), or (b) primarily
|
||||
for and in connection with specific products or compilations that
|
||||
contain the covered work, unless you entered into that arrangement,
|
||||
or that patent license was granted, prior to 28 March 2007.
|
||||
|
||||
Nothing in this License shall be construed as excluding or limiting
|
||||
any implied license or other defenses to infringement that may
|
||||
otherwise be available to you under applicable patent law.
|
||||
|
||||
12. No Surrender of Others' Freedom.
|
||||
|
||||
If conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot convey a
|
||||
covered work so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you may
|
||||
not convey it at all. For example, if you agree to terms that obligate you
|
||||
to collect a royalty for further conveying from those to whom you convey
|
||||
the Program, the only way you could satisfy both those terms and this
|
||||
License would be to refrain entirely from conveying the Program.
|
||||
|
||||
13. Use with the GNU Affero General Public License.
|
||||
|
||||
Notwithstanding any other provision of this License, you have
|
||||
permission to link or combine any covered work with a work licensed
|
||||
under version 3 of the GNU Affero General Public License into a single
|
||||
combined work, and to convey the resulting work. The terms of this
|
||||
License will continue to apply to the part which is the covered work,
|
||||
but the special requirements of the GNU Affero General Public License,
|
||||
section 13, concerning interaction through a network will apply to the
|
||||
combination as such.
|
||||
|
||||
14. Revised Versions of this License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions of
|
||||
the GNU General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the
|
||||
Program specifies that a certain numbered version of the GNU General
|
||||
Public License "or any later version" applies to it, you have the
|
||||
option of following the terms and conditions either of that numbered
|
||||
version or of any later version published by the Free Software
|
||||
Foundation. If the Program does not specify a version number of the
|
||||
GNU General Public License, you may choose any version ever published
|
||||
by the Free Software Foundation.
|
||||
|
||||
If the Program specifies that a proxy can decide which future
|
||||
versions of the GNU General Public License can be used, that proxy's
|
||||
public statement of acceptance of a version permanently authorizes you
|
||||
to choose that version for the Program.
|
||||
|
||||
Later license versions may give you additional or different
|
||||
permissions. However, no additional obligations are imposed on any
|
||||
author or copyright holder as a result of your choosing to follow a
|
||||
later version.
|
||||
|
||||
15. Disclaimer of Warranty.
|
||||
|
||||
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
||||
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
||||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
||||
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. Limitation of Liability.
|
||||
|
||||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
||||
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
||||
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
||||
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGES.
|
||||
|
||||
17. Interpretation of Sections 15 and 16.
|
||||
|
||||
If the disclaimer of warranty and limitation of liability provided
|
||||
above cannot be given local legal effect according to their terms,
|
||||
reviewing courts shall apply local law that most closely approximates
|
||||
an absolute waiver of all civil liability in connection with the
|
||||
Program, unless a warranty or assumption of liability accompanies a
|
||||
copy of the Program in return for a fee.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
state the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
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/>.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program does terminal interaction, make it output a short
|
||||
notice like this when it starts in an interactive mode:
|
||||
|
||||
<program> Copyright (C) <year> <name of author>
|
||||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, your program's commands
|
||||
might be different; for a GUI interface, you would use an "about box".
|
||||
|
||||
You should also get your employer (if you work as a programmer) or school,
|
||||
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||
For more information on this, and how to apply and follow the GNU GPL, see
|
||||
<http://www.gnu.org/licenses/>.
|
||||
|
||||
The GNU General Public License does not permit incorporating your program
|
||||
into proprietary programs. If your program is a subroutine library, you
|
||||
may consider it more useful to permit linking proprietary applications with
|
||||
the library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License. But first, please read
|
||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
674
source/freeipmi/usr/share/doc/freeipmi/COPYING.ZRESEARCH
Normal file
674
source/freeipmi/usr/share/doc/freeipmi/COPYING.ZRESEARCH
Normal file
@ -0,0 +1,674 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The GNU General Public License is a free, copyleft license for
|
||||
software and other kinds of works.
|
||||
|
||||
The licenses for most software and other practical works are designed
|
||||
to take away your freedom to share and change the works. By contrast,
|
||||
the GNU General Public License is intended to guarantee your freedom to
|
||||
share and change all versions of a program--to make sure it remains free
|
||||
software for all its users. We, the Free Software Foundation, use the
|
||||
GNU General Public License for most of our software; it applies also to
|
||||
any other work released this way by its authors. You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
them if you wish), that you receive source code or can get it if you
|
||||
want it, that you can change the software or use pieces of it in new
|
||||
free programs, and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to prevent others from denying you
|
||||
these rights or asking you to surrender the rights. Therefore, you have
|
||||
certain responsibilities if you distribute copies of the software, or if
|
||||
you modify it: responsibilities to respect the freedom of others.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must pass on to the recipients the same
|
||||
freedoms that you received. You must make sure that they, too, receive
|
||||
or can get the source code. And you must show them these terms so they
|
||||
know their rights.
|
||||
|
||||
Developers that use the GNU GPL protect your rights with two steps:
|
||||
(1) assert copyright on the software, and (2) offer you this License
|
||||
giving you legal permission to copy, distribute and/or modify it.
|
||||
|
||||
For the developers' and authors' protection, the GPL clearly explains
|
||||
that there is no warranty for this free software. For both users' and
|
||||
authors' sake, the GPL requires that modified versions be marked as
|
||||
changed, so that their problems will not be attributed erroneously to
|
||||
authors of previous versions.
|
||||
|
||||
Some devices are designed to deny users access to install or run
|
||||
modified versions of the software inside them, although the manufacturer
|
||||
can do so. This is fundamentally incompatible with the aim of
|
||||
protecting users' freedom to change the software. The systematic
|
||||
pattern of such abuse occurs in the area of products for individuals to
|
||||
use, which is precisely where it is most unacceptable. Therefore, we
|
||||
have designed this version of the GPL to prohibit the practice for those
|
||||
products. If such problems arise substantially in other domains, we
|
||||
stand ready to extend this provision to those domains in future versions
|
||||
of the GPL, as needed to protect the freedom of users.
|
||||
|
||||
Finally, every program is threatened constantly by software patents.
|
||||
States should not allow patents to restrict development and use of
|
||||
software on general-purpose computers, but in those that do, we wish to
|
||||
avoid the special danger that patents applied to a free program could
|
||||
make it effectively proprietary. To prevent this, the GPL assures that
|
||||
patents cannot be used to render the program non-free.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
TERMS AND CONDITIONS
|
||||
|
||||
0. Definitions.
|
||||
|
||||
"This License" refers to version 3 of the GNU General Public License.
|
||||
|
||||
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||
works, such as semiconductor masks.
|
||||
|
||||
"The Program" refers to any copyrightable work licensed under this
|
||||
License. Each licensee is addressed as "you". "Licensees" and
|
||||
"recipients" may be individuals or organizations.
|
||||
|
||||
To "modify" a work means to copy from or adapt all or part of the work
|
||||
in a fashion requiring copyright permission, other than the making of an
|
||||
exact copy. The resulting work is called a "modified version" of the
|
||||
earlier work or a work "based on" the earlier work.
|
||||
|
||||
A "covered work" means either the unmodified Program or a work based
|
||||
on the Program.
|
||||
|
||||
To "propagate" a work means to do anything with it that, without
|
||||
permission, would make you directly or secondarily liable for
|
||||
infringement under applicable copyright law, except executing it on a
|
||||
computer or modifying a private copy. Propagation includes copying,
|
||||
distribution (with or without modification), making available to the
|
||||
public, and in some countries other activities as well.
|
||||
|
||||
To "convey" a work means any kind of propagation that enables other
|
||||
parties to make or receive copies. Mere interaction with a user through
|
||||
a computer network, with no transfer of a copy, is not conveying.
|
||||
|
||||
An interactive user interface displays "Appropriate Legal Notices"
|
||||
to the extent that it includes a convenient and prominently visible
|
||||
feature that (1) displays an appropriate copyright notice, and (2)
|
||||
tells the user that there is no warranty for the work (except to the
|
||||
extent that warranties are provided), that licensees may convey the
|
||||
work under this License, and how to view a copy of this License. If
|
||||
the interface presents a list of user commands or options, such as a
|
||||
menu, a prominent item in the list meets this criterion.
|
||||
|
||||
1. Source Code.
|
||||
|
||||
The "source code" for a work means the preferred form of the work
|
||||
for making modifications to it. "Object code" means any non-source
|
||||
form of a work.
|
||||
|
||||
A "Standard Interface" means an interface that either is an official
|
||||
standard defined by a recognized standards body, or, in the case of
|
||||
interfaces specified for a particular programming language, one that
|
||||
is widely used among developers working in that language.
|
||||
|
||||
The "System Libraries" of an executable work include anything, other
|
||||
than the work as a whole, that (a) is included in the normal form of
|
||||
packaging a Major Component, but which is not part of that Major
|
||||
Component, and (b) serves only to enable use of the work with that
|
||||
Major Component, or to implement a Standard Interface for which an
|
||||
implementation is available to the public in source code form. A
|
||||
"Major Component", in this context, means a major essential component
|
||||
(kernel, window system, and so on) of the specific operating system
|
||||
(if any) on which the executable work runs, or a compiler used to
|
||||
produce the work, or an object code interpreter used to run it.
|
||||
|
||||
The "Corresponding Source" for a work in object code form means all
|
||||
the source code needed to generate, install, and (for an executable
|
||||
work) run the object code and to modify the work, including scripts to
|
||||
control those activities. However, it does not include the work's
|
||||
System Libraries, or general-purpose tools or generally available free
|
||||
programs which are used unmodified in performing those activities but
|
||||
which are not part of the work. For example, Corresponding Source
|
||||
includes interface definition files associated with source files for
|
||||
the work, and the source code for shared libraries and dynamically
|
||||
linked subprograms that the work is specifically designed to require,
|
||||
such as by intimate data communication or control flow between those
|
||||
subprograms and other parts of the work.
|
||||
|
||||
The Corresponding Source need not include anything that users
|
||||
can regenerate automatically from other parts of the Corresponding
|
||||
Source.
|
||||
|
||||
The Corresponding Source for a work in source code form is that
|
||||
same work.
|
||||
|
||||
2. Basic Permissions.
|
||||
|
||||
All rights granted under this License are granted for the term of
|
||||
copyright on the Program, and are irrevocable provided the stated
|
||||
conditions are met. This License explicitly affirms your unlimited
|
||||
permission to run the unmodified Program. The output from running a
|
||||
covered work is covered by this License only if the output, given its
|
||||
content, constitutes a covered work. This License acknowledges your
|
||||
rights of fair use or other equivalent, as provided by copyright law.
|
||||
|
||||
You may make, run and propagate covered works that you do not
|
||||
convey, without conditions so long as your license otherwise remains
|
||||
in force. You may convey covered works to others for the sole purpose
|
||||
of having them make modifications exclusively for you, or provide you
|
||||
with facilities for running those works, provided that you comply with
|
||||
the terms of this License in conveying all material for which you do
|
||||
not control copyright. Those thus making or running the covered works
|
||||
for you must do so exclusively on your behalf, under your direction
|
||||
and control, on terms that prohibit them from making any copies of
|
||||
your copyrighted material outside their relationship with you.
|
||||
|
||||
Conveying under any other circumstances is permitted solely under
|
||||
the conditions stated below. Sublicensing is not allowed; section 10
|
||||
makes it unnecessary.
|
||||
|
||||
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||
|
||||
No covered work shall be deemed part of an effective technological
|
||||
measure under any applicable law fulfilling obligations under article
|
||||
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||
similar laws prohibiting or restricting circumvention of such
|
||||
measures.
|
||||
|
||||
When you convey a covered work, you waive any legal power to forbid
|
||||
circumvention of technological measures to the extent such circumvention
|
||||
is effected by exercising rights under this License with respect to
|
||||
the covered work, and you disclaim any intention to limit operation or
|
||||
modification of the work as a means of enforcing, against the work's
|
||||
users, your or third parties' legal rights to forbid circumvention of
|
||||
technological measures.
|
||||
|
||||
4. Conveying Verbatim Copies.
|
||||
|
||||
You may convey verbatim copies of the Program's source code as you
|
||||
receive it, in any medium, provided that you conspicuously and
|
||||
appropriately publish on each copy an appropriate copyright notice;
|
||||
keep intact all notices stating that this License and any
|
||||
non-permissive terms added in accord with section 7 apply to the code;
|
||||
keep intact all notices of the absence of any warranty; and give all
|
||||
recipients a copy of this License along with the Program.
|
||||
|
||||
You may charge any price or no price for each copy that you convey,
|
||||
and you may offer support or warranty protection for a fee.
|
||||
|
||||
5. Conveying Modified Source Versions.
|
||||
|
||||
You may convey a work based on the Program, or the modifications to
|
||||
produce it from the Program, in the form of source code under the
|
||||
terms of section 4, provided that you also meet all of these conditions:
|
||||
|
||||
a) The work must carry prominent notices stating that you modified
|
||||
it, and giving a relevant date.
|
||||
|
||||
b) The work must carry prominent notices stating that it is
|
||||
released under this License and any conditions added under section
|
||||
7. This requirement modifies the requirement in section 4 to
|
||||
"keep intact all notices".
|
||||
|
||||
c) You must license the entire work, as a whole, under this
|
||||
License to anyone who comes into possession of a copy. This
|
||||
License will therefore apply, along with any applicable section 7
|
||||
additional terms, to the whole of the work, and all its parts,
|
||||
regardless of how they are packaged. This License gives no
|
||||
permission to license the work in any other way, but it does not
|
||||
invalidate such permission if you have separately received it.
|
||||
|
||||
d) If the work has interactive user interfaces, each must display
|
||||
Appropriate Legal Notices; however, if the Program has interactive
|
||||
interfaces that do not display Appropriate Legal Notices, your
|
||||
work need not make them do so.
|
||||
|
||||
A compilation of a covered work with other separate and independent
|
||||
works, which are not by their nature extensions of the covered work,
|
||||
and which are not combined with it such as to form a larger program,
|
||||
in or on a volume of a storage or distribution medium, is called an
|
||||
"aggregate" if the compilation and its resulting copyright are not
|
||||
used to limit the access or legal rights of the compilation's users
|
||||
beyond what the individual works permit. Inclusion of a covered work
|
||||
in an aggregate does not cause this License to apply to the other
|
||||
parts of the aggregate.
|
||||
|
||||
6. Conveying Non-Source Forms.
|
||||
|
||||
You may convey a covered work in object code form under the terms
|
||||
of sections 4 and 5, provided that you also convey the
|
||||
machine-readable Corresponding Source under the terms of this License,
|
||||
in one of these ways:
|
||||
|
||||
a) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by the
|
||||
Corresponding Source fixed on a durable physical medium
|
||||
customarily used for software interchange.
|
||||
|
||||
b) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by a
|
||||
written offer, valid for at least three years and valid for as
|
||||
long as you offer spare parts or customer support for that product
|
||||
model, to give anyone who possesses the object code either (1) a
|
||||
copy of the Corresponding Source for all the software in the
|
||||
product that is covered by this License, on a durable physical
|
||||
medium customarily used for software interchange, for a price no
|
||||
more than your reasonable cost of physically performing this
|
||||
conveying of source, or (2) access to copy the
|
||||
Corresponding Source from a network server at no charge.
|
||||
|
||||
c) Convey individual copies of the object code with a copy of the
|
||||
written offer to provide the Corresponding Source. This
|
||||
alternative is allowed only occasionally and noncommercially, and
|
||||
only if you received the object code with such an offer, in accord
|
||||
with subsection 6b.
|
||||
|
||||
d) Convey the object code by offering access from a designated
|
||||
place (gratis or for a charge), and offer equivalent access to the
|
||||
Corresponding Source in the same way through the same place at no
|
||||
further charge. You need not require recipients to copy the
|
||||
Corresponding Source along with the object code. If the place to
|
||||
copy the object code is a network server, the Corresponding Source
|
||||
may be on a different server (operated by you or a third party)
|
||||
that supports equivalent copying facilities, provided you maintain
|
||||
clear directions next to the object code saying where to find the
|
||||
Corresponding Source. Regardless of what server hosts the
|
||||
Corresponding Source, you remain obligated to ensure that it is
|
||||
available for as long as needed to satisfy these requirements.
|
||||
|
||||
e) Convey the object code using peer-to-peer transmission, provided
|
||||
you inform other peers where the object code and Corresponding
|
||||
Source of the work are being offered to the general public at no
|
||||
charge under subsection 6d.
|
||||
|
||||
A separable portion of the object code, whose source code is excluded
|
||||
from the Corresponding Source as a System Library, need not be
|
||||
included in conveying the object code work.
|
||||
|
||||
A "User Product" is either (1) a "consumer product", which means any
|
||||
tangible personal property which is normally used for personal, family,
|
||||
or household purposes, or (2) anything designed or sold for incorporation
|
||||
into a dwelling. In determining whether a product is a consumer product,
|
||||
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||
product received by a particular user, "normally used" refers to a
|
||||
typical or common use of that class of product, regardless of the status
|
||||
of the particular user or of the way in which the particular user
|
||||
actually uses, or expects or is expected to use, the product. A product
|
||||
is a consumer product regardless of whether the product has substantial
|
||||
commercial, industrial or non-consumer uses, unless such uses represent
|
||||
the only significant mode of use of the product.
|
||||
|
||||
"Installation Information" for a User Product means any methods,
|
||||
procedures, authorization keys, or other information required to install
|
||||
and execute modified versions of a covered work in that User Product from
|
||||
a modified version of its Corresponding Source. The information must
|
||||
suffice to ensure that the continued functioning of the modified object
|
||||
code is in no case prevented or interfered with solely because
|
||||
modification has been made.
|
||||
|
||||
If you convey an object code work under this section in, or with, or
|
||||
specifically for use in, a User Product, and the conveying occurs as
|
||||
part of a transaction in which the right of possession and use of the
|
||||
User Product is transferred to the recipient in perpetuity or for a
|
||||
fixed term (regardless of how the transaction is characterized), the
|
||||
Corresponding Source conveyed under this section must be accompanied
|
||||
by the Installation Information. But this requirement does not apply
|
||||
if neither you nor any third party retains the ability to install
|
||||
modified object code on the User Product (for example, the work has
|
||||
been installed in ROM).
|
||||
|
||||
The requirement to provide Installation Information does not include a
|
||||
requirement to continue to provide support service, warranty, or updates
|
||||
for a work that has been modified or installed by the recipient, or for
|
||||
the User Product in which it has been modified or installed. Access to a
|
||||
network may be denied when the modification itself materially and
|
||||
adversely affects the operation of the network or violates the rules and
|
||||
protocols for communication across the network.
|
||||
|
||||
Corresponding Source conveyed, and Installation Information provided,
|
||||
in accord with this section must be in a format that is publicly
|
||||
documented (and with an implementation available to the public in
|
||||
source code form), and must require no special password or key for
|
||||
unpacking, reading or copying.
|
||||
|
||||
7. Additional Terms.
|
||||
|
||||
"Additional permissions" are terms that supplement the terms of this
|
||||
License by making exceptions from one or more of its conditions.
|
||||
Additional permissions that are applicable to the entire Program shall
|
||||
be treated as though they were included in this License, to the extent
|
||||
that they are valid under applicable law. If additional permissions
|
||||
apply only to part of the Program, that part may be used separately
|
||||
under those permissions, but the entire Program remains governed by
|
||||
this License without regard to the additional permissions.
|
||||
|
||||
When you convey a copy of a covered work, you may at your option
|
||||
remove any additional permissions from that copy, or from any part of
|
||||
it. (Additional permissions may be written to require their own
|
||||
removal in certain cases when you modify the work.) You may place
|
||||
additional permissions on material, added by you to a covered work,
|
||||
for which you have or can give appropriate copyright permission.
|
||||
|
||||
Notwithstanding any other provision of this License, for material you
|
||||
add to a covered work, you may (if authorized by the copyright holders of
|
||||
that material) supplement the terms of this License with terms:
|
||||
|
||||
a) Disclaiming warranty or limiting liability differently from the
|
||||
terms of sections 15 and 16 of this License; or
|
||||
|
||||
b) Requiring preservation of specified reasonable legal notices or
|
||||
author attributions in that material or in the Appropriate Legal
|
||||
Notices displayed by works containing it; or
|
||||
|
||||
c) Prohibiting misrepresentation of the origin of that material, or
|
||||
requiring that modified versions of such material be marked in
|
||||
reasonable ways as different from the original version; or
|
||||
|
||||
d) Limiting the use for publicity purposes of names of licensors or
|
||||
authors of the material; or
|
||||
|
||||
e) Declining to grant rights under trademark law for use of some
|
||||
trade names, trademarks, or service marks; or
|
||||
|
||||
f) Requiring indemnification of licensors and authors of that
|
||||
material by anyone who conveys the material (or modified versions of
|
||||
it) with contractual assumptions of liability to the recipient, for
|
||||
any liability that these contractual assumptions directly impose on
|
||||
those licensors and authors.
|
||||
|
||||
All other non-permissive additional terms are considered "further
|
||||
restrictions" within the meaning of section 10. If the Program as you
|
||||
received it, or any part of it, contains a notice stating that it is
|
||||
governed by this License along with a term that is a further
|
||||
restriction, you may remove that term. If a license document contains
|
||||
a further restriction but permits relicensing or conveying under this
|
||||
License, you may add to a covered work material governed by the terms
|
||||
of that license document, provided that the further restriction does
|
||||
not survive such relicensing or conveying.
|
||||
|
||||
If you add terms to a covered work in accord with this section, you
|
||||
must place, in the relevant source files, a statement of the
|
||||
additional terms that apply to those files, or a notice indicating
|
||||
where to find the applicable terms.
|
||||
|
||||
Additional terms, permissive or non-permissive, may be stated in the
|
||||
form of a separately written license, or stated as exceptions;
|
||||
the above requirements apply either way.
|
||||
|
||||
8. Termination.
|
||||
|
||||
You may not propagate or modify a covered work except as expressly
|
||||
provided under this License. Any attempt otherwise to propagate or
|
||||
modify it is void, and will automatically terminate your rights under
|
||||
this License (including any patent licenses granted under the third
|
||||
paragraph of section 11).
|
||||
|
||||
However, if you cease all violation of this License, then your
|
||||
license from a particular copyright holder is reinstated (a)
|
||||
provisionally, unless and until the copyright holder explicitly and
|
||||
finally terminates your license, and (b) permanently, if the copyright
|
||||
holder fails to notify you of the violation by some reasonable means
|
||||
prior to 60 days after the cessation.
|
||||
|
||||
Moreover, your license from a particular copyright holder is
|
||||
reinstated permanently if the copyright holder notifies you of the
|
||||
violation by some reasonable means, this is the first time you have
|
||||
received notice of violation of this License (for any work) from that
|
||||
copyright holder, and you cure the violation prior to 30 days after
|
||||
your receipt of the notice.
|
||||
|
||||
Termination of your rights under this section does not terminate the
|
||||
licenses of parties who have received copies or rights from you under
|
||||
this License. If your rights have been terminated and not permanently
|
||||
reinstated, you do not qualify to receive new licenses for the same
|
||||
material under section 10.
|
||||
|
||||
9. Acceptance Not Required for Having Copies.
|
||||
|
||||
You are not required to accept this License in order to receive or
|
||||
run a copy of the Program. Ancillary propagation of a covered work
|
||||
occurring solely as a consequence of using peer-to-peer transmission
|
||||
to receive a copy likewise does not require acceptance. However,
|
||||
nothing other than this License grants you permission to propagate or
|
||||
modify any covered work. These actions infringe copyright if you do
|
||||
not accept this License. Therefore, by modifying or propagating a
|
||||
covered work, you indicate your acceptance of this License to do so.
|
||||
|
||||
10. Automatic Licensing of Downstream Recipients.
|
||||
|
||||
Each time you convey a covered work, the recipient automatically
|
||||
receives a license from the original licensors, to run, modify and
|
||||
propagate that work, subject to this License. You are not responsible
|
||||
for enforcing compliance by third parties with this License.
|
||||
|
||||
An "entity transaction" is a transaction transferring control of an
|
||||
organization, or substantially all assets of one, or subdividing an
|
||||
organization, or merging organizations. If propagation of a covered
|
||||
work results from an entity transaction, each party to that
|
||||
transaction who receives a copy of the work also receives whatever
|
||||
licenses to the work the party's predecessor in interest had or could
|
||||
give under the previous paragraph, plus a right to possession of the
|
||||
Corresponding Source of the work from the predecessor in interest, if
|
||||
the predecessor has it or can get it with reasonable efforts.
|
||||
|
||||
You may not impose any further restrictions on the exercise of the
|
||||
rights granted or affirmed under this License. For example, you may
|
||||
not impose a license fee, royalty, or other charge for exercise of
|
||||
rights granted under this License, and you may not initiate litigation
|
||||
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||
any patent claim is infringed by making, using, selling, offering for
|
||||
sale, or importing the Program or any portion of it.
|
||||
|
||||
11. Patents.
|
||||
|
||||
A "contributor" is a copyright holder who authorizes use under this
|
||||
License of the Program or a work on which the Program is based. The
|
||||
work thus licensed is called the contributor's "contributor version".
|
||||
|
||||
A contributor's "essential patent claims" are all patent claims
|
||||
owned or controlled by the contributor, whether already acquired or
|
||||
hereafter acquired, that would be infringed by some manner, permitted
|
||||
by this License, of making, using, or selling its contributor version,
|
||||
but do not include claims that would be infringed only as a
|
||||
consequence of further modification of the contributor version. For
|
||||
purposes of this definition, "control" includes the right to grant
|
||||
patent sublicenses in a manner consistent with the requirements of
|
||||
this License.
|
||||
|
||||
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||
patent license under the contributor's essential patent claims, to
|
||||
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||
propagate the contents of its contributor version.
|
||||
|
||||
In the following three paragraphs, a "patent license" is any express
|
||||
agreement or commitment, however denominated, not to enforce a patent
|
||||
(such as an express permission to practice a patent or covenant not to
|
||||
sue for patent infringement). To "grant" such a patent license to a
|
||||
party means to make such an agreement or commitment not to enforce a
|
||||
patent against the party.
|
||||
|
||||
If you convey a covered work, knowingly relying on a patent license,
|
||||
and the Corresponding Source of the work is not available for anyone
|
||||
to copy, free of charge and under the terms of this License, through a
|
||||
publicly available network server or other readily accessible means,
|
||||
then you must either (1) cause the Corresponding Source to be so
|
||||
available, or (2) arrange to deprive yourself of the benefit of the
|
||||
patent license for this particular work, or (3) arrange, in a manner
|
||||
consistent with the requirements of this License, to extend the patent
|
||||
license to downstream recipients. "Knowingly relying" means you have
|
||||
actual knowledge that, but for the patent license, your conveying the
|
||||
covered work in a country, or your recipient's use of the covered work
|
||||
in a country, would infringe one or more identifiable patents in that
|
||||
country that you have reason to believe are valid.
|
||||
|
||||
If, pursuant to or in connection with a single transaction or
|
||||
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||
covered work, and grant a patent license to some of the parties
|
||||
receiving the covered work authorizing them to use, propagate, modify
|
||||
or convey a specific copy of the covered work, then the patent license
|
||||
you grant is automatically extended to all recipients of the covered
|
||||
work and works based on it.
|
||||
|
||||
A patent license is "discriminatory" if it does not include within
|
||||
the scope of its coverage, prohibits the exercise of, or is
|
||||
conditioned on the non-exercise of one or more of the rights that are
|
||||
specifically granted under this License. You may not convey a covered
|
||||
work if you are a party to an arrangement with a third party that is
|
||||
in the business of distributing software, under which you make payment
|
||||
to the third party based on the extent of your activity of conveying
|
||||
the work, and under which the third party grants, to any of the
|
||||
parties who would receive the covered work from you, a discriminatory
|
||||
patent license (a) in connection with copies of the covered work
|
||||
conveyed by you (or copies made from those copies), or (b) primarily
|
||||
for and in connection with specific products or compilations that
|
||||
contain the covered work, unless you entered into that arrangement,
|
||||
or that patent license was granted, prior to 28 March 2007.
|
||||
|
||||
Nothing in this License shall be construed as excluding or limiting
|
||||
any implied license or other defenses to infringement that may
|
||||
otherwise be available to you under applicable patent law.
|
||||
|
||||
12. No Surrender of Others' Freedom.
|
||||
|
||||
If conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot convey a
|
||||
covered work so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you may
|
||||
not convey it at all. For example, if you agree to terms that obligate you
|
||||
to collect a royalty for further conveying from those to whom you convey
|
||||
the Program, the only way you could satisfy both those terms and this
|
||||
License would be to refrain entirely from conveying the Program.
|
||||
|
||||
13. Use with the GNU Affero General Public License.
|
||||
|
||||
Notwithstanding any other provision of this License, you have
|
||||
permission to link or combine any covered work with a work licensed
|
||||
under version 3 of the GNU Affero General Public License into a single
|
||||
combined work, and to convey the resulting work. The terms of this
|
||||
License will continue to apply to the part which is the covered work,
|
||||
but the special requirements of the GNU Affero General Public License,
|
||||
section 13, concerning interaction through a network will apply to the
|
||||
combination as such.
|
||||
|
||||
14. Revised Versions of this License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions of
|
||||
the GNU General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the
|
||||
Program specifies that a certain numbered version of the GNU General
|
||||
Public License "or any later version" applies to it, you have the
|
||||
option of following the terms and conditions either of that numbered
|
||||
version or of any later version published by the Free Software
|
||||
Foundation. If the Program does not specify a version number of the
|
||||
GNU General Public License, you may choose any version ever published
|
||||
by the Free Software Foundation.
|
||||
|
||||
If the Program specifies that a proxy can decide which future
|
||||
versions of the GNU General Public License can be used, that proxy's
|
||||
public statement of acceptance of a version permanently authorizes you
|
||||
to choose that version for the Program.
|
||||
|
||||
Later license versions may give you additional or different
|
||||
permissions. However, no additional obligations are imposed on any
|
||||
author or copyright holder as a result of your choosing to follow a
|
||||
later version.
|
||||
|
||||
15. Disclaimer of Warranty.
|
||||
|
||||
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
||||
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
||||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
||||
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. Limitation of Liability.
|
||||
|
||||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
||||
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
||||
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
||||
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGES.
|
||||
|
||||
17. Interpretation of Sections 15 and 16.
|
||||
|
||||
If the disclaimer of warranty and limitation of liability provided
|
||||
above cannot be given local legal effect according to their terms,
|
||||
reviewing courts shall apply local law that most closely approximates
|
||||
an absolute waiver of all civil liability in connection with the
|
||||
Program, unless a warranty or assumption of liability accompanies a
|
||||
copy of the Program in return for a fee.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
state the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
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/>.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program does terminal interaction, make it output a short
|
||||
notice like this when it starts in an interactive mode:
|
||||
|
||||
<program> Copyright (C) <year> <name of author>
|
||||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, your program's commands
|
||||
might be different; for a GUI interface, you would use an "about box".
|
||||
|
||||
You should also get your employer (if you work as a programmer) or school,
|
||||
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||
For more information on this, and how to apply and follow the GNU GPL, see
|
||||
<http://www.gnu.org/licenses/>.
|
||||
|
||||
The GNU General Public License does not permit incorporating your program
|
||||
into proprietary programs. If your program is a subroutine library, you
|
||||
may consider it more useful to permit linking proprietary applications with
|
||||
the library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License. But first, please read
|
||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
674
source/freeipmi/usr/share/doc/freeipmi/COPYING.bmc-watchdog
Normal file
674
source/freeipmi/usr/share/doc/freeipmi/COPYING.bmc-watchdog
Normal file
@ -0,0 +1,674 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The GNU General Public License is a free, copyleft license for
|
||||
software and other kinds of works.
|
||||
|
||||
The licenses for most software and other practical works are designed
|
||||
to take away your freedom to share and change the works. By contrast,
|
||||
the GNU General Public License is intended to guarantee your freedom to
|
||||
share and change all versions of a program--to make sure it remains free
|
||||
software for all its users. We, the Free Software Foundation, use the
|
||||
GNU General Public License for most of our software; it applies also to
|
||||
any other work released this way by its authors. You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
them if you wish), that you receive source code or can get it if you
|
||||
want it, that you can change the software or use pieces of it in new
|
||||
free programs, and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to prevent others from denying you
|
||||
these rights or asking you to surrender the rights. Therefore, you have
|
||||
certain responsibilities if you distribute copies of the software, or if
|
||||
you modify it: responsibilities to respect the freedom of others.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must pass on to the recipients the same
|
||||
freedoms that you received. You must make sure that they, too, receive
|
||||
or can get the source code. And you must show them these terms so they
|
||||
know their rights.
|
||||
|
||||
Developers that use the GNU GPL protect your rights with two steps:
|
||||
(1) assert copyright on the software, and (2) offer you this License
|
||||
giving you legal permission to copy, distribute and/or modify it.
|
||||
|
||||
For the developers' and authors' protection, the GPL clearly explains
|
||||
that there is no warranty for this free software. For both users' and
|
||||
authors' sake, the GPL requires that modified versions be marked as
|
||||
changed, so that their problems will not be attributed erroneously to
|
||||
authors of previous versions.
|
||||
|
||||
Some devices are designed to deny users access to install or run
|
||||
modified versions of the software inside them, although the manufacturer
|
||||
can do so. This is fundamentally incompatible with the aim of
|
||||
protecting users' freedom to change the software. The systematic
|
||||
pattern of such abuse occurs in the area of products for individuals to
|
||||
use, which is precisely where it is most unacceptable. Therefore, we
|
||||
have designed this version of the GPL to prohibit the practice for those
|
||||
products. If such problems arise substantially in other domains, we
|
||||
stand ready to extend this provision to those domains in future versions
|
||||
of the GPL, as needed to protect the freedom of users.
|
||||
|
||||
Finally, every program is threatened constantly by software patents.
|
||||
States should not allow patents to restrict development and use of
|
||||
software on general-purpose computers, but in those that do, we wish to
|
||||
avoid the special danger that patents applied to a free program could
|
||||
make it effectively proprietary. To prevent this, the GPL assures that
|
||||
patents cannot be used to render the program non-free.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
TERMS AND CONDITIONS
|
||||
|
||||
0. Definitions.
|
||||
|
||||
"This License" refers to version 3 of the GNU General Public License.
|
||||
|
||||
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||
works, such as semiconductor masks.
|
||||
|
||||
"The Program" refers to any copyrightable work licensed under this
|
||||
License. Each licensee is addressed as "you". "Licensees" and
|
||||
"recipients" may be individuals or organizations.
|
||||
|
||||
To "modify" a work means to copy from or adapt all or part of the work
|
||||
in a fashion requiring copyright permission, other than the making of an
|
||||
exact copy. The resulting work is called a "modified version" of the
|
||||
earlier work or a work "based on" the earlier work.
|
||||
|
||||
A "covered work" means either the unmodified Program or a work based
|
||||
on the Program.
|
||||
|
||||
To "propagate" a work means to do anything with it that, without
|
||||
permission, would make you directly or secondarily liable for
|
||||
infringement under applicable copyright law, except executing it on a
|
||||
computer or modifying a private copy. Propagation includes copying,
|
||||
distribution (with or without modification), making available to the
|
||||
public, and in some countries other activities as well.
|
||||
|
||||
To "convey" a work means any kind of propagation that enables other
|
||||
parties to make or receive copies. Mere interaction with a user through
|
||||
a computer network, with no transfer of a copy, is not conveying.
|
||||
|
||||
An interactive user interface displays "Appropriate Legal Notices"
|
||||
to the extent that it includes a convenient and prominently visible
|
||||
feature that (1) displays an appropriate copyright notice, and (2)
|
||||
tells the user that there is no warranty for the work (except to the
|
||||
extent that warranties are provided), that licensees may convey the
|
||||
work under this License, and how to view a copy of this License. If
|
||||
the interface presents a list of user commands or options, such as a
|
||||
menu, a prominent item in the list meets this criterion.
|
||||
|
||||
1. Source Code.
|
||||
|
||||
The "source code" for a work means the preferred form of the work
|
||||
for making modifications to it. "Object code" means any non-source
|
||||
form of a work.
|
||||
|
||||
A "Standard Interface" means an interface that either is an official
|
||||
standard defined by a recognized standards body, or, in the case of
|
||||
interfaces specified for a particular programming language, one that
|
||||
is widely used among developers working in that language.
|
||||
|
||||
The "System Libraries" of an executable work include anything, other
|
||||
than the work as a whole, that (a) is included in the normal form of
|
||||
packaging a Major Component, but which is not part of that Major
|
||||
Component, and (b) serves only to enable use of the work with that
|
||||
Major Component, or to implement a Standard Interface for which an
|
||||
implementation is available to the public in source code form. A
|
||||
"Major Component", in this context, means a major essential component
|
||||
(kernel, window system, and so on) of the specific operating system
|
||||
(if any) on which the executable work runs, or a compiler used to
|
||||
produce the work, or an object code interpreter used to run it.
|
||||
|
||||
The "Corresponding Source" for a work in object code form means all
|
||||
the source code needed to generate, install, and (for an executable
|
||||
work) run the object code and to modify the work, including scripts to
|
||||
control those activities. However, it does not include the work's
|
||||
System Libraries, or general-purpose tools or generally available free
|
||||
programs which are used unmodified in performing those activities but
|
||||
which are not part of the work. For example, Corresponding Source
|
||||
includes interface definition files associated with source files for
|
||||
the work, and the source code for shared libraries and dynamically
|
||||
linked subprograms that the work is specifically designed to require,
|
||||
such as by intimate data communication or control flow between those
|
||||
subprograms and other parts of the work.
|
||||
|
||||
The Corresponding Source need not include anything that users
|
||||
can regenerate automatically from other parts of the Corresponding
|
||||
Source.
|
||||
|
||||
The Corresponding Source for a work in source code form is that
|
||||
same work.
|
||||
|
||||
2. Basic Permissions.
|
||||
|
||||
All rights granted under this License are granted for the term of
|
||||
copyright on the Program, and are irrevocable provided the stated
|
||||
conditions are met. This License explicitly affirms your unlimited
|
||||
permission to run the unmodified Program. The output from running a
|
||||
covered work is covered by this License only if the output, given its
|
||||
content, constitutes a covered work. This License acknowledges your
|
||||
rights of fair use or other equivalent, as provided by copyright law.
|
||||
|
||||
You may make, run and propagate covered works that you do not
|
||||
convey, without conditions so long as your license otherwise remains
|
||||
in force. You may convey covered works to others for the sole purpose
|
||||
of having them make modifications exclusively for you, or provide you
|
||||
with facilities for running those works, provided that you comply with
|
||||
the terms of this License in conveying all material for which you do
|
||||
not control copyright. Those thus making or running the covered works
|
||||
for you must do so exclusively on your behalf, under your direction
|
||||
and control, on terms that prohibit them from making any copies of
|
||||
your copyrighted material outside their relationship with you.
|
||||
|
||||
Conveying under any other circumstances is permitted solely under
|
||||
the conditions stated below. Sublicensing is not allowed; section 10
|
||||
makes it unnecessary.
|
||||
|
||||
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||
|
||||
No covered work shall be deemed part of an effective technological
|
||||
measure under any applicable law fulfilling obligations under article
|
||||
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||
similar laws prohibiting or restricting circumvention of such
|
||||
measures.
|
||||
|
||||
When you convey a covered work, you waive any legal power to forbid
|
||||
circumvention of technological measures to the extent such circumvention
|
||||
is effected by exercising rights under this License with respect to
|
||||
the covered work, and you disclaim any intention to limit operation or
|
||||
modification of the work as a means of enforcing, against the work's
|
||||
users, your or third parties' legal rights to forbid circumvention of
|
||||
technological measures.
|
||||
|
||||
4. Conveying Verbatim Copies.
|
||||
|
||||
You may convey verbatim copies of the Program's source code as you
|
||||
receive it, in any medium, provided that you conspicuously and
|
||||
appropriately publish on each copy an appropriate copyright notice;
|
||||
keep intact all notices stating that this License and any
|
||||
non-permissive terms added in accord with section 7 apply to the code;
|
||||
keep intact all notices of the absence of any warranty; and give all
|
||||
recipients a copy of this License along with the Program.
|
||||
|
||||
You may charge any price or no price for each copy that you convey,
|
||||
and you may offer support or warranty protection for a fee.
|
||||
|
||||
5. Conveying Modified Source Versions.
|
||||
|
||||
You may convey a work based on the Program, or the modifications to
|
||||
produce it from the Program, in the form of source code under the
|
||||
terms of section 4, provided that you also meet all of these conditions:
|
||||
|
||||
a) The work must carry prominent notices stating that you modified
|
||||
it, and giving a relevant date.
|
||||
|
||||
b) The work must carry prominent notices stating that it is
|
||||
released under this License and any conditions added under section
|
||||
7. This requirement modifies the requirement in section 4 to
|
||||
"keep intact all notices".
|
||||
|
||||
c) You must license the entire work, as a whole, under this
|
||||
License to anyone who comes into possession of a copy. This
|
||||
License will therefore apply, along with any applicable section 7
|
||||
additional terms, to the whole of the work, and all its parts,
|
||||
regardless of how they are packaged. This License gives no
|
||||
permission to license the work in any other way, but it does not
|
||||
invalidate such permission if you have separately received it.
|
||||
|
||||
d) If the work has interactive user interfaces, each must display
|
||||
Appropriate Legal Notices; however, if the Program has interactive
|
||||
interfaces that do not display Appropriate Legal Notices, your
|
||||
work need not make them do so.
|
||||
|
||||
A compilation of a covered work with other separate and independent
|
||||
works, which are not by their nature extensions of the covered work,
|
||||
and which are not combined with it such as to form a larger program,
|
||||
in or on a volume of a storage or distribution medium, is called an
|
||||
"aggregate" if the compilation and its resulting copyright are not
|
||||
used to limit the access or legal rights of the compilation's users
|
||||
beyond what the individual works permit. Inclusion of a covered work
|
||||
in an aggregate does not cause this License to apply to the other
|
||||
parts of the aggregate.
|
||||
|
||||
6. Conveying Non-Source Forms.
|
||||
|
||||
You may convey a covered work in object code form under the terms
|
||||
of sections 4 and 5, provided that you also convey the
|
||||
machine-readable Corresponding Source under the terms of this License,
|
||||
in one of these ways:
|
||||
|
||||
a) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by the
|
||||
Corresponding Source fixed on a durable physical medium
|
||||
customarily used for software interchange.
|
||||
|
||||
b) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by a
|
||||
written offer, valid for at least three years and valid for as
|
||||
long as you offer spare parts or customer support for that product
|
||||
model, to give anyone who possesses the object code either (1) a
|
||||
copy of the Corresponding Source for all the software in the
|
||||
product that is covered by this License, on a durable physical
|
||||
medium customarily used for software interchange, for a price no
|
||||
more than your reasonable cost of physically performing this
|
||||
conveying of source, or (2) access to copy the
|
||||
Corresponding Source from a network server at no charge.
|
||||
|
||||
c) Convey individual copies of the object code with a copy of the
|
||||
written offer to provide the Corresponding Source. This
|
||||
alternative is allowed only occasionally and noncommercially, and
|
||||
only if you received the object code with such an offer, in accord
|
||||
with subsection 6b.
|
||||
|
||||
d) Convey the object code by offering access from a designated
|
||||
place (gratis or for a charge), and offer equivalent access to the
|
||||
Corresponding Source in the same way through the same place at no
|
||||
further charge. You need not require recipients to copy the
|
||||
Corresponding Source along with the object code. If the place to
|
||||
copy the object code is a network server, the Corresponding Source
|
||||
may be on a different server (operated by you or a third party)
|
||||
that supports equivalent copying facilities, provided you maintain
|
||||
clear directions next to the object code saying where to find the
|
||||
Corresponding Source. Regardless of what server hosts the
|
||||
Corresponding Source, you remain obligated to ensure that it is
|
||||
available for as long as needed to satisfy these requirements.
|
||||
|
||||
e) Convey the object code using peer-to-peer transmission, provided
|
||||
you inform other peers where the object code and Corresponding
|
||||
Source of the work are being offered to the general public at no
|
||||
charge under subsection 6d.
|
||||
|
||||
A separable portion of the object code, whose source code is excluded
|
||||
from the Corresponding Source as a System Library, need not be
|
||||
included in conveying the object code work.
|
||||
|
||||
A "User Product" is either (1) a "consumer product", which means any
|
||||
tangible personal property which is normally used for personal, family,
|
||||
or household purposes, or (2) anything designed or sold for incorporation
|
||||
into a dwelling. In determining whether a product is a consumer product,
|
||||
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||
product received by a particular user, "normally used" refers to a
|
||||
typical or common use of that class of product, regardless of the status
|
||||
of the particular user or of the way in which the particular user
|
||||
actually uses, or expects or is expected to use, the product. A product
|
||||
is a consumer product regardless of whether the product has substantial
|
||||
commercial, industrial or non-consumer uses, unless such uses represent
|
||||
the only significant mode of use of the product.
|
||||
|
||||
"Installation Information" for a User Product means any methods,
|
||||
procedures, authorization keys, or other information required to install
|
||||
and execute modified versions of a covered work in that User Product from
|
||||
a modified version of its Corresponding Source. The information must
|
||||
suffice to ensure that the continued functioning of the modified object
|
||||
code is in no case prevented or interfered with solely because
|
||||
modification has been made.
|
||||
|
||||
If you convey an object code work under this section in, or with, or
|
||||
specifically for use in, a User Product, and the conveying occurs as
|
||||
part of a transaction in which the right of possession and use of the
|
||||
User Product is transferred to the recipient in perpetuity or for a
|
||||
fixed term (regardless of how the transaction is characterized), the
|
||||
Corresponding Source conveyed under this section must be accompanied
|
||||
by the Installation Information. But this requirement does not apply
|
||||
if neither you nor any third party retains the ability to install
|
||||
modified object code on the User Product (for example, the work has
|
||||
been installed in ROM).
|
||||
|
||||
The requirement to provide Installation Information does not include a
|
||||
requirement to continue to provide support service, warranty, or updates
|
||||
for a work that has been modified or installed by the recipient, or for
|
||||
the User Product in which it has been modified or installed. Access to a
|
||||
network may be denied when the modification itself materially and
|
||||
adversely affects the operation of the network or violates the rules and
|
||||
protocols for communication across the network.
|
||||
|
||||
Corresponding Source conveyed, and Installation Information provided,
|
||||
in accord with this section must be in a format that is publicly
|
||||
documented (and with an implementation available to the public in
|
||||
source code form), and must require no special password or key for
|
||||
unpacking, reading or copying.
|
||||
|
||||
7. Additional Terms.
|
||||
|
||||
"Additional permissions" are terms that supplement the terms of this
|
||||
License by making exceptions from one or more of its conditions.
|
||||
Additional permissions that are applicable to the entire Program shall
|
||||
be treated as though they were included in this License, to the extent
|
||||
that they are valid under applicable law. If additional permissions
|
||||
apply only to part of the Program, that part may be used separately
|
||||
under those permissions, but the entire Program remains governed by
|
||||
this License without regard to the additional permissions.
|
||||
|
||||
When you convey a copy of a covered work, you may at your option
|
||||
remove any additional permissions from that copy, or from any part of
|
||||
it. (Additional permissions may be written to require their own
|
||||
removal in certain cases when you modify the work.) You may place
|
||||
additional permissions on material, added by you to a covered work,
|
||||
for which you have or can give appropriate copyright permission.
|
||||
|
||||
Notwithstanding any other provision of this License, for material you
|
||||
add to a covered work, you may (if authorized by the copyright holders of
|
||||
that material) supplement the terms of this License with terms:
|
||||
|
||||
a) Disclaiming warranty or limiting liability differently from the
|
||||
terms of sections 15 and 16 of this License; or
|
||||
|
||||
b) Requiring preservation of specified reasonable legal notices or
|
||||
author attributions in that material or in the Appropriate Legal
|
||||
Notices displayed by works containing it; or
|
||||
|
||||
c) Prohibiting misrepresentation of the origin of that material, or
|
||||
requiring that modified versions of such material be marked in
|
||||
reasonable ways as different from the original version; or
|
||||
|
||||
d) Limiting the use for publicity purposes of names of licensors or
|
||||
authors of the material; or
|
||||
|
||||
e) Declining to grant rights under trademark law for use of some
|
||||
trade names, trademarks, or service marks; or
|
||||
|
||||
f) Requiring indemnification of licensors and authors of that
|
||||
material by anyone who conveys the material (or modified versions of
|
||||
it) with contractual assumptions of liability to the recipient, for
|
||||
any liability that these contractual assumptions directly impose on
|
||||
those licensors and authors.
|
||||
|
||||
All other non-permissive additional terms are considered "further
|
||||
restrictions" within the meaning of section 10. If the Program as you
|
||||
received it, or any part of it, contains a notice stating that it is
|
||||
governed by this License along with a term that is a further
|
||||
restriction, you may remove that term. If a license document contains
|
||||
a further restriction but permits relicensing or conveying under this
|
||||
License, you may add to a covered work material governed by the terms
|
||||
of that license document, provided that the further restriction does
|
||||
not survive such relicensing or conveying.
|
||||
|
||||
If you add terms to a covered work in accord with this section, you
|
||||
must place, in the relevant source files, a statement of the
|
||||
additional terms that apply to those files, or a notice indicating
|
||||
where to find the applicable terms.
|
||||
|
||||
Additional terms, permissive or non-permissive, may be stated in the
|
||||
form of a separately written license, or stated as exceptions;
|
||||
the above requirements apply either way.
|
||||
|
||||
8. Termination.
|
||||
|
||||
You may not propagate or modify a covered work except as expressly
|
||||
provided under this License. Any attempt otherwise to propagate or
|
||||
modify it is void, and will automatically terminate your rights under
|
||||
this License (including any patent licenses granted under the third
|
||||
paragraph of section 11).
|
||||
|
||||
However, if you cease all violation of this License, then your
|
||||
license from a particular copyright holder is reinstated (a)
|
||||
provisionally, unless and until the copyright holder explicitly and
|
||||
finally terminates your license, and (b) permanently, if the copyright
|
||||
holder fails to notify you of the violation by some reasonable means
|
||||
prior to 60 days after the cessation.
|
||||
|
||||
Moreover, your license from a particular copyright holder is
|
||||
reinstated permanently if the copyright holder notifies you of the
|
||||
violation by some reasonable means, this is the first time you have
|
||||
received notice of violation of this License (for any work) from that
|
||||
copyright holder, and you cure the violation prior to 30 days after
|
||||
your receipt of the notice.
|
||||
|
||||
Termination of your rights under this section does not terminate the
|
||||
licenses of parties who have received copies or rights from you under
|
||||
this License. If your rights have been terminated and not permanently
|
||||
reinstated, you do not qualify to receive new licenses for the same
|
||||
material under section 10.
|
||||
|
||||
9. Acceptance Not Required for Having Copies.
|
||||
|
||||
You are not required to accept this License in order to receive or
|
||||
run a copy of the Program. Ancillary propagation of a covered work
|
||||
occurring solely as a consequence of using peer-to-peer transmission
|
||||
to receive a copy likewise does not require acceptance. However,
|
||||
nothing other than this License grants you permission to propagate or
|
||||
modify any covered work. These actions infringe copyright if you do
|
||||
not accept this License. Therefore, by modifying or propagating a
|
||||
covered work, you indicate your acceptance of this License to do so.
|
||||
|
||||
10. Automatic Licensing of Downstream Recipients.
|
||||
|
||||
Each time you convey a covered work, the recipient automatically
|
||||
receives a license from the original licensors, to run, modify and
|
||||
propagate that work, subject to this License. You are not responsible
|
||||
for enforcing compliance by third parties with this License.
|
||||
|
||||
An "entity transaction" is a transaction transferring control of an
|
||||
organization, or substantially all assets of one, or subdividing an
|
||||
organization, or merging organizations. If propagation of a covered
|
||||
work results from an entity transaction, each party to that
|
||||
transaction who receives a copy of the work also receives whatever
|
||||
licenses to the work the party's predecessor in interest had or could
|
||||
give under the previous paragraph, plus a right to possession of the
|
||||
Corresponding Source of the work from the predecessor in interest, if
|
||||
the predecessor has it or can get it with reasonable efforts.
|
||||
|
||||
You may not impose any further restrictions on the exercise of the
|
||||
rights granted or affirmed under this License. For example, you may
|
||||
not impose a license fee, royalty, or other charge for exercise of
|
||||
rights granted under this License, and you may not initiate litigation
|
||||
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||
any patent claim is infringed by making, using, selling, offering for
|
||||
sale, or importing the Program or any portion of it.
|
||||
|
||||
11. Patents.
|
||||
|
||||
A "contributor" is a copyright holder who authorizes use under this
|
||||
License of the Program or a work on which the Program is based. The
|
||||
work thus licensed is called the contributor's "contributor version".
|
||||
|
||||
A contributor's "essential patent claims" are all patent claims
|
||||
owned or controlled by the contributor, whether already acquired or
|
||||
hereafter acquired, that would be infringed by some manner, permitted
|
||||
by this License, of making, using, or selling its contributor version,
|
||||
but do not include claims that would be infringed only as a
|
||||
consequence of further modification of the contributor version. For
|
||||
purposes of this definition, "control" includes the right to grant
|
||||
patent sublicenses in a manner consistent with the requirements of
|
||||
this License.
|
||||
|
||||
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||
patent license under the contributor's essential patent claims, to
|
||||
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||
propagate the contents of its contributor version.
|
||||
|
||||
In the following three paragraphs, a "patent license" is any express
|
||||
agreement or commitment, however denominated, not to enforce a patent
|
||||
(such as an express permission to practice a patent or covenant not to
|
||||
sue for patent infringement). To "grant" such a patent license to a
|
||||
party means to make such an agreement or commitment not to enforce a
|
||||
patent against the party.
|
||||
|
||||
If you convey a covered work, knowingly relying on a patent license,
|
||||
and the Corresponding Source of the work is not available for anyone
|
||||
to copy, free of charge and under the terms of this License, through a
|
||||
publicly available network server or other readily accessible means,
|
||||
then you must either (1) cause the Corresponding Source to be so
|
||||
available, or (2) arrange to deprive yourself of the benefit of the
|
||||
patent license for this particular work, or (3) arrange, in a manner
|
||||
consistent with the requirements of this License, to extend the patent
|
||||
license to downstream recipients. "Knowingly relying" means you have
|
||||
actual knowledge that, but for the patent license, your conveying the
|
||||
covered work in a country, or your recipient's use of the covered work
|
||||
in a country, would infringe one or more identifiable patents in that
|
||||
country that you have reason to believe are valid.
|
||||
|
||||
If, pursuant to or in connection with a single transaction or
|
||||
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||
covered work, and grant a patent license to some of the parties
|
||||
receiving the covered work authorizing them to use, propagate, modify
|
||||
or convey a specific copy of the covered work, then the patent license
|
||||
you grant is automatically extended to all recipients of the covered
|
||||
work and works based on it.
|
||||
|
||||
A patent license is "discriminatory" if it does not include within
|
||||
the scope of its coverage, prohibits the exercise of, or is
|
||||
conditioned on the non-exercise of one or more of the rights that are
|
||||
specifically granted under this License. You may not convey a covered
|
||||
work if you are a party to an arrangement with a third party that is
|
||||
in the business of distributing software, under which you make payment
|
||||
to the third party based on the extent of your activity of conveying
|
||||
the work, and under which the third party grants, to any of the
|
||||
parties who would receive the covered work from you, a discriminatory
|
||||
patent license (a) in connection with copies of the covered work
|
||||
conveyed by you (or copies made from those copies), or (b) primarily
|
||||
for and in connection with specific products or compilations that
|
||||
contain the covered work, unless you entered into that arrangement,
|
||||
or that patent license was granted, prior to 28 March 2007.
|
||||
|
||||
Nothing in this License shall be construed as excluding or limiting
|
||||
any implied license or other defenses to infringement that may
|
||||
otherwise be available to you under applicable patent law.
|
||||
|
||||
12. No Surrender of Others' Freedom.
|
||||
|
||||
If conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot convey a
|
||||
covered work so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you may
|
||||
not convey it at all. For example, if you agree to terms that obligate you
|
||||
to collect a royalty for further conveying from those to whom you convey
|
||||
the Program, the only way you could satisfy both those terms and this
|
||||
License would be to refrain entirely from conveying the Program.
|
||||
|
||||
13. Use with the GNU Affero General Public License.
|
||||
|
||||
Notwithstanding any other provision of this License, you have
|
||||
permission to link or combine any covered work with a work licensed
|
||||
under version 3 of the GNU Affero General Public License into a single
|
||||
combined work, and to convey the resulting work. The terms of this
|
||||
License will continue to apply to the part which is the covered work,
|
||||
but the special requirements of the GNU Affero General Public License,
|
||||
section 13, concerning interaction through a network will apply to the
|
||||
combination as such.
|
||||
|
||||
14. Revised Versions of this License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions of
|
||||
the GNU General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the
|
||||
Program specifies that a certain numbered version of the GNU General
|
||||
Public License "or any later version" applies to it, you have the
|
||||
option of following the terms and conditions either of that numbered
|
||||
version or of any later version published by the Free Software
|
||||
Foundation. If the Program does not specify a version number of the
|
||||
GNU General Public License, you may choose any version ever published
|
||||
by the Free Software Foundation.
|
||||
|
||||
If the Program specifies that a proxy can decide which future
|
||||
versions of the GNU General Public License can be used, that proxy's
|
||||
public statement of acceptance of a version permanently authorizes you
|
||||
to choose that version for the Program.
|
||||
|
||||
Later license versions may give you additional or different
|
||||
permissions. However, no additional obligations are imposed on any
|
||||
author or copyright holder as a result of your choosing to follow a
|
||||
later version.
|
||||
|
||||
15. Disclaimer of Warranty.
|
||||
|
||||
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
||||
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
||||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
||||
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. Limitation of Liability.
|
||||
|
||||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
||||
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
||||
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
||||
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGES.
|
||||
|
||||
17. Interpretation of Sections 15 and 16.
|
||||
|
||||
If the disclaimer of warranty and limitation of liability provided
|
||||
above cannot be given local legal effect according to their terms,
|
||||
reviewing courts shall apply local law that most closely approximates
|
||||
an absolute waiver of all civil liability in connection with the
|
||||
Program, unless a warranty or assumption of liability accompanies a
|
||||
copy of the Program in return for a fee.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
state the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
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/>.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program does terminal interaction, make it output a short
|
||||
notice like this when it starts in an interactive mode:
|
||||
|
||||
<program> Copyright (C) <year> <name of author>
|
||||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, your program's commands
|
||||
might be different; for a GUI interface, you would use an "about box".
|
||||
|
||||
You should also get your employer (if you work as a programmer) or school,
|
||||
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||
For more information on this, and how to apply and follow the GNU GPL, see
|
||||
<http://www.gnu.org/licenses/>.
|
||||
|
||||
The GNU General Public License does not permit incorporating your program
|
||||
into proprietary programs. If your program is a subroutine library, you
|
||||
may consider it more useful to permit linking proprietary applications with
|
||||
the library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License. But first, please read
|
||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
674
source/freeipmi/usr/share/doc/freeipmi/COPYING.ipmi-dcmi
Normal file
674
source/freeipmi/usr/share/doc/freeipmi/COPYING.ipmi-dcmi
Normal file
@ -0,0 +1,674 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The GNU General Public License is a free, copyleft license for
|
||||
software and other kinds of works.
|
||||
|
||||
The licenses for most software and other practical works are designed
|
||||
to take away your freedom to share and change the works. By contrast,
|
||||
the GNU General Public License is intended to guarantee your freedom to
|
||||
share and change all versions of a program--to make sure it remains free
|
||||
software for all its users. We, the Free Software Foundation, use the
|
||||
GNU General Public License for most of our software; it applies also to
|
||||
any other work released this way by its authors. You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
them if you wish), that you receive source code or can get it if you
|
||||
want it, that you can change the software or use pieces of it in new
|
||||
free programs, and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to prevent others from denying you
|
||||
these rights or asking you to surrender the rights. Therefore, you have
|
||||
certain responsibilities if you distribute copies of the software, or if
|
||||
you modify it: responsibilities to respect the freedom of others.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must pass on to the recipients the same
|
||||
freedoms that you received. You must make sure that they, too, receive
|
||||
or can get the source code. And you must show them these terms so they
|
||||
know their rights.
|
||||
|
||||
Developers that use the GNU GPL protect your rights with two steps:
|
||||
(1) assert copyright on the software, and (2) offer you this License
|
||||
giving you legal permission to copy, distribute and/or modify it.
|
||||
|
||||
For the developers' and authors' protection, the GPL clearly explains
|
||||
that there is no warranty for this free software. For both users' and
|
||||
authors' sake, the GPL requires that modified versions be marked as
|
||||
changed, so that their problems will not be attributed erroneously to
|
||||
authors of previous versions.
|
||||
|
||||
Some devices are designed to deny users access to install or run
|
||||
modified versions of the software inside them, although the manufacturer
|
||||
can do so. This is fundamentally incompatible with the aim of
|
||||
protecting users' freedom to change the software. The systematic
|
||||
pattern of such abuse occurs in the area of products for individuals to
|
||||
use, which is precisely where it is most unacceptable. Therefore, we
|
||||
have designed this version of the GPL to prohibit the practice for those
|
||||
products. If such problems arise substantially in other domains, we
|
||||
stand ready to extend this provision to those domains in future versions
|
||||
of the GPL, as needed to protect the freedom of users.
|
||||
|
||||
Finally, every program is threatened constantly by software patents.
|
||||
States should not allow patents to restrict development and use of
|
||||
software on general-purpose computers, but in those that do, we wish to
|
||||
avoid the special danger that patents applied to a free program could
|
||||
make it effectively proprietary. To prevent this, the GPL assures that
|
||||
patents cannot be used to render the program non-free.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
TERMS AND CONDITIONS
|
||||
|
||||
0. Definitions.
|
||||
|
||||
"This License" refers to version 3 of the GNU General Public License.
|
||||
|
||||
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||
works, such as semiconductor masks.
|
||||
|
||||
"The Program" refers to any copyrightable work licensed under this
|
||||
License. Each licensee is addressed as "you". "Licensees" and
|
||||
"recipients" may be individuals or organizations.
|
||||
|
||||
To "modify" a work means to copy from or adapt all or part of the work
|
||||
in a fashion requiring copyright permission, other than the making of an
|
||||
exact copy. The resulting work is called a "modified version" of the
|
||||
earlier work or a work "based on" the earlier work.
|
||||
|
||||
A "covered work" means either the unmodified Program or a work based
|
||||
on the Program.
|
||||
|
||||
To "propagate" a work means to do anything with it that, without
|
||||
permission, would make you directly or secondarily liable for
|
||||
infringement under applicable copyright law, except executing it on a
|
||||
computer or modifying a private copy. Propagation includes copying,
|
||||
distribution (with or without modification), making available to the
|
||||
public, and in some countries other activities as well.
|
||||
|
||||
To "convey" a work means any kind of propagation that enables other
|
||||
parties to make or receive copies. Mere interaction with a user through
|
||||
a computer network, with no transfer of a copy, is not conveying.
|
||||
|
||||
An interactive user interface displays "Appropriate Legal Notices"
|
||||
to the extent that it includes a convenient and prominently visible
|
||||
feature that (1) displays an appropriate copyright notice, and (2)
|
||||
tells the user that there is no warranty for the work (except to the
|
||||
extent that warranties are provided), that licensees may convey the
|
||||
work under this License, and how to view a copy of this License. If
|
||||
the interface presents a list of user commands or options, such as a
|
||||
menu, a prominent item in the list meets this criterion.
|
||||
|
||||
1. Source Code.
|
||||
|
||||
The "source code" for a work means the preferred form of the work
|
||||
for making modifications to it. "Object code" means any non-source
|
||||
form of a work.
|
||||
|
||||
A "Standard Interface" means an interface that either is an official
|
||||
standard defined by a recognized standards body, or, in the case of
|
||||
interfaces specified for a particular programming language, one that
|
||||
is widely used among developers working in that language.
|
||||
|
||||
The "System Libraries" of an executable work include anything, other
|
||||
than the work as a whole, that (a) is included in the normal form of
|
||||
packaging a Major Component, but which is not part of that Major
|
||||
Component, and (b) serves only to enable use of the work with that
|
||||
Major Component, or to implement a Standard Interface for which an
|
||||
implementation is available to the public in source code form. A
|
||||
"Major Component", in this context, means a major essential component
|
||||
(kernel, window system, and so on) of the specific operating system
|
||||
(if any) on which the executable work runs, or a compiler used to
|
||||
produce the work, or an object code interpreter used to run it.
|
||||
|
||||
The "Corresponding Source" for a work in object code form means all
|
||||
the source code needed to generate, install, and (for an executable
|
||||
work) run the object code and to modify the work, including scripts to
|
||||
control those activities. However, it does not include the work's
|
||||
System Libraries, or general-purpose tools or generally available free
|
||||
programs which are used unmodified in performing those activities but
|
||||
which are not part of the work. For example, Corresponding Source
|
||||
includes interface definition files associated with source files for
|
||||
the work, and the source code for shared libraries and dynamically
|
||||
linked subprograms that the work is specifically designed to require,
|
||||
such as by intimate data communication or control flow between those
|
||||
subprograms and other parts of the work.
|
||||
|
||||
The Corresponding Source need not include anything that users
|
||||
can regenerate automatically from other parts of the Corresponding
|
||||
Source.
|
||||
|
||||
The Corresponding Source for a work in source code form is that
|
||||
same work.
|
||||
|
||||
2. Basic Permissions.
|
||||
|
||||
All rights granted under this License are granted for the term of
|
||||
copyright on the Program, and are irrevocable provided the stated
|
||||
conditions are met. This License explicitly affirms your unlimited
|
||||
permission to run the unmodified Program. The output from running a
|
||||
covered work is covered by this License only if the output, given its
|
||||
content, constitutes a covered work. This License acknowledges your
|
||||
rights of fair use or other equivalent, as provided by copyright law.
|
||||
|
||||
You may make, run and propagate covered works that you do not
|
||||
convey, without conditions so long as your license otherwise remains
|
||||
in force. You may convey covered works to others for the sole purpose
|
||||
of having them make modifications exclusively for you, or provide you
|
||||
with facilities for running those works, provided that you comply with
|
||||
the terms of this License in conveying all material for which you do
|
||||
not control copyright. Those thus making or running the covered works
|
||||
for you must do so exclusively on your behalf, under your direction
|
||||
and control, on terms that prohibit them from making any copies of
|
||||
your copyrighted material outside their relationship with you.
|
||||
|
||||
Conveying under any other circumstances is permitted solely under
|
||||
the conditions stated below. Sublicensing is not allowed; section 10
|
||||
makes it unnecessary.
|
||||
|
||||
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||
|
||||
No covered work shall be deemed part of an effective technological
|
||||
measure under any applicable law fulfilling obligations under article
|
||||
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||
similar laws prohibiting or restricting circumvention of such
|
||||
measures.
|
||||
|
||||
When you convey a covered work, you waive any legal power to forbid
|
||||
circumvention of technological measures to the extent such circumvention
|
||||
is effected by exercising rights under this License with respect to
|
||||
the covered work, and you disclaim any intention to limit operation or
|
||||
modification of the work as a means of enforcing, against the work's
|
||||
users, your or third parties' legal rights to forbid circumvention of
|
||||
technological measures.
|
||||
|
||||
4. Conveying Verbatim Copies.
|
||||
|
||||
You may convey verbatim copies of the Program's source code as you
|
||||
receive it, in any medium, provided that you conspicuously and
|
||||
appropriately publish on each copy an appropriate copyright notice;
|
||||
keep intact all notices stating that this License and any
|
||||
non-permissive terms added in accord with section 7 apply to the code;
|
||||
keep intact all notices of the absence of any warranty; and give all
|
||||
recipients a copy of this License along with the Program.
|
||||
|
||||
You may charge any price or no price for each copy that you convey,
|
||||
and you may offer support or warranty protection for a fee.
|
||||
|
||||
5. Conveying Modified Source Versions.
|
||||
|
||||
You may convey a work based on the Program, or the modifications to
|
||||
produce it from the Program, in the form of source code under the
|
||||
terms of section 4, provided that you also meet all of these conditions:
|
||||
|
||||
a) The work must carry prominent notices stating that you modified
|
||||
it, and giving a relevant date.
|
||||
|
||||
b) The work must carry prominent notices stating that it is
|
||||
released under this License and any conditions added under section
|
||||
7. This requirement modifies the requirement in section 4 to
|
||||
"keep intact all notices".
|
||||
|
||||
c) You must license the entire work, as a whole, under this
|
||||
License to anyone who comes into possession of a copy. This
|
||||
License will therefore apply, along with any applicable section 7
|
||||
additional terms, to the whole of the work, and all its parts,
|
||||
regardless of how they are packaged. This License gives no
|
||||
permission to license the work in any other way, but it does not
|
||||
invalidate such permission if you have separately received it.
|
||||
|
||||
d) If the work has interactive user interfaces, each must display
|
||||
Appropriate Legal Notices; however, if the Program has interactive
|
||||
interfaces that do not display Appropriate Legal Notices, your
|
||||
work need not make them do so.
|
||||
|
||||
A compilation of a covered work with other separate and independent
|
||||
works, which are not by their nature extensions of the covered work,
|
||||
and which are not combined with it such as to form a larger program,
|
||||
in or on a volume of a storage or distribution medium, is called an
|
||||
"aggregate" if the compilation and its resulting copyright are not
|
||||
used to limit the access or legal rights of the compilation's users
|
||||
beyond what the individual works permit. Inclusion of a covered work
|
||||
in an aggregate does not cause this License to apply to the other
|
||||
parts of the aggregate.
|
||||
|
||||
6. Conveying Non-Source Forms.
|
||||
|
||||
You may convey a covered work in object code form under the terms
|
||||
of sections 4 and 5, provided that you also convey the
|
||||
machine-readable Corresponding Source under the terms of this License,
|
||||
in one of these ways:
|
||||
|
||||
a) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by the
|
||||
Corresponding Source fixed on a durable physical medium
|
||||
customarily used for software interchange.
|
||||
|
||||
b) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by a
|
||||
written offer, valid for at least three years and valid for as
|
||||
long as you offer spare parts or customer support for that product
|
||||
model, to give anyone who possesses the object code either (1) a
|
||||
copy of the Corresponding Source for all the software in the
|
||||
product that is covered by this License, on a durable physical
|
||||
medium customarily used for software interchange, for a price no
|
||||
more than your reasonable cost of physically performing this
|
||||
conveying of source, or (2) access to copy the
|
||||
Corresponding Source from a network server at no charge.
|
||||
|
||||
c) Convey individual copies of the object code with a copy of the
|
||||
written offer to provide the Corresponding Source. This
|
||||
alternative is allowed only occasionally and noncommercially, and
|
||||
only if you received the object code with such an offer, in accord
|
||||
with subsection 6b.
|
||||
|
||||
d) Convey the object code by offering access from a designated
|
||||
place (gratis or for a charge), and offer equivalent access to the
|
||||
Corresponding Source in the same way through the same place at no
|
||||
further charge. You need not require recipients to copy the
|
||||
Corresponding Source along with the object code. If the place to
|
||||
copy the object code is a network server, the Corresponding Source
|
||||
may be on a different server (operated by you or a third party)
|
||||
that supports equivalent copying facilities, provided you maintain
|
||||
clear directions next to the object code saying where to find the
|
||||
Corresponding Source. Regardless of what server hosts the
|
||||
Corresponding Source, you remain obligated to ensure that it is
|
||||
available for as long as needed to satisfy these requirements.
|
||||
|
||||
e) Convey the object code using peer-to-peer transmission, provided
|
||||
you inform other peers where the object code and Corresponding
|
||||
Source of the work are being offered to the general public at no
|
||||
charge under subsection 6d.
|
||||
|
||||
A separable portion of the object code, whose source code is excluded
|
||||
from the Corresponding Source as a System Library, need not be
|
||||
included in conveying the object code work.
|
||||
|
||||
A "User Product" is either (1) a "consumer product", which means any
|
||||
tangible personal property which is normally used for personal, family,
|
||||
or household purposes, or (2) anything designed or sold for incorporation
|
||||
into a dwelling. In determining whether a product is a consumer product,
|
||||
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||
product received by a particular user, "normally used" refers to a
|
||||
typical or common use of that class of product, regardless of the status
|
||||
of the particular user or of the way in which the particular user
|
||||
actually uses, or expects or is expected to use, the product. A product
|
||||
is a consumer product regardless of whether the product has substantial
|
||||
commercial, industrial or non-consumer uses, unless such uses represent
|
||||
the only significant mode of use of the product.
|
||||
|
||||
"Installation Information" for a User Product means any methods,
|
||||
procedures, authorization keys, or other information required to install
|
||||
and execute modified versions of a covered work in that User Product from
|
||||
a modified version of its Corresponding Source. The information must
|
||||
suffice to ensure that the continued functioning of the modified object
|
||||
code is in no case prevented or interfered with solely because
|
||||
modification has been made.
|
||||
|
||||
If you convey an object code work under this section in, or with, or
|
||||
specifically for use in, a User Product, and the conveying occurs as
|
||||
part of a transaction in which the right of possession and use of the
|
||||
User Product is transferred to the recipient in perpetuity or for a
|
||||
fixed term (regardless of how the transaction is characterized), the
|
||||
Corresponding Source conveyed under this section must be accompanied
|
||||
by the Installation Information. But this requirement does not apply
|
||||
if neither you nor any third party retains the ability to install
|
||||
modified object code on the User Product (for example, the work has
|
||||
been installed in ROM).
|
||||
|
||||
The requirement to provide Installation Information does not include a
|
||||
requirement to continue to provide support service, warranty, or updates
|
||||
for a work that has been modified or installed by the recipient, or for
|
||||
the User Product in which it has been modified or installed. Access to a
|
||||
network may be denied when the modification itself materially and
|
||||
adversely affects the operation of the network or violates the rules and
|
||||
protocols for communication across the network.
|
||||
|
||||
Corresponding Source conveyed, and Installation Information provided,
|
||||
in accord with this section must be in a format that is publicly
|
||||
documented (and with an implementation available to the public in
|
||||
source code form), and must require no special password or key for
|
||||
unpacking, reading or copying.
|
||||
|
||||
7. Additional Terms.
|
||||
|
||||
"Additional permissions" are terms that supplement the terms of this
|
||||
License by making exceptions from one or more of its conditions.
|
||||
Additional permissions that are applicable to the entire Program shall
|
||||
be treated as though they were included in this License, to the extent
|
||||
that they are valid under applicable law. If additional permissions
|
||||
apply only to part of the Program, that part may be used separately
|
||||
under those permissions, but the entire Program remains governed by
|
||||
this License without regard to the additional permissions.
|
||||
|
||||
When you convey a copy of a covered work, you may at your option
|
||||
remove any additional permissions from that copy, or from any part of
|
||||
it. (Additional permissions may be written to require their own
|
||||
removal in certain cases when you modify the work.) You may place
|
||||
additional permissions on material, added by you to a covered work,
|
||||
for which you have or can give appropriate copyright permission.
|
||||
|
||||
Notwithstanding any other provision of this License, for material you
|
||||
add to a covered work, you may (if authorized by the copyright holders of
|
||||
that material) supplement the terms of this License with terms:
|
||||
|
||||
a) Disclaiming warranty or limiting liability differently from the
|
||||
terms of sections 15 and 16 of this License; or
|
||||
|
||||
b) Requiring preservation of specified reasonable legal notices or
|
||||
author attributions in that material or in the Appropriate Legal
|
||||
Notices displayed by works containing it; or
|
||||
|
||||
c) Prohibiting misrepresentation of the origin of that material, or
|
||||
requiring that modified versions of such material be marked in
|
||||
reasonable ways as different from the original version; or
|
||||
|
||||
d) Limiting the use for publicity purposes of names of licensors or
|
||||
authors of the material; or
|
||||
|
||||
e) Declining to grant rights under trademark law for use of some
|
||||
trade names, trademarks, or service marks; or
|
||||
|
||||
f) Requiring indemnification of licensors and authors of that
|
||||
material by anyone who conveys the material (or modified versions of
|
||||
it) with contractual assumptions of liability to the recipient, for
|
||||
any liability that these contractual assumptions directly impose on
|
||||
those licensors and authors.
|
||||
|
||||
All other non-permissive additional terms are considered "further
|
||||
restrictions" within the meaning of section 10. If the Program as you
|
||||
received it, or any part of it, contains a notice stating that it is
|
||||
governed by this License along with a term that is a further
|
||||
restriction, you may remove that term. If a license document contains
|
||||
a further restriction but permits relicensing or conveying under this
|
||||
License, you may add to a covered work material governed by the terms
|
||||
of that license document, provided that the further restriction does
|
||||
not survive such relicensing or conveying.
|
||||
|
||||
If you add terms to a covered work in accord with this section, you
|
||||
must place, in the relevant source files, a statement of the
|
||||
additional terms that apply to those files, or a notice indicating
|
||||
where to find the applicable terms.
|
||||
|
||||
Additional terms, permissive or non-permissive, may be stated in the
|
||||
form of a separately written license, or stated as exceptions;
|
||||
the above requirements apply either way.
|
||||
|
||||
8. Termination.
|
||||
|
||||
You may not propagate or modify a covered work except as expressly
|
||||
provided under this License. Any attempt otherwise to propagate or
|
||||
modify it is void, and will automatically terminate your rights under
|
||||
this License (including any patent licenses granted under the third
|
||||
paragraph of section 11).
|
||||
|
||||
However, if you cease all violation of this License, then your
|
||||
license from a particular copyright holder is reinstated (a)
|
||||
provisionally, unless and until the copyright holder explicitly and
|
||||
finally terminates your license, and (b) permanently, if the copyright
|
||||
holder fails to notify you of the violation by some reasonable means
|
||||
prior to 60 days after the cessation.
|
||||
|
||||
Moreover, your license from a particular copyright holder is
|
||||
reinstated permanently if the copyright holder notifies you of the
|
||||
violation by some reasonable means, this is the first time you have
|
||||
received notice of violation of this License (for any work) from that
|
||||
copyright holder, and you cure the violation prior to 30 days after
|
||||
your receipt of the notice.
|
||||
|
||||
Termination of your rights under this section does not terminate the
|
||||
licenses of parties who have received copies or rights from you under
|
||||
this License. If your rights have been terminated and not permanently
|
||||
reinstated, you do not qualify to receive new licenses for the same
|
||||
material under section 10.
|
||||
|
||||
9. Acceptance Not Required for Having Copies.
|
||||
|
||||
You are not required to accept this License in order to receive or
|
||||
run a copy of the Program. Ancillary propagation of a covered work
|
||||
occurring solely as a consequence of using peer-to-peer transmission
|
||||
to receive a copy likewise does not require acceptance. However,
|
||||
nothing other than this License grants you permission to propagate or
|
||||
modify any covered work. These actions infringe copyright if you do
|
||||
not accept this License. Therefore, by modifying or propagating a
|
||||
covered work, you indicate your acceptance of this License to do so.
|
||||
|
||||
10. Automatic Licensing of Downstream Recipients.
|
||||
|
||||
Each time you convey a covered work, the recipient automatically
|
||||
receives a license from the original licensors, to run, modify and
|
||||
propagate that work, subject to this License. You are not responsible
|
||||
for enforcing compliance by third parties with this License.
|
||||
|
||||
An "entity transaction" is a transaction transferring control of an
|
||||
organization, or substantially all assets of one, or subdividing an
|
||||
organization, or merging organizations. If propagation of a covered
|
||||
work results from an entity transaction, each party to that
|
||||
transaction who receives a copy of the work also receives whatever
|
||||
licenses to the work the party's predecessor in interest had or could
|
||||
give under the previous paragraph, plus a right to possession of the
|
||||
Corresponding Source of the work from the predecessor in interest, if
|
||||
the predecessor has it or can get it with reasonable efforts.
|
||||
|
||||
You may not impose any further restrictions on the exercise of the
|
||||
rights granted or affirmed under this License. For example, you may
|
||||
not impose a license fee, royalty, or other charge for exercise of
|
||||
rights granted under this License, and you may not initiate litigation
|
||||
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||
any patent claim is infringed by making, using, selling, offering for
|
||||
sale, or importing the Program or any portion of it.
|
||||
|
||||
11. Patents.
|
||||
|
||||
A "contributor" is a copyright holder who authorizes use under this
|
||||
License of the Program or a work on which the Program is based. The
|
||||
work thus licensed is called the contributor's "contributor version".
|
||||
|
||||
A contributor's "essential patent claims" are all patent claims
|
||||
owned or controlled by the contributor, whether already acquired or
|
||||
hereafter acquired, that would be infringed by some manner, permitted
|
||||
by this License, of making, using, or selling its contributor version,
|
||||
but do not include claims that would be infringed only as a
|
||||
consequence of further modification of the contributor version. For
|
||||
purposes of this definition, "control" includes the right to grant
|
||||
patent sublicenses in a manner consistent with the requirements of
|
||||
this License.
|
||||
|
||||
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||
patent license under the contributor's essential patent claims, to
|
||||
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||
propagate the contents of its contributor version.
|
||||
|
||||
In the following three paragraphs, a "patent license" is any express
|
||||
agreement or commitment, however denominated, not to enforce a patent
|
||||
(such as an express permission to practice a patent or covenant not to
|
||||
sue for patent infringement). To "grant" such a patent license to a
|
||||
party means to make such an agreement or commitment not to enforce a
|
||||
patent against the party.
|
||||
|
||||
If you convey a covered work, knowingly relying on a patent license,
|
||||
and the Corresponding Source of the work is not available for anyone
|
||||
to copy, free of charge and under the terms of this License, through a
|
||||
publicly available network server or other readily accessible means,
|
||||
then you must either (1) cause the Corresponding Source to be so
|
||||
available, or (2) arrange to deprive yourself of the benefit of the
|
||||
patent license for this particular work, or (3) arrange, in a manner
|
||||
consistent with the requirements of this License, to extend the patent
|
||||
license to downstream recipients. "Knowingly relying" means you have
|
||||
actual knowledge that, but for the patent license, your conveying the
|
||||
covered work in a country, or your recipient's use of the covered work
|
||||
in a country, would infringe one or more identifiable patents in that
|
||||
country that you have reason to believe are valid.
|
||||
|
||||
If, pursuant to or in connection with a single transaction or
|
||||
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||
covered work, and grant a patent license to some of the parties
|
||||
receiving the covered work authorizing them to use, propagate, modify
|
||||
or convey a specific copy of the covered work, then the patent license
|
||||
you grant is automatically extended to all recipients of the covered
|
||||
work and works based on it.
|
||||
|
||||
A patent license is "discriminatory" if it does not include within
|
||||
the scope of its coverage, prohibits the exercise of, or is
|
||||
conditioned on the non-exercise of one or more of the rights that are
|
||||
specifically granted under this License. You may not convey a covered
|
||||
work if you are a party to an arrangement with a third party that is
|
||||
in the business of distributing software, under which you make payment
|
||||
to the third party based on the extent of your activity of conveying
|
||||
the work, and under which the third party grants, to any of the
|
||||
parties who would receive the covered work from you, a discriminatory
|
||||
patent license (a) in connection with copies of the covered work
|
||||
conveyed by you (or copies made from those copies), or (b) primarily
|
||||
for and in connection with specific products or compilations that
|
||||
contain the covered work, unless you entered into that arrangement,
|
||||
or that patent license was granted, prior to 28 March 2007.
|
||||
|
||||
Nothing in this License shall be construed as excluding or limiting
|
||||
any implied license or other defenses to infringement that may
|
||||
otherwise be available to you under applicable patent law.
|
||||
|
||||
12. No Surrender of Others' Freedom.
|
||||
|
||||
If conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot convey a
|
||||
covered work so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you may
|
||||
not convey it at all. For example, if you agree to terms that obligate you
|
||||
to collect a royalty for further conveying from those to whom you convey
|
||||
the Program, the only way you could satisfy both those terms and this
|
||||
License would be to refrain entirely from conveying the Program.
|
||||
|
||||
13. Use with the GNU Affero General Public License.
|
||||
|
||||
Notwithstanding any other provision of this License, you have
|
||||
permission to link or combine any covered work with a work licensed
|
||||
under version 3 of the GNU Affero General Public License into a single
|
||||
combined work, and to convey the resulting work. The terms of this
|
||||
License will continue to apply to the part which is the covered work,
|
||||
but the special requirements of the GNU Affero General Public License,
|
||||
section 13, concerning interaction through a network will apply to the
|
||||
combination as such.
|
||||
|
||||
14. Revised Versions of this License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions of
|
||||
the GNU General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the
|
||||
Program specifies that a certain numbered version of the GNU General
|
||||
Public License "or any later version" applies to it, you have the
|
||||
option of following the terms and conditions either of that numbered
|
||||
version or of any later version published by the Free Software
|
||||
Foundation. If the Program does not specify a version number of the
|
||||
GNU General Public License, you may choose any version ever published
|
||||
by the Free Software Foundation.
|
||||
|
||||
If the Program specifies that a proxy can decide which future
|
||||
versions of the GNU General Public License can be used, that proxy's
|
||||
public statement of acceptance of a version permanently authorizes you
|
||||
to choose that version for the Program.
|
||||
|
||||
Later license versions may give you additional or different
|
||||
permissions. However, no additional obligations are imposed on any
|
||||
author or copyright holder as a result of your choosing to follow a
|
||||
later version.
|
||||
|
||||
15. Disclaimer of Warranty.
|
||||
|
||||
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
||||
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
||||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
||||
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. Limitation of Liability.
|
||||
|
||||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
||||
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
||||
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
||||
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGES.
|
||||
|
||||
17. Interpretation of Sections 15 and 16.
|
||||
|
||||
If the disclaimer of warranty and limitation of liability provided
|
||||
above cannot be given local legal effect according to their terms,
|
||||
reviewing courts shall apply local law that most closely approximates
|
||||
an absolute waiver of all civil liability in connection with the
|
||||
Program, unless a warranty or assumption of liability accompanies a
|
||||
copy of the Program in return for a fee.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
state the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
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/>.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program does terminal interaction, make it output a short
|
||||
notice like this when it starts in an interactive mode:
|
||||
|
||||
<program> Copyright (C) <year> <name of author>
|
||||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, your program's commands
|
||||
might be different; for a GUI interface, you would use an "about box".
|
||||
|
||||
You should also get your employer (if you work as a programmer) or school,
|
||||
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||
For more information on this, and how to apply and follow the GNU GPL, see
|
||||
<http://www.gnu.org/licenses/>.
|
||||
|
||||
The GNU General Public License does not permit incorporating your program
|
||||
into proprietary programs. If your program is a subroutine library, you
|
||||
may consider it more useful to permit linking proprietary applications with
|
||||
the library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License. But first, please read
|
||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
674
source/freeipmi/usr/share/doc/freeipmi/COPYING.ipmi-fru
Normal file
674
source/freeipmi/usr/share/doc/freeipmi/COPYING.ipmi-fru
Normal file
@ -0,0 +1,674 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The GNU General Public License is a free, copyleft license for
|
||||
software and other kinds of works.
|
||||
|
||||
The licenses for most software and other practical works are designed
|
||||
to take away your freedom to share and change the works. By contrast,
|
||||
the GNU General Public License is intended to guarantee your freedom to
|
||||
share and change all versions of a program--to make sure it remains free
|
||||
software for all its users. We, the Free Software Foundation, use the
|
||||
GNU General Public License for most of our software; it applies also to
|
||||
any other work released this way by its authors. You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
them if you wish), that you receive source code or can get it if you
|
||||
want it, that you can change the software or use pieces of it in new
|
||||
free programs, and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to prevent others from denying you
|
||||
these rights or asking you to surrender the rights. Therefore, you have
|
||||
certain responsibilities if you distribute copies of the software, or if
|
||||
you modify it: responsibilities to respect the freedom of others.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must pass on to the recipients the same
|
||||
freedoms that you received. You must make sure that they, too, receive
|
||||
or can get the source code. And you must show them these terms so they
|
||||
know their rights.
|
||||
|
||||
Developers that use the GNU GPL protect your rights with two steps:
|
||||
(1) assert copyright on the software, and (2) offer you this License
|
||||
giving you legal permission to copy, distribute and/or modify it.
|
||||
|
||||
For the developers' and authors' protection, the GPL clearly explains
|
||||
that there is no warranty for this free software. For both users' and
|
||||
authors' sake, the GPL requires that modified versions be marked as
|
||||
changed, so that their problems will not be attributed erroneously to
|
||||
authors of previous versions.
|
||||
|
||||
Some devices are designed to deny users access to install or run
|
||||
modified versions of the software inside them, although the manufacturer
|
||||
can do so. This is fundamentally incompatible with the aim of
|
||||
protecting users' freedom to change the software. The systematic
|
||||
pattern of such abuse occurs in the area of products for individuals to
|
||||
use, which is precisely where it is most unacceptable. Therefore, we
|
||||
have designed this version of the GPL to prohibit the practice for those
|
||||
products. If such problems arise substantially in other domains, we
|
||||
stand ready to extend this provision to those domains in future versions
|
||||
of the GPL, as needed to protect the freedom of users.
|
||||
|
||||
Finally, every program is threatened constantly by software patents.
|
||||
States should not allow patents to restrict development and use of
|
||||
software on general-purpose computers, but in those that do, we wish to
|
||||
avoid the special danger that patents applied to a free program could
|
||||
make it effectively proprietary. To prevent this, the GPL assures that
|
||||
patents cannot be used to render the program non-free.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
TERMS AND CONDITIONS
|
||||
|
||||
0. Definitions.
|
||||
|
||||
"This License" refers to version 3 of the GNU General Public License.
|
||||
|
||||
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||
works, such as semiconductor masks.
|
||||
|
||||
"The Program" refers to any copyrightable work licensed under this
|
||||
License. Each licensee is addressed as "you". "Licensees" and
|
||||
"recipients" may be individuals or organizations.
|
||||
|
||||
To "modify" a work means to copy from or adapt all or part of the work
|
||||
in a fashion requiring copyright permission, other than the making of an
|
||||
exact copy. The resulting work is called a "modified version" of the
|
||||
earlier work or a work "based on" the earlier work.
|
||||
|
||||
A "covered work" means either the unmodified Program or a work based
|
||||
on the Program.
|
||||
|
||||
To "propagate" a work means to do anything with it that, without
|
||||
permission, would make you directly or secondarily liable for
|
||||
infringement under applicable copyright law, except executing it on a
|
||||
computer or modifying a private copy. Propagation includes copying,
|
||||
distribution (with or without modification), making available to the
|
||||
public, and in some countries other activities as well.
|
||||
|
||||
To "convey" a work means any kind of propagation that enables other
|
||||
parties to make or receive copies. Mere interaction with a user through
|
||||
a computer network, with no transfer of a copy, is not conveying.
|
||||
|
||||
An interactive user interface displays "Appropriate Legal Notices"
|
||||
to the extent that it includes a convenient and prominently visible
|
||||
feature that (1) displays an appropriate copyright notice, and (2)
|
||||
tells the user that there is no warranty for the work (except to the
|
||||
extent that warranties are provided), that licensees may convey the
|
||||
work under this License, and how to view a copy of this License. If
|
||||
the interface presents a list of user commands or options, such as a
|
||||
menu, a prominent item in the list meets this criterion.
|
||||
|
||||
1. Source Code.
|
||||
|
||||
The "source code" for a work means the preferred form of the work
|
||||
for making modifications to it. "Object code" means any non-source
|
||||
form of a work.
|
||||
|
||||
A "Standard Interface" means an interface that either is an official
|
||||
standard defined by a recognized standards body, or, in the case of
|
||||
interfaces specified for a particular programming language, one that
|
||||
is widely used among developers working in that language.
|
||||
|
||||
The "System Libraries" of an executable work include anything, other
|
||||
than the work as a whole, that (a) is included in the normal form of
|
||||
packaging a Major Component, but which is not part of that Major
|
||||
Component, and (b) serves only to enable use of the work with that
|
||||
Major Component, or to implement a Standard Interface for which an
|
||||
implementation is available to the public in source code form. A
|
||||
"Major Component", in this context, means a major essential component
|
||||
(kernel, window system, and so on) of the specific operating system
|
||||
(if any) on which the executable work runs, or a compiler used to
|
||||
produce the work, or an object code interpreter used to run it.
|
||||
|
||||
The "Corresponding Source" for a work in object code form means all
|
||||
the source code needed to generate, install, and (for an executable
|
||||
work) run the object code and to modify the work, including scripts to
|
||||
control those activities. However, it does not include the work's
|
||||
System Libraries, or general-purpose tools or generally available free
|
||||
programs which are used unmodified in performing those activities but
|
||||
which are not part of the work. For example, Corresponding Source
|
||||
includes interface definition files associated with source files for
|
||||
the work, and the source code for shared libraries and dynamically
|
||||
linked subprograms that the work is specifically designed to require,
|
||||
such as by intimate data communication or control flow between those
|
||||
subprograms and other parts of the work.
|
||||
|
||||
The Corresponding Source need not include anything that users
|
||||
can regenerate automatically from other parts of the Corresponding
|
||||
Source.
|
||||
|
||||
The Corresponding Source for a work in source code form is that
|
||||
same work.
|
||||
|
||||
2. Basic Permissions.
|
||||
|
||||
All rights granted under this License are granted for the term of
|
||||
copyright on the Program, and are irrevocable provided the stated
|
||||
conditions are met. This License explicitly affirms your unlimited
|
||||
permission to run the unmodified Program. The output from running a
|
||||
covered work is covered by this License only if the output, given its
|
||||
content, constitutes a covered work. This License acknowledges your
|
||||
rights of fair use or other equivalent, as provided by copyright law.
|
||||
|
||||
You may make, run and propagate covered works that you do not
|
||||
convey, without conditions so long as your license otherwise remains
|
||||
in force. You may convey covered works to others for the sole purpose
|
||||
of having them make modifications exclusively for you, or provide you
|
||||
with facilities for running those works, provided that you comply with
|
||||
the terms of this License in conveying all material for which you do
|
||||
not control copyright. Those thus making or running the covered works
|
||||
for you must do so exclusively on your behalf, under your direction
|
||||
and control, on terms that prohibit them from making any copies of
|
||||
your copyrighted material outside their relationship with you.
|
||||
|
||||
Conveying under any other circumstances is permitted solely under
|
||||
the conditions stated below. Sublicensing is not allowed; section 10
|
||||
makes it unnecessary.
|
||||
|
||||
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||
|
||||
No covered work shall be deemed part of an effective technological
|
||||
measure under any applicable law fulfilling obligations under article
|
||||
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||
similar laws prohibiting or restricting circumvention of such
|
||||
measures.
|
||||
|
||||
When you convey a covered work, you waive any legal power to forbid
|
||||
circumvention of technological measures to the extent such circumvention
|
||||
is effected by exercising rights under this License with respect to
|
||||
the covered work, and you disclaim any intention to limit operation or
|
||||
modification of the work as a means of enforcing, against the work's
|
||||
users, your or third parties' legal rights to forbid circumvention of
|
||||
technological measures.
|
||||
|
||||
4. Conveying Verbatim Copies.
|
||||
|
||||
You may convey verbatim copies of the Program's source code as you
|
||||
receive it, in any medium, provided that you conspicuously and
|
||||
appropriately publish on each copy an appropriate copyright notice;
|
||||
keep intact all notices stating that this License and any
|
||||
non-permissive terms added in accord with section 7 apply to the code;
|
||||
keep intact all notices of the absence of any warranty; and give all
|
||||
recipients a copy of this License along with the Program.
|
||||
|
||||
You may charge any price or no price for each copy that you convey,
|
||||
and you may offer support or warranty protection for a fee.
|
||||
|
||||
5. Conveying Modified Source Versions.
|
||||
|
||||
You may convey a work based on the Program, or the modifications to
|
||||
produce it from the Program, in the form of source code under the
|
||||
terms of section 4, provided that you also meet all of these conditions:
|
||||
|
||||
a) The work must carry prominent notices stating that you modified
|
||||
it, and giving a relevant date.
|
||||
|
||||
b) The work must carry prominent notices stating that it is
|
||||
released under this License and any conditions added under section
|
||||
7. This requirement modifies the requirement in section 4 to
|
||||
"keep intact all notices".
|
||||
|
||||
c) You must license the entire work, as a whole, under this
|
||||
License to anyone who comes into possession of a copy. This
|
||||
License will therefore apply, along with any applicable section 7
|
||||
additional terms, to the whole of the work, and all its parts,
|
||||
regardless of how they are packaged. This License gives no
|
||||
permission to license the work in any other way, but it does not
|
||||
invalidate such permission if you have separately received it.
|
||||
|
||||
d) If the work has interactive user interfaces, each must display
|
||||
Appropriate Legal Notices; however, if the Program has interactive
|
||||
interfaces that do not display Appropriate Legal Notices, your
|
||||
work need not make them do so.
|
||||
|
||||
A compilation of a covered work with other separate and independent
|
||||
works, which are not by their nature extensions of the covered work,
|
||||
and which are not combined with it such as to form a larger program,
|
||||
in or on a volume of a storage or distribution medium, is called an
|
||||
"aggregate" if the compilation and its resulting copyright are not
|
||||
used to limit the access or legal rights of the compilation's users
|
||||
beyond what the individual works permit. Inclusion of a covered work
|
||||
in an aggregate does not cause this License to apply to the other
|
||||
parts of the aggregate.
|
||||
|
||||
6. Conveying Non-Source Forms.
|
||||
|
||||
You may convey a covered work in object code form under the terms
|
||||
of sections 4 and 5, provided that you also convey the
|
||||
machine-readable Corresponding Source under the terms of this License,
|
||||
in one of these ways:
|
||||
|
||||
a) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by the
|
||||
Corresponding Source fixed on a durable physical medium
|
||||
customarily used for software interchange.
|
||||
|
||||
b) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by a
|
||||
written offer, valid for at least three years and valid for as
|
||||
long as you offer spare parts or customer support for that product
|
||||
model, to give anyone who possesses the object code either (1) a
|
||||
copy of the Corresponding Source for all the software in the
|
||||
product that is covered by this License, on a durable physical
|
||||
medium customarily used for software interchange, for a price no
|
||||
more than your reasonable cost of physically performing this
|
||||
conveying of source, or (2) access to copy the
|
||||
Corresponding Source from a network server at no charge.
|
||||
|
||||
c) Convey individual copies of the object code with a copy of the
|
||||
written offer to provide the Corresponding Source. This
|
||||
alternative is allowed only occasionally and noncommercially, and
|
||||
only if you received the object code with such an offer, in accord
|
||||
with subsection 6b.
|
||||
|
||||
d) Convey the object code by offering access from a designated
|
||||
place (gratis or for a charge), and offer equivalent access to the
|
||||
Corresponding Source in the same way through the same place at no
|
||||
further charge. You need not require recipients to copy the
|
||||
Corresponding Source along with the object code. If the place to
|
||||
copy the object code is a network server, the Corresponding Source
|
||||
may be on a different server (operated by you or a third party)
|
||||
that supports equivalent copying facilities, provided you maintain
|
||||
clear directions next to the object code saying where to find the
|
||||
Corresponding Source. Regardless of what server hosts the
|
||||
Corresponding Source, you remain obligated to ensure that it is
|
||||
available for as long as needed to satisfy these requirements.
|
||||
|
||||
e) Convey the object code using peer-to-peer transmission, provided
|
||||
you inform other peers where the object code and Corresponding
|
||||
Source of the work are being offered to the general public at no
|
||||
charge under subsection 6d.
|
||||
|
||||
A separable portion of the object code, whose source code is excluded
|
||||
from the Corresponding Source as a System Library, need not be
|
||||
included in conveying the object code work.
|
||||
|
||||
A "User Product" is either (1) a "consumer product", which means any
|
||||
tangible personal property which is normally used for personal, family,
|
||||
or household purposes, or (2) anything designed or sold for incorporation
|
||||
into a dwelling. In determining whether a product is a consumer product,
|
||||
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||
product received by a particular user, "normally used" refers to a
|
||||
typical or common use of that class of product, regardless of the status
|
||||
of the particular user or of the way in which the particular user
|
||||
actually uses, or expects or is expected to use, the product. A product
|
||||
is a consumer product regardless of whether the product has substantial
|
||||
commercial, industrial or non-consumer uses, unless such uses represent
|
||||
the only significant mode of use of the product.
|
||||
|
||||
"Installation Information" for a User Product means any methods,
|
||||
procedures, authorization keys, or other information required to install
|
||||
and execute modified versions of a covered work in that User Product from
|
||||
a modified version of its Corresponding Source. The information must
|
||||
suffice to ensure that the continued functioning of the modified object
|
||||
code is in no case prevented or interfered with solely because
|
||||
modification has been made.
|
||||
|
||||
If you convey an object code work under this section in, or with, or
|
||||
specifically for use in, a User Product, and the conveying occurs as
|
||||
part of a transaction in which the right of possession and use of the
|
||||
User Product is transferred to the recipient in perpetuity or for a
|
||||
fixed term (regardless of how the transaction is characterized), the
|
||||
Corresponding Source conveyed under this section must be accompanied
|
||||
by the Installation Information. But this requirement does not apply
|
||||
if neither you nor any third party retains the ability to install
|
||||
modified object code on the User Product (for example, the work has
|
||||
been installed in ROM).
|
||||
|
||||
The requirement to provide Installation Information does not include a
|
||||
requirement to continue to provide support service, warranty, or updates
|
||||
for a work that has been modified or installed by the recipient, or for
|
||||
the User Product in which it has been modified or installed. Access to a
|
||||
network may be denied when the modification itself materially and
|
||||
adversely affects the operation of the network or violates the rules and
|
||||
protocols for communication across the network.
|
||||
|
||||
Corresponding Source conveyed, and Installation Information provided,
|
||||
in accord with this section must be in a format that is publicly
|
||||
documented (and with an implementation available to the public in
|
||||
source code form), and must require no special password or key for
|
||||
unpacking, reading or copying.
|
||||
|
||||
7. Additional Terms.
|
||||
|
||||
"Additional permissions" are terms that supplement the terms of this
|
||||
License by making exceptions from one or more of its conditions.
|
||||
Additional permissions that are applicable to the entire Program shall
|
||||
be treated as though they were included in this License, to the extent
|
||||
that they are valid under applicable law. If additional permissions
|
||||
apply only to part of the Program, that part may be used separately
|
||||
under those permissions, but the entire Program remains governed by
|
||||
this License without regard to the additional permissions.
|
||||
|
||||
When you convey a copy of a covered work, you may at your option
|
||||
remove any additional permissions from that copy, or from any part of
|
||||
it. (Additional permissions may be written to require their own
|
||||
removal in certain cases when you modify the work.) You may place
|
||||
additional permissions on material, added by you to a covered work,
|
||||
for which you have or can give appropriate copyright permission.
|
||||
|
||||
Notwithstanding any other provision of this License, for material you
|
||||
add to a covered work, you may (if authorized by the copyright holders of
|
||||
that material) supplement the terms of this License with terms:
|
||||
|
||||
a) Disclaiming warranty or limiting liability differently from the
|
||||
terms of sections 15 and 16 of this License; or
|
||||
|
||||
b) Requiring preservation of specified reasonable legal notices or
|
||||
author attributions in that material or in the Appropriate Legal
|
||||
Notices displayed by works containing it; or
|
||||
|
||||
c) Prohibiting misrepresentation of the origin of that material, or
|
||||
requiring that modified versions of such material be marked in
|
||||
reasonable ways as different from the original version; or
|
||||
|
||||
d) Limiting the use for publicity purposes of names of licensors or
|
||||
authors of the material; or
|
||||
|
||||
e) Declining to grant rights under trademark law for use of some
|
||||
trade names, trademarks, or service marks; or
|
||||
|
||||
f) Requiring indemnification of licensors and authors of that
|
||||
material by anyone who conveys the material (or modified versions of
|
||||
it) with contractual assumptions of liability to the recipient, for
|
||||
any liability that these contractual assumptions directly impose on
|
||||
those licensors and authors.
|
||||
|
||||
All other non-permissive additional terms are considered "further
|
||||
restrictions" within the meaning of section 10. If the Program as you
|
||||
received it, or any part of it, contains a notice stating that it is
|
||||
governed by this License along with a term that is a further
|
||||
restriction, you may remove that term. If a license document contains
|
||||
a further restriction but permits relicensing or conveying under this
|
||||
License, you may add to a covered work material governed by the terms
|
||||
of that license document, provided that the further restriction does
|
||||
not survive such relicensing or conveying.
|
||||
|
||||
If you add terms to a covered work in accord with this section, you
|
||||
must place, in the relevant source files, a statement of the
|
||||
additional terms that apply to those files, or a notice indicating
|
||||
where to find the applicable terms.
|
||||
|
||||
Additional terms, permissive or non-permissive, may be stated in the
|
||||
form of a separately written license, or stated as exceptions;
|
||||
the above requirements apply either way.
|
||||
|
||||
8. Termination.
|
||||
|
||||
You may not propagate or modify a covered work except as expressly
|
||||
provided under this License. Any attempt otherwise to propagate or
|
||||
modify it is void, and will automatically terminate your rights under
|
||||
this License (including any patent licenses granted under the third
|
||||
paragraph of section 11).
|
||||
|
||||
However, if you cease all violation of this License, then your
|
||||
license from a particular copyright holder is reinstated (a)
|
||||
provisionally, unless and until the copyright holder explicitly and
|
||||
finally terminates your license, and (b) permanently, if the copyright
|
||||
holder fails to notify you of the violation by some reasonable means
|
||||
prior to 60 days after the cessation.
|
||||
|
||||
Moreover, your license from a particular copyright holder is
|
||||
reinstated permanently if the copyright holder notifies you of the
|
||||
violation by some reasonable means, this is the first time you have
|
||||
received notice of violation of this License (for any work) from that
|
||||
copyright holder, and you cure the violation prior to 30 days after
|
||||
your receipt of the notice.
|
||||
|
||||
Termination of your rights under this section does not terminate the
|
||||
licenses of parties who have received copies or rights from you under
|
||||
this License. If your rights have been terminated and not permanently
|
||||
reinstated, you do not qualify to receive new licenses for the same
|
||||
material under section 10.
|
||||
|
||||
9. Acceptance Not Required for Having Copies.
|
||||
|
||||
You are not required to accept this License in order to receive or
|
||||
run a copy of the Program. Ancillary propagation of a covered work
|
||||
occurring solely as a consequence of using peer-to-peer transmission
|
||||
to receive a copy likewise does not require acceptance. However,
|
||||
nothing other than this License grants you permission to propagate or
|
||||
modify any covered work. These actions infringe copyright if you do
|
||||
not accept this License. Therefore, by modifying or propagating a
|
||||
covered work, you indicate your acceptance of this License to do so.
|
||||
|
||||
10. Automatic Licensing of Downstream Recipients.
|
||||
|
||||
Each time you convey a covered work, the recipient automatically
|
||||
receives a license from the original licensors, to run, modify and
|
||||
propagate that work, subject to this License. You are not responsible
|
||||
for enforcing compliance by third parties with this License.
|
||||
|
||||
An "entity transaction" is a transaction transferring control of an
|
||||
organization, or substantially all assets of one, or subdividing an
|
||||
organization, or merging organizations. If propagation of a covered
|
||||
work results from an entity transaction, each party to that
|
||||
transaction who receives a copy of the work also receives whatever
|
||||
licenses to the work the party's predecessor in interest had or could
|
||||
give under the previous paragraph, plus a right to possession of the
|
||||
Corresponding Source of the work from the predecessor in interest, if
|
||||
the predecessor has it or can get it with reasonable efforts.
|
||||
|
||||
You may not impose any further restrictions on the exercise of the
|
||||
rights granted or affirmed under this License. For example, you may
|
||||
not impose a license fee, royalty, or other charge for exercise of
|
||||
rights granted under this License, and you may not initiate litigation
|
||||
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||
any patent claim is infringed by making, using, selling, offering for
|
||||
sale, or importing the Program or any portion of it.
|
||||
|
||||
11. Patents.
|
||||
|
||||
A "contributor" is a copyright holder who authorizes use under this
|
||||
License of the Program or a work on which the Program is based. The
|
||||
work thus licensed is called the contributor's "contributor version".
|
||||
|
||||
A contributor's "essential patent claims" are all patent claims
|
||||
owned or controlled by the contributor, whether already acquired or
|
||||
hereafter acquired, that would be infringed by some manner, permitted
|
||||
by this License, of making, using, or selling its contributor version,
|
||||
but do not include claims that would be infringed only as a
|
||||
consequence of further modification of the contributor version. For
|
||||
purposes of this definition, "control" includes the right to grant
|
||||
patent sublicenses in a manner consistent with the requirements of
|
||||
this License.
|
||||
|
||||
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||
patent license under the contributor's essential patent claims, to
|
||||
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||
propagate the contents of its contributor version.
|
||||
|
||||
In the following three paragraphs, a "patent license" is any express
|
||||
agreement or commitment, however denominated, not to enforce a patent
|
||||
(such as an express permission to practice a patent or covenant not to
|
||||
sue for patent infringement). To "grant" such a patent license to a
|
||||
party means to make such an agreement or commitment not to enforce a
|
||||
patent against the party.
|
||||
|
||||
If you convey a covered work, knowingly relying on a patent license,
|
||||
and the Corresponding Source of the work is not available for anyone
|
||||
to copy, free of charge and under the terms of this License, through a
|
||||
publicly available network server or other readily accessible means,
|
||||
then you must either (1) cause the Corresponding Source to be so
|
||||
available, or (2) arrange to deprive yourself of the benefit of the
|
||||
patent license for this particular work, or (3) arrange, in a manner
|
||||
consistent with the requirements of this License, to extend the patent
|
||||
license to downstream recipients. "Knowingly relying" means you have
|
||||
actual knowledge that, but for the patent license, your conveying the
|
||||
covered work in a country, or your recipient's use of the covered work
|
||||
in a country, would infringe one or more identifiable patents in that
|
||||
country that you have reason to believe are valid.
|
||||
|
||||
If, pursuant to or in connection with a single transaction or
|
||||
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||
covered work, and grant a patent license to some of the parties
|
||||
receiving the covered work authorizing them to use, propagate, modify
|
||||
or convey a specific copy of the covered work, then the patent license
|
||||
you grant is automatically extended to all recipients of the covered
|
||||
work and works based on it.
|
||||
|
||||
A patent license is "discriminatory" if it does not include within
|
||||
the scope of its coverage, prohibits the exercise of, or is
|
||||
conditioned on the non-exercise of one or more of the rights that are
|
||||
specifically granted under this License. You may not convey a covered
|
||||
work if you are a party to an arrangement with a third party that is
|
||||
in the business of distributing software, under which you make payment
|
||||
to the third party based on the extent of your activity of conveying
|
||||
the work, and under which the third party grants, to any of the
|
||||
parties who would receive the covered work from you, a discriminatory
|
||||
patent license (a) in connection with copies of the covered work
|
||||
conveyed by you (or copies made from those copies), or (b) primarily
|
||||
for and in connection with specific products or compilations that
|
||||
contain the covered work, unless you entered into that arrangement,
|
||||
or that patent license was granted, prior to 28 March 2007.
|
||||
|
||||
Nothing in this License shall be construed as excluding or limiting
|
||||
any implied license or other defenses to infringement that may
|
||||
otherwise be available to you under applicable patent law.
|
||||
|
||||
12. No Surrender of Others' Freedom.
|
||||
|
||||
If conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot convey a
|
||||
covered work so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you may
|
||||
not convey it at all. For example, if you agree to terms that obligate you
|
||||
to collect a royalty for further conveying from those to whom you convey
|
||||
the Program, the only way you could satisfy both those terms and this
|
||||
License would be to refrain entirely from conveying the Program.
|
||||
|
||||
13. Use with the GNU Affero General Public License.
|
||||
|
||||
Notwithstanding any other provision of this License, you have
|
||||
permission to link or combine any covered work with a work licensed
|
||||
under version 3 of the GNU Affero General Public License into a single
|
||||
combined work, and to convey the resulting work. The terms of this
|
||||
License will continue to apply to the part which is the covered work,
|
||||
but the special requirements of the GNU Affero General Public License,
|
||||
section 13, concerning interaction through a network will apply to the
|
||||
combination as such.
|
||||
|
||||
14. Revised Versions of this License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions of
|
||||
the GNU General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the
|
||||
Program specifies that a certain numbered version of the GNU General
|
||||
Public License "or any later version" applies to it, you have the
|
||||
option of following the terms and conditions either of that numbered
|
||||
version or of any later version published by the Free Software
|
||||
Foundation. If the Program does not specify a version number of the
|
||||
GNU General Public License, you may choose any version ever published
|
||||
by the Free Software Foundation.
|
||||
|
||||
If the Program specifies that a proxy can decide which future
|
||||
versions of the GNU General Public License can be used, that proxy's
|
||||
public statement of acceptance of a version permanently authorizes you
|
||||
to choose that version for the Program.
|
||||
|
||||
Later license versions may give you additional or different
|
||||
permissions. However, no additional obligations are imposed on any
|
||||
author or copyright holder as a result of your choosing to follow a
|
||||
later version.
|
||||
|
||||
15. Disclaimer of Warranty.
|
||||
|
||||
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
||||
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
||||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
||||
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. Limitation of Liability.
|
||||
|
||||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
||||
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
||||
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
||||
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGES.
|
||||
|
||||
17. Interpretation of Sections 15 and 16.
|
||||
|
||||
If the disclaimer of warranty and limitation of liability provided
|
||||
above cannot be given local legal effect according to their terms,
|
||||
reviewing courts shall apply local law that most closely approximates
|
||||
an absolute waiver of all civil liability in connection with the
|
||||
Program, unless a warranty or assumption of liability accompanies a
|
||||
copy of the Program in return for a fee.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
state the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
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/>.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program does terminal interaction, make it output a short
|
||||
notice like this when it starts in an interactive mode:
|
||||
|
||||
<program> Copyright (C) <year> <name of author>
|
||||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, your program's commands
|
||||
might be different; for a GUI interface, you would use an "about box".
|
||||
|
||||
You should also get your employer (if you work as a programmer) or school,
|
||||
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||
For more information on this, and how to apply and follow the GNU GPL, see
|
||||
<http://www.gnu.org/licenses/>.
|
||||
|
||||
The GNU General Public License does not permit incorporating your program
|
||||
into proprietary programs. If your program is a subroutine library, you
|
||||
may consider it more useful to permit linking proprietary applications with
|
||||
the library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License. But first, please read
|
||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
674
source/freeipmi/usr/share/doc/freeipmi/COPYING.ipmiconsole
Normal file
674
source/freeipmi/usr/share/doc/freeipmi/COPYING.ipmiconsole
Normal file
@ -0,0 +1,674 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The GNU General Public License is a free, copyleft license for
|
||||
software and other kinds of works.
|
||||
|
||||
The licenses for most software and other practical works are designed
|
||||
to take away your freedom to share and change the works. By contrast,
|
||||
the GNU General Public License is intended to guarantee your freedom to
|
||||
share and change all versions of a program--to make sure it remains free
|
||||
software for all its users. We, the Free Software Foundation, use the
|
||||
GNU General Public License for most of our software; it applies also to
|
||||
any other work released this way by its authors. You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
them if you wish), that you receive source code or can get it if you
|
||||
want it, that you can change the software or use pieces of it in new
|
||||
free programs, and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to prevent others from denying you
|
||||
these rights or asking you to surrender the rights. Therefore, you have
|
||||
certain responsibilities if you distribute copies of the software, or if
|
||||
you modify it: responsibilities to respect the freedom of others.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must pass on to the recipients the same
|
||||
freedoms that you received. You must make sure that they, too, receive
|
||||
or can get the source code. And you must show them these terms so they
|
||||
know their rights.
|
||||
|
||||
Developers that use the GNU GPL protect your rights with two steps:
|
||||
(1) assert copyright on the software, and (2) offer you this License
|
||||
giving you legal permission to copy, distribute and/or modify it.
|
||||
|
||||
For the developers' and authors' protection, the GPL clearly explains
|
||||
that there is no warranty for this free software. For both users' and
|
||||
authors' sake, the GPL requires that modified versions be marked as
|
||||
changed, so that their problems will not be attributed erroneously to
|
||||
authors of previous versions.
|
||||
|
||||
Some devices are designed to deny users access to install or run
|
||||
modified versions of the software inside them, although the manufacturer
|
||||
can do so. This is fundamentally incompatible with the aim of
|
||||
protecting users' freedom to change the software. The systematic
|
||||
pattern of such abuse occurs in the area of products for individuals to
|
||||
use, which is precisely where it is most unacceptable. Therefore, we
|
||||
have designed this version of the GPL to prohibit the practice for those
|
||||
products. If such problems arise substantially in other domains, we
|
||||
stand ready to extend this provision to those domains in future versions
|
||||
of the GPL, as needed to protect the freedom of users.
|
||||
|
||||
Finally, every program is threatened constantly by software patents.
|
||||
States should not allow patents to restrict development and use of
|
||||
software on general-purpose computers, but in those that do, we wish to
|
||||
avoid the special danger that patents applied to a free program could
|
||||
make it effectively proprietary. To prevent this, the GPL assures that
|
||||
patents cannot be used to render the program non-free.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
TERMS AND CONDITIONS
|
||||
|
||||
0. Definitions.
|
||||
|
||||
"This License" refers to version 3 of the GNU General Public License.
|
||||
|
||||
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||
works, such as semiconductor masks.
|
||||
|
||||
"The Program" refers to any copyrightable work licensed under this
|
||||
License. Each licensee is addressed as "you". "Licensees" and
|
||||
"recipients" may be individuals or organizations.
|
||||
|
||||
To "modify" a work means to copy from or adapt all or part of the work
|
||||
in a fashion requiring copyright permission, other than the making of an
|
||||
exact copy. The resulting work is called a "modified version" of the
|
||||
earlier work or a work "based on" the earlier work.
|
||||
|
||||
A "covered work" means either the unmodified Program or a work based
|
||||
on the Program.
|
||||
|
||||
To "propagate" a work means to do anything with it that, without
|
||||
permission, would make you directly or secondarily liable for
|
||||
infringement under applicable copyright law, except executing it on a
|
||||
computer or modifying a private copy. Propagation includes copying,
|
||||
distribution (with or without modification), making available to the
|
||||
public, and in some countries other activities as well.
|
||||
|
||||
To "convey" a work means any kind of propagation that enables other
|
||||
parties to make or receive copies. Mere interaction with a user through
|
||||
a computer network, with no transfer of a copy, is not conveying.
|
||||
|
||||
An interactive user interface displays "Appropriate Legal Notices"
|
||||
to the extent that it includes a convenient and prominently visible
|
||||
feature that (1) displays an appropriate copyright notice, and (2)
|
||||
tells the user that there is no warranty for the work (except to the
|
||||
extent that warranties are provided), that licensees may convey the
|
||||
work under this License, and how to view a copy of this License. If
|
||||
the interface presents a list of user commands or options, such as a
|
||||
menu, a prominent item in the list meets this criterion.
|
||||
|
||||
1. Source Code.
|
||||
|
||||
The "source code" for a work means the preferred form of the work
|
||||
for making modifications to it. "Object code" means any non-source
|
||||
form of a work.
|
||||
|
||||
A "Standard Interface" means an interface that either is an official
|
||||
standard defined by a recognized standards body, or, in the case of
|
||||
interfaces specified for a particular programming language, one that
|
||||
is widely used among developers working in that language.
|
||||
|
||||
The "System Libraries" of an executable work include anything, other
|
||||
than the work as a whole, that (a) is included in the normal form of
|
||||
packaging a Major Component, but which is not part of that Major
|
||||
Component, and (b) serves only to enable use of the work with that
|
||||
Major Component, or to implement a Standard Interface for which an
|
||||
implementation is available to the public in source code form. A
|
||||
"Major Component", in this context, means a major essential component
|
||||
(kernel, window system, and so on) of the specific operating system
|
||||
(if any) on which the executable work runs, or a compiler used to
|
||||
produce the work, or an object code interpreter used to run it.
|
||||
|
||||
The "Corresponding Source" for a work in object code form means all
|
||||
the source code needed to generate, install, and (for an executable
|
||||
work) run the object code and to modify the work, including scripts to
|
||||
control those activities. However, it does not include the work's
|
||||
System Libraries, or general-purpose tools or generally available free
|
||||
programs which are used unmodified in performing those activities but
|
||||
which are not part of the work. For example, Corresponding Source
|
||||
includes interface definition files associated with source files for
|
||||
the work, and the source code for shared libraries and dynamically
|
||||
linked subprograms that the work is specifically designed to require,
|
||||
such as by intimate data communication or control flow between those
|
||||
subprograms and other parts of the work.
|
||||
|
||||
The Corresponding Source need not include anything that users
|
||||
can regenerate automatically from other parts of the Corresponding
|
||||
Source.
|
||||
|
||||
The Corresponding Source for a work in source code form is that
|
||||
same work.
|
||||
|
||||
2. Basic Permissions.
|
||||
|
||||
All rights granted under this License are granted for the term of
|
||||
copyright on the Program, and are irrevocable provided the stated
|
||||
conditions are met. This License explicitly affirms your unlimited
|
||||
permission to run the unmodified Program. The output from running a
|
||||
covered work is covered by this License only if the output, given its
|
||||
content, constitutes a covered work. This License acknowledges your
|
||||
rights of fair use or other equivalent, as provided by copyright law.
|
||||
|
||||
You may make, run and propagate covered works that you do not
|
||||
convey, without conditions so long as your license otherwise remains
|
||||
in force. You may convey covered works to others for the sole purpose
|
||||
of having them make modifications exclusively for you, or provide you
|
||||
with facilities for running those works, provided that you comply with
|
||||
the terms of this License in conveying all material for which you do
|
||||
not control copyright. Those thus making or running the covered works
|
||||
for you must do so exclusively on your behalf, under your direction
|
||||
and control, on terms that prohibit them from making any copies of
|
||||
your copyrighted material outside their relationship with you.
|
||||
|
||||
Conveying under any other circumstances is permitted solely under
|
||||
the conditions stated below. Sublicensing is not allowed; section 10
|
||||
makes it unnecessary.
|
||||
|
||||
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||
|
||||
No covered work shall be deemed part of an effective technological
|
||||
measure under any applicable law fulfilling obligations under article
|
||||
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||
similar laws prohibiting or restricting circumvention of such
|
||||
measures.
|
||||
|
||||
When you convey a covered work, you waive any legal power to forbid
|
||||
circumvention of technological measures to the extent such circumvention
|
||||
is effected by exercising rights under this License with respect to
|
||||
the covered work, and you disclaim any intention to limit operation or
|
||||
modification of the work as a means of enforcing, against the work's
|
||||
users, your or third parties' legal rights to forbid circumvention of
|
||||
technological measures.
|
||||
|
||||
4. Conveying Verbatim Copies.
|
||||
|
||||
You may convey verbatim copies of the Program's source code as you
|
||||
receive it, in any medium, provided that you conspicuously and
|
||||
appropriately publish on each copy an appropriate copyright notice;
|
||||
keep intact all notices stating that this License and any
|
||||
non-permissive terms added in accord with section 7 apply to the code;
|
||||
keep intact all notices of the absence of any warranty; and give all
|
||||
recipients a copy of this License along with the Program.
|
||||
|
||||
You may charge any price or no price for each copy that you convey,
|
||||
and you may offer support or warranty protection for a fee.
|
||||
|
||||
5. Conveying Modified Source Versions.
|
||||
|
||||
You may convey a work based on the Program, or the modifications to
|
||||
produce it from the Program, in the form of source code under the
|
||||
terms of section 4, provided that you also meet all of these conditions:
|
||||
|
||||
a) The work must carry prominent notices stating that you modified
|
||||
it, and giving a relevant date.
|
||||
|
||||
b) The work must carry prominent notices stating that it is
|
||||
released under this License and any conditions added under section
|
||||
7. This requirement modifies the requirement in section 4 to
|
||||
"keep intact all notices".
|
||||
|
||||
c) You must license the entire work, as a whole, under this
|
||||
License to anyone who comes into possession of a copy. This
|
||||
License will therefore apply, along with any applicable section 7
|
||||
additional terms, to the whole of the work, and all its parts,
|
||||
regardless of how they are packaged. This License gives no
|
||||
permission to license the work in any other way, but it does not
|
||||
invalidate such permission if you have separately received it.
|
||||
|
||||
d) If the work has interactive user interfaces, each must display
|
||||
Appropriate Legal Notices; however, if the Program has interactive
|
||||
interfaces that do not display Appropriate Legal Notices, your
|
||||
work need not make them do so.
|
||||
|
||||
A compilation of a covered work with other separate and independent
|
||||
works, which are not by their nature extensions of the covered work,
|
||||
and which are not combined with it such as to form a larger program,
|
||||
in or on a volume of a storage or distribution medium, is called an
|
||||
"aggregate" if the compilation and its resulting copyright are not
|
||||
used to limit the access or legal rights of the compilation's users
|
||||
beyond what the individual works permit. Inclusion of a covered work
|
||||
in an aggregate does not cause this License to apply to the other
|
||||
parts of the aggregate.
|
||||
|
||||
6. Conveying Non-Source Forms.
|
||||
|
||||
You may convey a covered work in object code form under the terms
|
||||
of sections 4 and 5, provided that you also convey the
|
||||
machine-readable Corresponding Source under the terms of this License,
|
||||
in one of these ways:
|
||||
|
||||
a) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by the
|
||||
Corresponding Source fixed on a durable physical medium
|
||||
customarily used for software interchange.
|
||||
|
||||
b) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by a
|
||||
written offer, valid for at least three years and valid for as
|
||||
long as you offer spare parts or customer support for that product
|
||||
model, to give anyone who possesses the object code either (1) a
|
||||
copy of the Corresponding Source for all the software in the
|
||||
product that is covered by this License, on a durable physical
|
||||
medium customarily used for software interchange, for a price no
|
||||
more than your reasonable cost of physically performing this
|
||||
conveying of source, or (2) access to copy the
|
||||
Corresponding Source from a network server at no charge.
|
||||
|
||||
c) Convey individual copies of the object code with a copy of the
|
||||
written offer to provide the Corresponding Source. This
|
||||
alternative is allowed only occasionally and noncommercially, and
|
||||
only if you received the object code with such an offer, in accord
|
||||
with subsection 6b.
|
||||
|
||||
d) Convey the object code by offering access from a designated
|
||||
place (gratis or for a charge), and offer equivalent access to the
|
||||
Corresponding Source in the same way through the same place at no
|
||||
further charge. You need not require recipients to copy the
|
||||
Corresponding Source along with the object code. If the place to
|
||||
copy the object code is a network server, the Corresponding Source
|
||||
may be on a different server (operated by you or a third party)
|
||||
that supports equivalent copying facilities, provided you maintain
|
||||
clear directions next to the object code saying where to find the
|
||||
Corresponding Source. Regardless of what server hosts the
|
||||
Corresponding Source, you remain obligated to ensure that it is
|
||||
available for as long as needed to satisfy these requirements.
|
||||
|
||||
e) Convey the object code using peer-to-peer transmission, provided
|
||||
you inform other peers where the object code and Corresponding
|
||||
Source of the work are being offered to the general public at no
|
||||
charge under subsection 6d.
|
||||
|
||||
A separable portion of the object code, whose source code is excluded
|
||||
from the Corresponding Source as a System Library, need not be
|
||||
included in conveying the object code work.
|
||||
|
||||
A "User Product" is either (1) a "consumer product", which means any
|
||||
tangible personal property which is normally used for personal, family,
|
||||
or household purposes, or (2) anything designed or sold for incorporation
|
||||
into a dwelling. In determining whether a product is a consumer product,
|
||||
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||
product received by a particular user, "normally used" refers to a
|
||||
typical or common use of that class of product, regardless of the status
|
||||
of the particular user or of the way in which the particular user
|
||||
actually uses, or expects or is expected to use, the product. A product
|
||||
is a consumer product regardless of whether the product has substantial
|
||||
commercial, industrial or non-consumer uses, unless such uses represent
|
||||
the only significant mode of use of the product.
|
||||
|
||||
"Installation Information" for a User Product means any methods,
|
||||
procedures, authorization keys, or other information required to install
|
||||
and execute modified versions of a covered work in that User Product from
|
||||
a modified version of its Corresponding Source. The information must
|
||||
suffice to ensure that the continued functioning of the modified object
|
||||
code is in no case prevented or interfered with solely because
|
||||
modification has been made.
|
||||
|
||||
If you convey an object code work under this section in, or with, or
|
||||
specifically for use in, a User Product, and the conveying occurs as
|
||||
part of a transaction in which the right of possession and use of the
|
||||
User Product is transferred to the recipient in perpetuity or for a
|
||||
fixed term (regardless of how the transaction is characterized), the
|
||||
Corresponding Source conveyed under this section must be accompanied
|
||||
by the Installation Information. But this requirement does not apply
|
||||
if neither you nor any third party retains the ability to install
|
||||
modified object code on the User Product (for example, the work has
|
||||
been installed in ROM).
|
||||
|
||||
The requirement to provide Installation Information does not include a
|
||||
requirement to continue to provide support service, warranty, or updates
|
||||
for a work that has been modified or installed by the recipient, or for
|
||||
the User Product in which it has been modified or installed. Access to a
|
||||
network may be denied when the modification itself materially and
|
||||
adversely affects the operation of the network or violates the rules and
|
||||
protocols for communication across the network.
|
||||
|
||||
Corresponding Source conveyed, and Installation Information provided,
|
||||
in accord with this section must be in a format that is publicly
|
||||
documented (and with an implementation available to the public in
|
||||
source code form), and must require no special password or key for
|
||||
unpacking, reading or copying.
|
||||
|
||||
7. Additional Terms.
|
||||
|
||||
"Additional permissions" are terms that supplement the terms of this
|
||||
License by making exceptions from one or more of its conditions.
|
||||
Additional permissions that are applicable to the entire Program shall
|
||||
be treated as though they were included in this License, to the extent
|
||||
that they are valid under applicable law. If additional permissions
|
||||
apply only to part of the Program, that part may be used separately
|
||||
under those permissions, but the entire Program remains governed by
|
||||
this License without regard to the additional permissions.
|
||||
|
||||
When you convey a copy of a covered work, you may at your option
|
||||
remove any additional permissions from that copy, or from any part of
|
||||
it. (Additional permissions may be written to require their own
|
||||
removal in certain cases when you modify the work.) You may place
|
||||
additional permissions on material, added by you to a covered work,
|
||||
for which you have or can give appropriate copyright permission.
|
||||
|
||||
Notwithstanding any other provision of this License, for material you
|
||||
add to a covered work, you may (if authorized by the copyright holders of
|
||||
that material) supplement the terms of this License with terms:
|
||||
|
||||
a) Disclaiming warranty or limiting liability differently from the
|
||||
terms of sections 15 and 16 of this License; or
|
||||
|
||||
b) Requiring preservation of specified reasonable legal notices or
|
||||
author attributions in that material or in the Appropriate Legal
|
||||
Notices displayed by works containing it; or
|
||||
|
||||
c) Prohibiting misrepresentation of the origin of that material, or
|
||||
requiring that modified versions of such material be marked in
|
||||
reasonable ways as different from the original version; or
|
||||
|
||||
d) Limiting the use for publicity purposes of names of licensors or
|
||||
authors of the material; or
|
||||
|
||||
e) Declining to grant rights under trademark law for use of some
|
||||
trade names, trademarks, or service marks; or
|
||||
|
||||
f) Requiring indemnification of licensors and authors of that
|
||||
material by anyone who conveys the material (or modified versions of
|
||||
it) with contractual assumptions of liability to the recipient, for
|
||||
any liability that these contractual assumptions directly impose on
|
||||
those licensors and authors.
|
||||
|
||||
All other non-permissive additional terms are considered "further
|
||||
restrictions" within the meaning of section 10. If the Program as you
|
||||
received it, or any part of it, contains a notice stating that it is
|
||||
governed by this License along with a term that is a further
|
||||
restriction, you may remove that term. If a license document contains
|
||||
a further restriction but permits relicensing or conveying under this
|
||||
License, you may add to a covered work material governed by the terms
|
||||
of that license document, provided that the further restriction does
|
||||
not survive such relicensing or conveying.
|
||||
|
||||
If you add terms to a covered work in accord with this section, you
|
||||
must place, in the relevant source files, a statement of the
|
||||
additional terms that apply to those files, or a notice indicating
|
||||
where to find the applicable terms.
|
||||
|
||||
Additional terms, permissive or non-permissive, may be stated in the
|
||||
form of a separately written license, or stated as exceptions;
|
||||
the above requirements apply either way.
|
||||
|
||||
8. Termination.
|
||||
|
||||
You may not propagate or modify a covered work except as expressly
|
||||
provided under this License. Any attempt otherwise to propagate or
|
||||
modify it is void, and will automatically terminate your rights under
|
||||
this License (including any patent licenses granted under the third
|
||||
paragraph of section 11).
|
||||
|
||||
However, if you cease all violation of this License, then your
|
||||
license from a particular copyright holder is reinstated (a)
|
||||
provisionally, unless and until the copyright holder explicitly and
|
||||
finally terminates your license, and (b) permanently, if the copyright
|
||||
holder fails to notify you of the violation by some reasonable means
|
||||
prior to 60 days after the cessation.
|
||||
|
||||
Moreover, your license from a particular copyright holder is
|
||||
reinstated permanently if the copyright holder notifies you of the
|
||||
violation by some reasonable means, this is the first time you have
|
||||
received notice of violation of this License (for any work) from that
|
||||
copyright holder, and you cure the violation prior to 30 days after
|
||||
your receipt of the notice.
|
||||
|
||||
Termination of your rights under this section does not terminate the
|
||||
licenses of parties who have received copies or rights from you under
|
||||
this License. If your rights have been terminated and not permanently
|
||||
reinstated, you do not qualify to receive new licenses for the same
|
||||
material under section 10.
|
||||
|
||||
9. Acceptance Not Required for Having Copies.
|
||||
|
||||
You are not required to accept this License in order to receive or
|
||||
run a copy of the Program. Ancillary propagation of a covered work
|
||||
occurring solely as a consequence of using peer-to-peer transmission
|
||||
to receive a copy likewise does not require acceptance. However,
|
||||
nothing other than this License grants you permission to propagate or
|
||||
modify any covered work. These actions infringe copyright if you do
|
||||
not accept this License. Therefore, by modifying or propagating a
|
||||
covered work, you indicate your acceptance of this License to do so.
|
||||
|
||||
10. Automatic Licensing of Downstream Recipients.
|
||||
|
||||
Each time you convey a covered work, the recipient automatically
|
||||
receives a license from the original licensors, to run, modify and
|
||||
propagate that work, subject to this License. You are not responsible
|
||||
for enforcing compliance by third parties with this License.
|
||||
|
||||
An "entity transaction" is a transaction transferring control of an
|
||||
organization, or substantially all assets of one, or subdividing an
|
||||
organization, or merging organizations. If propagation of a covered
|
||||
work results from an entity transaction, each party to that
|
||||
transaction who receives a copy of the work also receives whatever
|
||||
licenses to the work the party's predecessor in interest had or could
|
||||
give under the previous paragraph, plus a right to possession of the
|
||||
Corresponding Source of the work from the predecessor in interest, if
|
||||
the predecessor has it or can get it with reasonable efforts.
|
||||
|
||||
You may not impose any further restrictions on the exercise of the
|
||||
rights granted or affirmed under this License. For example, you may
|
||||
not impose a license fee, royalty, or other charge for exercise of
|
||||
rights granted under this License, and you may not initiate litigation
|
||||
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||
any patent claim is infringed by making, using, selling, offering for
|
||||
sale, or importing the Program or any portion of it.
|
||||
|
||||
11. Patents.
|
||||
|
||||
A "contributor" is a copyright holder who authorizes use under this
|
||||
License of the Program or a work on which the Program is based. The
|
||||
work thus licensed is called the contributor's "contributor version".
|
||||
|
||||
A contributor's "essential patent claims" are all patent claims
|
||||
owned or controlled by the contributor, whether already acquired or
|
||||
hereafter acquired, that would be infringed by some manner, permitted
|
||||
by this License, of making, using, or selling its contributor version,
|
||||
but do not include claims that would be infringed only as a
|
||||
consequence of further modification of the contributor version. For
|
||||
purposes of this definition, "control" includes the right to grant
|
||||
patent sublicenses in a manner consistent with the requirements of
|
||||
this License.
|
||||
|
||||
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||
patent license under the contributor's essential patent claims, to
|
||||
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||
propagate the contents of its contributor version.
|
||||
|
||||
In the following three paragraphs, a "patent license" is any express
|
||||
agreement or commitment, however denominated, not to enforce a patent
|
||||
(such as an express permission to practice a patent or covenant not to
|
||||
sue for patent infringement). To "grant" such a patent license to a
|
||||
party means to make such an agreement or commitment not to enforce a
|
||||
patent against the party.
|
||||
|
||||
If you convey a covered work, knowingly relying on a patent license,
|
||||
and the Corresponding Source of the work is not available for anyone
|
||||
to copy, free of charge and under the terms of this License, through a
|
||||
publicly available network server or other readily accessible means,
|
||||
then you must either (1) cause the Corresponding Source to be so
|
||||
available, or (2) arrange to deprive yourself of the benefit of the
|
||||
patent license for this particular work, or (3) arrange, in a manner
|
||||
consistent with the requirements of this License, to extend the patent
|
||||
license to downstream recipients. "Knowingly relying" means you have
|
||||
actual knowledge that, but for the patent license, your conveying the
|
||||
covered work in a country, or your recipient's use of the covered work
|
||||
in a country, would infringe one or more identifiable patents in that
|
||||
country that you have reason to believe are valid.
|
||||
|
||||
If, pursuant to or in connection with a single transaction or
|
||||
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||
covered work, and grant a patent license to some of the parties
|
||||
receiving the covered work authorizing them to use, propagate, modify
|
||||
or convey a specific copy of the covered work, then the patent license
|
||||
you grant is automatically extended to all recipients of the covered
|
||||
work and works based on it.
|
||||
|
||||
A patent license is "discriminatory" if it does not include within
|
||||
the scope of its coverage, prohibits the exercise of, or is
|
||||
conditioned on the non-exercise of one or more of the rights that are
|
||||
specifically granted under this License. You may not convey a covered
|
||||
work if you are a party to an arrangement with a third party that is
|
||||
in the business of distributing software, under which you make payment
|
||||
to the third party based on the extent of your activity of conveying
|
||||
the work, and under which the third party grants, to any of the
|
||||
parties who would receive the covered work from you, a discriminatory
|
||||
patent license (a) in connection with copies of the covered work
|
||||
conveyed by you (or copies made from those copies), or (b) primarily
|
||||
for and in connection with specific products or compilations that
|
||||
contain the covered work, unless you entered into that arrangement,
|
||||
or that patent license was granted, prior to 28 March 2007.
|
||||
|
||||
Nothing in this License shall be construed as excluding or limiting
|
||||
any implied license or other defenses to infringement that may
|
||||
otherwise be available to you under applicable patent law.
|
||||
|
||||
12. No Surrender of Others' Freedom.
|
||||
|
||||
If conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot convey a
|
||||
covered work so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you may
|
||||
not convey it at all. For example, if you agree to terms that obligate you
|
||||
to collect a royalty for further conveying from those to whom you convey
|
||||
the Program, the only way you could satisfy both those terms and this
|
||||
License would be to refrain entirely from conveying the Program.
|
||||
|
||||
13. Use with the GNU Affero General Public License.
|
||||
|
||||
Notwithstanding any other provision of this License, you have
|
||||
permission to link or combine any covered work with a work licensed
|
||||
under version 3 of the GNU Affero General Public License into a single
|
||||
combined work, and to convey the resulting work. The terms of this
|
||||
License will continue to apply to the part which is the covered work,
|
||||
but the special requirements of the GNU Affero General Public License,
|
||||
section 13, concerning interaction through a network will apply to the
|
||||
combination as such.
|
||||
|
||||
14. Revised Versions of this License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions of
|
||||
the GNU General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the
|
||||
Program specifies that a certain numbered version of the GNU General
|
||||
Public License "or any later version" applies to it, you have the
|
||||
option of following the terms and conditions either of that numbered
|
||||
version or of any later version published by the Free Software
|
||||
Foundation. If the Program does not specify a version number of the
|
||||
GNU General Public License, you may choose any version ever published
|
||||
by the Free Software Foundation.
|
||||
|
||||
If the Program specifies that a proxy can decide which future
|
||||
versions of the GNU General Public License can be used, that proxy's
|
||||
public statement of acceptance of a version permanently authorizes you
|
||||
to choose that version for the Program.
|
||||
|
||||
Later license versions may give you additional or different
|
||||
permissions. However, no additional obligations are imposed on any
|
||||
author or copyright holder as a result of your choosing to follow a
|
||||
later version.
|
||||
|
||||
15. Disclaimer of Warranty.
|
||||
|
||||
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
||||
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
||||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
||||
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. Limitation of Liability.
|
||||
|
||||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
||||
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
||||
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
||||
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGES.
|
||||
|
||||
17. Interpretation of Sections 15 and 16.
|
||||
|
||||
If the disclaimer of warranty and limitation of liability provided
|
||||
above cannot be given local legal effect according to their terms,
|
||||
reviewing courts shall apply local law that most closely approximates
|
||||
an absolute waiver of all civil liability in connection with the
|
||||
Program, unless a warranty or assumption of liability accompanies a
|
||||
copy of the Program in return for a fee.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
state the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
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/>.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program does terminal interaction, make it output a short
|
||||
notice like this when it starts in an interactive mode:
|
||||
|
||||
<program> Copyright (C) <year> <name of author>
|
||||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, your program's commands
|
||||
might be different; for a GUI interface, you would use an "about box".
|
||||
|
||||
You should also get your employer (if you work as a programmer) or school,
|
||||
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||
For more information on this, and how to apply and follow the GNU GPL, see
|
||||
<http://www.gnu.org/licenses/>.
|
||||
|
||||
The GNU General Public License does not permit incorporating your program
|
||||
into proprietary programs. If your program is a subroutine library, you
|
||||
may consider it more useful to permit linking proprietary applications with
|
||||
the library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License. But first, please read
|
||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
674
source/freeipmi/usr/share/doc/freeipmi/COPYING.ipmidetect
Normal file
674
source/freeipmi/usr/share/doc/freeipmi/COPYING.ipmidetect
Normal file
@ -0,0 +1,674 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The GNU General Public License is a free, copyleft license for
|
||||
software and other kinds of works.
|
||||
|
||||
The licenses for most software and other practical works are designed
|
||||
to take away your freedom to share and change the works. By contrast,
|
||||
the GNU General Public License is intended to guarantee your freedom to
|
||||
share and change all versions of a program--to make sure it remains free
|
||||
software for all its users. We, the Free Software Foundation, use the
|
||||
GNU General Public License for most of our software; it applies also to
|
||||
any other work released this way by its authors. You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
them if you wish), that you receive source code or can get it if you
|
||||
want it, that you can change the software or use pieces of it in new
|
||||
free programs, and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to prevent others from denying you
|
||||
these rights or asking you to surrender the rights. Therefore, you have
|
||||
certain responsibilities if you distribute copies of the software, or if
|
||||
you modify it: responsibilities to respect the freedom of others.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must pass on to the recipients the same
|
||||
freedoms that you received. You must make sure that they, too, receive
|
||||
or can get the source code. And you must show them these terms so they
|
||||
know their rights.
|
||||
|
||||
Developers that use the GNU GPL protect your rights with two steps:
|
||||
(1) assert copyright on the software, and (2) offer you this License
|
||||
giving you legal permission to copy, distribute and/or modify it.
|
||||
|
||||
For the developers' and authors' protection, the GPL clearly explains
|
||||
that there is no warranty for this free software. For both users' and
|
||||
authors' sake, the GPL requires that modified versions be marked as
|
||||
changed, so that their problems will not be attributed erroneously to
|
||||
authors of previous versions.
|
||||
|
||||
Some devices are designed to deny users access to install or run
|
||||
modified versions of the software inside them, although the manufacturer
|
||||
can do so. This is fundamentally incompatible with the aim of
|
||||
protecting users' freedom to change the software. The systematic
|
||||
pattern of such abuse occurs in the area of products for individuals to
|
||||
use, which is precisely where it is most unacceptable. Therefore, we
|
||||
have designed this version of the GPL to prohibit the practice for those
|
||||
products. If such problems arise substantially in other domains, we
|
||||
stand ready to extend this provision to those domains in future versions
|
||||
of the GPL, as needed to protect the freedom of users.
|
||||
|
||||
Finally, every program is threatened constantly by software patents.
|
||||
States should not allow patents to restrict development and use of
|
||||
software on general-purpose computers, but in those that do, we wish to
|
||||
avoid the special danger that patents applied to a free program could
|
||||
make it effectively proprietary. To prevent this, the GPL assures that
|
||||
patents cannot be used to render the program non-free.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
TERMS AND CONDITIONS
|
||||
|
||||
0. Definitions.
|
||||
|
||||
"This License" refers to version 3 of the GNU General Public License.
|
||||
|
||||
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||
works, such as semiconductor masks.
|
||||
|
||||
"The Program" refers to any copyrightable work licensed under this
|
||||
License. Each licensee is addressed as "you". "Licensees" and
|
||||
"recipients" may be individuals or organizations.
|
||||
|
||||
To "modify" a work means to copy from or adapt all or part of the work
|
||||
in a fashion requiring copyright permission, other than the making of an
|
||||
exact copy. The resulting work is called a "modified version" of the
|
||||
earlier work or a work "based on" the earlier work.
|
||||
|
||||
A "covered work" means either the unmodified Program or a work based
|
||||
on the Program.
|
||||
|
||||
To "propagate" a work means to do anything with it that, without
|
||||
permission, would make you directly or secondarily liable for
|
||||
infringement under applicable copyright law, except executing it on a
|
||||
computer or modifying a private copy. Propagation includes copying,
|
||||
distribution (with or without modification), making available to the
|
||||
public, and in some countries other activities as well.
|
||||
|
||||
To "convey" a work means any kind of propagation that enables other
|
||||
parties to make or receive copies. Mere interaction with a user through
|
||||
a computer network, with no transfer of a copy, is not conveying.
|
||||
|
||||
An interactive user interface displays "Appropriate Legal Notices"
|
||||
to the extent that it includes a convenient and prominently visible
|
||||
feature that (1) displays an appropriate copyright notice, and (2)
|
||||
tells the user that there is no warranty for the work (except to the
|
||||
extent that warranties are provided), that licensees may convey the
|
||||
work under this License, and how to view a copy of this License. If
|
||||
the interface presents a list of user commands or options, such as a
|
||||
menu, a prominent item in the list meets this criterion.
|
||||
|
||||
1. Source Code.
|
||||
|
||||
The "source code" for a work means the preferred form of the work
|
||||
for making modifications to it. "Object code" means any non-source
|
||||
form of a work.
|
||||
|
||||
A "Standard Interface" means an interface that either is an official
|
||||
standard defined by a recognized standards body, or, in the case of
|
||||
interfaces specified for a particular programming language, one that
|
||||
is widely used among developers working in that language.
|
||||
|
||||
The "System Libraries" of an executable work include anything, other
|
||||
than the work as a whole, that (a) is included in the normal form of
|
||||
packaging a Major Component, but which is not part of that Major
|
||||
Component, and (b) serves only to enable use of the work with that
|
||||
Major Component, or to implement a Standard Interface for which an
|
||||
implementation is available to the public in source code form. A
|
||||
"Major Component", in this context, means a major essential component
|
||||
(kernel, window system, and so on) of the specific operating system
|
||||
(if any) on which the executable work runs, or a compiler used to
|
||||
produce the work, or an object code interpreter used to run it.
|
||||
|
||||
The "Corresponding Source" for a work in object code form means all
|
||||
the source code needed to generate, install, and (for an executable
|
||||
work) run the object code and to modify the work, including scripts to
|
||||
control those activities. However, it does not include the work's
|
||||
System Libraries, or general-purpose tools or generally available free
|
||||
programs which are used unmodified in performing those activities but
|
||||
which are not part of the work. For example, Corresponding Source
|
||||
includes interface definition files associated with source files for
|
||||
the work, and the source code for shared libraries and dynamically
|
||||
linked subprograms that the work is specifically designed to require,
|
||||
such as by intimate data communication or control flow between those
|
||||
subprograms and other parts of the work.
|
||||
|
||||
The Corresponding Source need not include anything that users
|
||||
can regenerate automatically from other parts of the Corresponding
|
||||
Source.
|
||||
|
||||
The Corresponding Source for a work in source code form is that
|
||||
same work.
|
||||
|
||||
2. Basic Permissions.
|
||||
|
||||
All rights granted under this License are granted for the term of
|
||||
copyright on the Program, and are irrevocable provided the stated
|
||||
conditions are met. This License explicitly affirms your unlimited
|
||||
permission to run the unmodified Program. The output from running a
|
||||
covered work is covered by this License only if the output, given its
|
||||
content, constitutes a covered work. This License acknowledges your
|
||||
rights of fair use or other equivalent, as provided by copyright law.
|
||||
|
||||
You may make, run and propagate covered works that you do not
|
||||
convey, without conditions so long as your license otherwise remains
|
||||
in force. You may convey covered works to others for the sole purpose
|
||||
of having them make modifications exclusively for you, or provide you
|
||||
with facilities for running those works, provided that you comply with
|
||||
the terms of this License in conveying all material for which you do
|
||||
not control copyright. Those thus making or running the covered works
|
||||
for you must do so exclusively on your behalf, under your direction
|
||||
and control, on terms that prohibit them from making any copies of
|
||||
your copyrighted material outside their relationship with you.
|
||||
|
||||
Conveying under any other circumstances is permitted solely under
|
||||
the conditions stated below. Sublicensing is not allowed; section 10
|
||||
makes it unnecessary.
|
||||
|
||||
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||
|
||||
No covered work shall be deemed part of an effective technological
|
||||
measure under any applicable law fulfilling obligations under article
|
||||
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||
similar laws prohibiting or restricting circumvention of such
|
||||
measures.
|
||||
|
||||
When you convey a covered work, you waive any legal power to forbid
|
||||
circumvention of technological measures to the extent such circumvention
|
||||
is effected by exercising rights under this License with respect to
|
||||
the covered work, and you disclaim any intention to limit operation or
|
||||
modification of the work as a means of enforcing, against the work's
|
||||
users, your or third parties' legal rights to forbid circumvention of
|
||||
technological measures.
|
||||
|
||||
4. Conveying Verbatim Copies.
|
||||
|
||||
You may convey verbatim copies of the Program's source code as you
|
||||
receive it, in any medium, provided that you conspicuously and
|
||||
appropriately publish on each copy an appropriate copyright notice;
|
||||
keep intact all notices stating that this License and any
|
||||
non-permissive terms added in accord with section 7 apply to the code;
|
||||
keep intact all notices of the absence of any warranty; and give all
|
||||
recipients a copy of this License along with the Program.
|
||||
|
||||
You may charge any price or no price for each copy that you convey,
|
||||
and you may offer support or warranty protection for a fee.
|
||||
|
||||
5. Conveying Modified Source Versions.
|
||||
|
||||
You may convey a work based on the Program, or the modifications to
|
||||
produce it from the Program, in the form of source code under the
|
||||
terms of section 4, provided that you also meet all of these conditions:
|
||||
|
||||
a) The work must carry prominent notices stating that you modified
|
||||
it, and giving a relevant date.
|
||||
|
||||
b) The work must carry prominent notices stating that it is
|
||||
released under this License and any conditions added under section
|
||||
7. This requirement modifies the requirement in section 4 to
|
||||
"keep intact all notices".
|
||||
|
||||
c) You must license the entire work, as a whole, under this
|
||||
License to anyone who comes into possession of a copy. This
|
||||
License will therefore apply, along with any applicable section 7
|
||||
additional terms, to the whole of the work, and all its parts,
|
||||
regardless of how they are packaged. This License gives no
|
||||
permission to license the work in any other way, but it does not
|
||||
invalidate such permission if you have separately received it.
|
||||
|
||||
d) If the work has interactive user interfaces, each must display
|
||||
Appropriate Legal Notices; however, if the Program has interactive
|
||||
interfaces that do not display Appropriate Legal Notices, your
|
||||
work need not make them do so.
|
||||
|
||||
A compilation of a covered work with other separate and independent
|
||||
works, which are not by their nature extensions of the covered work,
|
||||
and which are not combined with it such as to form a larger program,
|
||||
in or on a volume of a storage or distribution medium, is called an
|
||||
"aggregate" if the compilation and its resulting copyright are not
|
||||
used to limit the access or legal rights of the compilation's users
|
||||
beyond what the individual works permit. Inclusion of a covered work
|
||||
in an aggregate does not cause this License to apply to the other
|
||||
parts of the aggregate.
|
||||
|
||||
6. Conveying Non-Source Forms.
|
||||
|
||||
You may convey a covered work in object code form under the terms
|
||||
of sections 4 and 5, provided that you also convey the
|
||||
machine-readable Corresponding Source under the terms of this License,
|
||||
in one of these ways:
|
||||
|
||||
a) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by the
|
||||
Corresponding Source fixed on a durable physical medium
|
||||
customarily used for software interchange.
|
||||
|
||||
b) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by a
|
||||
written offer, valid for at least three years and valid for as
|
||||
long as you offer spare parts or customer support for that product
|
||||
model, to give anyone who possesses the object code either (1) a
|
||||
copy of the Corresponding Source for all the software in the
|
||||
product that is covered by this License, on a durable physical
|
||||
medium customarily used for software interchange, for a price no
|
||||
more than your reasonable cost of physically performing this
|
||||
conveying of source, or (2) access to copy the
|
||||
Corresponding Source from a network server at no charge.
|
||||
|
||||
c) Convey individual copies of the object code with a copy of the
|
||||
written offer to provide the Corresponding Source. This
|
||||
alternative is allowed only occasionally and noncommercially, and
|
||||
only if you received the object code with such an offer, in accord
|
||||
with subsection 6b.
|
||||
|
||||
d) Convey the object code by offering access from a designated
|
||||
place (gratis or for a charge), and offer equivalent access to the
|
||||
Corresponding Source in the same way through the same place at no
|
||||
further charge. You need not require recipients to copy the
|
||||
Corresponding Source along with the object code. If the place to
|
||||
copy the object code is a network server, the Corresponding Source
|
||||
may be on a different server (operated by you or a third party)
|
||||
that supports equivalent copying facilities, provided you maintain
|
||||
clear directions next to the object code saying where to find the
|
||||
Corresponding Source. Regardless of what server hosts the
|
||||
Corresponding Source, you remain obligated to ensure that it is
|
||||
available for as long as needed to satisfy these requirements.
|
||||
|
||||
e) Convey the object code using peer-to-peer transmission, provided
|
||||
you inform other peers where the object code and Corresponding
|
||||
Source of the work are being offered to the general public at no
|
||||
charge under subsection 6d.
|
||||
|
||||
A separable portion of the object code, whose source code is excluded
|
||||
from the Corresponding Source as a System Library, need not be
|
||||
included in conveying the object code work.
|
||||
|
||||
A "User Product" is either (1) a "consumer product", which means any
|
||||
tangible personal property which is normally used for personal, family,
|
||||
or household purposes, or (2) anything designed or sold for incorporation
|
||||
into a dwelling. In determining whether a product is a consumer product,
|
||||
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||
product received by a particular user, "normally used" refers to a
|
||||
typical or common use of that class of product, regardless of the status
|
||||
of the particular user or of the way in which the particular user
|
||||
actually uses, or expects or is expected to use, the product. A product
|
||||
is a consumer product regardless of whether the product has substantial
|
||||
commercial, industrial or non-consumer uses, unless such uses represent
|
||||
the only significant mode of use of the product.
|
||||
|
||||
"Installation Information" for a User Product means any methods,
|
||||
procedures, authorization keys, or other information required to install
|
||||
and execute modified versions of a covered work in that User Product from
|
||||
a modified version of its Corresponding Source. The information must
|
||||
suffice to ensure that the continued functioning of the modified object
|
||||
code is in no case prevented or interfered with solely because
|
||||
modification has been made.
|
||||
|
||||
If you convey an object code work under this section in, or with, or
|
||||
specifically for use in, a User Product, and the conveying occurs as
|
||||
part of a transaction in which the right of possession and use of the
|
||||
User Product is transferred to the recipient in perpetuity or for a
|
||||
fixed term (regardless of how the transaction is characterized), the
|
||||
Corresponding Source conveyed under this section must be accompanied
|
||||
by the Installation Information. But this requirement does not apply
|
||||
if neither you nor any third party retains the ability to install
|
||||
modified object code on the User Product (for example, the work has
|
||||
been installed in ROM).
|
||||
|
||||
The requirement to provide Installation Information does not include a
|
||||
requirement to continue to provide support service, warranty, or updates
|
||||
for a work that has been modified or installed by the recipient, or for
|
||||
the User Product in which it has been modified or installed. Access to a
|
||||
network may be denied when the modification itself materially and
|
||||
adversely affects the operation of the network or violates the rules and
|
||||
protocols for communication across the network.
|
||||
|
||||
Corresponding Source conveyed, and Installation Information provided,
|
||||
in accord with this section must be in a format that is publicly
|
||||
documented (and with an implementation available to the public in
|
||||
source code form), and must require no special password or key for
|
||||
unpacking, reading or copying.
|
||||
|
||||
7. Additional Terms.
|
||||
|
||||
"Additional permissions" are terms that supplement the terms of this
|
||||
License by making exceptions from one or more of its conditions.
|
||||
Additional permissions that are applicable to the entire Program shall
|
||||
be treated as though they were included in this License, to the extent
|
||||
that they are valid under applicable law. If additional permissions
|
||||
apply only to part of the Program, that part may be used separately
|
||||
under those permissions, but the entire Program remains governed by
|
||||
this License without regard to the additional permissions.
|
||||
|
||||
When you convey a copy of a covered work, you may at your option
|
||||
remove any additional permissions from that copy, or from any part of
|
||||
it. (Additional permissions may be written to require their own
|
||||
removal in certain cases when you modify the work.) You may place
|
||||
additional permissions on material, added by you to a covered work,
|
||||
for which you have or can give appropriate copyright permission.
|
||||
|
||||
Notwithstanding any other provision of this License, for material you
|
||||
add to a covered work, you may (if authorized by the copyright holders of
|
||||
that material) supplement the terms of this License with terms:
|
||||
|
||||
a) Disclaiming warranty or limiting liability differently from the
|
||||
terms of sections 15 and 16 of this License; or
|
||||
|
||||
b) Requiring preservation of specified reasonable legal notices or
|
||||
author attributions in that material or in the Appropriate Legal
|
||||
Notices displayed by works containing it; or
|
||||
|
||||
c) Prohibiting misrepresentation of the origin of that material, or
|
||||
requiring that modified versions of such material be marked in
|
||||
reasonable ways as different from the original version; or
|
||||
|
||||
d) Limiting the use for publicity purposes of names of licensors or
|
||||
authors of the material; or
|
||||
|
||||
e) Declining to grant rights under trademark law for use of some
|
||||
trade names, trademarks, or service marks; or
|
||||
|
||||
f) Requiring indemnification of licensors and authors of that
|
||||
material by anyone who conveys the material (or modified versions of
|
||||
it) with contractual assumptions of liability to the recipient, for
|
||||
any liability that these contractual assumptions directly impose on
|
||||
those licensors and authors.
|
||||
|
||||
All other non-permissive additional terms are considered "further
|
||||
restrictions" within the meaning of section 10. If the Program as you
|
||||
received it, or any part of it, contains a notice stating that it is
|
||||
governed by this License along with a term that is a further
|
||||
restriction, you may remove that term. If a license document contains
|
||||
a further restriction but permits relicensing or conveying under this
|
||||
License, you may add to a covered work material governed by the terms
|
||||
of that license document, provided that the further restriction does
|
||||
not survive such relicensing or conveying.
|
||||
|
||||
If you add terms to a covered work in accord with this section, you
|
||||
must place, in the relevant source files, a statement of the
|
||||
additional terms that apply to those files, or a notice indicating
|
||||
where to find the applicable terms.
|
||||
|
||||
Additional terms, permissive or non-permissive, may be stated in the
|
||||
form of a separately written license, or stated as exceptions;
|
||||
the above requirements apply either way.
|
||||
|
||||
8. Termination.
|
||||
|
||||
You may not propagate or modify a covered work except as expressly
|
||||
provided under this License. Any attempt otherwise to propagate or
|
||||
modify it is void, and will automatically terminate your rights under
|
||||
this License (including any patent licenses granted under the third
|
||||
paragraph of section 11).
|
||||
|
||||
However, if you cease all violation of this License, then your
|
||||
license from a particular copyright holder is reinstated (a)
|
||||
provisionally, unless and until the copyright holder explicitly and
|
||||
finally terminates your license, and (b) permanently, if the copyright
|
||||
holder fails to notify you of the violation by some reasonable means
|
||||
prior to 60 days after the cessation.
|
||||
|
||||
Moreover, your license from a particular copyright holder is
|
||||
reinstated permanently if the copyright holder notifies you of the
|
||||
violation by some reasonable means, this is the first time you have
|
||||
received notice of violation of this License (for any work) from that
|
||||
copyright holder, and you cure the violation prior to 30 days after
|
||||
your receipt of the notice.
|
||||
|
||||
Termination of your rights under this section does not terminate the
|
||||
licenses of parties who have received copies or rights from you under
|
||||
this License. If your rights have been terminated and not permanently
|
||||
reinstated, you do not qualify to receive new licenses for the same
|
||||
material under section 10.
|
||||
|
||||
9. Acceptance Not Required for Having Copies.
|
||||
|
||||
You are not required to accept this License in order to receive or
|
||||
run a copy of the Program. Ancillary propagation of a covered work
|
||||
occurring solely as a consequence of using peer-to-peer transmission
|
||||
to receive a copy likewise does not require acceptance. However,
|
||||
nothing other than this License grants you permission to propagate or
|
||||
modify any covered work. These actions infringe copyright if you do
|
||||
not accept this License. Therefore, by modifying or propagating a
|
||||
covered work, you indicate your acceptance of this License to do so.
|
||||
|
||||
10. Automatic Licensing of Downstream Recipients.
|
||||
|
||||
Each time you convey a covered work, the recipient automatically
|
||||
receives a license from the original licensors, to run, modify and
|
||||
propagate that work, subject to this License. You are not responsible
|
||||
for enforcing compliance by third parties with this License.
|
||||
|
||||
An "entity transaction" is a transaction transferring control of an
|
||||
organization, or substantially all assets of one, or subdividing an
|
||||
organization, or merging organizations. If propagation of a covered
|
||||
work results from an entity transaction, each party to that
|
||||
transaction who receives a copy of the work also receives whatever
|
||||
licenses to the work the party's predecessor in interest had or could
|
||||
give under the previous paragraph, plus a right to possession of the
|
||||
Corresponding Source of the work from the predecessor in interest, if
|
||||
the predecessor has it or can get it with reasonable efforts.
|
||||
|
||||
You may not impose any further restrictions on the exercise of the
|
||||
rights granted or affirmed under this License. For example, you may
|
||||
not impose a license fee, royalty, or other charge for exercise of
|
||||
rights granted under this License, and you may not initiate litigation
|
||||
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||
any patent claim is infringed by making, using, selling, offering for
|
||||
sale, or importing the Program or any portion of it.
|
||||
|
||||
11. Patents.
|
||||
|
||||
A "contributor" is a copyright holder who authorizes use under this
|
||||
License of the Program or a work on which the Program is based. The
|
||||
work thus licensed is called the contributor's "contributor version".
|
||||
|
||||
A contributor's "essential patent claims" are all patent claims
|
||||
owned or controlled by the contributor, whether already acquired or
|
||||
hereafter acquired, that would be infringed by some manner, permitted
|
||||
by this License, of making, using, or selling its contributor version,
|
||||
but do not include claims that would be infringed only as a
|
||||
consequence of further modification of the contributor version. For
|
||||
purposes of this definition, "control" includes the right to grant
|
||||
patent sublicenses in a manner consistent with the requirements of
|
||||
this License.
|
||||
|
||||
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||
patent license under the contributor's essential patent claims, to
|
||||
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||
propagate the contents of its contributor version.
|
||||
|
||||
In the following three paragraphs, a "patent license" is any express
|
||||
agreement or commitment, however denominated, not to enforce a patent
|
||||
(such as an express permission to practice a patent or covenant not to
|
||||
sue for patent infringement). To "grant" such a patent license to a
|
||||
party means to make such an agreement or commitment not to enforce a
|
||||
patent against the party.
|
||||
|
||||
If you convey a covered work, knowingly relying on a patent license,
|
||||
and the Corresponding Source of the work is not available for anyone
|
||||
to copy, free of charge and under the terms of this License, through a
|
||||
publicly available network server or other readily accessible means,
|
||||
then you must either (1) cause the Corresponding Source to be so
|
||||
available, or (2) arrange to deprive yourself of the benefit of the
|
||||
patent license for this particular work, or (3) arrange, in a manner
|
||||
consistent with the requirements of this License, to extend the patent
|
||||
license to downstream recipients. "Knowingly relying" means you have
|
||||
actual knowledge that, but for the patent license, your conveying the
|
||||
covered work in a country, or your recipient's use of the covered work
|
||||
in a country, would infringe one or more identifiable patents in that
|
||||
country that you have reason to believe are valid.
|
||||
|
||||
If, pursuant to or in connection with a single transaction or
|
||||
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||
covered work, and grant a patent license to some of the parties
|
||||
receiving the covered work authorizing them to use, propagate, modify
|
||||
or convey a specific copy of the covered work, then the patent license
|
||||
you grant is automatically extended to all recipients of the covered
|
||||
work and works based on it.
|
||||
|
||||
A patent license is "discriminatory" if it does not include within
|
||||
the scope of its coverage, prohibits the exercise of, or is
|
||||
conditioned on the non-exercise of one or more of the rights that are
|
||||
specifically granted under this License. You may not convey a covered
|
||||
work if you are a party to an arrangement with a third party that is
|
||||
in the business of distributing software, under which you make payment
|
||||
to the third party based on the extent of your activity of conveying
|
||||
the work, and under which the third party grants, to any of the
|
||||
parties who would receive the covered work from you, a discriminatory
|
||||
patent license (a) in connection with copies of the covered work
|
||||
conveyed by you (or copies made from those copies), or (b) primarily
|
||||
for and in connection with specific products or compilations that
|
||||
contain the covered work, unless you entered into that arrangement,
|
||||
or that patent license was granted, prior to 28 March 2007.
|
||||
|
||||
Nothing in this License shall be construed as excluding or limiting
|
||||
any implied license or other defenses to infringement that may
|
||||
otherwise be available to you under applicable patent law.
|
||||
|
||||
12. No Surrender of Others' Freedom.
|
||||
|
||||
If conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot convey a
|
||||
covered work so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you may
|
||||
not convey it at all. For example, if you agree to terms that obligate you
|
||||
to collect a royalty for further conveying from those to whom you convey
|
||||
the Program, the only way you could satisfy both those terms and this
|
||||
License would be to refrain entirely from conveying the Program.
|
||||
|
||||
13. Use with the GNU Affero General Public License.
|
||||
|
||||
Notwithstanding any other provision of this License, you have
|
||||
permission to link or combine any covered work with a work licensed
|
||||
under version 3 of the GNU Affero General Public License into a single
|
||||
combined work, and to convey the resulting work. The terms of this
|
||||
License will continue to apply to the part which is the covered work,
|
||||
but the special requirements of the GNU Affero General Public License,
|
||||
section 13, concerning interaction through a network will apply to the
|
||||
combination as such.
|
||||
|
||||
14. Revised Versions of this License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions of
|
||||
the GNU General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the
|
||||
Program specifies that a certain numbered version of the GNU General
|
||||
Public License "or any later version" applies to it, you have the
|
||||
option of following the terms and conditions either of that numbered
|
||||
version or of any later version published by the Free Software
|
||||
Foundation. If the Program does not specify a version number of the
|
||||
GNU General Public License, you may choose any version ever published
|
||||
by the Free Software Foundation.
|
||||
|
||||
If the Program specifies that a proxy can decide which future
|
||||
versions of the GNU General Public License can be used, that proxy's
|
||||
public statement of acceptance of a version permanently authorizes you
|
||||
to choose that version for the Program.
|
||||
|
||||
Later license versions may give you additional or different
|
||||
permissions. However, no additional obligations are imposed on any
|
||||
author or copyright holder as a result of your choosing to follow a
|
||||
later version.
|
||||
|
||||
15. Disclaimer of Warranty.
|
||||
|
||||
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
||||
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
||||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
||||
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. Limitation of Liability.
|
||||
|
||||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
||||
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
||||
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
||||
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGES.
|
||||
|
||||
17. Interpretation of Sections 15 and 16.
|
||||
|
||||
If the disclaimer of warranty and limitation of liability provided
|
||||
above cannot be given local legal effect according to their terms,
|
||||
reviewing courts shall apply local law that most closely approximates
|
||||
an absolute waiver of all civil liability in connection with the
|
||||
Program, unless a warranty or assumption of liability accompanies a
|
||||
copy of the Program in return for a fee.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
state the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
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/>.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program does terminal interaction, make it output a short
|
||||
notice like this when it starts in an interactive mode:
|
||||
|
||||
<program> Copyright (C) <year> <name of author>
|
||||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, your program's commands
|
||||
might be different; for a GUI interface, you would use an "about box".
|
||||
|
||||
You should also get your employer (if you work as a programmer) or school,
|
||||
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||
For more information on this, and how to apply and follow the GNU GPL, see
|
||||
<http://www.gnu.org/licenses/>.
|
||||
|
||||
The GNU General Public License does not permit incorporating your program
|
||||
into proprietary programs. If your program is a subroutine library, you
|
||||
may consider it more useful to permit linking proprietary applications with
|
||||
the library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License. But first, please read
|
||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
674
source/freeipmi/usr/share/doc/freeipmi/COPYING.ipmimonitoring
Normal file
674
source/freeipmi/usr/share/doc/freeipmi/COPYING.ipmimonitoring
Normal file
@ -0,0 +1,674 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The GNU General Public License is a free, copyleft license for
|
||||
software and other kinds of works.
|
||||
|
||||
The licenses for most software and other practical works are designed
|
||||
to take away your freedom to share and change the works. By contrast,
|
||||
the GNU General Public License is intended to guarantee your freedom to
|
||||
share and change all versions of a program--to make sure it remains free
|
||||
software for all its users. We, the Free Software Foundation, use the
|
||||
GNU General Public License for most of our software; it applies also to
|
||||
any other work released this way by its authors. You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
them if you wish), that you receive source code or can get it if you
|
||||
want it, that you can change the software or use pieces of it in new
|
||||
free programs, and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to prevent others from denying you
|
||||
these rights or asking you to surrender the rights. Therefore, you have
|
||||
certain responsibilities if you distribute copies of the software, or if
|
||||
you modify it: responsibilities to respect the freedom of others.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must pass on to the recipients the same
|
||||
freedoms that you received. You must make sure that they, too, receive
|
||||
or can get the source code. And you must show them these terms so they
|
||||
know their rights.
|
||||
|
||||
Developers that use the GNU GPL protect your rights with two steps:
|
||||
(1) assert copyright on the software, and (2) offer you this License
|
||||
giving you legal permission to copy, distribute and/or modify it.
|
||||
|
||||
For the developers' and authors' protection, the GPL clearly explains
|
||||
that there is no warranty for this free software. For both users' and
|
||||
authors' sake, the GPL requires that modified versions be marked as
|
||||
changed, so that their problems will not be attributed erroneously to
|
||||
authors of previous versions.
|
||||
|
||||
Some devices are designed to deny users access to install or run
|
||||
modified versions of the software inside them, although the manufacturer
|
||||
can do so. This is fundamentally incompatible with the aim of
|
||||
protecting users' freedom to change the software. The systematic
|
||||
pattern of such abuse occurs in the area of products for individuals to
|
||||
use, which is precisely where it is most unacceptable. Therefore, we
|
||||
have designed this version of the GPL to prohibit the practice for those
|
||||
products. If such problems arise substantially in other domains, we
|
||||
stand ready to extend this provision to those domains in future versions
|
||||
of the GPL, as needed to protect the freedom of users.
|
||||
|
||||
Finally, every program is threatened constantly by software patents.
|
||||
States should not allow patents to restrict development and use of
|
||||
software on general-purpose computers, but in those that do, we wish to
|
||||
avoid the special danger that patents applied to a free program could
|
||||
make it effectively proprietary. To prevent this, the GPL assures that
|
||||
patents cannot be used to render the program non-free.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
TERMS AND CONDITIONS
|
||||
|
||||
0. Definitions.
|
||||
|
||||
"This License" refers to version 3 of the GNU General Public License.
|
||||
|
||||
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||
works, such as semiconductor masks.
|
||||
|
||||
"The Program" refers to any copyrightable work licensed under this
|
||||
License. Each licensee is addressed as "you". "Licensees" and
|
||||
"recipients" may be individuals or organizations.
|
||||
|
||||
To "modify" a work means to copy from or adapt all or part of the work
|
||||
in a fashion requiring copyright permission, other than the making of an
|
||||
exact copy. The resulting work is called a "modified version" of the
|
||||
earlier work or a work "based on" the earlier work.
|
||||
|
||||
A "covered work" means either the unmodified Program or a work based
|
||||
on the Program.
|
||||
|
||||
To "propagate" a work means to do anything with it that, without
|
||||
permission, would make you directly or secondarily liable for
|
||||
infringement under applicable copyright law, except executing it on a
|
||||
computer or modifying a private copy. Propagation includes copying,
|
||||
distribution (with or without modification), making available to the
|
||||
public, and in some countries other activities as well.
|
||||
|
||||
To "convey" a work means any kind of propagation that enables other
|
||||
parties to make or receive copies. Mere interaction with a user through
|
||||
a computer network, with no transfer of a copy, is not conveying.
|
||||
|
||||
An interactive user interface displays "Appropriate Legal Notices"
|
||||
to the extent that it includes a convenient and prominently visible
|
||||
feature that (1) displays an appropriate copyright notice, and (2)
|
||||
tells the user that there is no warranty for the work (except to the
|
||||
extent that warranties are provided), that licensees may convey the
|
||||
work under this License, and how to view a copy of this License. If
|
||||
the interface presents a list of user commands or options, such as a
|
||||
menu, a prominent item in the list meets this criterion.
|
||||
|
||||
1. Source Code.
|
||||
|
||||
The "source code" for a work means the preferred form of the work
|
||||
for making modifications to it. "Object code" means any non-source
|
||||
form of a work.
|
||||
|
||||
A "Standard Interface" means an interface that either is an official
|
||||
standard defined by a recognized standards body, or, in the case of
|
||||
interfaces specified for a particular programming language, one that
|
||||
is widely used among developers working in that language.
|
||||
|
||||
The "System Libraries" of an executable work include anything, other
|
||||
than the work as a whole, that (a) is included in the normal form of
|
||||
packaging a Major Component, but which is not part of that Major
|
||||
Component, and (b) serves only to enable use of the work with that
|
||||
Major Component, or to implement a Standard Interface for which an
|
||||
implementation is available to the public in source code form. A
|
||||
"Major Component", in this context, means a major essential component
|
||||
(kernel, window system, and so on) of the specific operating system
|
||||
(if any) on which the executable work runs, or a compiler used to
|
||||
produce the work, or an object code interpreter used to run it.
|
||||
|
||||
The "Corresponding Source" for a work in object code form means all
|
||||
the source code needed to generate, install, and (for an executable
|
||||
work) run the object code and to modify the work, including scripts to
|
||||
control those activities. However, it does not include the work's
|
||||
System Libraries, or general-purpose tools or generally available free
|
||||
programs which are used unmodified in performing those activities but
|
||||
which are not part of the work. For example, Corresponding Source
|
||||
includes interface definition files associated with source files for
|
||||
the work, and the source code for shared libraries and dynamically
|
||||
linked subprograms that the work is specifically designed to require,
|
||||
such as by intimate data communication or control flow between those
|
||||
subprograms and other parts of the work.
|
||||
|
||||
The Corresponding Source need not include anything that users
|
||||
can regenerate automatically from other parts of the Corresponding
|
||||
Source.
|
||||
|
||||
The Corresponding Source for a work in source code form is that
|
||||
same work.
|
||||
|
||||
2. Basic Permissions.
|
||||
|
||||
All rights granted under this License are granted for the term of
|
||||
copyright on the Program, and are irrevocable provided the stated
|
||||
conditions are met. This License explicitly affirms your unlimited
|
||||
permission to run the unmodified Program. The output from running a
|
||||
covered work is covered by this License only if the output, given its
|
||||
content, constitutes a covered work. This License acknowledges your
|
||||
rights of fair use or other equivalent, as provided by copyright law.
|
||||
|
||||
You may make, run and propagate covered works that you do not
|
||||
convey, without conditions so long as your license otherwise remains
|
||||
in force. You may convey covered works to others for the sole purpose
|
||||
of having them make modifications exclusively for you, or provide you
|
||||
with facilities for running those works, provided that you comply with
|
||||
the terms of this License in conveying all material for which you do
|
||||
not control copyright. Those thus making or running the covered works
|
||||
for you must do so exclusively on your behalf, under your direction
|
||||
and control, on terms that prohibit them from making any copies of
|
||||
your copyrighted material outside their relationship with you.
|
||||
|
||||
Conveying under any other circumstances is permitted solely under
|
||||
the conditions stated below. Sublicensing is not allowed; section 10
|
||||
makes it unnecessary.
|
||||
|
||||
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||
|
||||
No covered work shall be deemed part of an effective technological
|
||||
measure under any applicable law fulfilling obligations under article
|
||||
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||
similar laws prohibiting or restricting circumvention of such
|
||||
measures.
|
||||
|
||||
When you convey a covered work, you waive any legal power to forbid
|
||||
circumvention of technological measures to the extent such circumvention
|
||||
is effected by exercising rights under this License with respect to
|
||||
the covered work, and you disclaim any intention to limit operation or
|
||||
modification of the work as a means of enforcing, against the work's
|
||||
users, your or third parties' legal rights to forbid circumvention of
|
||||
technological measures.
|
||||
|
||||
4. Conveying Verbatim Copies.
|
||||
|
||||
You may convey verbatim copies of the Program's source code as you
|
||||
receive it, in any medium, provided that you conspicuously and
|
||||
appropriately publish on each copy an appropriate copyright notice;
|
||||
keep intact all notices stating that this License and any
|
||||
non-permissive terms added in accord with section 7 apply to the code;
|
||||
keep intact all notices of the absence of any warranty; and give all
|
||||
recipients a copy of this License along with the Program.
|
||||
|
||||
You may charge any price or no price for each copy that you convey,
|
||||
and you may offer support or warranty protection for a fee.
|
||||
|
||||
5. Conveying Modified Source Versions.
|
||||
|
||||
You may convey a work based on the Program, or the modifications to
|
||||
produce it from the Program, in the form of source code under the
|
||||
terms of section 4, provided that you also meet all of these conditions:
|
||||
|
||||
a) The work must carry prominent notices stating that you modified
|
||||
it, and giving a relevant date.
|
||||
|
||||
b) The work must carry prominent notices stating that it is
|
||||
released under this License and any conditions added under section
|
||||
7. This requirement modifies the requirement in section 4 to
|
||||
"keep intact all notices".
|
||||
|
||||
c) You must license the entire work, as a whole, under this
|
||||
License to anyone who comes into possession of a copy. This
|
||||
License will therefore apply, along with any applicable section 7
|
||||
additional terms, to the whole of the work, and all its parts,
|
||||
regardless of how they are packaged. This License gives no
|
||||
permission to license the work in any other way, but it does not
|
||||
invalidate such permission if you have separately received it.
|
||||
|
||||
d) If the work has interactive user interfaces, each must display
|
||||
Appropriate Legal Notices; however, if the Program has interactive
|
||||
interfaces that do not display Appropriate Legal Notices, your
|
||||
work need not make them do so.
|
||||
|
||||
A compilation of a covered work with other separate and independent
|
||||
works, which are not by their nature extensions of the covered work,
|
||||
and which are not combined with it such as to form a larger program,
|
||||
in or on a volume of a storage or distribution medium, is called an
|
||||
"aggregate" if the compilation and its resulting copyright are not
|
||||
used to limit the access or legal rights of the compilation's users
|
||||
beyond what the individual works permit. Inclusion of a covered work
|
||||
in an aggregate does not cause this License to apply to the other
|
||||
parts of the aggregate.
|
||||
|
||||
6. Conveying Non-Source Forms.
|
||||
|
||||
You may convey a covered work in object code form under the terms
|
||||
of sections 4 and 5, provided that you also convey the
|
||||
machine-readable Corresponding Source under the terms of this License,
|
||||
in one of these ways:
|
||||
|
||||
a) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by the
|
||||
Corresponding Source fixed on a durable physical medium
|
||||
customarily used for software interchange.
|
||||
|
||||
b) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by a
|
||||
written offer, valid for at least three years and valid for as
|
||||
long as you offer spare parts or customer support for that product
|
||||
model, to give anyone who possesses the object code either (1) a
|
||||
copy of the Corresponding Source for all the software in the
|
||||
product that is covered by this License, on a durable physical
|
||||
medium customarily used for software interchange, for a price no
|
||||
more than your reasonable cost of physically performing this
|
||||
conveying of source, or (2) access to copy the
|
||||
Corresponding Source from a network server at no charge.
|
||||
|
||||
c) Convey individual copies of the object code with a copy of the
|
||||
written offer to provide the Corresponding Source. This
|
||||
alternative is allowed only occasionally and noncommercially, and
|
||||
only if you received the object code with such an offer, in accord
|
||||
with subsection 6b.
|
||||
|
||||
d) Convey the object code by offering access from a designated
|
||||
place (gratis or for a charge), and offer equivalent access to the
|
||||
Corresponding Source in the same way through the same place at no
|
||||
further charge. You need not require recipients to copy the
|
||||
Corresponding Source along with the object code. If the place to
|
||||
copy the object code is a network server, the Corresponding Source
|
||||
may be on a different server (operated by you or a third party)
|
||||
that supports equivalent copying facilities, provided you maintain
|
||||
clear directions next to the object code saying where to find the
|
||||
Corresponding Source. Regardless of what server hosts the
|
||||
Corresponding Source, you remain obligated to ensure that it is
|
||||
available for as long as needed to satisfy these requirements.
|
||||
|
||||
e) Convey the object code using peer-to-peer transmission, provided
|
||||
you inform other peers where the object code and Corresponding
|
||||
Source of the work are being offered to the general public at no
|
||||
charge under subsection 6d.
|
||||
|
||||
A separable portion of the object code, whose source code is excluded
|
||||
from the Corresponding Source as a System Library, need not be
|
||||
included in conveying the object code work.
|
||||
|
||||
A "User Product" is either (1) a "consumer product", which means any
|
||||
tangible personal property which is normally used for personal, family,
|
||||
or household purposes, or (2) anything designed or sold for incorporation
|
||||
into a dwelling. In determining whether a product is a consumer product,
|
||||
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||
product received by a particular user, "normally used" refers to a
|
||||
typical or common use of that class of product, regardless of the status
|
||||
of the particular user or of the way in which the particular user
|
||||
actually uses, or expects or is expected to use, the product. A product
|
||||
is a consumer product regardless of whether the product has substantial
|
||||
commercial, industrial or non-consumer uses, unless such uses represent
|
||||
the only significant mode of use of the product.
|
||||
|
||||
"Installation Information" for a User Product means any methods,
|
||||
procedures, authorization keys, or other information required to install
|
||||
and execute modified versions of a covered work in that User Product from
|
||||
a modified version of its Corresponding Source. The information must
|
||||
suffice to ensure that the continued functioning of the modified object
|
||||
code is in no case prevented or interfered with solely because
|
||||
modification has been made.
|
||||
|
||||
If you convey an object code work under this section in, or with, or
|
||||
specifically for use in, a User Product, and the conveying occurs as
|
||||
part of a transaction in which the right of possession and use of the
|
||||
User Product is transferred to the recipient in perpetuity or for a
|
||||
fixed term (regardless of how the transaction is characterized), the
|
||||
Corresponding Source conveyed under this section must be accompanied
|
||||
by the Installation Information. But this requirement does not apply
|
||||
if neither you nor any third party retains the ability to install
|
||||
modified object code on the User Product (for example, the work has
|
||||
been installed in ROM).
|
||||
|
||||
The requirement to provide Installation Information does not include a
|
||||
requirement to continue to provide support service, warranty, or updates
|
||||
for a work that has been modified or installed by the recipient, or for
|
||||
the User Product in which it has been modified or installed. Access to a
|
||||
network may be denied when the modification itself materially and
|
||||
adversely affects the operation of the network or violates the rules and
|
||||
protocols for communication across the network.
|
||||
|
||||
Corresponding Source conveyed, and Installation Information provided,
|
||||
in accord with this section must be in a format that is publicly
|
||||
documented (and with an implementation available to the public in
|
||||
source code form), and must require no special password or key for
|
||||
unpacking, reading or copying.
|
||||
|
||||
7. Additional Terms.
|
||||
|
||||
"Additional permissions" are terms that supplement the terms of this
|
||||
License by making exceptions from one or more of its conditions.
|
||||
Additional permissions that are applicable to the entire Program shall
|
||||
be treated as though they were included in this License, to the extent
|
||||
that they are valid under applicable law. If additional permissions
|
||||
apply only to part of the Program, that part may be used separately
|
||||
under those permissions, but the entire Program remains governed by
|
||||
this License without regard to the additional permissions.
|
||||
|
||||
When you convey a copy of a covered work, you may at your option
|
||||
remove any additional permissions from that copy, or from any part of
|
||||
it. (Additional permissions may be written to require their own
|
||||
removal in certain cases when you modify the work.) You may place
|
||||
additional permissions on material, added by you to a covered work,
|
||||
for which you have or can give appropriate copyright permission.
|
||||
|
||||
Notwithstanding any other provision of this License, for material you
|
||||
add to a covered work, you may (if authorized by the copyright holders of
|
||||
that material) supplement the terms of this License with terms:
|
||||
|
||||
a) Disclaiming warranty or limiting liability differently from the
|
||||
terms of sections 15 and 16 of this License; or
|
||||
|
||||
b) Requiring preservation of specified reasonable legal notices or
|
||||
author attributions in that material or in the Appropriate Legal
|
||||
Notices displayed by works containing it; or
|
||||
|
||||
c) Prohibiting misrepresentation of the origin of that material, or
|
||||
requiring that modified versions of such material be marked in
|
||||
reasonable ways as different from the original version; or
|
||||
|
||||
d) Limiting the use for publicity purposes of names of licensors or
|
||||
authors of the material; or
|
||||
|
||||
e) Declining to grant rights under trademark law for use of some
|
||||
trade names, trademarks, or service marks; or
|
||||
|
||||
f) Requiring indemnification of licensors and authors of that
|
||||
material by anyone who conveys the material (or modified versions of
|
||||
it) with contractual assumptions of liability to the recipient, for
|
||||
any liability that these contractual assumptions directly impose on
|
||||
those licensors and authors.
|
||||
|
||||
All other non-permissive additional terms are considered "further
|
||||
restrictions" within the meaning of section 10. If the Program as you
|
||||
received it, or any part of it, contains a notice stating that it is
|
||||
governed by this License along with a term that is a further
|
||||
restriction, you may remove that term. If a license document contains
|
||||
a further restriction but permits relicensing or conveying under this
|
||||
License, you may add to a covered work material governed by the terms
|
||||
of that license document, provided that the further restriction does
|
||||
not survive such relicensing or conveying.
|
||||
|
||||
If you add terms to a covered work in accord with this section, you
|
||||
must place, in the relevant source files, a statement of the
|
||||
additional terms that apply to those files, or a notice indicating
|
||||
where to find the applicable terms.
|
||||
|
||||
Additional terms, permissive or non-permissive, may be stated in the
|
||||
form of a separately written license, or stated as exceptions;
|
||||
the above requirements apply either way.
|
||||
|
||||
8. Termination.
|
||||
|
||||
You may not propagate or modify a covered work except as expressly
|
||||
provided under this License. Any attempt otherwise to propagate or
|
||||
modify it is void, and will automatically terminate your rights under
|
||||
this License (including any patent licenses granted under the third
|
||||
paragraph of section 11).
|
||||
|
||||
However, if you cease all violation of this License, then your
|
||||
license from a particular copyright holder is reinstated (a)
|
||||
provisionally, unless and until the copyright holder explicitly and
|
||||
finally terminates your license, and (b) permanently, if the copyright
|
||||
holder fails to notify you of the violation by some reasonable means
|
||||
prior to 60 days after the cessation.
|
||||
|
||||
Moreover, your license from a particular copyright holder is
|
||||
reinstated permanently if the copyright holder notifies you of the
|
||||
violation by some reasonable means, this is the first time you have
|
||||
received notice of violation of this License (for any work) from that
|
||||
copyright holder, and you cure the violation prior to 30 days after
|
||||
your receipt of the notice.
|
||||
|
||||
Termination of your rights under this section does not terminate the
|
||||
licenses of parties who have received copies or rights from you under
|
||||
this License. If your rights have been terminated and not permanently
|
||||
reinstated, you do not qualify to receive new licenses for the same
|
||||
material under section 10.
|
||||
|
||||
9. Acceptance Not Required for Having Copies.
|
||||
|
||||
You are not required to accept this License in order to receive or
|
||||
run a copy of the Program. Ancillary propagation of a covered work
|
||||
occurring solely as a consequence of using peer-to-peer transmission
|
||||
to receive a copy likewise does not require acceptance. However,
|
||||
nothing other than this License grants you permission to propagate or
|
||||
modify any covered work. These actions infringe copyright if you do
|
||||
not accept this License. Therefore, by modifying or propagating a
|
||||
covered work, you indicate your acceptance of this License to do so.
|
||||
|
||||
10. Automatic Licensing of Downstream Recipients.
|
||||
|
||||
Each time you convey a covered work, the recipient automatically
|
||||
receives a license from the original licensors, to run, modify and
|
||||
propagate that work, subject to this License. You are not responsible
|
||||
for enforcing compliance by third parties with this License.
|
||||
|
||||
An "entity transaction" is a transaction transferring control of an
|
||||
organization, or substantially all assets of one, or subdividing an
|
||||
organization, or merging organizations. If propagation of a covered
|
||||
work results from an entity transaction, each party to that
|
||||
transaction who receives a copy of the work also receives whatever
|
||||
licenses to the work the party's predecessor in interest had or could
|
||||
give under the previous paragraph, plus a right to possession of the
|
||||
Corresponding Source of the work from the predecessor in interest, if
|
||||
the predecessor has it or can get it with reasonable efforts.
|
||||
|
||||
You may not impose any further restrictions on the exercise of the
|
||||
rights granted or affirmed under this License. For example, you may
|
||||
not impose a license fee, royalty, or other charge for exercise of
|
||||
rights granted under this License, and you may not initiate litigation
|
||||
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||
any patent claim is infringed by making, using, selling, offering for
|
||||
sale, or importing the Program or any portion of it.
|
||||
|
||||
11. Patents.
|
||||
|
||||
A "contributor" is a copyright holder who authorizes use under this
|
||||
License of the Program or a work on which the Program is based. The
|
||||
work thus licensed is called the contributor's "contributor version".
|
||||
|
||||
A contributor's "essential patent claims" are all patent claims
|
||||
owned or controlled by the contributor, whether already acquired or
|
||||
hereafter acquired, that would be infringed by some manner, permitted
|
||||
by this License, of making, using, or selling its contributor version,
|
||||
but do not include claims that would be infringed only as a
|
||||
consequence of further modification of the contributor version. For
|
||||
purposes of this definition, "control" includes the right to grant
|
||||
patent sublicenses in a manner consistent with the requirements of
|
||||
this License.
|
||||
|
||||
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||
patent license under the contributor's essential patent claims, to
|
||||
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||
propagate the contents of its contributor version.
|
||||
|
||||
In the following three paragraphs, a "patent license" is any express
|
||||
agreement or commitment, however denominated, not to enforce a patent
|
||||
(such as an express permission to practice a patent or covenant not to
|
||||
sue for patent infringement). To "grant" such a patent license to a
|
||||
party means to make such an agreement or commitment not to enforce a
|
||||
patent against the party.
|
||||
|
||||
If you convey a covered work, knowingly relying on a patent license,
|
||||
and the Corresponding Source of the work is not available for anyone
|
||||
to copy, free of charge and under the terms of this License, through a
|
||||
publicly available network server or other readily accessible means,
|
||||
then you must either (1) cause the Corresponding Source to be so
|
||||
available, or (2) arrange to deprive yourself of the benefit of the
|
||||
patent license for this particular work, or (3) arrange, in a manner
|
||||
consistent with the requirements of this License, to extend the patent
|
||||
license to downstream recipients. "Knowingly relying" means you have
|
||||
actual knowledge that, but for the patent license, your conveying the
|
||||
covered work in a country, or your recipient's use of the covered work
|
||||
in a country, would infringe one or more identifiable patents in that
|
||||
country that you have reason to believe are valid.
|
||||
|
||||
If, pursuant to or in connection with a single transaction or
|
||||
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||
covered work, and grant a patent license to some of the parties
|
||||
receiving the covered work authorizing them to use, propagate, modify
|
||||
or convey a specific copy of the covered work, then the patent license
|
||||
you grant is automatically extended to all recipients of the covered
|
||||
work and works based on it.
|
||||
|
||||
A patent license is "discriminatory" if it does not include within
|
||||
the scope of its coverage, prohibits the exercise of, or is
|
||||
conditioned on the non-exercise of one or more of the rights that are
|
||||
specifically granted under this License. You may not convey a covered
|
||||
work if you are a party to an arrangement with a third party that is
|
||||
in the business of distributing software, under which you make payment
|
||||
to the third party based on the extent of your activity of conveying
|
||||
the work, and under which the third party grants, to any of the
|
||||
parties who would receive the covered work from you, a discriminatory
|
||||
patent license (a) in connection with copies of the covered work
|
||||
conveyed by you (or copies made from those copies), or (b) primarily
|
||||
for and in connection with specific products or compilations that
|
||||
contain the covered work, unless you entered into that arrangement,
|
||||
or that patent license was granted, prior to 28 March 2007.
|
||||
|
||||
Nothing in this License shall be construed as excluding or limiting
|
||||
any implied license or other defenses to infringement that may
|
||||
otherwise be available to you under applicable patent law.
|
||||
|
||||
12. No Surrender of Others' Freedom.
|
||||
|
||||
If conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot convey a
|
||||
covered work so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you may
|
||||
not convey it at all. For example, if you agree to terms that obligate you
|
||||
to collect a royalty for further conveying from those to whom you convey
|
||||
the Program, the only way you could satisfy both those terms and this
|
||||
License would be to refrain entirely from conveying the Program.
|
||||
|
||||
13. Use with the GNU Affero General Public License.
|
||||
|
||||
Notwithstanding any other provision of this License, you have
|
||||
permission to link or combine any covered work with a work licensed
|
||||
under version 3 of the GNU Affero General Public License into a single
|
||||
combined work, and to convey the resulting work. The terms of this
|
||||
License will continue to apply to the part which is the covered work,
|
||||
but the special requirements of the GNU Affero General Public License,
|
||||
section 13, concerning interaction through a network will apply to the
|
||||
combination as such.
|
||||
|
||||
14. Revised Versions of this License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions of
|
||||
the GNU General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the
|
||||
Program specifies that a certain numbered version of the GNU General
|
||||
Public License "or any later version" applies to it, you have the
|
||||
option of following the terms and conditions either of that numbered
|
||||
version or of any later version published by the Free Software
|
||||
Foundation. If the Program does not specify a version number of the
|
||||
GNU General Public License, you may choose any version ever published
|
||||
by the Free Software Foundation.
|
||||
|
||||
If the Program specifies that a proxy can decide which future
|
||||
versions of the GNU General Public License can be used, that proxy's
|
||||
public statement of acceptance of a version permanently authorizes you
|
||||
to choose that version for the Program.
|
||||
|
||||
Later license versions may give you additional or different
|
||||
permissions. However, no additional obligations are imposed on any
|
||||
author or copyright holder as a result of your choosing to follow a
|
||||
later version.
|
||||
|
||||
15. Disclaimer of Warranty.
|
||||
|
||||
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
||||
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
||||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
||||
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. Limitation of Liability.
|
||||
|
||||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
||||
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
||||
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
||||
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGES.
|
||||
|
||||
17. Interpretation of Sections 15 and 16.
|
||||
|
||||
If the disclaimer of warranty and limitation of liability provided
|
||||
above cannot be given local legal effect according to their terms,
|
||||
reviewing courts shall apply local law that most closely approximates
|
||||
an absolute waiver of all civil liability in connection with the
|
||||
Program, unless a warranty or assumption of liability accompanies a
|
||||
copy of the Program in return for a fee.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
state the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
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/>.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program does terminal interaction, make it output a short
|
||||
notice like this when it starts in an interactive mode:
|
||||
|
||||
<program> Copyright (C) <year> <name of author>
|
||||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, your program's commands
|
||||
might be different; for a GUI interface, you would use an "about box".
|
||||
|
||||
You should also get your employer (if you work as a programmer) or school,
|
||||
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||
For more information on this, and how to apply and follow the GNU GPL, see
|
||||
<http://www.gnu.org/licenses/>.
|
||||
|
||||
The GNU General Public License does not permit incorporating your program
|
||||
into proprietary programs. If your program is a subroutine library, you
|
||||
may consider it more useful to permit linking proprietary applications with
|
||||
the library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License. But first, please read
|
||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
674
source/freeipmi/usr/share/doc/freeipmi/COPYING.ipmiping
Normal file
674
source/freeipmi/usr/share/doc/freeipmi/COPYING.ipmiping
Normal file
@ -0,0 +1,674 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The GNU General Public License is a free, copyleft license for
|
||||
software and other kinds of works.
|
||||
|
||||
The licenses for most software and other practical works are designed
|
||||
to take away your freedom to share and change the works. By contrast,
|
||||
the GNU General Public License is intended to guarantee your freedom to
|
||||
share and change all versions of a program--to make sure it remains free
|
||||
software for all its users. We, the Free Software Foundation, use the
|
||||
GNU General Public License for most of our software; it applies also to
|
||||
any other work released this way by its authors. You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
them if you wish), that you receive source code or can get it if you
|
||||
want it, that you can change the software or use pieces of it in new
|
||||
free programs, and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to prevent others from denying you
|
||||
these rights or asking you to surrender the rights. Therefore, you have
|
||||
certain responsibilities if you distribute copies of the software, or if
|
||||
you modify it: responsibilities to respect the freedom of others.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must pass on to the recipients the same
|
||||
freedoms that you received. You must make sure that they, too, receive
|
||||
or can get the source code. And you must show them these terms so they
|
||||
know their rights.
|
||||
|
||||
Developers that use the GNU GPL protect your rights with two steps:
|
||||
(1) assert copyright on the software, and (2) offer you this License
|
||||
giving you legal permission to copy, distribute and/or modify it.
|
||||
|
||||
For the developers' and authors' protection, the GPL clearly explains
|
||||
that there is no warranty for this free software. For both users' and
|
||||
authors' sake, the GPL requires that modified versions be marked as
|
||||
changed, so that their problems will not be attributed erroneously to
|
||||
authors of previous versions.
|
||||
|
||||
Some devices are designed to deny users access to install or run
|
||||
modified versions of the software inside them, although the manufacturer
|
||||
can do so. This is fundamentally incompatible with the aim of
|
||||
protecting users' freedom to change the software. The systematic
|
||||
pattern of such abuse occurs in the area of products for individuals to
|
||||
use, which is precisely where it is most unacceptable. Therefore, we
|
||||
have designed this version of the GPL to prohibit the practice for those
|
||||
products. If such problems arise substantially in other domains, we
|
||||
stand ready to extend this provision to those domains in future versions
|
||||
of the GPL, as needed to protect the freedom of users.
|
||||
|
||||
Finally, every program is threatened constantly by software patents.
|
||||
States should not allow patents to restrict development and use of
|
||||
software on general-purpose computers, but in those that do, we wish to
|
||||
avoid the special danger that patents applied to a free program could
|
||||
make it effectively proprietary. To prevent this, the GPL assures that
|
||||
patents cannot be used to render the program non-free.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
TERMS AND CONDITIONS
|
||||
|
||||
0. Definitions.
|
||||
|
||||
"This License" refers to version 3 of the GNU General Public License.
|
||||
|
||||
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||
works, such as semiconductor masks.
|
||||
|
||||
"The Program" refers to any copyrightable work licensed under this
|
||||
License. Each licensee is addressed as "you". "Licensees" and
|
||||
"recipients" may be individuals or organizations.
|
||||
|
||||
To "modify" a work means to copy from or adapt all or part of the work
|
||||
in a fashion requiring copyright permission, other than the making of an
|
||||
exact copy. The resulting work is called a "modified version" of the
|
||||
earlier work or a work "based on" the earlier work.
|
||||
|
||||
A "covered work" means either the unmodified Program or a work based
|
||||
on the Program.
|
||||
|
||||
To "propagate" a work means to do anything with it that, without
|
||||
permission, would make you directly or secondarily liable for
|
||||
infringement under applicable copyright law, except executing it on a
|
||||
computer or modifying a private copy. Propagation includes copying,
|
||||
distribution (with or without modification), making available to the
|
||||
public, and in some countries other activities as well.
|
||||
|
||||
To "convey" a work means any kind of propagation that enables other
|
||||
parties to make or receive copies. Mere interaction with a user through
|
||||
a computer network, with no transfer of a copy, is not conveying.
|
||||
|
||||
An interactive user interface displays "Appropriate Legal Notices"
|
||||
to the extent that it includes a convenient and prominently visible
|
||||
feature that (1) displays an appropriate copyright notice, and (2)
|
||||
tells the user that there is no warranty for the work (except to the
|
||||
extent that warranties are provided), that licensees may convey the
|
||||
work under this License, and how to view a copy of this License. If
|
||||
the interface presents a list of user commands or options, such as a
|
||||
menu, a prominent item in the list meets this criterion.
|
||||
|
||||
1. Source Code.
|
||||
|
||||
The "source code" for a work means the preferred form of the work
|
||||
for making modifications to it. "Object code" means any non-source
|
||||
form of a work.
|
||||
|
||||
A "Standard Interface" means an interface that either is an official
|
||||
standard defined by a recognized standards body, or, in the case of
|
||||
interfaces specified for a particular programming language, one that
|
||||
is widely used among developers working in that language.
|
||||
|
||||
The "System Libraries" of an executable work include anything, other
|
||||
than the work as a whole, that (a) is included in the normal form of
|
||||
packaging a Major Component, but which is not part of that Major
|
||||
Component, and (b) serves only to enable use of the work with that
|
||||
Major Component, or to implement a Standard Interface for which an
|
||||
implementation is available to the public in source code form. A
|
||||
"Major Component", in this context, means a major essential component
|
||||
(kernel, window system, and so on) of the specific operating system
|
||||
(if any) on which the executable work runs, or a compiler used to
|
||||
produce the work, or an object code interpreter used to run it.
|
||||
|
||||
The "Corresponding Source" for a work in object code form means all
|
||||
the source code needed to generate, install, and (for an executable
|
||||
work) run the object code and to modify the work, including scripts to
|
||||
control those activities. However, it does not include the work's
|
||||
System Libraries, or general-purpose tools or generally available free
|
||||
programs which are used unmodified in performing those activities but
|
||||
which are not part of the work. For example, Corresponding Source
|
||||
includes interface definition files associated with source files for
|
||||
the work, and the source code for shared libraries and dynamically
|
||||
linked subprograms that the work is specifically designed to require,
|
||||
such as by intimate data communication or control flow between those
|
||||
subprograms and other parts of the work.
|
||||
|
||||
The Corresponding Source need not include anything that users
|
||||
can regenerate automatically from other parts of the Corresponding
|
||||
Source.
|
||||
|
||||
The Corresponding Source for a work in source code form is that
|
||||
same work.
|
||||
|
||||
2. Basic Permissions.
|
||||
|
||||
All rights granted under this License are granted for the term of
|
||||
copyright on the Program, and are irrevocable provided the stated
|
||||
conditions are met. This License explicitly affirms your unlimited
|
||||
permission to run the unmodified Program. The output from running a
|
||||
covered work is covered by this License only if the output, given its
|
||||
content, constitutes a covered work. This License acknowledges your
|
||||
rights of fair use or other equivalent, as provided by copyright law.
|
||||
|
||||
You may make, run and propagate covered works that you do not
|
||||
convey, without conditions so long as your license otherwise remains
|
||||
in force. You may convey covered works to others for the sole purpose
|
||||
of having them make modifications exclusively for you, or provide you
|
||||
with facilities for running those works, provided that you comply with
|
||||
the terms of this License in conveying all material for which you do
|
||||
not control copyright. Those thus making or running the covered works
|
||||
for you must do so exclusively on your behalf, under your direction
|
||||
and control, on terms that prohibit them from making any copies of
|
||||
your copyrighted material outside their relationship with you.
|
||||
|
||||
Conveying under any other circumstances is permitted solely under
|
||||
the conditions stated below. Sublicensing is not allowed; section 10
|
||||
makes it unnecessary.
|
||||
|
||||
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||
|
||||
No covered work shall be deemed part of an effective technological
|
||||
measure under any applicable law fulfilling obligations under article
|
||||
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||
similar laws prohibiting or restricting circumvention of such
|
||||
measures.
|
||||
|
||||
When you convey a covered work, you waive any legal power to forbid
|
||||
circumvention of technological measures to the extent such circumvention
|
||||
is effected by exercising rights under this License with respect to
|
||||
the covered work, and you disclaim any intention to limit operation or
|
||||
modification of the work as a means of enforcing, against the work's
|
||||
users, your or third parties' legal rights to forbid circumvention of
|
||||
technological measures.
|
||||
|
||||
4. Conveying Verbatim Copies.
|
||||
|
||||
You may convey verbatim copies of the Program's source code as you
|
||||
receive it, in any medium, provided that you conspicuously and
|
||||
appropriately publish on each copy an appropriate copyright notice;
|
||||
keep intact all notices stating that this License and any
|
||||
non-permissive terms added in accord with section 7 apply to the code;
|
||||
keep intact all notices of the absence of any warranty; and give all
|
||||
recipients a copy of this License along with the Program.
|
||||
|
||||
You may charge any price or no price for each copy that you convey,
|
||||
and you may offer support or warranty protection for a fee.
|
||||
|
||||
5. Conveying Modified Source Versions.
|
||||
|
||||
You may convey a work based on the Program, or the modifications to
|
||||
produce it from the Program, in the form of source code under the
|
||||
terms of section 4, provided that you also meet all of these conditions:
|
||||
|
||||
a) The work must carry prominent notices stating that you modified
|
||||
it, and giving a relevant date.
|
||||
|
||||
b) The work must carry prominent notices stating that it is
|
||||
released under this License and any conditions added under section
|
||||
7. This requirement modifies the requirement in section 4 to
|
||||
"keep intact all notices".
|
||||
|
||||
c) You must license the entire work, as a whole, under this
|
||||
License to anyone who comes into possession of a copy. This
|
||||
License will therefore apply, along with any applicable section 7
|
||||
additional terms, to the whole of the work, and all its parts,
|
||||
regardless of how they are packaged. This License gives no
|
||||
permission to license the work in any other way, but it does not
|
||||
invalidate such permission if you have separately received it.
|
||||
|
||||
d) If the work has interactive user interfaces, each must display
|
||||
Appropriate Legal Notices; however, if the Program has interactive
|
||||
interfaces that do not display Appropriate Legal Notices, your
|
||||
work need not make them do so.
|
||||
|
||||
A compilation of a covered work with other separate and independent
|
||||
works, which are not by their nature extensions of the covered work,
|
||||
and which are not combined with it such as to form a larger program,
|
||||
in or on a volume of a storage or distribution medium, is called an
|
||||
"aggregate" if the compilation and its resulting copyright are not
|
||||
used to limit the access or legal rights of the compilation's users
|
||||
beyond what the individual works permit. Inclusion of a covered work
|
||||
in an aggregate does not cause this License to apply to the other
|
||||
parts of the aggregate.
|
||||
|
||||
6. Conveying Non-Source Forms.
|
||||
|
||||
You may convey a covered work in object code form under the terms
|
||||
of sections 4 and 5, provided that you also convey the
|
||||
machine-readable Corresponding Source under the terms of this License,
|
||||
in one of these ways:
|
||||
|
||||
a) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by the
|
||||
Corresponding Source fixed on a durable physical medium
|
||||
customarily used for software interchange.
|
||||
|
||||
b) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by a
|
||||
written offer, valid for at least three years and valid for as
|
||||
long as you offer spare parts or customer support for that product
|
||||
model, to give anyone who possesses the object code either (1) a
|
||||
copy of the Corresponding Source for all the software in the
|
||||
product that is covered by this License, on a durable physical
|
||||
medium customarily used for software interchange, for a price no
|
||||
more than your reasonable cost of physically performing this
|
||||
conveying of source, or (2) access to copy the
|
||||
Corresponding Source from a network server at no charge.
|
||||
|
||||
c) Convey individual copies of the object code with a copy of the
|
||||
written offer to provide the Corresponding Source. This
|
||||
alternative is allowed only occasionally and noncommercially, and
|
||||
only if you received the object code with such an offer, in accord
|
||||
with subsection 6b.
|
||||
|
||||
d) Convey the object code by offering access from a designated
|
||||
place (gratis or for a charge), and offer equivalent access to the
|
||||
Corresponding Source in the same way through the same place at no
|
||||
further charge. You need not require recipients to copy the
|
||||
Corresponding Source along with the object code. If the place to
|
||||
copy the object code is a network server, the Corresponding Source
|
||||
may be on a different server (operated by you or a third party)
|
||||
that supports equivalent copying facilities, provided you maintain
|
||||
clear directions next to the object code saying where to find the
|
||||
Corresponding Source. Regardless of what server hosts the
|
||||
Corresponding Source, you remain obligated to ensure that it is
|
||||
available for as long as needed to satisfy these requirements.
|
||||
|
||||
e) Convey the object code using peer-to-peer transmission, provided
|
||||
you inform other peers where the object code and Corresponding
|
||||
Source of the work are being offered to the general public at no
|
||||
charge under subsection 6d.
|
||||
|
||||
A separable portion of the object code, whose source code is excluded
|
||||
from the Corresponding Source as a System Library, need not be
|
||||
included in conveying the object code work.
|
||||
|
||||
A "User Product" is either (1) a "consumer product", which means any
|
||||
tangible personal property which is normally used for personal, family,
|
||||
or household purposes, or (2) anything designed or sold for incorporation
|
||||
into a dwelling. In determining whether a product is a consumer product,
|
||||
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||
product received by a particular user, "normally used" refers to a
|
||||
typical or common use of that class of product, regardless of the status
|
||||
of the particular user or of the way in which the particular user
|
||||
actually uses, or expects or is expected to use, the product. A product
|
||||
is a consumer product regardless of whether the product has substantial
|
||||
commercial, industrial or non-consumer uses, unless such uses represent
|
||||
the only significant mode of use of the product.
|
||||
|
||||
"Installation Information" for a User Product means any methods,
|
||||
procedures, authorization keys, or other information required to install
|
||||
and execute modified versions of a covered work in that User Product from
|
||||
a modified version of its Corresponding Source. The information must
|
||||
suffice to ensure that the continued functioning of the modified object
|
||||
code is in no case prevented or interfered with solely because
|
||||
modification has been made.
|
||||
|
||||
If you convey an object code work under this section in, or with, or
|
||||
specifically for use in, a User Product, and the conveying occurs as
|
||||
part of a transaction in which the right of possession and use of the
|
||||
User Product is transferred to the recipient in perpetuity or for a
|
||||
fixed term (regardless of how the transaction is characterized), the
|
||||
Corresponding Source conveyed under this section must be accompanied
|
||||
by the Installation Information. But this requirement does not apply
|
||||
if neither you nor any third party retains the ability to install
|
||||
modified object code on the User Product (for example, the work has
|
||||
been installed in ROM).
|
||||
|
||||
The requirement to provide Installation Information does not include a
|
||||
requirement to continue to provide support service, warranty, or updates
|
||||
for a work that has been modified or installed by the recipient, or for
|
||||
the User Product in which it has been modified or installed. Access to a
|
||||
network may be denied when the modification itself materially and
|
||||
adversely affects the operation of the network or violates the rules and
|
||||
protocols for communication across the network.
|
||||
|
||||
Corresponding Source conveyed, and Installation Information provided,
|
||||
in accord with this section must be in a format that is publicly
|
||||
documented (and with an implementation available to the public in
|
||||
source code form), and must require no special password or key for
|
||||
unpacking, reading or copying.
|
||||
|
||||
7. Additional Terms.
|
||||
|
||||
"Additional permissions" are terms that supplement the terms of this
|
||||
License by making exceptions from one or more of its conditions.
|
||||
Additional permissions that are applicable to the entire Program shall
|
||||
be treated as though they were included in this License, to the extent
|
||||
that they are valid under applicable law. If additional permissions
|
||||
apply only to part of the Program, that part may be used separately
|
||||
under those permissions, but the entire Program remains governed by
|
||||
this License without regard to the additional permissions.
|
||||
|
||||
When you convey a copy of a covered work, you may at your option
|
||||
remove any additional permissions from that copy, or from any part of
|
||||
it. (Additional permissions may be written to require their own
|
||||
removal in certain cases when you modify the work.) You may place
|
||||
additional permissions on material, added by you to a covered work,
|
||||
for which you have or can give appropriate copyright permission.
|
||||
|
||||
Notwithstanding any other provision of this License, for material you
|
||||
add to a covered work, you may (if authorized by the copyright holders of
|
||||
that material) supplement the terms of this License with terms:
|
||||
|
||||
a) Disclaiming warranty or limiting liability differently from the
|
||||
terms of sections 15 and 16 of this License; or
|
||||
|
||||
b) Requiring preservation of specified reasonable legal notices or
|
||||
author attributions in that material or in the Appropriate Legal
|
||||
Notices displayed by works containing it; or
|
||||
|
||||
c) Prohibiting misrepresentation of the origin of that material, or
|
||||
requiring that modified versions of such material be marked in
|
||||
reasonable ways as different from the original version; or
|
||||
|
||||
d) Limiting the use for publicity purposes of names of licensors or
|
||||
authors of the material; or
|
||||
|
||||
e) Declining to grant rights under trademark law for use of some
|
||||
trade names, trademarks, or service marks; or
|
||||
|
||||
f) Requiring indemnification of licensors and authors of that
|
||||
material by anyone who conveys the material (or modified versions of
|
||||
it) with contractual assumptions of liability to the recipient, for
|
||||
any liability that these contractual assumptions directly impose on
|
||||
those licensors and authors.
|
||||
|
||||
All other non-permissive additional terms are considered "further
|
||||
restrictions" within the meaning of section 10. If the Program as you
|
||||
received it, or any part of it, contains a notice stating that it is
|
||||
governed by this License along with a term that is a further
|
||||
restriction, you may remove that term. If a license document contains
|
||||
a further restriction but permits relicensing or conveying under this
|
||||
License, you may add to a covered work material governed by the terms
|
||||
of that license document, provided that the further restriction does
|
||||
not survive such relicensing or conveying.
|
||||
|
||||
If you add terms to a covered work in accord with this section, you
|
||||
must place, in the relevant source files, a statement of the
|
||||
additional terms that apply to those files, or a notice indicating
|
||||
where to find the applicable terms.
|
||||
|
||||
Additional terms, permissive or non-permissive, may be stated in the
|
||||
form of a separately written license, or stated as exceptions;
|
||||
the above requirements apply either way.
|
||||
|
||||
8. Termination.
|
||||
|
||||
You may not propagate or modify a covered work except as expressly
|
||||
provided under this License. Any attempt otherwise to propagate or
|
||||
modify it is void, and will automatically terminate your rights under
|
||||
this License (including any patent licenses granted under the third
|
||||
paragraph of section 11).
|
||||
|
||||
However, if you cease all violation of this License, then your
|
||||
license from a particular copyright holder is reinstated (a)
|
||||
provisionally, unless and until the copyright holder explicitly and
|
||||
finally terminates your license, and (b) permanently, if the copyright
|
||||
holder fails to notify you of the violation by some reasonable means
|
||||
prior to 60 days after the cessation.
|
||||
|
||||
Moreover, your license from a particular copyright holder is
|
||||
reinstated permanently if the copyright holder notifies you of the
|
||||
violation by some reasonable means, this is the first time you have
|
||||
received notice of violation of this License (for any work) from that
|
||||
copyright holder, and you cure the violation prior to 30 days after
|
||||
your receipt of the notice.
|
||||
|
||||
Termination of your rights under this section does not terminate the
|
||||
licenses of parties who have received copies or rights from you under
|
||||
this License. If your rights have been terminated and not permanently
|
||||
reinstated, you do not qualify to receive new licenses for the same
|
||||
material under section 10.
|
||||
|
||||
9. Acceptance Not Required for Having Copies.
|
||||
|
||||
You are not required to accept this License in order to receive or
|
||||
run a copy of the Program. Ancillary propagation of a covered work
|
||||
occurring solely as a consequence of using peer-to-peer transmission
|
||||
to receive a copy likewise does not require acceptance. However,
|
||||
nothing other than this License grants you permission to propagate or
|
||||
modify any covered work. These actions infringe copyright if you do
|
||||
not accept this License. Therefore, by modifying or propagating a
|
||||
covered work, you indicate your acceptance of this License to do so.
|
||||
|
||||
10. Automatic Licensing of Downstream Recipients.
|
||||
|
||||
Each time you convey a covered work, the recipient automatically
|
||||
receives a license from the original licensors, to run, modify and
|
||||
propagate that work, subject to this License. You are not responsible
|
||||
for enforcing compliance by third parties with this License.
|
||||
|
||||
An "entity transaction" is a transaction transferring control of an
|
||||
organization, or substantially all assets of one, or subdividing an
|
||||
organization, or merging organizations. If propagation of a covered
|
||||
work results from an entity transaction, each party to that
|
||||
transaction who receives a copy of the work also receives whatever
|
||||
licenses to the work the party's predecessor in interest had or could
|
||||
give under the previous paragraph, plus a right to possession of the
|
||||
Corresponding Source of the work from the predecessor in interest, if
|
||||
the predecessor has it or can get it with reasonable efforts.
|
||||
|
||||
You may not impose any further restrictions on the exercise of the
|
||||
rights granted or affirmed under this License. For example, you may
|
||||
not impose a license fee, royalty, or other charge for exercise of
|
||||
rights granted under this License, and you may not initiate litigation
|
||||
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||
any patent claim is infringed by making, using, selling, offering for
|
||||
sale, or importing the Program or any portion of it.
|
||||
|
||||
11. Patents.
|
||||
|
||||
A "contributor" is a copyright holder who authorizes use under this
|
||||
License of the Program or a work on which the Program is based. The
|
||||
work thus licensed is called the contributor's "contributor version".
|
||||
|
||||
A contributor's "essential patent claims" are all patent claims
|
||||
owned or controlled by the contributor, whether already acquired or
|
||||
hereafter acquired, that would be infringed by some manner, permitted
|
||||
by this License, of making, using, or selling its contributor version,
|
||||
but do not include claims that would be infringed only as a
|
||||
consequence of further modification of the contributor version. For
|
||||
purposes of this definition, "control" includes the right to grant
|
||||
patent sublicenses in a manner consistent with the requirements of
|
||||
this License.
|
||||
|
||||
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||
patent license under the contributor's essential patent claims, to
|
||||
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||
propagate the contents of its contributor version.
|
||||
|
||||
In the following three paragraphs, a "patent license" is any express
|
||||
agreement or commitment, however denominated, not to enforce a patent
|
||||
(such as an express permission to practice a patent or covenant not to
|
||||
sue for patent infringement). To "grant" such a patent license to a
|
||||
party means to make such an agreement or commitment not to enforce a
|
||||
patent against the party.
|
||||
|
||||
If you convey a covered work, knowingly relying on a patent license,
|
||||
and the Corresponding Source of the work is not available for anyone
|
||||
to copy, free of charge and under the terms of this License, through a
|
||||
publicly available network server or other readily accessible means,
|
||||
then you must either (1) cause the Corresponding Source to be so
|
||||
available, or (2) arrange to deprive yourself of the benefit of the
|
||||
patent license for this particular work, or (3) arrange, in a manner
|
||||
consistent with the requirements of this License, to extend the patent
|
||||
license to downstream recipients. "Knowingly relying" means you have
|
||||
actual knowledge that, but for the patent license, your conveying the
|
||||
covered work in a country, or your recipient's use of the covered work
|
||||
in a country, would infringe one or more identifiable patents in that
|
||||
country that you have reason to believe are valid.
|
||||
|
||||
If, pursuant to or in connection with a single transaction or
|
||||
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||
covered work, and grant a patent license to some of the parties
|
||||
receiving the covered work authorizing them to use, propagate, modify
|
||||
or convey a specific copy of the covered work, then the patent license
|
||||
you grant is automatically extended to all recipients of the covered
|
||||
work and works based on it.
|
||||
|
||||
A patent license is "discriminatory" if it does not include within
|
||||
the scope of its coverage, prohibits the exercise of, or is
|
||||
conditioned on the non-exercise of one or more of the rights that are
|
||||
specifically granted under this License. You may not convey a covered
|
||||
work if you are a party to an arrangement with a third party that is
|
||||
in the business of distributing software, under which you make payment
|
||||
to the third party based on the extent of your activity of conveying
|
||||
the work, and under which the third party grants, to any of the
|
||||
parties who would receive the covered work from you, a discriminatory
|
||||
patent license (a) in connection with copies of the covered work
|
||||
conveyed by you (or copies made from those copies), or (b) primarily
|
||||
for and in connection with specific products or compilations that
|
||||
contain the covered work, unless you entered into that arrangement,
|
||||
or that patent license was granted, prior to 28 March 2007.
|
||||
|
||||
Nothing in this License shall be construed as excluding or limiting
|
||||
any implied license or other defenses to infringement that may
|
||||
otherwise be available to you under applicable patent law.
|
||||
|
||||
12. No Surrender of Others' Freedom.
|
||||
|
||||
If conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot convey a
|
||||
covered work so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you may
|
||||
not convey it at all. For example, if you agree to terms that obligate you
|
||||
to collect a royalty for further conveying from those to whom you convey
|
||||
the Program, the only way you could satisfy both those terms and this
|
||||
License would be to refrain entirely from conveying the Program.
|
||||
|
||||
13. Use with the GNU Affero General Public License.
|
||||
|
||||
Notwithstanding any other provision of this License, you have
|
||||
permission to link or combine any covered work with a work licensed
|
||||
under version 3 of the GNU Affero General Public License into a single
|
||||
combined work, and to convey the resulting work. The terms of this
|
||||
License will continue to apply to the part which is the covered work,
|
||||
but the special requirements of the GNU Affero General Public License,
|
||||
section 13, concerning interaction through a network will apply to the
|
||||
combination as such.
|
||||
|
||||
14. Revised Versions of this License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions of
|
||||
the GNU General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the
|
||||
Program specifies that a certain numbered version of the GNU General
|
||||
Public License "or any later version" applies to it, you have the
|
||||
option of following the terms and conditions either of that numbered
|
||||
version or of any later version published by the Free Software
|
||||
Foundation. If the Program does not specify a version number of the
|
||||
GNU General Public License, you may choose any version ever published
|
||||
by the Free Software Foundation.
|
||||
|
||||
If the Program specifies that a proxy can decide which future
|
||||
versions of the GNU General Public License can be used, that proxy's
|
||||
public statement of acceptance of a version permanently authorizes you
|
||||
to choose that version for the Program.
|
||||
|
||||
Later license versions may give you additional or different
|
||||
permissions. However, no additional obligations are imposed on any
|
||||
author or copyright holder as a result of your choosing to follow a
|
||||
later version.
|
||||
|
||||
15. Disclaimer of Warranty.
|
||||
|
||||
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
||||
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
||||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
||||
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. Limitation of Liability.
|
||||
|
||||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
||||
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
||||
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
||||
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGES.
|
||||
|
||||
17. Interpretation of Sections 15 and 16.
|
||||
|
||||
If the disclaimer of warranty and limitation of liability provided
|
||||
above cannot be given local legal effect according to their terms,
|
||||
reviewing courts shall apply local law that most closely approximates
|
||||
an absolute waiver of all civil liability in connection with the
|
||||
Program, unless a warranty or assumption of liability accompanies a
|
||||
copy of the Program in return for a fee.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
state the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
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/>.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program does terminal interaction, make it output a short
|
||||
notice like this when it starts in an interactive mode:
|
||||
|
||||
<program> Copyright (C) <year> <name of author>
|
||||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, your program's commands
|
||||
might be different; for a GUI interface, you would use an "about box".
|
||||
|
||||
You should also get your employer (if you work as a programmer) or school,
|
||||
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||
For more information on this, and how to apply and follow the GNU GPL, see
|
||||
<http://www.gnu.org/licenses/>.
|
||||
|
||||
The GNU General Public License does not permit incorporating your program
|
||||
into proprietary programs. If your program is a subroutine library, you
|
||||
may consider it more useful to permit linking proprietary applications with
|
||||
the library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License. But first, please read
|
||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
674
source/freeipmi/usr/share/doc/freeipmi/COPYING.ipmipower
Normal file
674
source/freeipmi/usr/share/doc/freeipmi/COPYING.ipmipower
Normal file
@ -0,0 +1,674 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The GNU General Public License is a free, copyleft license for
|
||||
software and other kinds of works.
|
||||
|
||||
The licenses for most software and other practical works are designed
|
||||
to take away your freedom to share and change the works. By contrast,
|
||||
the GNU General Public License is intended to guarantee your freedom to
|
||||
share and change all versions of a program--to make sure it remains free
|
||||
software for all its users. We, the Free Software Foundation, use the
|
||||
GNU General Public License for most of our software; it applies also to
|
||||
any other work released this way by its authors. You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
them if you wish), that you receive source code or can get it if you
|
||||
want it, that you can change the software or use pieces of it in new
|
||||
free programs, and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to prevent others from denying you
|
||||
these rights or asking you to surrender the rights. Therefore, you have
|
||||
certain responsibilities if you distribute copies of the software, or if
|
||||
you modify it: responsibilities to respect the freedom of others.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must pass on to the recipients the same
|
||||
freedoms that you received. You must make sure that they, too, receive
|
||||
or can get the source code. And you must show them these terms so they
|
||||
know their rights.
|
||||
|
||||
Developers that use the GNU GPL protect your rights with two steps:
|
||||
(1) assert copyright on the software, and (2) offer you this License
|
||||
giving you legal permission to copy, distribute and/or modify it.
|
||||
|
||||
For the developers' and authors' protection, the GPL clearly explains
|
||||
that there is no warranty for this free software. For both users' and
|
||||
authors' sake, the GPL requires that modified versions be marked as
|
||||
changed, so that their problems will not be attributed erroneously to
|
||||
authors of previous versions.
|
||||
|
||||
Some devices are designed to deny users access to install or run
|
||||
modified versions of the software inside them, although the manufacturer
|
||||
can do so. This is fundamentally incompatible with the aim of
|
||||
protecting users' freedom to change the software. The systematic
|
||||
pattern of such abuse occurs in the area of products for individuals to
|
||||
use, which is precisely where it is most unacceptable. Therefore, we
|
||||
have designed this version of the GPL to prohibit the practice for those
|
||||
products. If such problems arise substantially in other domains, we
|
||||
stand ready to extend this provision to those domains in future versions
|
||||
of the GPL, as needed to protect the freedom of users.
|
||||
|
||||
Finally, every program is threatened constantly by software patents.
|
||||
States should not allow patents to restrict development and use of
|
||||
software on general-purpose computers, but in those that do, we wish to
|
||||
avoid the special danger that patents applied to a free program could
|
||||
make it effectively proprietary. To prevent this, the GPL assures that
|
||||
patents cannot be used to render the program non-free.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
TERMS AND CONDITIONS
|
||||
|
||||
0. Definitions.
|
||||
|
||||
"This License" refers to version 3 of the GNU General Public License.
|
||||
|
||||
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||
works, such as semiconductor masks.
|
||||
|
||||
"The Program" refers to any copyrightable work licensed under this
|
||||
License. Each licensee is addressed as "you". "Licensees" and
|
||||
"recipients" may be individuals or organizations.
|
||||
|
||||
To "modify" a work means to copy from or adapt all or part of the work
|
||||
in a fashion requiring copyright permission, other than the making of an
|
||||
exact copy. The resulting work is called a "modified version" of the
|
||||
earlier work or a work "based on" the earlier work.
|
||||
|
||||
A "covered work" means either the unmodified Program or a work based
|
||||
on the Program.
|
||||
|
||||
To "propagate" a work means to do anything with it that, without
|
||||
permission, would make you directly or secondarily liable for
|
||||
infringement under applicable copyright law, except executing it on a
|
||||
computer or modifying a private copy. Propagation includes copying,
|
||||
distribution (with or without modification), making available to the
|
||||
public, and in some countries other activities as well.
|
||||
|
||||
To "convey" a work means any kind of propagation that enables other
|
||||
parties to make or receive copies. Mere interaction with a user through
|
||||
a computer network, with no transfer of a copy, is not conveying.
|
||||
|
||||
An interactive user interface displays "Appropriate Legal Notices"
|
||||
to the extent that it includes a convenient and prominently visible
|
||||
feature that (1) displays an appropriate copyright notice, and (2)
|
||||
tells the user that there is no warranty for the work (except to the
|
||||
extent that warranties are provided), that licensees may convey the
|
||||
work under this License, and how to view a copy of this License. If
|
||||
the interface presents a list of user commands or options, such as a
|
||||
menu, a prominent item in the list meets this criterion.
|
||||
|
||||
1. Source Code.
|
||||
|
||||
The "source code" for a work means the preferred form of the work
|
||||
for making modifications to it. "Object code" means any non-source
|
||||
form of a work.
|
||||
|
||||
A "Standard Interface" means an interface that either is an official
|
||||
standard defined by a recognized standards body, or, in the case of
|
||||
interfaces specified for a particular programming language, one that
|
||||
is widely used among developers working in that language.
|
||||
|
||||
The "System Libraries" of an executable work include anything, other
|
||||
than the work as a whole, that (a) is included in the normal form of
|
||||
packaging a Major Component, but which is not part of that Major
|
||||
Component, and (b) serves only to enable use of the work with that
|
||||
Major Component, or to implement a Standard Interface for which an
|
||||
implementation is available to the public in source code form. A
|
||||
"Major Component", in this context, means a major essential component
|
||||
(kernel, window system, and so on) of the specific operating system
|
||||
(if any) on which the executable work runs, or a compiler used to
|
||||
produce the work, or an object code interpreter used to run it.
|
||||
|
||||
The "Corresponding Source" for a work in object code form means all
|
||||
the source code needed to generate, install, and (for an executable
|
||||
work) run the object code and to modify the work, including scripts to
|
||||
control those activities. However, it does not include the work's
|
||||
System Libraries, or general-purpose tools or generally available free
|
||||
programs which are used unmodified in performing those activities but
|
||||
which are not part of the work. For example, Corresponding Source
|
||||
includes interface definition files associated with source files for
|
||||
the work, and the source code for shared libraries and dynamically
|
||||
linked subprograms that the work is specifically designed to require,
|
||||
such as by intimate data communication or control flow between those
|
||||
subprograms and other parts of the work.
|
||||
|
||||
The Corresponding Source need not include anything that users
|
||||
can regenerate automatically from other parts of the Corresponding
|
||||
Source.
|
||||
|
||||
The Corresponding Source for a work in source code form is that
|
||||
same work.
|
||||
|
||||
2. Basic Permissions.
|
||||
|
||||
All rights granted under this License are granted for the term of
|
||||
copyright on the Program, and are irrevocable provided the stated
|
||||
conditions are met. This License explicitly affirms your unlimited
|
||||
permission to run the unmodified Program. The output from running a
|
||||
covered work is covered by this License only if the output, given its
|
||||
content, constitutes a covered work. This License acknowledges your
|
||||
rights of fair use or other equivalent, as provided by copyright law.
|
||||
|
||||
You may make, run and propagate covered works that you do not
|
||||
convey, without conditions so long as your license otherwise remains
|
||||
in force. You may convey covered works to others for the sole purpose
|
||||
of having them make modifications exclusively for you, or provide you
|
||||
with facilities for running those works, provided that you comply with
|
||||
the terms of this License in conveying all material for which you do
|
||||
not control copyright. Those thus making or running the covered works
|
||||
for you must do so exclusively on your behalf, under your direction
|
||||
and control, on terms that prohibit them from making any copies of
|
||||
your copyrighted material outside their relationship with you.
|
||||
|
||||
Conveying under any other circumstances is permitted solely under
|
||||
the conditions stated below. Sublicensing is not allowed; section 10
|
||||
makes it unnecessary.
|
||||
|
||||
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||
|
||||
No covered work shall be deemed part of an effective technological
|
||||
measure under any applicable law fulfilling obligations under article
|
||||
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||
similar laws prohibiting or restricting circumvention of such
|
||||
measures.
|
||||
|
||||
When you convey a covered work, you waive any legal power to forbid
|
||||
circumvention of technological measures to the extent such circumvention
|
||||
is effected by exercising rights under this License with respect to
|
||||
the covered work, and you disclaim any intention to limit operation or
|
||||
modification of the work as a means of enforcing, against the work's
|
||||
users, your or third parties' legal rights to forbid circumvention of
|
||||
technological measures.
|
||||
|
||||
4. Conveying Verbatim Copies.
|
||||
|
||||
You may convey verbatim copies of the Program's source code as you
|
||||
receive it, in any medium, provided that you conspicuously and
|
||||
appropriately publish on each copy an appropriate copyright notice;
|
||||
keep intact all notices stating that this License and any
|
||||
non-permissive terms added in accord with section 7 apply to the code;
|
||||
keep intact all notices of the absence of any warranty; and give all
|
||||
recipients a copy of this License along with the Program.
|
||||
|
||||
You may charge any price or no price for each copy that you convey,
|
||||
and you may offer support or warranty protection for a fee.
|
||||
|
||||
5. Conveying Modified Source Versions.
|
||||
|
||||
You may convey a work based on the Program, or the modifications to
|
||||
produce it from the Program, in the form of source code under the
|
||||
terms of section 4, provided that you also meet all of these conditions:
|
||||
|
||||
a) The work must carry prominent notices stating that you modified
|
||||
it, and giving a relevant date.
|
||||
|
||||
b) The work must carry prominent notices stating that it is
|
||||
released under this License and any conditions added under section
|
||||
7. This requirement modifies the requirement in section 4 to
|
||||
"keep intact all notices".
|
||||
|
||||
c) You must license the entire work, as a whole, under this
|
||||
License to anyone who comes into possession of a copy. This
|
||||
License will therefore apply, along with any applicable section 7
|
||||
additional terms, to the whole of the work, and all its parts,
|
||||
regardless of how they are packaged. This License gives no
|
||||
permission to license the work in any other way, but it does not
|
||||
invalidate such permission if you have separately received it.
|
||||
|
||||
d) If the work has interactive user interfaces, each must display
|
||||
Appropriate Legal Notices; however, if the Program has interactive
|
||||
interfaces that do not display Appropriate Legal Notices, your
|
||||
work need not make them do so.
|
||||
|
||||
A compilation of a covered work with other separate and independent
|
||||
works, which are not by their nature extensions of the covered work,
|
||||
and which are not combined with it such as to form a larger program,
|
||||
in or on a volume of a storage or distribution medium, is called an
|
||||
"aggregate" if the compilation and its resulting copyright are not
|
||||
used to limit the access or legal rights of the compilation's users
|
||||
beyond what the individual works permit. Inclusion of a covered work
|
||||
in an aggregate does not cause this License to apply to the other
|
||||
parts of the aggregate.
|
||||
|
||||
6. Conveying Non-Source Forms.
|
||||
|
||||
You may convey a covered work in object code form under the terms
|
||||
of sections 4 and 5, provided that you also convey the
|
||||
machine-readable Corresponding Source under the terms of this License,
|
||||
in one of these ways:
|
||||
|
||||
a) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by the
|
||||
Corresponding Source fixed on a durable physical medium
|
||||
customarily used for software interchange.
|
||||
|
||||
b) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by a
|
||||
written offer, valid for at least three years and valid for as
|
||||
long as you offer spare parts or customer support for that product
|
||||
model, to give anyone who possesses the object code either (1) a
|
||||
copy of the Corresponding Source for all the software in the
|
||||
product that is covered by this License, on a durable physical
|
||||
medium customarily used for software interchange, for a price no
|
||||
more than your reasonable cost of physically performing this
|
||||
conveying of source, or (2) access to copy the
|
||||
Corresponding Source from a network server at no charge.
|
||||
|
||||
c) Convey individual copies of the object code with a copy of the
|
||||
written offer to provide the Corresponding Source. This
|
||||
alternative is allowed only occasionally and noncommercially, and
|
||||
only if you received the object code with such an offer, in accord
|
||||
with subsection 6b.
|
||||
|
||||
d) Convey the object code by offering access from a designated
|
||||
place (gratis or for a charge), and offer equivalent access to the
|
||||
Corresponding Source in the same way through the same place at no
|
||||
further charge. You need not require recipients to copy the
|
||||
Corresponding Source along with the object code. If the place to
|
||||
copy the object code is a network server, the Corresponding Source
|
||||
may be on a different server (operated by you or a third party)
|
||||
that supports equivalent copying facilities, provided you maintain
|
||||
clear directions next to the object code saying where to find the
|
||||
Corresponding Source. Regardless of what server hosts the
|
||||
Corresponding Source, you remain obligated to ensure that it is
|
||||
available for as long as needed to satisfy these requirements.
|
||||
|
||||
e) Convey the object code using peer-to-peer transmission, provided
|
||||
you inform other peers where the object code and Corresponding
|
||||
Source of the work are being offered to the general public at no
|
||||
charge under subsection 6d.
|
||||
|
||||
A separable portion of the object code, whose source code is excluded
|
||||
from the Corresponding Source as a System Library, need not be
|
||||
included in conveying the object code work.
|
||||
|
||||
A "User Product" is either (1) a "consumer product", which means any
|
||||
tangible personal property which is normally used for personal, family,
|
||||
or household purposes, or (2) anything designed or sold for incorporation
|
||||
into a dwelling. In determining whether a product is a consumer product,
|
||||
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||
product received by a particular user, "normally used" refers to a
|
||||
typical or common use of that class of product, regardless of the status
|
||||
of the particular user or of the way in which the particular user
|
||||
actually uses, or expects or is expected to use, the product. A product
|
||||
is a consumer product regardless of whether the product has substantial
|
||||
commercial, industrial or non-consumer uses, unless such uses represent
|
||||
the only significant mode of use of the product.
|
||||
|
||||
"Installation Information" for a User Product means any methods,
|
||||
procedures, authorization keys, or other information required to install
|
||||
and execute modified versions of a covered work in that User Product from
|
||||
a modified version of its Corresponding Source. The information must
|
||||
suffice to ensure that the continued functioning of the modified object
|
||||
code is in no case prevented or interfered with solely because
|
||||
modification has been made.
|
||||
|
||||
If you convey an object code work under this section in, or with, or
|
||||
specifically for use in, a User Product, and the conveying occurs as
|
||||
part of a transaction in which the right of possession and use of the
|
||||
User Product is transferred to the recipient in perpetuity or for a
|
||||
fixed term (regardless of how the transaction is characterized), the
|
||||
Corresponding Source conveyed under this section must be accompanied
|
||||
by the Installation Information. But this requirement does not apply
|
||||
if neither you nor any third party retains the ability to install
|
||||
modified object code on the User Product (for example, the work has
|
||||
been installed in ROM).
|
||||
|
||||
The requirement to provide Installation Information does not include a
|
||||
requirement to continue to provide support service, warranty, or updates
|
||||
for a work that has been modified or installed by the recipient, or for
|
||||
the User Product in which it has been modified or installed. Access to a
|
||||
network may be denied when the modification itself materially and
|
||||
adversely affects the operation of the network or violates the rules and
|
||||
protocols for communication across the network.
|
||||
|
||||
Corresponding Source conveyed, and Installation Information provided,
|
||||
in accord with this section must be in a format that is publicly
|
||||
documented (and with an implementation available to the public in
|
||||
source code form), and must require no special password or key for
|
||||
unpacking, reading or copying.
|
||||
|
||||
7. Additional Terms.
|
||||
|
||||
"Additional permissions" are terms that supplement the terms of this
|
||||
License by making exceptions from one or more of its conditions.
|
||||
Additional permissions that are applicable to the entire Program shall
|
||||
be treated as though they were included in this License, to the extent
|
||||
that they are valid under applicable law. If additional permissions
|
||||
apply only to part of the Program, that part may be used separately
|
||||
under those permissions, but the entire Program remains governed by
|
||||
this License without regard to the additional permissions.
|
||||
|
||||
When you convey a copy of a covered work, you may at your option
|
||||
remove any additional permissions from that copy, or from any part of
|
||||
it. (Additional permissions may be written to require their own
|
||||
removal in certain cases when you modify the work.) You may place
|
||||
additional permissions on material, added by you to a covered work,
|
||||
for which you have or can give appropriate copyright permission.
|
||||
|
||||
Notwithstanding any other provision of this License, for material you
|
||||
add to a covered work, you may (if authorized by the copyright holders of
|
||||
that material) supplement the terms of this License with terms:
|
||||
|
||||
a) Disclaiming warranty or limiting liability differently from the
|
||||
terms of sections 15 and 16 of this License; or
|
||||
|
||||
b) Requiring preservation of specified reasonable legal notices or
|
||||
author attributions in that material or in the Appropriate Legal
|
||||
Notices displayed by works containing it; or
|
||||
|
||||
c) Prohibiting misrepresentation of the origin of that material, or
|
||||
requiring that modified versions of such material be marked in
|
||||
reasonable ways as different from the original version; or
|
||||
|
||||
d) Limiting the use for publicity purposes of names of licensors or
|
||||
authors of the material; or
|
||||
|
||||
e) Declining to grant rights under trademark law for use of some
|
||||
trade names, trademarks, or service marks; or
|
||||
|
||||
f) Requiring indemnification of licensors and authors of that
|
||||
material by anyone who conveys the material (or modified versions of
|
||||
it) with contractual assumptions of liability to the recipient, for
|
||||
any liability that these contractual assumptions directly impose on
|
||||
those licensors and authors.
|
||||
|
||||
All other non-permissive additional terms are considered "further
|
||||
restrictions" within the meaning of section 10. If the Program as you
|
||||
received it, or any part of it, contains a notice stating that it is
|
||||
governed by this License along with a term that is a further
|
||||
restriction, you may remove that term. If a license document contains
|
||||
a further restriction but permits relicensing or conveying under this
|
||||
License, you may add to a covered work material governed by the terms
|
||||
of that license document, provided that the further restriction does
|
||||
not survive such relicensing or conveying.
|
||||
|
||||
If you add terms to a covered work in accord with this section, you
|
||||
must place, in the relevant source files, a statement of the
|
||||
additional terms that apply to those files, or a notice indicating
|
||||
where to find the applicable terms.
|
||||
|
||||
Additional terms, permissive or non-permissive, may be stated in the
|
||||
form of a separately written license, or stated as exceptions;
|
||||
the above requirements apply either way.
|
||||
|
||||
8. Termination.
|
||||
|
||||
You may not propagate or modify a covered work except as expressly
|
||||
provided under this License. Any attempt otherwise to propagate or
|
||||
modify it is void, and will automatically terminate your rights under
|
||||
this License (including any patent licenses granted under the third
|
||||
paragraph of section 11).
|
||||
|
||||
However, if you cease all violation of this License, then your
|
||||
license from a particular copyright holder is reinstated (a)
|
||||
provisionally, unless and until the copyright holder explicitly and
|
||||
finally terminates your license, and (b) permanently, if the copyright
|
||||
holder fails to notify you of the violation by some reasonable means
|
||||
prior to 60 days after the cessation.
|
||||
|
||||
Moreover, your license from a particular copyright holder is
|
||||
reinstated permanently if the copyright holder notifies you of the
|
||||
violation by some reasonable means, this is the first time you have
|
||||
received notice of violation of this License (for any work) from that
|
||||
copyright holder, and you cure the violation prior to 30 days after
|
||||
your receipt of the notice.
|
||||
|
||||
Termination of your rights under this section does not terminate the
|
||||
licenses of parties who have received copies or rights from you under
|
||||
this License. If your rights have been terminated and not permanently
|
||||
reinstated, you do not qualify to receive new licenses for the same
|
||||
material under section 10.
|
||||
|
||||
9. Acceptance Not Required for Having Copies.
|
||||
|
||||
You are not required to accept this License in order to receive or
|
||||
run a copy of the Program. Ancillary propagation of a covered work
|
||||
occurring solely as a consequence of using peer-to-peer transmission
|
||||
to receive a copy likewise does not require acceptance. However,
|
||||
nothing other than this License grants you permission to propagate or
|
||||
modify any covered work. These actions infringe copyright if you do
|
||||
not accept this License. Therefore, by modifying or propagating a
|
||||
covered work, you indicate your acceptance of this License to do so.
|
||||
|
||||
10. Automatic Licensing of Downstream Recipients.
|
||||
|
||||
Each time you convey a covered work, the recipient automatically
|
||||
receives a license from the original licensors, to run, modify and
|
||||
propagate that work, subject to this License. You are not responsible
|
||||
for enforcing compliance by third parties with this License.
|
||||
|
||||
An "entity transaction" is a transaction transferring control of an
|
||||
organization, or substantially all assets of one, or subdividing an
|
||||
organization, or merging organizations. If propagation of a covered
|
||||
work results from an entity transaction, each party to that
|
||||
transaction who receives a copy of the work also receives whatever
|
||||
licenses to the work the party's predecessor in interest had or could
|
||||
give under the previous paragraph, plus a right to possession of the
|
||||
Corresponding Source of the work from the predecessor in interest, if
|
||||
the predecessor has it or can get it with reasonable efforts.
|
||||
|
||||
You may not impose any further restrictions on the exercise of the
|
||||
rights granted or affirmed under this License. For example, you may
|
||||
not impose a license fee, royalty, or other charge for exercise of
|
||||
rights granted under this License, and you may not initiate litigation
|
||||
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||
any patent claim is infringed by making, using, selling, offering for
|
||||
sale, or importing the Program or any portion of it.
|
||||
|
||||
11. Patents.
|
||||
|
||||
A "contributor" is a copyright holder who authorizes use under this
|
||||
License of the Program or a work on which the Program is based. The
|
||||
work thus licensed is called the contributor's "contributor version".
|
||||
|
||||
A contributor's "essential patent claims" are all patent claims
|
||||
owned or controlled by the contributor, whether already acquired or
|
||||
hereafter acquired, that would be infringed by some manner, permitted
|
||||
by this License, of making, using, or selling its contributor version,
|
||||
but do not include claims that would be infringed only as a
|
||||
consequence of further modification of the contributor version. For
|
||||
purposes of this definition, "control" includes the right to grant
|
||||
patent sublicenses in a manner consistent with the requirements of
|
||||
this License.
|
||||
|
||||
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||
patent license under the contributor's essential patent claims, to
|
||||
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||
propagate the contents of its contributor version.
|
||||
|
||||
In the following three paragraphs, a "patent license" is any express
|
||||
agreement or commitment, however denominated, not to enforce a patent
|
||||
(such as an express permission to practice a patent or covenant not to
|
||||
sue for patent infringement). To "grant" such a patent license to a
|
||||
party means to make such an agreement or commitment not to enforce a
|
||||
patent against the party.
|
||||
|
||||
If you convey a covered work, knowingly relying on a patent license,
|
||||
and the Corresponding Source of the work is not available for anyone
|
||||
to copy, free of charge and under the terms of this License, through a
|
||||
publicly available network server or other readily accessible means,
|
||||
then you must either (1) cause the Corresponding Source to be so
|
||||
available, or (2) arrange to deprive yourself of the benefit of the
|
||||
patent license for this particular work, or (3) arrange, in a manner
|
||||
consistent with the requirements of this License, to extend the patent
|
||||
license to downstream recipients. "Knowingly relying" means you have
|
||||
actual knowledge that, but for the patent license, your conveying the
|
||||
covered work in a country, or your recipient's use of the covered work
|
||||
in a country, would infringe one or more identifiable patents in that
|
||||
country that you have reason to believe are valid.
|
||||
|
||||
If, pursuant to or in connection with a single transaction or
|
||||
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||
covered work, and grant a patent license to some of the parties
|
||||
receiving the covered work authorizing them to use, propagate, modify
|
||||
or convey a specific copy of the covered work, then the patent license
|
||||
you grant is automatically extended to all recipients of the covered
|
||||
work and works based on it.
|
||||
|
||||
A patent license is "discriminatory" if it does not include within
|
||||
the scope of its coverage, prohibits the exercise of, or is
|
||||
conditioned on the non-exercise of one or more of the rights that are
|
||||
specifically granted under this License. You may not convey a covered
|
||||
work if you are a party to an arrangement with a third party that is
|
||||
in the business of distributing software, under which you make payment
|
||||
to the third party based on the extent of your activity of conveying
|
||||
the work, and under which the third party grants, to any of the
|
||||
parties who would receive the covered work from you, a discriminatory
|
||||
patent license (a) in connection with copies of the covered work
|
||||
conveyed by you (or copies made from those copies), or (b) primarily
|
||||
for and in connection with specific products or compilations that
|
||||
contain the covered work, unless you entered into that arrangement,
|
||||
or that patent license was granted, prior to 28 March 2007.
|
||||
|
||||
Nothing in this License shall be construed as excluding or limiting
|
||||
any implied license or other defenses to infringement that may
|
||||
otherwise be available to you under applicable patent law.
|
||||
|
||||
12. No Surrender of Others' Freedom.
|
||||
|
||||
If conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot convey a
|
||||
covered work so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you may
|
||||
not convey it at all. For example, if you agree to terms that obligate you
|
||||
to collect a royalty for further conveying from those to whom you convey
|
||||
the Program, the only way you could satisfy both those terms and this
|
||||
License would be to refrain entirely from conveying the Program.
|
||||
|
||||
13. Use with the GNU Affero General Public License.
|
||||
|
||||
Notwithstanding any other provision of this License, you have
|
||||
permission to link or combine any covered work with a work licensed
|
||||
under version 3 of the GNU Affero General Public License into a single
|
||||
combined work, and to convey the resulting work. The terms of this
|
||||
License will continue to apply to the part which is the covered work,
|
||||
but the special requirements of the GNU Affero General Public License,
|
||||
section 13, concerning interaction through a network will apply to the
|
||||
combination as such.
|
||||
|
||||
14. Revised Versions of this License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions of
|
||||
the GNU General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the
|
||||
Program specifies that a certain numbered version of the GNU General
|
||||
Public License "or any later version" applies to it, you have the
|
||||
option of following the terms and conditions either of that numbered
|
||||
version or of any later version published by the Free Software
|
||||
Foundation. If the Program does not specify a version number of the
|
||||
GNU General Public License, you may choose any version ever published
|
||||
by the Free Software Foundation.
|
||||
|
||||
If the Program specifies that a proxy can decide which future
|
||||
versions of the GNU General Public License can be used, that proxy's
|
||||
public statement of acceptance of a version permanently authorizes you
|
||||
to choose that version for the Program.
|
||||
|
||||
Later license versions may give you additional or different
|
||||
permissions. However, no additional obligations are imposed on any
|
||||
author or copyright holder as a result of your choosing to follow a
|
||||
later version.
|
||||
|
||||
15. Disclaimer of Warranty.
|
||||
|
||||
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
||||
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
||||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
||||
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. Limitation of Liability.
|
||||
|
||||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
||||
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
||||
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
||||
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGES.
|
||||
|
||||
17. Interpretation of Sections 15 and 16.
|
||||
|
||||
If the disclaimer of warranty and limitation of liability provided
|
||||
above cannot be given local legal effect according to their terms,
|
||||
reviewing courts shall apply local law that most closely approximates
|
||||
an absolute waiver of all civil liability in connection with the
|
||||
Program, unless a warranty or assumption of liability accompanies a
|
||||
copy of the Program in return for a fee.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
state the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
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/>.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program does terminal interaction, make it output a short
|
||||
notice like this when it starts in an interactive mode:
|
||||
|
||||
<program> Copyright (C) <year> <name of author>
|
||||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, your program's commands
|
||||
might be different; for a GUI interface, you would use an "about box".
|
||||
|
||||
You should also get your employer (if you work as a programmer) or school,
|
||||
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||
For more information on this, and how to apply and follow the GNU GPL, see
|
||||
<http://www.gnu.org/licenses/>.
|
||||
|
||||
The GNU General Public License does not permit incorporating your program
|
||||
into proprietary programs. If your program is a subroutine library, you
|
||||
may consider it more useful to permit linking proprietary applications with
|
||||
the library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License. But first, please read
|
||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
674
source/freeipmi/usr/share/doc/freeipmi/COPYING.ipmiseld
Normal file
674
source/freeipmi/usr/share/doc/freeipmi/COPYING.ipmiseld
Normal file
@ -0,0 +1,674 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The GNU General Public License is a free, copyleft license for
|
||||
software and other kinds of works.
|
||||
|
||||
The licenses for most software and other practical works are designed
|
||||
to take away your freedom to share and change the works. By contrast,
|
||||
the GNU General Public License is intended to guarantee your freedom to
|
||||
share and change all versions of a program--to make sure it remains free
|
||||
software for all its users. We, the Free Software Foundation, use the
|
||||
GNU General Public License for most of our software; it applies also to
|
||||
any other work released this way by its authors. You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
them if you wish), that you receive source code or can get it if you
|
||||
want it, that you can change the software or use pieces of it in new
|
||||
free programs, and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to prevent others from denying you
|
||||
these rights or asking you to surrender the rights. Therefore, you have
|
||||
certain responsibilities if you distribute copies of the software, or if
|
||||
you modify it: responsibilities to respect the freedom of others.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must pass on to the recipients the same
|
||||
freedoms that you received. You must make sure that they, too, receive
|
||||
or can get the source code. And you must show them these terms so they
|
||||
know their rights.
|
||||
|
||||
Developers that use the GNU GPL protect your rights with two steps:
|
||||
(1) assert copyright on the software, and (2) offer you this License
|
||||
giving you legal permission to copy, distribute and/or modify it.
|
||||
|
||||
For the developers' and authors' protection, the GPL clearly explains
|
||||
that there is no warranty for this free software. For both users' and
|
||||
authors' sake, the GPL requires that modified versions be marked as
|
||||
changed, so that their problems will not be attributed erroneously to
|
||||
authors of previous versions.
|
||||
|
||||
Some devices are designed to deny users access to install or run
|
||||
modified versions of the software inside them, although the manufacturer
|
||||
can do so. This is fundamentally incompatible with the aim of
|
||||
protecting users' freedom to change the software. The systematic
|
||||
pattern of such abuse occurs in the area of products for individuals to
|
||||
use, which is precisely where it is most unacceptable. Therefore, we
|
||||
have designed this version of the GPL to prohibit the practice for those
|
||||
products. If such problems arise substantially in other domains, we
|
||||
stand ready to extend this provision to those domains in future versions
|
||||
of the GPL, as needed to protect the freedom of users.
|
||||
|
||||
Finally, every program is threatened constantly by software patents.
|
||||
States should not allow patents to restrict development and use of
|
||||
software on general-purpose computers, but in those that do, we wish to
|
||||
avoid the special danger that patents applied to a free program could
|
||||
make it effectively proprietary. To prevent this, the GPL assures that
|
||||
patents cannot be used to render the program non-free.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
TERMS AND CONDITIONS
|
||||
|
||||
0. Definitions.
|
||||
|
||||
"This License" refers to version 3 of the GNU General Public License.
|
||||
|
||||
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||
works, such as semiconductor masks.
|
||||
|
||||
"The Program" refers to any copyrightable work licensed under this
|
||||
License. Each licensee is addressed as "you". "Licensees" and
|
||||
"recipients" may be individuals or organizations.
|
||||
|
||||
To "modify" a work means to copy from or adapt all or part of the work
|
||||
in a fashion requiring copyright permission, other than the making of an
|
||||
exact copy. The resulting work is called a "modified version" of the
|
||||
earlier work or a work "based on" the earlier work.
|
||||
|
||||
A "covered work" means either the unmodified Program or a work based
|
||||
on the Program.
|
||||
|
||||
To "propagate" a work means to do anything with it that, without
|
||||
permission, would make you directly or secondarily liable for
|
||||
infringement under applicable copyright law, except executing it on a
|
||||
computer or modifying a private copy. Propagation includes copying,
|
||||
distribution (with or without modification), making available to the
|
||||
public, and in some countries other activities as well.
|
||||
|
||||
To "convey" a work means any kind of propagation that enables other
|
||||
parties to make or receive copies. Mere interaction with a user through
|
||||
a computer network, with no transfer of a copy, is not conveying.
|
||||
|
||||
An interactive user interface displays "Appropriate Legal Notices"
|
||||
to the extent that it includes a convenient and prominently visible
|
||||
feature that (1) displays an appropriate copyright notice, and (2)
|
||||
tells the user that there is no warranty for the work (except to the
|
||||
extent that warranties are provided), that licensees may convey the
|
||||
work under this License, and how to view a copy of this License. If
|
||||
the interface presents a list of user commands or options, such as a
|
||||
menu, a prominent item in the list meets this criterion.
|
||||
|
||||
1. Source Code.
|
||||
|
||||
The "source code" for a work means the preferred form of the work
|
||||
for making modifications to it. "Object code" means any non-source
|
||||
form of a work.
|
||||
|
||||
A "Standard Interface" means an interface that either is an official
|
||||
standard defined by a recognized standards body, or, in the case of
|
||||
interfaces specified for a particular programming language, one that
|
||||
is widely used among developers working in that language.
|
||||
|
||||
The "System Libraries" of an executable work include anything, other
|
||||
than the work as a whole, that (a) is included in the normal form of
|
||||
packaging a Major Component, but which is not part of that Major
|
||||
Component, and (b) serves only to enable use of the work with that
|
||||
Major Component, or to implement a Standard Interface for which an
|
||||
implementation is available to the public in source code form. A
|
||||
"Major Component", in this context, means a major essential component
|
||||
(kernel, window system, and so on) of the specific operating system
|
||||
(if any) on which the executable work runs, or a compiler used to
|
||||
produce the work, or an object code interpreter used to run it.
|
||||
|
||||
The "Corresponding Source" for a work in object code form means all
|
||||
the source code needed to generate, install, and (for an executable
|
||||
work) run the object code and to modify the work, including scripts to
|
||||
control those activities. However, it does not include the work's
|
||||
System Libraries, or general-purpose tools or generally available free
|
||||
programs which are used unmodified in performing those activities but
|
||||
which are not part of the work. For example, Corresponding Source
|
||||
includes interface definition files associated with source files for
|
||||
the work, and the source code for shared libraries and dynamically
|
||||
linked subprograms that the work is specifically designed to require,
|
||||
such as by intimate data communication or control flow between those
|
||||
subprograms and other parts of the work.
|
||||
|
||||
The Corresponding Source need not include anything that users
|
||||
can regenerate automatically from other parts of the Corresponding
|
||||
Source.
|
||||
|
||||
The Corresponding Source for a work in source code form is that
|
||||
same work.
|
||||
|
||||
2. Basic Permissions.
|
||||
|
||||
All rights granted under this License are granted for the term of
|
||||
copyright on the Program, and are irrevocable provided the stated
|
||||
conditions are met. This License explicitly affirms your unlimited
|
||||
permission to run the unmodified Program. The output from running a
|
||||
covered work is covered by this License only if the output, given its
|
||||
content, constitutes a covered work. This License acknowledges your
|
||||
rights of fair use or other equivalent, as provided by copyright law.
|
||||
|
||||
You may make, run and propagate covered works that you do not
|
||||
convey, without conditions so long as your license otherwise remains
|
||||
in force. You may convey covered works to others for the sole purpose
|
||||
of having them make modifications exclusively for you, or provide you
|
||||
with facilities for running those works, provided that you comply with
|
||||
the terms of this License in conveying all material for which you do
|
||||
not control copyright. Those thus making or running the covered works
|
||||
for you must do so exclusively on your behalf, under your direction
|
||||
and control, on terms that prohibit them from making any copies of
|
||||
your copyrighted material outside their relationship with you.
|
||||
|
||||
Conveying under any other circumstances is permitted solely under
|
||||
the conditions stated below. Sublicensing is not allowed; section 10
|
||||
makes it unnecessary.
|
||||
|
||||
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||
|
||||
No covered work shall be deemed part of an effective technological
|
||||
measure under any applicable law fulfilling obligations under article
|
||||
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||
similar laws prohibiting or restricting circumvention of such
|
||||
measures.
|
||||
|
||||
When you convey a covered work, you waive any legal power to forbid
|
||||
circumvention of technological measures to the extent such circumvention
|
||||
is effected by exercising rights under this License with respect to
|
||||
the covered work, and you disclaim any intention to limit operation or
|
||||
modification of the work as a means of enforcing, against the work's
|
||||
users, your or third parties' legal rights to forbid circumvention of
|
||||
technological measures.
|
||||
|
||||
4. Conveying Verbatim Copies.
|
||||
|
||||
You may convey verbatim copies of the Program's source code as you
|
||||
receive it, in any medium, provided that you conspicuously and
|
||||
appropriately publish on each copy an appropriate copyright notice;
|
||||
keep intact all notices stating that this License and any
|
||||
non-permissive terms added in accord with section 7 apply to the code;
|
||||
keep intact all notices of the absence of any warranty; and give all
|
||||
recipients a copy of this License along with the Program.
|
||||
|
||||
You may charge any price or no price for each copy that you convey,
|
||||
and you may offer support or warranty protection for a fee.
|
||||
|
||||
5. Conveying Modified Source Versions.
|
||||
|
||||
You may convey a work based on the Program, or the modifications to
|
||||
produce it from the Program, in the form of source code under the
|
||||
terms of section 4, provided that you also meet all of these conditions:
|
||||
|
||||
a) The work must carry prominent notices stating that you modified
|
||||
it, and giving a relevant date.
|
||||
|
||||
b) The work must carry prominent notices stating that it is
|
||||
released under this License and any conditions added under section
|
||||
7. This requirement modifies the requirement in section 4 to
|
||||
"keep intact all notices".
|
||||
|
||||
c) You must license the entire work, as a whole, under this
|
||||
License to anyone who comes into possession of a copy. This
|
||||
License will therefore apply, along with any applicable section 7
|
||||
additional terms, to the whole of the work, and all its parts,
|
||||
regardless of how they are packaged. This License gives no
|
||||
permission to license the work in any other way, but it does not
|
||||
invalidate such permission if you have separately received it.
|
||||
|
||||
d) If the work has interactive user interfaces, each must display
|
||||
Appropriate Legal Notices; however, if the Program has interactive
|
||||
interfaces that do not display Appropriate Legal Notices, your
|
||||
work need not make them do so.
|
||||
|
||||
A compilation of a covered work with other separate and independent
|
||||
works, which are not by their nature extensions of the covered work,
|
||||
and which are not combined with it such as to form a larger program,
|
||||
in or on a volume of a storage or distribution medium, is called an
|
||||
"aggregate" if the compilation and its resulting copyright are not
|
||||
used to limit the access or legal rights of the compilation's users
|
||||
beyond what the individual works permit. Inclusion of a covered work
|
||||
in an aggregate does not cause this License to apply to the other
|
||||
parts of the aggregate.
|
||||
|
||||
6. Conveying Non-Source Forms.
|
||||
|
||||
You may convey a covered work in object code form under the terms
|
||||
of sections 4 and 5, provided that you also convey the
|
||||
machine-readable Corresponding Source under the terms of this License,
|
||||
in one of these ways:
|
||||
|
||||
a) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by the
|
||||
Corresponding Source fixed on a durable physical medium
|
||||
customarily used for software interchange.
|
||||
|
||||
b) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by a
|
||||
written offer, valid for at least three years and valid for as
|
||||
long as you offer spare parts or customer support for that product
|
||||
model, to give anyone who possesses the object code either (1) a
|
||||
copy of the Corresponding Source for all the software in the
|
||||
product that is covered by this License, on a durable physical
|
||||
medium customarily used for software interchange, for a price no
|
||||
more than your reasonable cost of physically performing this
|
||||
conveying of source, or (2) access to copy the
|
||||
Corresponding Source from a network server at no charge.
|
||||
|
||||
c) Convey individual copies of the object code with a copy of the
|
||||
written offer to provide the Corresponding Source. This
|
||||
alternative is allowed only occasionally and noncommercially, and
|
||||
only if you received the object code with such an offer, in accord
|
||||
with subsection 6b.
|
||||
|
||||
d) Convey the object code by offering access from a designated
|
||||
place (gratis or for a charge), and offer equivalent access to the
|
||||
Corresponding Source in the same way through the same place at no
|
||||
further charge. You need not require recipients to copy the
|
||||
Corresponding Source along with the object code. If the place to
|
||||
copy the object code is a network server, the Corresponding Source
|
||||
may be on a different server (operated by you or a third party)
|
||||
that supports equivalent copying facilities, provided you maintain
|
||||
clear directions next to the object code saying where to find the
|
||||
Corresponding Source. Regardless of what server hosts the
|
||||
Corresponding Source, you remain obligated to ensure that it is
|
||||
available for as long as needed to satisfy these requirements.
|
||||
|
||||
e) Convey the object code using peer-to-peer transmission, provided
|
||||
you inform other peers where the object code and Corresponding
|
||||
Source of the work are being offered to the general public at no
|
||||
charge under subsection 6d.
|
||||
|
||||
A separable portion of the object code, whose source code is excluded
|
||||
from the Corresponding Source as a System Library, need not be
|
||||
included in conveying the object code work.
|
||||
|
||||
A "User Product" is either (1) a "consumer product", which means any
|
||||
tangible personal property which is normally used for personal, family,
|
||||
or household purposes, or (2) anything designed or sold for incorporation
|
||||
into a dwelling. In determining whether a product is a consumer product,
|
||||
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||
product received by a particular user, "normally used" refers to a
|
||||
typical or common use of that class of product, regardless of the status
|
||||
of the particular user or of the way in which the particular user
|
||||
actually uses, or expects or is expected to use, the product. A product
|
||||
is a consumer product regardless of whether the product has substantial
|
||||
commercial, industrial or non-consumer uses, unless such uses represent
|
||||
the only significant mode of use of the product.
|
||||
|
||||
"Installation Information" for a User Product means any methods,
|
||||
procedures, authorization keys, or other information required to install
|
||||
and execute modified versions of a covered work in that User Product from
|
||||
a modified version of its Corresponding Source. The information must
|
||||
suffice to ensure that the continued functioning of the modified object
|
||||
code is in no case prevented or interfered with solely because
|
||||
modification has been made.
|
||||
|
||||
If you convey an object code work under this section in, or with, or
|
||||
specifically for use in, a User Product, and the conveying occurs as
|
||||
part of a transaction in which the right of possession and use of the
|
||||
User Product is transferred to the recipient in perpetuity or for a
|
||||
fixed term (regardless of how the transaction is characterized), the
|
||||
Corresponding Source conveyed under this section must be accompanied
|
||||
by the Installation Information. But this requirement does not apply
|
||||
if neither you nor any third party retains the ability to install
|
||||
modified object code on the User Product (for example, the work has
|
||||
been installed in ROM).
|
||||
|
||||
The requirement to provide Installation Information does not include a
|
||||
requirement to continue to provide support service, warranty, or updates
|
||||
for a work that has been modified or installed by the recipient, or for
|
||||
the User Product in which it has been modified or installed. Access to a
|
||||
network may be denied when the modification itself materially and
|
||||
adversely affects the operation of the network or violates the rules and
|
||||
protocols for communication across the network.
|
||||
|
||||
Corresponding Source conveyed, and Installation Information provided,
|
||||
in accord with this section must be in a format that is publicly
|
||||
documented (and with an implementation available to the public in
|
||||
source code form), and must require no special password or key for
|
||||
unpacking, reading or copying.
|
||||
|
||||
7. Additional Terms.
|
||||
|
||||
"Additional permissions" are terms that supplement the terms of this
|
||||
License by making exceptions from one or more of its conditions.
|
||||
Additional permissions that are applicable to the entire Program shall
|
||||
be treated as though they were included in this License, to the extent
|
||||
that they are valid under applicable law. If additional permissions
|
||||
apply only to part of the Program, that part may be used separately
|
||||
under those permissions, but the entire Program remains governed by
|
||||
this License without regard to the additional permissions.
|
||||
|
||||
When you convey a copy of a covered work, you may at your option
|
||||
remove any additional permissions from that copy, or from any part of
|
||||
it. (Additional permissions may be written to require their own
|
||||
removal in certain cases when you modify the work.) You may place
|
||||
additional permissions on material, added by you to a covered work,
|
||||
for which you have or can give appropriate copyright permission.
|
||||
|
||||
Notwithstanding any other provision of this License, for material you
|
||||
add to a covered work, you may (if authorized by the copyright holders of
|
||||
that material) supplement the terms of this License with terms:
|
||||
|
||||
a) Disclaiming warranty or limiting liability differently from the
|
||||
terms of sections 15 and 16 of this License; or
|
||||
|
||||
b) Requiring preservation of specified reasonable legal notices or
|
||||
author attributions in that material or in the Appropriate Legal
|
||||
Notices displayed by works containing it; or
|
||||
|
||||
c) Prohibiting misrepresentation of the origin of that material, or
|
||||
requiring that modified versions of such material be marked in
|
||||
reasonable ways as different from the original version; or
|
||||
|
||||
d) Limiting the use for publicity purposes of names of licensors or
|
||||
authors of the material; or
|
||||
|
||||
e) Declining to grant rights under trademark law for use of some
|
||||
trade names, trademarks, or service marks; or
|
||||
|
||||
f) Requiring indemnification of licensors and authors of that
|
||||
material by anyone who conveys the material (or modified versions of
|
||||
it) with contractual assumptions of liability to the recipient, for
|
||||
any liability that these contractual assumptions directly impose on
|
||||
those licensors and authors.
|
||||
|
||||
All other non-permissive additional terms are considered "further
|
||||
restrictions" within the meaning of section 10. If the Program as you
|
||||
received it, or any part of it, contains a notice stating that it is
|
||||
governed by this License along with a term that is a further
|
||||
restriction, you may remove that term. If a license document contains
|
||||
a further restriction but permits relicensing or conveying under this
|
||||
License, you may add to a covered work material governed by the terms
|
||||
of that license document, provided that the further restriction does
|
||||
not survive such relicensing or conveying.
|
||||
|
||||
If you add terms to a covered work in accord with this section, you
|
||||
must place, in the relevant source files, a statement of the
|
||||
additional terms that apply to those files, or a notice indicating
|
||||
where to find the applicable terms.
|
||||
|
||||
Additional terms, permissive or non-permissive, may be stated in the
|
||||
form of a separately written license, or stated as exceptions;
|
||||
the above requirements apply either way.
|
||||
|
||||
8. Termination.
|
||||
|
||||
You may not propagate or modify a covered work except as expressly
|
||||
provided under this License. Any attempt otherwise to propagate or
|
||||
modify it is void, and will automatically terminate your rights under
|
||||
this License (including any patent licenses granted under the third
|
||||
paragraph of section 11).
|
||||
|
||||
However, if you cease all violation of this License, then your
|
||||
license from a particular copyright holder is reinstated (a)
|
||||
provisionally, unless and until the copyright holder explicitly and
|
||||
finally terminates your license, and (b) permanently, if the copyright
|
||||
holder fails to notify you of the violation by some reasonable means
|
||||
prior to 60 days after the cessation.
|
||||
|
||||
Moreover, your license from a particular copyright holder is
|
||||
reinstated permanently if the copyright holder notifies you of the
|
||||
violation by some reasonable means, this is the first time you have
|
||||
received notice of violation of this License (for any work) from that
|
||||
copyright holder, and you cure the violation prior to 30 days after
|
||||
your receipt of the notice.
|
||||
|
||||
Termination of your rights under this section does not terminate the
|
||||
licenses of parties who have received copies or rights from you under
|
||||
this License. If your rights have been terminated and not permanently
|
||||
reinstated, you do not qualify to receive new licenses for the same
|
||||
material under section 10.
|
||||
|
||||
9. Acceptance Not Required for Having Copies.
|
||||
|
||||
You are not required to accept this License in order to receive or
|
||||
run a copy of the Program. Ancillary propagation of a covered work
|
||||
occurring solely as a consequence of using peer-to-peer transmission
|
||||
to receive a copy likewise does not require acceptance. However,
|
||||
nothing other than this License grants you permission to propagate or
|
||||
modify any covered work. These actions infringe copyright if you do
|
||||
not accept this License. Therefore, by modifying or propagating a
|
||||
covered work, you indicate your acceptance of this License to do so.
|
||||
|
||||
10. Automatic Licensing of Downstream Recipients.
|
||||
|
||||
Each time you convey a covered work, the recipient automatically
|
||||
receives a license from the original licensors, to run, modify and
|
||||
propagate that work, subject to this License. You are not responsible
|
||||
for enforcing compliance by third parties with this License.
|
||||
|
||||
An "entity transaction" is a transaction transferring control of an
|
||||
organization, or substantially all assets of one, or subdividing an
|
||||
organization, or merging organizations. If propagation of a covered
|
||||
work results from an entity transaction, each party to that
|
||||
transaction who receives a copy of the work also receives whatever
|
||||
licenses to the work the party's predecessor in interest had or could
|
||||
give under the previous paragraph, plus a right to possession of the
|
||||
Corresponding Source of the work from the predecessor in interest, if
|
||||
the predecessor has it or can get it with reasonable efforts.
|
||||
|
||||
You may not impose any further restrictions on the exercise of the
|
||||
rights granted or affirmed under this License. For example, you may
|
||||
not impose a license fee, royalty, or other charge for exercise of
|
||||
rights granted under this License, and you may not initiate litigation
|
||||
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||
any patent claim is infringed by making, using, selling, offering for
|
||||
sale, or importing the Program or any portion of it.
|
||||
|
||||
11. Patents.
|
||||
|
||||
A "contributor" is a copyright holder who authorizes use under this
|
||||
License of the Program or a work on which the Program is based. The
|
||||
work thus licensed is called the contributor's "contributor version".
|
||||
|
||||
A contributor's "essential patent claims" are all patent claims
|
||||
owned or controlled by the contributor, whether already acquired or
|
||||
hereafter acquired, that would be infringed by some manner, permitted
|
||||
by this License, of making, using, or selling its contributor version,
|
||||
but do not include claims that would be infringed only as a
|
||||
consequence of further modification of the contributor version. For
|
||||
purposes of this definition, "control" includes the right to grant
|
||||
patent sublicenses in a manner consistent with the requirements of
|
||||
this License.
|
||||
|
||||
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||
patent license under the contributor's essential patent claims, to
|
||||
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||
propagate the contents of its contributor version.
|
||||
|
||||
In the following three paragraphs, a "patent license" is any express
|
||||
agreement or commitment, however denominated, not to enforce a patent
|
||||
(such as an express permission to practice a patent or covenant not to
|
||||
sue for patent infringement). To "grant" such a patent license to a
|
||||
party means to make such an agreement or commitment not to enforce a
|
||||
patent against the party.
|
||||
|
||||
If you convey a covered work, knowingly relying on a patent license,
|
||||
and the Corresponding Source of the work is not available for anyone
|
||||
to copy, free of charge and under the terms of this License, through a
|
||||
publicly available network server or other readily accessible means,
|
||||
then you must either (1) cause the Corresponding Source to be so
|
||||
available, or (2) arrange to deprive yourself of the benefit of the
|
||||
patent license for this particular work, or (3) arrange, in a manner
|
||||
consistent with the requirements of this License, to extend the patent
|
||||
license to downstream recipients. "Knowingly relying" means you have
|
||||
actual knowledge that, but for the patent license, your conveying the
|
||||
covered work in a country, or your recipient's use of the covered work
|
||||
in a country, would infringe one or more identifiable patents in that
|
||||
country that you have reason to believe are valid.
|
||||
|
||||
If, pursuant to or in connection with a single transaction or
|
||||
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||
covered work, and grant a patent license to some of the parties
|
||||
receiving the covered work authorizing them to use, propagate, modify
|
||||
or convey a specific copy of the covered work, then the patent license
|
||||
you grant is automatically extended to all recipients of the covered
|
||||
work and works based on it.
|
||||
|
||||
A patent license is "discriminatory" if it does not include within
|
||||
the scope of its coverage, prohibits the exercise of, or is
|
||||
conditioned on the non-exercise of one or more of the rights that are
|
||||
specifically granted under this License. You may not convey a covered
|
||||
work if you are a party to an arrangement with a third party that is
|
||||
in the business of distributing software, under which you make payment
|
||||
to the third party based on the extent of your activity of conveying
|
||||
the work, and under which the third party grants, to any of the
|
||||
parties who would receive the covered work from you, a discriminatory
|
||||
patent license (a) in connection with copies of the covered work
|
||||
conveyed by you (or copies made from those copies), or (b) primarily
|
||||
for and in connection with specific products or compilations that
|
||||
contain the covered work, unless you entered into that arrangement,
|
||||
or that patent license was granted, prior to 28 March 2007.
|
||||
|
||||
Nothing in this License shall be construed as excluding or limiting
|
||||
any implied license or other defenses to infringement that may
|
||||
otherwise be available to you under applicable patent law.
|
||||
|
||||
12. No Surrender of Others' Freedom.
|
||||
|
||||
If conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot convey a
|
||||
covered work so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you may
|
||||
not convey it at all. For example, if you agree to terms that obligate you
|
||||
to collect a royalty for further conveying from those to whom you convey
|
||||
the Program, the only way you could satisfy both those terms and this
|
||||
License would be to refrain entirely from conveying the Program.
|
||||
|
||||
13. Use with the GNU Affero General Public License.
|
||||
|
||||
Notwithstanding any other provision of this License, you have
|
||||
permission to link or combine any covered work with a work licensed
|
||||
under version 3 of the GNU Affero General Public License into a single
|
||||
combined work, and to convey the resulting work. The terms of this
|
||||
License will continue to apply to the part which is the covered work,
|
||||
but the special requirements of the GNU Affero General Public License,
|
||||
section 13, concerning interaction through a network will apply to the
|
||||
combination as such.
|
||||
|
||||
14. Revised Versions of this License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions of
|
||||
the GNU General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the
|
||||
Program specifies that a certain numbered version of the GNU General
|
||||
Public License "or any later version" applies to it, you have the
|
||||
option of following the terms and conditions either of that numbered
|
||||
version or of any later version published by the Free Software
|
||||
Foundation. If the Program does not specify a version number of the
|
||||
GNU General Public License, you may choose any version ever published
|
||||
by the Free Software Foundation.
|
||||
|
||||
If the Program specifies that a proxy can decide which future
|
||||
versions of the GNU General Public License can be used, that proxy's
|
||||
public statement of acceptance of a version permanently authorizes you
|
||||
to choose that version for the Program.
|
||||
|
||||
Later license versions may give you additional or different
|
||||
permissions. However, no additional obligations are imposed on any
|
||||
author or copyright holder as a result of your choosing to follow a
|
||||
later version.
|
||||
|
||||
15. Disclaimer of Warranty.
|
||||
|
||||
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
||||
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
||||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
||||
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. Limitation of Liability.
|
||||
|
||||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
||||
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
||||
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
||||
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGES.
|
||||
|
||||
17. Interpretation of Sections 15 and 16.
|
||||
|
||||
If the disclaimer of warranty and limitation of liability provided
|
||||
above cannot be given local legal effect according to their terms,
|
||||
reviewing courts shall apply local law that most closely approximates
|
||||
an absolute waiver of all civil liability in connection with the
|
||||
Program, unless a warranty or assumption of liability accompanies a
|
||||
copy of the Program in return for a fee.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
state the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
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/>.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program does terminal interaction, make it output a short
|
||||
notice like this when it starts in an interactive mode:
|
||||
|
||||
<program> Copyright (C) <year> <name of author>
|
||||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, your program's commands
|
||||
might be different; for a GUI interface, you would use an "about box".
|
||||
|
||||
You should also get your employer (if you work as a programmer) or school,
|
||||
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||
For more information on this, and how to apply and follow the GNU GPL, see
|
||||
<http://www.gnu.org/licenses/>.
|
||||
|
||||
The GNU General Public License does not permit incorporating your program
|
||||
into proprietary programs. If your program is a subroutine library, you
|
||||
may consider it more useful to permit linking proprietary applications with
|
||||
the library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License. But first, please read
|
||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
674
source/freeipmi/usr/share/doc/freeipmi/COPYING.pstdout
Normal file
674
source/freeipmi/usr/share/doc/freeipmi/COPYING.pstdout
Normal file
@ -0,0 +1,674 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The GNU General Public License is a free, copyleft license for
|
||||
software and other kinds of works.
|
||||
|
||||
The licenses for most software and other practical works are designed
|
||||
to take away your freedom to share and change the works. By contrast,
|
||||
the GNU General Public License is intended to guarantee your freedom to
|
||||
share and change all versions of a program--to make sure it remains free
|
||||
software for all its users. We, the Free Software Foundation, use the
|
||||
GNU General Public License for most of our software; it applies also to
|
||||
any other work released this way by its authors. You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
them if you wish), that you receive source code or can get it if you
|
||||
want it, that you can change the software or use pieces of it in new
|
||||
free programs, and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to prevent others from denying you
|
||||
these rights or asking you to surrender the rights. Therefore, you have
|
||||
certain responsibilities if you distribute copies of the software, or if
|
||||
you modify it: responsibilities to respect the freedom of others.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must pass on to the recipients the same
|
||||
freedoms that you received. You must make sure that they, too, receive
|
||||
or can get the source code. And you must show them these terms so they
|
||||
know their rights.
|
||||
|
||||
Developers that use the GNU GPL protect your rights with two steps:
|
||||
(1) assert copyright on the software, and (2) offer you this License
|
||||
giving you legal permission to copy, distribute and/or modify it.
|
||||
|
||||
For the developers' and authors' protection, the GPL clearly explains
|
||||
that there is no warranty for this free software. For both users' and
|
||||
authors' sake, the GPL requires that modified versions be marked as
|
||||
changed, so that their problems will not be attributed erroneously to
|
||||
authors of previous versions.
|
||||
|
||||
Some devices are designed to deny users access to install or run
|
||||
modified versions of the software inside them, although the manufacturer
|
||||
can do so. This is fundamentally incompatible with the aim of
|
||||
protecting users' freedom to change the software. The systematic
|
||||
pattern of such abuse occurs in the area of products for individuals to
|
||||
use, which is precisely where it is most unacceptable. Therefore, we
|
||||
have designed this version of the GPL to prohibit the practice for those
|
||||
products. If such problems arise substantially in other domains, we
|
||||
stand ready to extend this provision to those domains in future versions
|
||||
of the GPL, as needed to protect the freedom of users.
|
||||
|
||||
Finally, every program is threatened constantly by software patents.
|
||||
States should not allow patents to restrict development and use of
|
||||
software on general-purpose computers, but in those that do, we wish to
|
||||
avoid the special danger that patents applied to a free program could
|
||||
make it effectively proprietary. To prevent this, the GPL assures that
|
||||
patents cannot be used to render the program non-free.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
TERMS AND CONDITIONS
|
||||
|
||||
0. Definitions.
|
||||
|
||||
"This License" refers to version 3 of the GNU General Public License.
|
||||
|
||||
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||
works, such as semiconductor masks.
|
||||
|
||||
"The Program" refers to any copyrightable work licensed under this
|
||||
License. Each licensee is addressed as "you". "Licensees" and
|
||||
"recipients" may be individuals or organizations.
|
||||
|
||||
To "modify" a work means to copy from or adapt all or part of the work
|
||||
in a fashion requiring copyright permission, other than the making of an
|
||||
exact copy. The resulting work is called a "modified version" of the
|
||||
earlier work or a work "based on" the earlier work.
|
||||
|
||||
A "covered work" means either the unmodified Program or a work based
|
||||
on the Program.
|
||||
|
||||
To "propagate" a work means to do anything with it that, without
|
||||
permission, would make you directly or secondarily liable for
|
||||
infringement under applicable copyright law, except executing it on a
|
||||
computer or modifying a private copy. Propagation includes copying,
|
||||
distribution (with or without modification), making available to the
|
||||
public, and in some countries other activities as well.
|
||||
|
||||
To "convey" a work means any kind of propagation that enables other
|
||||
parties to make or receive copies. Mere interaction with a user through
|
||||
a computer network, with no transfer of a copy, is not conveying.
|
||||
|
||||
An interactive user interface displays "Appropriate Legal Notices"
|
||||
to the extent that it includes a convenient and prominently visible
|
||||
feature that (1) displays an appropriate copyright notice, and (2)
|
||||
tells the user that there is no warranty for the work (except to the
|
||||
extent that warranties are provided), that licensees may convey the
|
||||
work under this License, and how to view a copy of this License. If
|
||||
the interface presents a list of user commands or options, such as a
|
||||
menu, a prominent item in the list meets this criterion.
|
||||
|
||||
1. Source Code.
|
||||
|
||||
The "source code" for a work means the preferred form of the work
|
||||
for making modifications to it. "Object code" means any non-source
|
||||
form of a work.
|
||||
|
||||
A "Standard Interface" means an interface that either is an official
|
||||
standard defined by a recognized standards body, or, in the case of
|
||||
interfaces specified for a particular programming language, one that
|
||||
is widely used among developers working in that language.
|
||||
|
||||
The "System Libraries" of an executable work include anything, other
|
||||
than the work as a whole, that (a) is included in the normal form of
|
||||
packaging a Major Component, but which is not part of that Major
|
||||
Component, and (b) serves only to enable use of the work with that
|
||||
Major Component, or to implement a Standard Interface for which an
|
||||
implementation is available to the public in source code form. A
|
||||
"Major Component", in this context, means a major essential component
|
||||
(kernel, window system, and so on) of the specific operating system
|
||||
(if any) on which the executable work runs, or a compiler used to
|
||||
produce the work, or an object code interpreter used to run it.
|
||||
|
||||
The "Corresponding Source" for a work in object code form means all
|
||||
the source code needed to generate, install, and (for an executable
|
||||
work) run the object code and to modify the work, including scripts to
|
||||
control those activities. However, it does not include the work's
|
||||
System Libraries, or general-purpose tools or generally available free
|
||||
programs which are used unmodified in performing those activities but
|
||||
which are not part of the work. For example, Corresponding Source
|
||||
includes interface definition files associated with source files for
|
||||
the work, and the source code for shared libraries and dynamically
|
||||
linked subprograms that the work is specifically designed to require,
|
||||
such as by intimate data communication or control flow between those
|
||||
subprograms and other parts of the work.
|
||||
|
||||
The Corresponding Source need not include anything that users
|
||||
can regenerate automatically from other parts of the Corresponding
|
||||
Source.
|
||||
|
||||
The Corresponding Source for a work in source code form is that
|
||||
same work.
|
||||
|
||||
2. Basic Permissions.
|
||||
|
||||
All rights granted under this License are granted for the term of
|
||||
copyright on the Program, and are irrevocable provided the stated
|
||||
conditions are met. This License explicitly affirms your unlimited
|
||||
permission to run the unmodified Program. The output from running a
|
||||
covered work is covered by this License only if the output, given its
|
||||
content, constitutes a covered work. This License acknowledges your
|
||||
rights of fair use or other equivalent, as provided by copyright law.
|
||||
|
||||
You may make, run and propagate covered works that you do not
|
||||
convey, without conditions so long as your license otherwise remains
|
||||
in force. You may convey covered works to others for the sole purpose
|
||||
of having them make modifications exclusively for you, or provide you
|
||||
with facilities for running those works, provided that you comply with
|
||||
the terms of this License in conveying all material for which you do
|
||||
not control copyright. Those thus making or running the covered works
|
||||
for you must do so exclusively on your behalf, under your direction
|
||||
and control, on terms that prohibit them from making any copies of
|
||||
your copyrighted material outside their relationship with you.
|
||||
|
||||
Conveying under any other circumstances is permitted solely under
|
||||
the conditions stated below. Sublicensing is not allowed; section 10
|
||||
makes it unnecessary.
|
||||
|
||||
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||
|
||||
No covered work shall be deemed part of an effective technological
|
||||
measure under any applicable law fulfilling obligations under article
|
||||
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||
similar laws prohibiting or restricting circumvention of such
|
||||
measures.
|
||||
|
||||
When you convey a covered work, you waive any legal power to forbid
|
||||
circumvention of technological measures to the extent such circumvention
|
||||
is effected by exercising rights under this License with respect to
|
||||
the covered work, and you disclaim any intention to limit operation or
|
||||
modification of the work as a means of enforcing, against the work's
|
||||
users, your or third parties' legal rights to forbid circumvention of
|
||||
technological measures.
|
||||
|
||||
4. Conveying Verbatim Copies.
|
||||
|
||||
You may convey verbatim copies of the Program's source code as you
|
||||
receive it, in any medium, provided that you conspicuously and
|
||||
appropriately publish on each copy an appropriate copyright notice;
|
||||
keep intact all notices stating that this License and any
|
||||
non-permissive terms added in accord with section 7 apply to the code;
|
||||
keep intact all notices of the absence of any warranty; and give all
|
||||
recipients a copy of this License along with the Program.
|
||||
|
||||
You may charge any price or no price for each copy that you convey,
|
||||
and you may offer support or warranty protection for a fee.
|
||||
|
||||
5. Conveying Modified Source Versions.
|
||||
|
||||
You may convey a work based on the Program, or the modifications to
|
||||
produce it from the Program, in the form of source code under the
|
||||
terms of section 4, provided that you also meet all of these conditions:
|
||||
|
||||
a) The work must carry prominent notices stating that you modified
|
||||
it, and giving a relevant date.
|
||||
|
||||
b) The work must carry prominent notices stating that it is
|
||||
released under this License and any conditions added under section
|
||||
7. This requirement modifies the requirement in section 4 to
|
||||
"keep intact all notices".
|
||||
|
||||
c) You must license the entire work, as a whole, under this
|
||||
License to anyone who comes into possession of a copy. This
|
||||
License will therefore apply, along with any applicable section 7
|
||||
additional terms, to the whole of the work, and all its parts,
|
||||
regardless of how they are packaged. This License gives no
|
||||
permission to license the work in any other way, but it does not
|
||||
invalidate such permission if you have separately received it.
|
||||
|
||||
d) If the work has interactive user interfaces, each must display
|
||||
Appropriate Legal Notices; however, if the Program has interactive
|
||||
interfaces that do not display Appropriate Legal Notices, your
|
||||
work need not make them do so.
|
||||
|
||||
A compilation of a covered work with other separate and independent
|
||||
works, which are not by their nature extensions of the covered work,
|
||||
and which are not combined with it such as to form a larger program,
|
||||
in or on a volume of a storage or distribution medium, is called an
|
||||
"aggregate" if the compilation and its resulting copyright are not
|
||||
used to limit the access or legal rights of the compilation's users
|
||||
beyond what the individual works permit. Inclusion of a covered work
|
||||
in an aggregate does not cause this License to apply to the other
|
||||
parts of the aggregate.
|
||||
|
||||
6. Conveying Non-Source Forms.
|
||||
|
||||
You may convey a covered work in object code form under the terms
|
||||
of sections 4 and 5, provided that you also convey the
|
||||
machine-readable Corresponding Source under the terms of this License,
|
||||
in one of these ways:
|
||||
|
||||
a) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by the
|
||||
Corresponding Source fixed on a durable physical medium
|
||||
customarily used for software interchange.
|
||||
|
||||
b) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by a
|
||||
written offer, valid for at least three years and valid for as
|
||||
long as you offer spare parts or customer support for that product
|
||||
model, to give anyone who possesses the object code either (1) a
|
||||
copy of the Corresponding Source for all the software in the
|
||||
product that is covered by this License, on a durable physical
|
||||
medium customarily used for software interchange, for a price no
|
||||
more than your reasonable cost of physically performing this
|
||||
conveying of source, or (2) access to copy the
|
||||
Corresponding Source from a network server at no charge.
|
||||
|
||||
c) Convey individual copies of the object code with a copy of the
|
||||
written offer to provide the Corresponding Source. This
|
||||
alternative is allowed only occasionally and noncommercially, and
|
||||
only if you received the object code with such an offer, in accord
|
||||
with subsection 6b.
|
||||
|
||||
d) Convey the object code by offering access from a designated
|
||||
place (gratis or for a charge), and offer equivalent access to the
|
||||
Corresponding Source in the same way through the same place at no
|
||||
further charge. You need not require recipients to copy the
|
||||
Corresponding Source along with the object code. If the place to
|
||||
copy the object code is a network server, the Corresponding Source
|
||||
may be on a different server (operated by you or a third party)
|
||||
that supports equivalent copying facilities, provided you maintain
|
||||
clear directions next to the object code saying where to find the
|
||||
Corresponding Source. Regardless of what server hosts the
|
||||
Corresponding Source, you remain obligated to ensure that it is
|
||||
available for as long as needed to satisfy these requirements.
|
||||
|
||||
e) Convey the object code using peer-to-peer transmission, provided
|
||||
you inform other peers where the object code and Corresponding
|
||||
Source of the work are being offered to the general public at no
|
||||
charge under subsection 6d.
|
||||
|
||||
A separable portion of the object code, whose source code is excluded
|
||||
from the Corresponding Source as a System Library, need not be
|
||||
included in conveying the object code work.
|
||||
|
||||
A "User Product" is either (1) a "consumer product", which means any
|
||||
tangible personal property which is normally used for personal, family,
|
||||
or household purposes, or (2) anything designed or sold for incorporation
|
||||
into a dwelling. In determining whether a product is a consumer product,
|
||||
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||
product received by a particular user, "normally used" refers to a
|
||||
typical or common use of that class of product, regardless of the status
|
||||
of the particular user or of the way in which the particular user
|
||||
actually uses, or expects or is expected to use, the product. A product
|
||||
is a consumer product regardless of whether the product has substantial
|
||||
commercial, industrial or non-consumer uses, unless such uses represent
|
||||
the only significant mode of use of the product.
|
||||
|
||||
"Installation Information" for a User Product means any methods,
|
||||
procedures, authorization keys, or other information required to install
|
||||
and execute modified versions of a covered work in that User Product from
|
||||
a modified version of its Corresponding Source. The information must
|
||||
suffice to ensure that the continued functioning of the modified object
|
||||
code is in no case prevented or interfered with solely because
|
||||
modification has been made.
|
||||
|
||||
If you convey an object code work under this section in, or with, or
|
||||
specifically for use in, a User Product, and the conveying occurs as
|
||||
part of a transaction in which the right of possession and use of the
|
||||
User Product is transferred to the recipient in perpetuity or for a
|
||||
fixed term (regardless of how the transaction is characterized), the
|
||||
Corresponding Source conveyed under this section must be accompanied
|
||||
by the Installation Information. But this requirement does not apply
|
||||
if neither you nor any third party retains the ability to install
|
||||
modified object code on the User Product (for example, the work has
|
||||
been installed in ROM).
|
||||
|
||||
The requirement to provide Installation Information does not include a
|
||||
requirement to continue to provide support service, warranty, or updates
|
||||
for a work that has been modified or installed by the recipient, or for
|
||||
the User Product in which it has been modified or installed. Access to a
|
||||
network may be denied when the modification itself materially and
|
||||
adversely affects the operation of the network or violates the rules and
|
||||
protocols for communication across the network.
|
||||
|
||||
Corresponding Source conveyed, and Installation Information provided,
|
||||
in accord with this section must be in a format that is publicly
|
||||
documented (and with an implementation available to the public in
|
||||
source code form), and must require no special password or key for
|
||||
unpacking, reading or copying.
|
||||
|
||||
7. Additional Terms.
|
||||
|
||||
"Additional permissions" are terms that supplement the terms of this
|
||||
License by making exceptions from one or more of its conditions.
|
||||
Additional permissions that are applicable to the entire Program shall
|
||||
be treated as though they were included in this License, to the extent
|
||||
that they are valid under applicable law. If additional permissions
|
||||
apply only to part of the Program, that part may be used separately
|
||||
under those permissions, but the entire Program remains governed by
|
||||
this License without regard to the additional permissions.
|
||||
|
||||
When you convey a copy of a covered work, you may at your option
|
||||
remove any additional permissions from that copy, or from any part of
|
||||
it. (Additional permissions may be written to require their own
|
||||
removal in certain cases when you modify the work.) You may place
|
||||
additional permissions on material, added by you to a covered work,
|
||||
for which you have or can give appropriate copyright permission.
|
||||
|
||||
Notwithstanding any other provision of this License, for material you
|
||||
add to a covered work, you may (if authorized by the copyright holders of
|
||||
that material) supplement the terms of this License with terms:
|
||||
|
||||
a) Disclaiming warranty or limiting liability differently from the
|
||||
terms of sections 15 and 16 of this License; or
|
||||
|
||||
b) Requiring preservation of specified reasonable legal notices or
|
||||
author attributions in that material or in the Appropriate Legal
|
||||
Notices displayed by works containing it; or
|
||||
|
||||
c) Prohibiting misrepresentation of the origin of that material, or
|
||||
requiring that modified versions of such material be marked in
|
||||
reasonable ways as different from the original version; or
|
||||
|
||||
d) Limiting the use for publicity purposes of names of licensors or
|
||||
authors of the material; or
|
||||
|
||||
e) Declining to grant rights under trademark law for use of some
|
||||
trade names, trademarks, or service marks; or
|
||||
|
||||
f) Requiring indemnification of licensors and authors of that
|
||||
material by anyone who conveys the material (or modified versions of
|
||||
it) with contractual assumptions of liability to the recipient, for
|
||||
any liability that these contractual assumptions directly impose on
|
||||
those licensors and authors.
|
||||
|
||||
All other non-permissive additional terms are considered "further
|
||||
restrictions" within the meaning of section 10. If the Program as you
|
||||
received it, or any part of it, contains a notice stating that it is
|
||||
governed by this License along with a term that is a further
|
||||
restriction, you may remove that term. If a license document contains
|
||||
a further restriction but permits relicensing or conveying under this
|
||||
License, you may add to a covered work material governed by the terms
|
||||
of that license document, provided that the further restriction does
|
||||
not survive such relicensing or conveying.
|
||||
|
||||
If you add terms to a covered work in accord with this section, you
|
||||
must place, in the relevant source files, a statement of the
|
||||
additional terms that apply to those files, or a notice indicating
|
||||
where to find the applicable terms.
|
||||
|
||||
Additional terms, permissive or non-permissive, may be stated in the
|
||||
form of a separately written license, or stated as exceptions;
|
||||
the above requirements apply either way.
|
||||
|
||||
8. Termination.
|
||||
|
||||
You may not propagate or modify a covered work except as expressly
|
||||
provided under this License. Any attempt otherwise to propagate or
|
||||
modify it is void, and will automatically terminate your rights under
|
||||
this License (including any patent licenses granted under the third
|
||||
paragraph of section 11).
|
||||
|
||||
However, if you cease all violation of this License, then your
|
||||
license from a particular copyright holder is reinstated (a)
|
||||
provisionally, unless and until the copyright holder explicitly and
|
||||
finally terminates your license, and (b) permanently, if the copyright
|
||||
holder fails to notify you of the violation by some reasonable means
|
||||
prior to 60 days after the cessation.
|
||||
|
||||
Moreover, your license from a particular copyright holder is
|
||||
reinstated permanently if the copyright holder notifies you of the
|
||||
violation by some reasonable means, this is the first time you have
|
||||
received notice of violation of this License (for any work) from that
|
||||
copyright holder, and you cure the violation prior to 30 days after
|
||||
your receipt of the notice.
|
||||
|
||||
Termination of your rights under this section does not terminate the
|
||||
licenses of parties who have received copies or rights from you under
|
||||
this License. If your rights have been terminated and not permanently
|
||||
reinstated, you do not qualify to receive new licenses for the same
|
||||
material under section 10.
|
||||
|
||||
9. Acceptance Not Required for Having Copies.
|
||||
|
||||
You are not required to accept this License in order to receive or
|
||||
run a copy of the Program. Ancillary propagation of a covered work
|
||||
occurring solely as a consequence of using peer-to-peer transmission
|
||||
to receive a copy likewise does not require acceptance. However,
|
||||
nothing other than this License grants you permission to propagate or
|
||||
modify any covered work. These actions infringe copyright if you do
|
||||
not accept this License. Therefore, by modifying or propagating a
|
||||
covered work, you indicate your acceptance of this License to do so.
|
||||
|
||||
10. Automatic Licensing of Downstream Recipients.
|
||||
|
||||
Each time you convey a covered work, the recipient automatically
|
||||
receives a license from the original licensors, to run, modify and
|
||||
propagate that work, subject to this License. You are not responsible
|
||||
for enforcing compliance by third parties with this License.
|
||||
|
||||
An "entity transaction" is a transaction transferring control of an
|
||||
organization, or substantially all assets of one, or subdividing an
|
||||
organization, or merging organizations. If propagation of a covered
|
||||
work results from an entity transaction, each party to that
|
||||
transaction who receives a copy of the work also receives whatever
|
||||
licenses to the work the party's predecessor in interest had or could
|
||||
give under the previous paragraph, plus a right to possession of the
|
||||
Corresponding Source of the work from the predecessor in interest, if
|
||||
the predecessor has it or can get it with reasonable efforts.
|
||||
|
||||
You may not impose any further restrictions on the exercise of the
|
||||
rights granted or affirmed under this License. For example, you may
|
||||
not impose a license fee, royalty, or other charge for exercise of
|
||||
rights granted under this License, and you may not initiate litigation
|
||||
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||
any patent claim is infringed by making, using, selling, offering for
|
||||
sale, or importing the Program or any portion of it.
|
||||
|
||||
11. Patents.
|
||||
|
||||
A "contributor" is a copyright holder who authorizes use under this
|
||||
License of the Program or a work on which the Program is based. The
|
||||
work thus licensed is called the contributor's "contributor version".
|
||||
|
||||
A contributor's "essential patent claims" are all patent claims
|
||||
owned or controlled by the contributor, whether already acquired or
|
||||
hereafter acquired, that would be infringed by some manner, permitted
|
||||
by this License, of making, using, or selling its contributor version,
|
||||
but do not include claims that would be infringed only as a
|
||||
consequence of further modification of the contributor version. For
|
||||
purposes of this definition, "control" includes the right to grant
|
||||
patent sublicenses in a manner consistent with the requirements of
|
||||
this License.
|
||||
|
||||
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||
patent license under the contributor's essential patent claims, to
|
||||
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||
propagate the contents of its contributor version.
|
||||
|
||||
In the following three paragraphs, a "patent license" is any express
|
||||
agreement or commitment, however denominated, not to enforce a patent
|
||||
(such as an express permission to practice a patent or covenant not to
|
||||
sue for patent infringement). To "grant" such a patent license to a
|
||||
party means to make such an agreement or commitment not to enforce a
|
||||
patent against the party.
|
||||
|
||||
If you convey a covered work, knowingly relying on a patent license,
|
||||
and the Corresponding Source of the work is not available for anyone
|
||||
to copy, free of charge and under the terms of this License, through a
|
||||
publicly available network server or other readily accessible means,
|
||||
then you must either (1) cause the Corresponding Source to be so
|
||||
available, or (2) arrange to deprive yourself of the benefit of the
|
||||
patent license for this particular work, or (3) arrange, in a manner
|
||||
consistent with the requirements of this License, to extend the patent
|
||||
license to downstream recipients. "Knowingly relying" means you have
|
||||
actual knowledge that, but for the patent license, your conveying the
|
||||
covered work in a country, or your recipient's use of the covered work
|
||||
in a country, would infringe one or more identifiable patents in that
|
||||
country that you have reason to believe are valid.
|
||||
|
||||
If, pursuant to or in connection with a single transaction or
|
||||
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||
covered work, and grant a patent license to some of the parties
|
||||
receiving the covered work authorizing them to use, propagate, modify
|
||||
or convey a specific copy of the covered work, then the patent license
|
||||
you grant is automatically extended to all recipients of the covered
|
||||
work and works based on it.
|
||||
|
||||
A patent license is "discriminatory" if it does not include within
|
||||
the scope of its coverage, prohibits the exercise of, or is
|
||||
conditioned on the non-exercise of one or more of the rights that are
|
||||
specifically granted under this License. You may not convey a covered
|
||||
work if you are a party to an arrangement with a third party that is
|
||||
in the business of distributing software, under which you make payment
|
||||
to the third party based on the extent of your activity of conveying
|
||||
the work, and under which the third party grants, to any of the
|
||||
parties who would receive the covered work from you, a discriminatory
|
||||
patent license (a) in connection with copies of the covered work
|
||||
conveyed by you (or copies made from those copies), or (b) primarily
|
||||
for and in connection with specific products or compilations that
|
||||
contain the covered work, unless you entered into that arrangement,
|
||||
or that patent license was granted, prior to 28 March 2007.
|
||||
|
||||
Nothing in this License shall be construed as excluding or limiting
|
||||
any implied license or other defenses to infringement that may
|
||||
otherwise be available to you under applicable patent law.
|
||||
|
||||
12. No Surrender of Others' Freedom.
|
||||
|
||||
If conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot convey a
|
||||
covered work so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you may
|
||||
not convey it at all. For example, if you agree to terms that obligate you
|
||||
to collect a royalty for further conveying from those to whom you convey
|
||||
the Program, the only way you could satisfy both those terms and this
|
||||
License would be to refrain entirely from conveying the Program.
|
||||
|
||||
13. Use with the GNU Affero General Public License.
|
||||
|
||||
Notwithstanding any other provision of this License, you have
|
||||
permission to link or combine any covered work with a work licensed
|
||||
under version 3 of the GNU Affero General Public License into a single
|
||||
combined work, and to convey the resulting work. The terms of this
|
||||
License will continue to apply to the part which is the covered work,
|
||||
but the special requirements of the GNU Affero General Public License,
|
||||
section 13, concerning interaction through a network will apply to the
|
||||
combination as such.
|
||||
|
||||
14. Revised Versions of this License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions of
|
||||
the GNU General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the
|
||||
Program specifies that a certain numbered version of the GNU General
|
||||
Public License "or any later version" applies to it, you have the
|
||||
option of following the terms and conditions either of that numbered
|
||||
version or of any later version published by the Free Software
|
||||
Foundation. If the Program does not specify a version number of the
|
||||
GNU General Public License, you may choose any version ever published
|
||||
by the Free Software Foundation.
|
||||
|
||||
If the Program specifies that a proxy can decide which future
|
||||
versions of the GNU General Public License can be used, that proxy's
|
||||
public statement of acceptance of a version permanently authorizes you
|
||||
to choose that version for the Program.
|
||||
|
||||
Later license versions may give you additional or different
|
||||
permissions. However, no additional obligations are imposed on any
|
||||
author or copyright holder as a result of your choosing to follow a
|
||||
later version.
|
||||
|
||||
15. Disclaimer of Warranty.
|
||||
|
||||
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
||||
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
||||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
||||
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. Limitation of Liability.
|
||||
|
||||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
||||
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
||||
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
||||
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGES.
|
||||
|
||||
17. Interpretation of Sections 15 and 16.
|
||||
|
||||
If the disclaimer of warranty and limitation of liability provided
|
||||
above cannot be given local legal effect according to their terms,
|
||||
reviewing courts shall apply local law that most closely approximates
|
||||
an absolute waiver of all civil liability in connection with the
|
||||
Program, unless a warranty or assumption of liability accompanies a
|
||||
copy of the Program in return for a fee.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
state the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
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/>.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program does terminal interaction, make it output a short
|
||||
notice like this when it starts in an interactive mode:
|
||||
|
||||
<program> Copyright (C) <year> <name of author>
|
||||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, your program's commands
|
||||
might be different; for a GUI interface, you would use an "about box".
|
||||
|
||||
You should also get your employer (if you work as a programmer) or school,
|
||||
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||
For more information on this, and how to apply and follow the GNU GPL, see
|
||||
<http://www.gnu.org/licenses/>.
|
||||
|
||||
The GNU General Public License does not permit incorporating your program
|
||||
into proprietary programs. If your program is a subroutine library, you
|
||||
may consider it more useful to permit linking proprietary applications with
|
||||
the library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License. But first, please read
|
||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
35
source/freeipmi/usr/share/doc/freeipmi/COPYING.sunbmc
Normal file
35
source/freeipmi/usr/share/doc/freeipmi/COPYING.sunbmc
Normal file
@ -0,0 +1,35 @@
|
||||
The file libfreeipmi/driver/freeipmi_bmc_intf.h is from ipmitool
|
||||
(http://sourceforge.net/projects/ipmitool) and comes with the
|
||||
following license.
|
||||
|
||||
----
|
||||
Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
|
||||
Redistribution of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
|
||||
Redistribution in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
|
||||
Neither the name of Sun Microsystems, Inc. or the names of
|
||||
contributors may be used to endorse or promote products derived
|
||||
from this software without specific prior written permission.
|
||||
|
||||
This software is provided "AS IS," without a warranty of any kind.
|
||||
ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
|
||||
INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
|
||||
PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED.
|
||||
SUN MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE
|
||||
FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING
|
||||
OR DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL
|
||||
SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA,
|
||||
OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR
|
||||
PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF
|
||||
LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE,
|
||||
EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
----
|
21978
source/freeipmi/usr/share/doc/freeipmi/ChangeLog
Normal file
21978
source/freeipmi/usr/share/doc/freeipmi/ChangeLog
Normal file
File diff suppressed because it is too large
Load Diff
1480
source/freeipmi/usr/share/doc/freeipmi/ChangeLog.0
Normal file
1480
source/freeipmi/usr/share/doc/freeipmi/ChangeLog.0
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,24 @@
|
||||
This work was produced at the Lawrence Livermore National Laboratory
|
||||
(LLNL) under Contract No. DE-AC52-07NA27344 (Contract 44) between
|
||||
the U.S. Department of Energy (DOE) and Lawrence Livermore National
|
||||
Security, LLC (LLNS) for the operation of LLNL.
|
||||
|
||||
This work was prepared as an account of work sponsored by an agency of
|
||||
the United States Government. Neither the United States Government nor
|
||||
Lawrence Livermore National Security, LLC nor any of their employees,
|
||||
makes any warranty, express or implied, or assumes any liability or
|
||||
responsibility for the accuracy, completeness, or usefulness of any
|
||||
information, apparatus, product, or process disclosed, or represents
|
||||
that its use would not infringe privately-owned rights.
|
||||
|
||||
Reference herein to any specific commercial products, process, or
|
||||
services by trade name, trademark, manufacturer or otherwise does
|
||||
not necessarily constitute or imply its endorsement, recommendation,
|
||||
or favoring by the United States Government or Lawrence Livermore
|
||||
National Security, LLC. The views and opinions of authors expressed
|
||||
herein do not necessarily state or reflect those of the Untied States
|
||||
Government or Lawrence Livermore National Security, LLC, and shall
|
||||
not be used for advertising or product endorsement purposes.
|
||||
|
||||
The precise terms and conditions for copying, distribution, and
|
||||
modification are specified in the file "COPYING".
|
@ -0,0 +1,45 @@
|
||||
Copyright (C) 2004-2007 The Regents of the University of California.
|
||||
Produced at Lawrence Livermore National Laboratory.
|
||||
Written by Albert Chu <chu11@llnl.gov>
|
||||
UCRL-CODE-155913
|
||||
|
||||
This file is part of Bmc-watchdog, a base management controller (BMC)
|
||||
watchdog timer management tool. For details, see http://www.llnl.gov/linux/.
|
||||
|
||||
Bmc-Watchdog is free software; you can redistribute it and/or modify it under
|
||||
the terms of the GNU General Public License as published by the Free
|
||||
Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
Bmc-Watchdog 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 Bmc-Watchdog; if not, write to the Free Software Foundation, Inc.,
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
This notice is required to be provided under our contract with the
|
||||
U.S. Department of Energy (DOE). This work was produced at the
|
||||
University of California, Lawrence Livermore National Laboratory under
|
||||
Contract No. W-7405-ENG-48 with the DOE.
|
||||
|
||||
Neither the United States Government nor the University of California
|
||||
nor any of their employees, makes any warranty, express or implied, or
|
||||
assumes any liability or responsibility for the accuracy,
|
||||
completeness, or usefulness of any information, apparatus, product, or
|
||||
process disclosed, or represents that its use would not infringe
|
||||
privately-owned rights.
|
||||
|
||||
Also, reference herein to any specific commercial products, process,
|
||||
or services by trade name, trademark, manufacturer or otherwise does
|
||||
not necessarily constitute or imply its endorsement, recommendation,
|
||||
or favoring by the United States Government or the University of
|
||||
California. The views and opinions of authors expressed herein do not
|
||||
necessarily state or reflect those of the United States Government or
|
||||
the University of California, and shall not be used for advertising or
|
||||
product endorsement purposes.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification are specified in the file "COPYING".
|
24
source/freeipmi/usr/share/doc/freeipmi/DISCLAIMER.ipmi-dcmi
Normal file
24
source/freeipmi/usr/share/doc/freeipmi/DISCLAIMER.ipmi-dcmi
Normal file
@ -0,0 +1,24 @@
|
||||
This work was produced at the Lawrence Livermore National Laboratory
|
||||
(LLNL) under Contract No. DE-AC52-07NA27344 (Contract 44) between
|
||||
the U.S. Department of Energy (DOE) and Lawrence Livermore National
|
||||
Security, LLC (LLNS) for the operation of LLNL.
|
||||
|
||||
This work was prepared as an account of work sponsored by an agency of
|
||||
the United States Government. Neither the United States Government nor
|
||||
Lawrence Livermore National Security, LLC nor any of their employees,
|
||||
makes any warranty, express or implied, or assumes any liability or
|
||||
responsibility for the accuracy, completeness, or usefulness of any
|
||||
information, apparatus, product, or process disclosed, or represents
|
||||
that its use would not infringe privately-owned rights.
|
||||
|
||||
Reference herein to any specific commercial products, process, or
|
||||
services by trade name, trademark, manufacturer or otherwise does
|
||||
not necessarily constitute or imply its endorsement, recommendation,
|
||||
or favoring by the United States Government or Lawrence Livermore
|
||||
National Security, LLC. The views and opinions of authors expressed
|
||||
herein do not necessarily state or reflect those of the Untied States
|
||||
Government or Lawrence Livermore National Security, LLC, and shall
|
||||
not be used for advertising or product endorsement purposes.
|
||||
|
||||
The precise terms and conditions for copying, distribution, and
|
||||
modification are specified in the file "COPYING".
|
24
source/freeipmi/usr/share/doc/freeipmi/DISCLAIMER.ipmi-fru
Normal file
24
source/freeipmi/usr/share/doc/freeipmi/DISCLAIMER.ipmi-fru
Normal file
@ -0,0 +1,24 @@
|
||||
This work was produced at the Lawrence Livermore National Laboratory
|
||||
(LLNL) under Contract No. DE-AC52-07NA27344 (Contract 44) between
|
||||
the U.S. Department of Energy (DOE) and Lawrence Livermore National
|
||||
Security, LLC (LLNS) for the operation of LLNL.
|
||||
|
||||
This work was prepared as an account of work sponsored by an agency of
|
||||
the United States Government. Neither the United States Government nor
|
||||
Lawrence Livermore National Security, LLC nor any of their employees,
|
||||
makes any warranty, express or implied, or assumes any liability or
|
||||
responsibility for the accuracy, completeness, or usefulness of any
|
||||
information, apparatus, product, or process disclosed, or represents
|
||||
that its use would not infringe privately-owned rights.
|
||||
|
||||
Reference herein to any specific commercial products, process, or
|
||||
services by trade name, trademark, manufacturer or otherwise does
|
||||
not necessarily constitute or imply its endorsement, recommendation,
|
||||
or favoring by the United States Government or Lawrence Livermore
|
||||
National Security, LLC. The views and opinions of authors expressed
|
||||
herein do not necessarily state or reflect those of the Untied States
|
||||
Government or Lawrence Livermore National Security, LLC, and shall
|
||||
not be used for advertising or product endorsement purposes.
|
||||
|
||||
The precise terms and conditions for copying, distribution, and
|
||||
modification are specified in the file "COPYING".
|
@ -0,0 +1,46 @@
|
||||
Copyright (C) 2007 The Regents of the University of California.
|
||||
Produced at Lawrence Livermore National Laboratory.
|
||||
Written by Albert Chu <chu11@llnl.gov>
|
||||
UCRL-CODE-232183
|
||||
|
||||
This file is part of Ipmi-fru, a tool used for retrieving motherboard
|
||||
field replaceable unit (FRU) information. For details, see
|
||||
http://www.llnl.gov/linux/.
|
||||
|
||||
Ipmi-fru is free software; you can redistribute it and/or modify it under
|
||||
the terms of the GNU General Public License as published by the Free
|
||||
Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
Ipmi-fru 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 Ipmi-fru; if not, write to the Free Software Foundation, Inc.,
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
This notice is required to be provided under our contract with the
|
||||
U.S. Department of Energy (DOE). This work was produced at the
|
||||
University of California, Lawrence Livermore National Laboratory under
|
||||
Contract No. W-7405-ENG-48 with the DOE.
|
||||
|
||||
Neither the United States Government nor the University of California
|
||||
nor any of their employees, makes any warranty, express or implied, or
|
||||
assumes any liability or responsibility for the accuracy,
|
||||
completeness, or usefulness of any information, apparatus, product, or
|
||||
process disclosed, or represents that its use would not infringe
|
||||
privately-owned rights.
|
||||
|
||||
Also, reference herein to any specific commercial products, process,
|
||||
or services by trade name, trademark, manufacturer or otherwise does
|
||||
not necessarily constitute or imply its endorsement, recommendation,
|
||||
or favoring by the United States Government or the University of
|
||||
California. The views and opinions of authors expressed herein do not
|
||||
necessarily state or reflect those of the United States Government or
|
||||
the University of California, and shall not be used for advertising or
|
||||
product endorsement purposes.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification are specified in the file "COPYING".
|
@ -0,0 +1,24 @@
|
||||
This work was produced at the Lawrence Livermore National Laboratory
|
||||
(LLNL) under Contract No. DE-AC52-07NA27344 (Contract 44) between
|
||||
the U.S. Department of Energy (DOE) and Lawrence Livermore National
|
||||
Security, LLC (LLNS) for the operation of LLNL.
|
||||
|
||||
This work was prepared as an account of work sponsored by an agency of
|
||||
the United States Government. Neither the United States Government nor
|
||||
Lawrence Livermore National Security, LLC nor any of their employees,
|
||||
makes any warranty, express or implied, or assumes any liability or
|
||||
responsibility for the accuracy, completeness, or usefulness of any
|
||||
information, apparatus, product, or process disclosed, or represents
|
||||
that its use would not infringe privately-owned rights.
|
||||
|
||||
Reference herein to any specific commercial products, process, or
|
||||
services by trade name, trademark, manufacturer or otherwise does
|
||||
not necessarily constitute or imply its endorsement, recommendation,
|
||||
or favoring by the United States Government or Lawrence Livermore
|
||||
National Security, LLC. The views and opinions of authors expressed
|
||||
herein do not necessarily state or reflect those of the Untied States
|
||||
Government or Lawrence Livermore National Security, LLC, and shall
|
||||
not be used for advertising or product endorsement purposes.
|
||||
|
||||
The precise terms and conditions for copying, distribution, and
|
||||
modification are specified in the file "COPYING".
|
@ -0,0 +1,45 @@
|
||||
Copyright (C) 2006-2007 The Regents of the University of California.
|
||||
Produced at Lawrence Livermore National Laboratory.
|
||||
Written by Albert Chu <chu11@llnl.gov>
|
||||
UCRL-CODE-221226
|
||||
|
||||
This file is part of Ipmiconsole, a set of IPMI 2.0 SOL libraries and
|
||||
utilities. For details, see http://www.llnl.gov/linux/.
|
||||
|
||||
Ipmiconsole is free software; you can redistribute it and/or modify it under
|
||||
the terms of the GNU General Public License as published by the Free
|
||||
Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
Ipmiconsole 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 Ipmiconsole; if not, write to the Free Software Foundation, Inc.,
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
This notice is required to be provided under our contract with the
|
||||
U.S. Department of Energy (DOE). This work was produced at the
|
||||
University of California, Lawrence Livermore National Laboratory under
|
||||
Contract No. W-7405-ENG-48 with the DOE.
|
||||
|
||||
Neither the United States Government nor the University of California
|
||||
nor any of their employees, makes any warranty, express or implied, or
|
||||
assumes any liability or responsibility for the accuracy,
|
||||
completeness, or usefulness of any information, apparatus, product, or
|
||||
process disclosed, or represents that its use would not infringe
|
||||
privately-owned rights.
|
||||
|
||||
Also, reference herein to any specific commercial products, process,
|
||||
or services by trade name, trademark, manufacturer or otherwise does
|
||||
not necessarily constitute or imply its endorsement, recommendation,
|
||||
or favoring by the United States Government or the University of
|
||||
California. The views and opinions of authors expressed herein do not
|
||||
necessarily state or reflect those of the United States Government or
|
||||
the University of California, and shall not be used for advertising or
|
||||
product endorsement purposes.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification are specified in the file "COPYING".
|
24
source/freeipmi/usr/share/doc/freeipmi/DISCLAIMER.ipmidetect
Normal file
24
source/freeipmi/usr/share/doc/freeipmi/DISCLAIMER.ipmidetect
Normal file
@ -0,0 +1,24 @@
|
||||
This work was produced at the Lawrence Livermore National Laboratory
|
||||
(LLNL) under Contract No. DE-AC52-07NA27344 (Contract 44) between
|
||||
the U.S. Department of Energy (DOE) and Lawrence Livermore National
|
||||
Security, LLC (LLNS) for the operation of LLNL.
|
||||
|
||||
This work was prepared as an account of work sponsored by an agency of
|
||||
the United States Government. Neither the United States Government nor
|
||||
Lawrence Livermore National Security, LLC nor any of their employees,
|
||||
makes any warranty, express or implied, or assumes any liability or
|
||||
responsibility for the accuracy, completeness, or usefulness of any
|
||||
information, apparatus, product, or process disclosed, or represents
|
||||
that its use would not infringe privately-owned rights.
|
||||
|
||||
Reference herein to any specific commercial products, process, or
|
||||
services by trade name, trademark, manufacturer or otherwise does
|
||||
not necessarily constitute or imply its endorsement, recommendation,
|
||||
or favoring by the United States Government or Lawrence Livermore
|
||||
National Security, LLC. The views and opinions of authors expressed
|
||||
herein do not necessarily state or reflect those of the Untied States
|
||||
Government or Lawrence Livermore National Security, LLC, and shall
|
||||
not be used for advertising or product endorsement purposes.
|
||||
|
||||
The precise terms and conditions for copying, distribution, and
|
||||
modification are specified in the file "COPYING".
|
@ -0,0 +1,45 @@
|
||||
Copyright (C) 2007 The Regents of the University of California.
|
||||
Produced at Lawrence Livermore National Laboratory.
|
||||
Written by Albert Chu <chu11@llnl.gov>
|
||||
UCRL-CODE-228523
|
||||
|
||||
This file is part of Ipmidetect, tools and libraries for detecting
|
||||
IPMI nodes in a cluster. For details, see http://www.llnl.gov/linux/.
|
||||
|
||||
Ipmidetect is free software; you can redistribute it and/or modify it under
|
||||
the terms of the GNU General Public License as published by the Free
|
||||
Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
Ipmidetect 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 Ipmidetect; if not, write to the Free Software Foundation, Inc.,
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
This notice is required to be provided under our contract with the
|
||||
U.S. Department of Energy (DOE). This work was produced at the
|
||||
University of California, Lawrence Livermore National Laboratory under
|
||||
Contract No. W-7405-ENG-48 with the DOE.
|
||||
|
||||
Neither the United States Government nor the University of California
|
||||
nor any of their employees, makes any warranty, express or implied, or
|
||||
assumes any liability or responsibility for the accuracy,
|
||||
completeness, or usefulness of any information, apparatus, product, or
|
||||
process disclosed, or represents that its use would not infringe
|
||||
privately-owned rights.
|
||||
|
||||
Also, reference herein to any specific commercial products, process,
|
||||
or services by trade name, trademark, manufacturer or otherwise does
|
||||
not necessarily constitute or imply its endorsement, recommendation,
|
||||
or favoring by the United States Government or the University of
|
||||
California. The views and opinions of authors expressed herein do not
|
||||
necessarily state or reflect those of the United States Government or
|
||||
the University of California, and shall not be used for advertising or
|
||||
product endorsement purposes.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification are specified in the file "COPYING".
|
@ -0,0 +1,24 @@
|
||||
This work was produced at the Lawrence Livermore National Laboratory
|
||||
(LLNL) under Contract No. DE-AC52-07NA27344 (Contract 44) between
|
||||
the U.S. Department of Energy (DOE) and Lawrence Livermore National
|
||||
Security, LLC (LLNS) for the operation of LLNL.
|
||||
|
||||
This work was prepared as an account of work sponsored by an agency of
|
||||
the United States Government. Neither the United States Government nor
|
||||
Lawrence Livermore National Security, LLC nor any of their employees,
|
||||
makes any warranty, express or implied, or assumes any liability or
|
||||
responsibility for the accuracy, completeness, or usefulness of any
|
||||
information, apparatus, product, or process disclosed, or represents
|
||||
that its use would not infringe privately-owned rights.
|
||||
|
||||
Reference herein to any specific commercial products, process, or
|
||||
services by trade name, trademark, manufacturer or otherwise does
|
||||
not necessarily constitute or imply its endorsement, recommendation,
|
||||
or favoring by the United States Government or Lawrence Livermore
|
||||
National Security, LLC. The views and opinions of authors expressed
|
||||
herein do not necessarily state or reflect those of the Untied States
|
||||
Government or Lawrence Livermore National Security, LLC, and shall
|
||||
not be used for advertising or product endorsement purposes.
|
||||
|
||||
The precise terms and conditions for copying, distribution, and
|
||||
modification are specified in the file "COPYING".
|
@ -0,0 +1,46 @@
|
||||
Copyright (C) 2006-2007 The Regents of the University of California.
|
||||
Produced at Lawrence Livermore National Laboratory.
|
||||
Written by Albert Chu <chu11@llnl.gov>
|
||||
UCRL-CODE-222073
|
||||
|
||||
This file is part of Ipmimonitoring, an IPMI sensor monitoring
|
||||
library. For details, see http://www.llnl.gov/linux/.
|
||||
|
||||
Ipmimonitoring is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or (at
|
||||
your option) any later version.
|
||||
|
||||
Ipmimonitoring 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 Ipmimonitoring; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
02110-1301 USA.
|
||||
|
||||
This notice is required to be provided under our contract with the
|
||||
U.S. Department of Energy (DOE). This work was produced at the
|
||||
University of California, Lawrence Livermore National Laboratory under
|
||||
Contract No. W-7405-ENG-48 with the DOE.
|
||||
|
||||
Neither the United States Government nor the University of California
|
||||
nor any of their employees, makes any warranty, express or implied, or
|
||||
assumes any liability or responsibility for the accuracy,
|
||||
completeness, or usefulness of any information, apparatus, product, or
|
||||
process disclosed, or represents that its use would not infringe
|
||||
privately-owned rights.
|
||||
|
||||
Also, reference herein to any specific commercial products, process,
|
||||
or services by trade name, trademark, manufacturer or otherwise does
|
||||
not necessarily constitute or imply its endorsement, recommendation,
|
||||
or favoring by the United States Government or the University of
|
||||
California. The views and opinions of authors expressed herein do not
|
||||
necessarily state or reflect those of the United States Government or
|
||||
the University of California, and shall not be used for advertising or
|
||||
product endorsement purposes.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification are specified in the file "COPYING".
|
24
source/freeipmi/usr/share/doc/freeipmi/DISCLAIMER.ipmiping
Normal file
24
source/freeipmi/usr/share/doc/freeipmi/DISCLAIMER.ipmiping
Normal file
@ -0,0 +1,24 @@
|
||||
This work was produced at the Lawrence Livermore National Laboratory
|
||||
(LLNL) under Contract No. DE-AC52-07NA27344 (Contract 44) between
|
||||
the U.S. Department of Energy (DOE) and Lawrence Livermore National
|
||||
Security, LLC (LLNS) for the operation of LLNL.
|
||||
|
||||
This work was prepared as an account of work sponsored by an agency of
|
||||
the United States Government. Neither the United States Government nor
|
||||
Lawrence Livermore National Security, LLC nor any of their employees,
|
||||
makes any warranty, express or implied, or assumes any liability or
|
||||
responsibility for the accuracy, completeness, or usefulness of any
|
||||
information, apparatus, product, or process disclosed, or represents
|
||||
that its use would not infringe privately-owned rights.
|
||||
|
||||
Reference herein to any specific commercial products, process, or
|
||||
services by trade name, trademark, manufacturer or otherwise does
|
||||
not necessarily constitute or imply its endorsement, recommendation,
|
||||
or favoring by the United States Government or Lawrence Livermore
|
||||
National Security, LLC. The views and opinions of authors expressed
|
||||
herein do not necessarily state or reflect those of the Untied States
|
||||
Government or Lawrence Livermore National Security, LLC, and shall
|
||||
not be used for advertising or product endorsement purposes.
|
||||
|
||||
The precise terms and conditions for copying, distribution, and
|
||||
modification are specified in the file "COPYING".
|
@ -0,0 +1,45 @@
|
||||
Copyright (C) 2003-2007 The Regents of the University of California.
|
||||
Produced at Lawrence Livermore National Laboratory.
|
||||
Written by Albert Chu <chu11@llnl.gov>
|
||||
UCRL-CODE-155448
|
||||
|
||||
This file is part of Ipmiping, tools for pinging IPMI and RMCP compliant
|
||||
remote systems. For details, see http://www.llnl.gov/linux/.
|
||||
|
||||
Ipmiping is free software; you can redistribute it and/or modify it under
|
||||
the terms of the GNU General Public License as published by the Free
|
||||
Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
Ipmiping 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 Ipmiping; if not, write to the Free Software Foundation, Inc.,
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
This notice is required to be provided under our contract with the
|
||||
U.S. Department of Energy (DOE). This work was produced at the
|
||||
University of California, Lawrence Livermore National Laboratory under
|
||||
Contract No. W-7405-ENG-48 with the DOE.
|
||||
|
||||
Neither the United States Government nor the University of California
|
||||
nor any of their employees, makes any warranty, express or implied, or
|
||||
assumes any liability or responsibility for the accuracy,
|
||||
completeness, or usefulness of any information, apparatus, product, or
|
||||
process disclosed, or represents that its use would not infringe
|
||||
privately-owned rights.
|
||||
|
||||
Also, reference herein to any specific commercial products, process,
|
||||
or services by trade name, trademark, manufacturer or otherwise does
|
||||
not necessarily constitute or imply its endorsement, recommendation,
|
||||
or favoring by the United States Government or the University of
|
||||
California. The views and opinions of authors expressed herein do not
|
||||
necessarily state or reflect those of the United States Government or
|
||||
the University of California, and shall not be used for advertising or
|
||||
product endorsement purposes.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification are specified in the file "COPYING".
|
24
source/freeipmi/usr/share/doc/freeipmi/DISCLAIMER.ipmipower
Normal file
24
source/freeipmi/usr/share/doc/freeipmi/DISCLAIMER.ipmipower
Normal file
@ -0,0 +1,24 @@
|
||||
This work was produced at the Lawrence Livermore National Laboratory
|
||||
(LLNL) under Contract No. DE-AC52-07NA27344 (Contract 44) between
|
||||
the U.S. Department of Energy (DOE) and Lawrence Livermore National
|
||||
Security, LLC (LLNS) for the operation of LLNL.
|
||||
|
||||
This work was prepared as an account of work sponsored by an agency of
|
||||
the United States Government. Neither the United States Government nor
|
||||
Lawrence Livermore National Security, LLC nor any of their employees,
|
||||
makes any warranty, express or implied, or assumes any liability or
|
||||
responsibility for the accuracy, completeness, or usefulness of any
|
||||
information, apparatus, product, or process disclosed, or represents
|
||||
that its use would not infringe privately-owned rights.
|
||||
|
||||
Reference herein to any specific commercial products, process, or
|
||||
services by trade name, trademark, manufacturer or otherwise does
|
||||
not necessarily constitute or imply its endorsement, recommendation,
|
||||
or favoring by the United States Government or Lawrence Livermore
|
||||
National Security, LLC. The views and opinions of authors expressed
|
||||
herein do not necessarily state or reflect those of the Untied States
|
||||
Government or Lawrence Livermore National Security, LLC, and shall
|
||||
not be used for advertising or product endorsement purposes.
|
||||
|
||||
The precise terms and conditions for copying, distribution, and
|
||||
modification are specified in the file "COPYING".
|
@ -0,0 +1,45 @@
|
||||
Copyright (C) 2003-2007 The Regents of the University of California.
|
||||
Produced at Lawrence Livermore National Laboratory.
|
||||
Written by Albert Chu <chu11@llnl.gov>
|
||||
UCRL-CODE-155698
|
||||
|
||||
This file is part of Ipmipower, a remote power control utility. For
|
||||
details, see http://www.llnl.gov/linux/.
|
||||
|
||||
Ipmipower is free software; you can redistribute it and/or modify it under
|
||||
the terms of the GNU General Public License as published by the Free
|
||||
Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
Ipmipower 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 Ipmipower; if not, write to the Free Software Foundation, Inc.,
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
This notice is required to be provided under our contract with the
|
||||
U.S. Department of Energy (DOE). This work was produced at the
|
||||
University of California, Lawrence Livermore National Laboratory under
|
||||
Contract No. W-7405-ENG-48 with the DOE.
|
||||
|
||||
Neither the United States Government nor the University of California
|
||||
nor any of their employees, makes any warranty, express or implied, or
|
||||
assumes any liability or responsibility for the accuracy,
|
||||
completeness, or usefulness of any information, apparatus, product, or
|
||||
process disclosed, or represents that its use would not infringe
|
||||
privately-owned rights.
|
||||
|
||||
Also, reference herein to any specific commercial products, process,
|
||||
or services by trade name, trademark, manufacturer or otherwise does
|
||||
not necessarily constitute or imply its endorsement, recommendation,
|
||||
or favoring by the United States Government or the University of
|
||||
California. The views and opinions of authors expressed herein do not
|
||||
necessarily state or reflect those of the United States Government or
|
||||
the University of California, and shall not be used for advertising or
|
||||
product endorsement purposes.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification are specified in the file "COPYING".
|
24
source/freeipmi/usr/share/doc/freeipmi/DISCLAIMER.ipmiseld
Normal file
24
source/freeipmi/usr/share/doc/freeipmi/DISCLAIMER.ipmiseld
Normal file
@ -0,0 +1,24 @@
|
||||
This work was produced at the Lawrence Livermore National Laboratory
|
||||
(LLNL) under Contract No. DE-AC52-07NA27344 (Contract 44) between
|
||||
the U.S. Department of Energy (DOE) and Lawrence Livermore National
|
||||
Security, LLC (LLNS) for the operation of LLNL.
|
||||
|
||||
This work was prepared as an account of work sponsored by an agency of
|
||||
the United States Government. Neither the United States Government nor
|
||||
Lawrence Livermore National Security, LLC nor any of their employees,
|
||||
makes any warranty, express or implied, or assumes any liability or
|
||||
responsibility for the accuracy, completeness, or usefulness of any
|
||||
information, apparatus, product, or process disclosed, or represents
|
||||
that its use would not infringe privately-owned rights.
|
||||
|
||||
Reference herein to any specific commercial products, process, or
|
||||
services by trade name, trademark, manufacturer or otherwise does
|
||||
not necessarily constitute or imply its endorsement, recommendation,
|
||||
or favoring by the United States Government or Lawrence Livermore
|
||||
National Security, LLC. The views and opinions of authors expressed
|
||||
herein do not necessarily state or reflect those of the Untied States
|
||||
Government or Lawrence Livermore National Security, LLC, and shall
|
||||
not be used for advertising or product endorsement purposes.
|
||||
|
||||
The precise terms and conditions for copying, distribution, and
|
||||
modification are specified in the file "COPYING".
|
24
source/freeipmi/usr/share/doc/freeipmi/DISCLAIMER.pstdout
Normal file
24
source/freeipmi/usr/share/doc/freeipmi/DISCLAIMER.pstdout
Normal file
@ -0,0 +1,24 @@
|
||||
This work was produced at the Lawrence Livermore National Laboratory
|
||||
(LLNL) under Contract No. DE-AC52-07NA27344 (Contract 44) between
|
||||
the U.S. Department of Energy (DOE) and Lawrence Livermore National
|
||||
Security, LLC (LLNS) for the operation of LLNL.
|
||||
|
||||
This work was prepared as an account of work sponsored by an agency of
|
||||
the United States Government. Neither the United States Government nor
|
||||
Lawrence Livermore National Security, LLC nor any of their employees,
|
||||
makes any warranty, express or implied, or assumes any liability or
|
||||
responsibility for the accuracy, completeness, or usefulness of any
|
||||
information, apparatus, product, or process disclosed, or represents
|
||||
that its use would not infringe privately-owned rights.
|
||||
|
||||
Reference herein to any specific commercial products, process, or
|
||||
services by trade name, trademark, manufacturer or otherwise does
|
||||
not necessarily constitute or imply its endorsement, recommendation,
|
||||
or favoring by the United States Government or Lawrence Livermore
|
||||
National Security, LLC. The views and opinions of authors expressed
|
||||
herein do not necessarily state or reflect those of the Untied States
|
||||
Government or Lawrence Livermore National Security, LLC, and shall
|
||||
not be used for advertising or product endorsement purposes.
|
||||
|
||||
The precise terms and conditions for copying, distribution, and
|
||||
modification are specified in the file "COPYING".
|
46
source/freeipmi/usr/share/doc/freeipmi/DISCLAIMER.pstdout.UC
Normal file
46
source/freeipmi/usr/share/doc/freeipmi/DISCLAIMER.pstdout.UC
Normal file
@ -0,0 +1,46 @@
|
||||
Copyright (C) 2007 The Regents of the University of California.
|
||||
Produced at Lawrence Livermore National Laboratory.
|
||||
Written by Albert Chu <chu11@llnl.gov>
|
||||
UCRL-CODE-227589
|
||||
|
||||
This file is part of pstdout, a library used to launch and manage the
|
||||
standard output of multiple threads. For details, see
|
||||
http://www.llnl.gov/linux/.
|
||||
|
||||
Pstdout is free software; you can redistribute it and/or modify it under
|
||||
the terms of the GNU General Public License as published by the Free
|
||||
Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
Pstdout 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 Pstdout; if not, write to the Free Software Foundation, Inc.,
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
This notice is required to be provided under our contract with the
|
||||
U.S. Department of Energy (DOE). This work was produced at the
|
||||
University of California, Lawrence Livermore National Laboratory under
|
||||
Contract No. W-7405-ENG-48 with the DOE.
|
||||
|
||||
Neither the United States Government nor the University of California
|
||||
nor any of their employees, makes any warranty, express or implied, or
|
||||
assumes any liability or responsibility for the accuracy,
|
||||
completeness, or usefulness of any information, apparatus, product, or
|
||||
process disclosed, or represents that its use would not infringe
|
||||
privately-owned rights.
|
||||
|
||||
Also, reference herein to any specific commercial products, process,
|
||||
or services by trade name, trademark, manufacturer or otherwise does
|
||||
not necessarily constitute or imply its endorsement, recommendation,
|
||||
or favoring by the United States Government or the University of
|
||||
California. The views and opinions of authors expressed herein do not
|
||||
necessarily state or reflect those of the United States Government or
|
||||
the University of California, and shall not be used for advertising or
|
||||
product endorsement purposes.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification are specified in the file "COPYING".
|
236
source/freeipmi/usr/share/doc/freeipmi/INSTALL
Normal file
236
source/freeipmi/usr/share/doc/freeipmi/INSTALL
Normal file
@ -0,0 +1,236 @@
|
||||
Installation Instructions
|
||||
*************************
|
||||
|
||||
Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005 Free
|
||||
Software Foundation, Inc.
|
||||
|
||||
This file is free documentation; the Free Software Foundation gives
|
||||
unlimited permission to copy, distribute and modify it.
|
||||
|
||||
Basic Installation
|
||||
==================
|
||||
|
||||
These are generic installation instructions.
|
||||
|
||||
The `configure' shell script attempts to guess correct values for
|
||||
various system-dependent variables used during compilation. It uses
|
||||
those values to create a `Makefile' in each directory of the package.
|
||||
It may also create one or more `.h' files containing system-dependent
|
||||
definitions. Finally, it creates a shell script `config.status' that
|
||||
you can run in the future to recreate the current configuration, and a
|
||||
file `config.log' containing compiler output (useful mainly for
|
||||
debugging `configure').
|
||||
|
||||
It can also use an optional file (typically called `config.cache'
|
||||
and enabled with `--cache-file=config.cache' or simply `-C') that saves
|
||||
the results of its tests to speed up reconfiguring. (Caching is
|
||||
disabled by default to prevent problems with accidental use of stale
|
||||
cache files.)
|
||||
|
||||
If you need to do unusual things to compile the package, please try
|
||||
to figure out how `configure' could check whether to do them, and mail
|
||||
diffs or instructions to the address given in the `README' so they can
|
||||
be considered for the next release. If you are using the cache, and at
|
||||
some point `config.cache' contains results you don't want to keep, you
|
||||
may remove or edit it.
|
||||
|
||||
The file `configure.ac' (or `configure.in') is used to create
|
||||
`configure' by a program called `autoconf'. You only need
|
||||
`configure.ac' if you want to change it or regenerate `configure' using
|
||||
a newer version of `autoconf'.
|
||||
|
||||
The simplest way to compile this package is:
|
||||
|
||||
1. `cd' to the directory containing the package's source code and type
|
||||
`./configure' to configure the package for your system. If you're
|
||||
using `csh' on an old version of System V, you might need to type
|
||||
`sh ./configure' instead to prevent `csh' from trying to execute
|
||||
`configure' itself.
|
||||
|
||||
Running `configure' takes awhile. While running, it prints some
|
||||
messages telling which features it is checking for.
|
||||
|
||||
2. Type `make' to compile the package.
|
||||
|
||||
3. Optionally, type `make check' to run any self-tests that come with
|
||||
the package.
|
||||
|
||||
4. Type `make install' to install the programs and any data files and
|
||||
documentation.
|
||||
|
||||
5. You can remove the program binaries and object files from the
|
||||
source code directory by typing `make clean'. To also remove the
|
||||
files that `configure' created (so you can compile the package for
|
||||
a different kind of computer), type `make distclean'. There is
|
||||
also a `make maintainer-clean' target, but that is intended mainly
|
||||
for the package's developers. If you use it, you may have to get
|
||||
all sorts of other programs in order to regenerate files that came
|
||||
with the distribution.
|
||||
|
||||
Compilers and Options
|
||||
=====================
|
||||
|
||||
Some systems require unusual options for compilation or linking that the
|
||||
`configure' script does not know about. Run `./configure --help' for
|
||||
details on some of the pertinent environment variables.
|
||||
|
||||
You can give `configure' initial values for configuration parameters
|
||||
by setting variables in the command line or in the environment. Here
|
||||
is an example:
|
||||
|
||||
./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
|
||||
|
||||
*Note Defining Variables::, for more details.
|
||||
|
||||
Compiling For Multiple Architectures
|
||||
====================================
|
||||
|
||||
You can compile the package for more than one kind of computer at the
|
||||
same time, by placing the object files for each architecture in their
|
||||
own directory. To do this, you must use a version of `make' that
|
||||
supports the `VPATH' variable, such as GNU `make'. `cd' to the
|
||||
directory where you want the object files and executables to go and run
|
||||
the `configure' script. `configure' automatically checks for the
|
||||
source code in the directory that `configure' is in and in `..'.
|
||||
|
||||
If you have to use a `make' that does not support the `VPATH'
|
||||
variable, you have to compile the package for one architecture at a
|
||||
time in the source code directory. After you have installed the
|
||||
package for one architecture, use `make distclean' before reconfiguring
|
||||
for another architecture.
|
||||
|
||||
Installation Names
|
||||
==================
|
||||
|
||||
By default, `make install' installs the package's commands under
|
||||
`/usr/local/bin', include files under `/usr/local/include', etc. You
|
||||
can specify an installation prefix other than `/usr/local' by giving
|
||||
`configure' the option `--prefix=PREFIX'.
|
||||
|
||||
You can specify separate installation prefixes for
|
||||
architecture-specific files and architecture-independent files. If you
|
||||
pass the option `--exec-prefix=PREFIX' to `configure', the package uses
|
||||
PREFIX as the prefix for installing programs and libraries.
|
||||
Documentation and other data files still use the regular prefix.
|
||||
|
||||
In addition, if you use an unusual directory layout you can give
|
||||
options like `--bindir=DIR' to specify different values for particular
|
||||
kinds of files. Run `configure --help' for a list of the directories
|
||||
you can set and what kinds of files go in them.
|
||||
|
||||
If the package supports it, you can cause programs to be installed
|
||||
with an extra prefix or suffix on their names by giving `configure' the
|
||||
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
|
||||
|
||||
Optional Features
|
||||
=================
|
||||
|
||||
Some packages pay attention to `--enable-FEATURE' options to
|
||||
`configure', where FEATURE indicates an optional part of the package.
|
||||
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
|
||||
is something like `gnu-as' or `x' (for the X Window System). The
|
||||
`README' should mention any `--enable-' and `--with-' options that the
|
||||
package recognizes.
|
||||
|
||||
For packages that use the X Window System, `configure' can usually
|
||||
find the X include and library files automatically, but if it doesn't,
|
||||
you can use the `configure' options `--x-includes=DIR' and
|
||||
`--x-libraries=DIR' to specify their locations.
|
||||
|
||||
Specifying the System Type
|
||||
==========================
|
||||
|
||||
There may be some features `configure' cannot figure out automatically,
|
||||
but needs to determine by the type of machine the package will run on.
|
||||
Usually, assuming the package is built to be run on the _same_
|
||||
architectures, `configure' can figure that out, but if it prints a
|
||||
message saying it cannot guess the machine type, give it the
|
||||
`--build=TYPE' option. TYPE can either be a short name for the system
|
||||
type, such as `sun4', or a canonical name which has the form:
|
||||
|
||||
CPU-COMPANY-SYSTEM
|
||||
|
||||
where SYSTEM can have one of these forms:
|
||||
|
||||
OS KERNEL-OS
|
||||
|
||||
See the file `config.sub' for the possible values of each field. If
|
||||
`config.sub' isn't included in this package, then this package doesn't
|
||||
need to know the machine type.
|
||||
|
||||
If you are _building_ compiler tools for cross-compiling, you should
|
||||
use the option `--target=TYPE' to select the type of system they will
|
||||
produce code for.
|
||||
|
||||
If you want to _use_ a cross compiler, that generates code for a
|
||||
platform different from the build platform, you should specify the
|
||||
"host" platform (i.e., that on which the generated programs will
|
||||
eventually be run) with `--host=TYPE'.
|
||||
|
||||
Sharing Defaults
|
||||
================
|
||||
|
||||
If you want to set default values for `configure' scripts to share, you
|
||||
can create a site shell script called `config.site' that gives default
|
||||
values for variables like `CC', `cache_file', and `prefix'.
|
||||
`configure' looks for `PREFIX/share/config.site' if it exists, then
|
||||
`PREFIX/etc/config.site' if it exists. Or, you can set the
|
||||
`CONFIG_SITE' environment variable to the location of the site script.
|
||||
A warning: not all `configure' scripts look for a site script.
|
||||
|
||||
Defining Variables
|
||||
==================
|
||||
|
||||
Variables not defined in a site shell script can be set in the
|
||||
environment passed to `configure'. However, some packages may run
|
||||
configure again during the build, and the customized values of these
|
||||
variables may be lost. In order to avoid this problem, you should set
|
||||
them in the `configure' command line, using `VAR=value'. For example:
|
||||
|
||||
./configure CC=/usr/local2/bin/gcc
|
||||
|
||||
causes the specified `gcc' to be used as the C compiler (unless it is
|
||||
overridden in the site shell script). Here is a another example:
|
||||
|
||||
/bin/bash ./configure CONFIG_SHELL=/bin/bash
|
||||
|
||||
Here the `CONFIG_SHELL=/bin/bash' operand causes subsequent
|
||||
configuration-related scripts to be executed by `/bin/bash'.
|
||||
|
||||
`configure' Invocation
|
||||
======================
|
||||
|
||||
`configure' recognizes the following options to control how it operates.
|
||||
|
||||
`--help'
|
||||
`-h'
|
||||
Print a summary of the options to `configure', and exit.
|
||||
|
||||
`--version'
|
||||
`-V'
|
||||
Print the version of Autoconf used to generate the `configure'
|
||||
script, and exit.
|
||||
|
||||
`--cache-file=FILE'
|
||||
Enable the cache: use and save the results of the tests in FILE,
|
||||
traditionally `config.cache'. FILE defaults to `/dev/null' to
|
||||
disable caching.
|
||||
|
||||
`--config-cache'
|
||||
`-C'
|
||||
Alias for `--cache-file=config.cache'.
|
||||
|
||||
`--quiet'
|
||||
`--silent'
|
||||
`-q'
|
||||
Do not print messages saying which checks are being made. To
|
||||
suppress all normal output, redirect it to `/dev/null' (any error
|
||||
messages will still be shown).
|
||||
|
||||
`--srcdir=DIR'
|
||||
Look for the package's source code in directory DIR. Usually
|
||||
`configure' can determine that directory automatically.
|
||||
|
||||
`configure' also accepts some other, not widely useful, options. Run
|
||||
`configure --help' for more details.
|
||||
|
2451
source/freeipmi/usr/share/doc/freeipmi/NEWS
Normal file
2451
source/freeipmi/usr/share/doc/freeipmi/NEWS
Normal file
File diff suppressed because it is too large
Load Diff
270
source/freeipmi/usr/share/doc/freeipmi/README
Normal file
270
source/freeipmi/usr/share/doc/freeipmi/README
Normal file
@ -0,0 +1,270 @@
|
||||
FreeIPMI - Copyright (C) 2003-2015 FreeIPMI Core Team
|
||||
|
||||
FreeIPMI
|
||||
--------
|
||||
|
||||
FreeIPMI provides in-band and out-of-band IPMI software based on the
|
||||
IPMI v1.5/2.0 specification.
|
||||
|
||||
What is IPMI?
|
||||
-------------
|
||||
|
||||
The IPMI specification defines a set of interfaces for platform
|
||||
management. It is utilized by a wide variety of vendors for system
|
||||
management on motherboards. The features of IPMI that most users will
|
||||
be interested in are sensor monitoring, remote power control,
|
||||
serial-over-LAN (SOL), and system debugging. The FreeIPMI tools and
|
||||
libraries listed below should provide users with the ability to access
|
||||
and utilize these features.
|
||||
|
||||
Getting Started with IPMI
|
||||
-------------------------
|
||||
|
||||
IPMI can be used in-band (i.e. running on a machine locally) or
|
||||
out-of-band (i.e. connecting remotely).
|
||||
|
||||
Most FreeIPMI tools can operate in-band by using one of the in-band
|
||||
drivers included. These in-band drivers include a userspace KCS
|
||||
interface driver, a SSIF driver through the Linux SSIF device
|
||||
(i.e. /dev/i2c-0), the OpenIPMI Linux kernel driver (i.e. /dev/ipmi0),
|
||||
the Sun/Solaris BMC driver (i.e. /dev/bmc), and the Intel DCMI/MEI
|
||||
driver (i.e. /dev/dcmi). If your system requires the use of installed
|
||||
drivers, those appropriate modules must be installed ahead of time.
|
||||
However, most systems should automatically load these drivers when
|
||||
appropriate.
|
||||
|
||||
Under most scenarios, the FreeIPMI tools should automatically discover
|
||||
which in-band interface to use and the proper settings to use. Users
|
||||
may execute the tools on the command line to begin using them. Some
|
||||
motherboards may require you to determine driver type, addresses,
|
||||
paths, etc. on your own and pass them as command line options to the
|
||||
tools. You may use ipmi-locate(8) to help determine this information.
|
||||
Other tools such as dmidecode(8) may also provide this information.
|
||||
|
||||
To use IPMI out-of-band with tools such as ipmipower(8) or
|
||||
ipmi-sensors(8), the remote machine's BMC must first be configured for
|
||||
out of band communication. Typically, this involves setting a
|
||||
username, password, IP address, MAC address, and a few other
|
||||
parameters. This can be done using the tool ipmi-config(8).
|
||||
Additional information on how to configure with ipmi-config(8) can be
|
||||
found in the ipmi-config.conf(5) manpage. Some vendors may
|
||||
pre-configure their motherboards with default values so that
|
||||
ipmi-config(8) can be used remotely to configure the machine. However,
|
||||
most of the time, the BMC must be configured in-band before
|
||||
out-of-band access can be allowed (for example, the correct IP address
|
||||
and MAC address must be configured).
|
||||
|
||||
In order to remotely connect to a machine, you typically must specify
|
||||
the host, username, and password for the tool in order to connect.
|
||||
Depending on configuration settings, a K_g key, privilege level,
|
||||
authentication type, cipher suite id, or protocol version may need to
|
||||
be specified.
|
||||
|
||||
Some vendors may have not implemented IPMI properly and a workaround
|
||||
must be specified into FreeIPMI to ensure the tool can execute
|
||||
properly. For example, a fair number of vendors have populated their
|
||||
FRU records with invalid checksums. To properly ignore these set of
|
||||
checksums a 'skipchecks' workaround has been added to ipmi-fru(8).
|
||||
Please see each of the tool manpages to see a list of available
|
||||
workarounds.
|
||||
|
||||
Additional information, examples, and general trouble-shooting can be
|
||||
found in each of the tool manpages.
|
||||
|
||||
General Use
|
||||
-----------
|
||||
|
||||
The primary tools that most users of FreeIPMI will be interested in
|
||||
for system management are the following:
|
||||
|
||||
Ipmi-sensors
|
||||
|
||||
A tool to read IPMI sensor readings to aid in system monitoring.
|
||||
|
||||
Ipmi-sel
|
||||
|
||||
A tool to read and manage IPMI System Event Log (SEL) records to aid
|
||||
in system debugging.
|
||||
|
||||
Ipmipower
|
||||
|
||||
A tool for remote power control.
|
||||
|
||||
Ipmiconsole
|
||||
|
||||
A tool for Serial-over-Lan (SOL) console access.
|
||||
|
||||
Many other tools and libraries are listed below that cover additional
|
||||
features and areas of IPMI.
|
||||
|
||||
Additional information, examples, and general trouble-shooting can be
|
||||
found in each of the tool manpages.
|
||||
|
||||
Configuration
|
||||
-------------
|
||||
|
||||
In order to avoid typing in a long list of command line options to
|
||||
specify IPMI communication requirements everytime a command is
|
||||
executed (e.g. driver paths, usernames, passwords, etc.), an
|
||||
alternate set of default values can be set for most FreeIPMI
|
||||
tools in the FreeIPMI configuration file. See freeipmi.conf(5)
|
||||
for more information.
|
||||
|
||||
HPC Support
|
||||
-----------
|
||||
|
||||
Much of FreeIPMI was written with HPC support in mind. Ipmi-config(8)
|
||||
comes with file input/output support so that configuration can be
|
||||
copied and verified across nodes in a cluster. Most tools (like
|
||||
ipmipower(8) and ipmi-sensors(8)) come with hostrange support so
|
||||
multiple hosts can be specified on the command line at the same time
|
||||
and IPMI can be executed against the hosts in parallel. See tool
|
||||
manpages for more information. Also see the document
|
||||
freeipmi-hostrange.txt for detailed usage and explanation.
|
||||
Ipmi-sensors(8) and the libipmimonitoring(3) library support the
|
||||
ability to interpret sensor readings as well as just reporting them.
|
||||
By mapping sensor readings into NOMINAL, WARNING, or CRITICAL states,
|
||||
it makes monitoring sensors easier across large numbers of nodes.
|
||||
|
||||
Development
|
||||
-----------
|
||||
|
||||
For information on the libraries that can be used to program IPMI
|
||||
applications with, please see, please see libfreeipmi(3),
|
||||
libipmiconsole(3), libipmimonitoring(3), and libipmidetect(3). Or
|
||||
see the document freeipmi-libraries.txt.
|
||||
|
||||
Project Tools
|
||||
-------------
|
||||
|
||||
The following tools are distributed and supported by FreeIPMI.
|
||||
|
||||
Bmc-info
|
||||
|
||||
A tool to read information about a BMC such as device version numbers,
|
||||
device support, and globally unique IDs (guids).
|
||||
|
||||
Bmc-watchdog
|
||||
|
||||
A tool/daemon to manage a BMC Watchdog. This tool is typically used
|
||||
for system timeout management and automatic system restarts in the
|
||||
event of a system crash.
|
||||
|
||||
Ipmi-chassis
|
||||
|
||||
A tool to manage/monitor a chassis, such as chassis power,
|
||||
identification (i.e. LED control), and status.
|
||||
|
||||
Ipmi-fru
|
||||
|
||||
A tool to read field replaceable unit (FRU) information from a
|
||||
motherboard/machine.
|
||||
|
||||
Ipmi-sel
|
||||
|
||||
A tool to read and manage IPMI System Event Log (SEL) records. SEL
|
||||
records store system event information and may be useful for debugging
|
||||
problems.
|
||||
|
||||
Ipmi-sensors
|
||||
|
||||
A tool to read IPMI sensor readings and sensor data repository (SDR)
|
||||
information.
|
||||
|
||||
Ipmipower
|
||||
|
||||
A tool for remote power control.
|
||||
|
||||
Ipmiconsole
|
||||
|
||||
A tool for Serial-over-Lan (SOL) console access.
|
||||
|
||||
Ipmi-config
|
||||
|
||||
A tool to configure BMC and IPMI information. In can be used to
|
||||
configured usernames, passwords, networking information, security,
|
||||
Serial-over-LAN (SOL), Platform Event Filtering (PEF), boot devices,
|
||||
power restoration policy, sensor thresholds, sensor events, and many
|
||||
more configuration options.
|
||||
|
||||
Ipmi-raw
|
||||
|
||||
A tool that provides hex input/output of IPMI commands.
|
||||
|
||||
Ipmi-locate
|
||||
|
||||
A tool that can probe for information about the location of a BMC
|
||||
device, such as device addresses.
|
||||
|
||||
Ipmi-pet
|
||||
|
||||
A tool to parse and interpret Platform Event Traps (PET).
|
||||
|
||||
Ipmi-dcmi
|
||||
|
||||
A tool to perform Data Center Manageability Interface (DCMI) IPMI
|
||||
extension commands. Supports extensions for asset management and
|
||||
power usage management.
|
||||
|
||||
Bmc-device
|
||||
|
||||
A tool to perform advanced BMC commands, such as resetting the BMC,
|
||||
configuring ACPI, configuring SDR/SEL time, manually generating
|
||||
events, re-arming sensors, and configuring manufacturer settings.
|
||||
|
||||
Ipmiping
|
||||
|
||||
An IPMI ping tool for debugging.
|
||||
|
||||
Rmcpping
|
||||
|
||||
A RMCP ping tool for debugging.
|
||||
|
||||
Ipmi-oem
|
||||
|
||||
An IPMI tool for OEM specific commands.
|
||||
|
||||
Ipmidetect/Ipmidetectd
|
||||
|
||||
A tool and daemon for IPMI node detection.
|
||||
|
||||
Ipmiseld
|
||||
|
||||
A daemon that regularly polls the SEL and stores the events to the
|
||||
local syslog.
|
||||
|
||||
Additional information, examples, and general trouble-shooting can be
|
||||
found in each of the tool manpages.
|
||||
|
||||
Project Libraries
|
||||
-----------------
|
||||
|
||||
The following libraries are distributed and supported by FreeIPMI.
|
||||
|
||||
Libfreeipmi
|
||||
|
||||
A C library that includes KCS, SSIF, OpenIPMI Linux, and Solaris BMC
|
||||
drivers, IPMI 1.5 and IPMI 2.0 LAN communication interfaces, IPMI
|
||||
packet building utilities, IPMI command utilities, and utilities for
|
||||
reading/interpreting/managing IPMI.
|
||||
|
||||
Libipmiconsole
|
||||
|
||||
A library for Serial-over-Lan (SOL) console access. SOL console
|
||||
access is abstracted into a file descriptor interface, so users may
|
||||
read and write console data through a file descriptor.
|
||||
|
||||
Libipmimonitoring
|
||||
|
||||
A library for sensor monitoring that abstracts away most IPMI details.
|
||||
|
||||
Libipmidetect
|
||||
|
||||
A library for IPMI node detection.
|
||||
|
||||
Help, Questions, etc.
|
||||
---------------------
|
||||
|
||||
Please send comments, help, and questions to the freeipmi mailing
|
||||
lists, freeipmi-users@gnu.org and freeipmi-devel@gnu.org. Or see
|
||||
our webpage at http://www.gnu.org/software/freeipmi/.
|
6
source/freeipmi/usr/share/doc/freeipmi/README.argp
Normal file
6
source/freeipmi/usr/share/doc/freeipmi/README.argp
Normal file
@ -0,0 +1,6 @@
|
||||
Local FreeIPMI argp modified from argp-standalone-1.3. Many
|
||||
configure.ac autoconfing for the local argp library taken from
|
||||
argp-standalone as well.
|
||||
|
||||
argp-standalone taken from glibc from Neil Moller.
|
||||
http://www.lysator.liu.se/~nisse/misc/
|
107
source/freeipmi/usr/share/doc/freeipmi/README.build
Normal file
107
source/freeipmi/usr/share/doc/freeipmi/README.build
Normal file
@ -0,0 +1,107 @@
|
||||
Building/Install from source
|
||||
----------------------------
|
||||
|
||||
The instructions below (modified from the INSTALL file) should
|
||||
work for most people.
|
||||
|
||||
1. `cd' to the directory containing the package's source code and type
|
||||
`./configure' to configure the package for your system.
|
||||
|
||||
Running `configure' takes awhile. While running, it prints some
|
||||
messages telling which features it is checking for. If your system
|
||||
requires additional packages and/or libraries in order for FreeIPMI
|
||||
to be built, appropriate messages should be displayed. These
|
||||
packages and/or libraries should be installed and `./configure' should
|
||||
be executed again.
|
||||
|
||||
2. Once `./configure' has succeeded, type `make' to compile the
|
||||
package.
|
||||
|
||||
3. Type `make install' to install the programs and any data files and
|
||||
documentation.
|
||||
|
||||
You may need to be root in order for files to be installed into
|
||||
the proper locations on your system.
|
||||
|
||||
By default files will typically be installed in /usr/local (binaries
|
||||
in /usr/local/bin, libraries in /usr/local/lib, configuration files in
|
||||
/usr/local/etc/, etc.). To install into the more common locations
|
||||
such as /usr/bin, /usr/lib/, /etc, etc. the options passed into
|
||||
`./configure' must be adjusted.
|
||||
|
||||
The following set of options and settings are suitable for most Linux
|
||||
systems.
|
||||
|
||||
--prefix=/usr --exec-prefix=/usr --sysconfdir=/etc
|
||||
--localstatedir=/var --mandir=/usr/share/man
|
||||
|
||||
Your mileage may vary depending on your system.
|
||||
|
||||
If you install the binaries or libraries in non-standard locations
|
||||
(e.g. /usr/local or /opt), you may have to update other system
|
||||
configuration to find the files and libraries. For example, in Linux
|
||||
you may need to update your PATH or LD_LIBRARY_PATH environment
|
||||
variables. Or you may need to update your /etc/ld.so.conf files and
|
||||
run ldconfig(8) to find libraries globally. This is highly dependent
|
||||
on your operating system.
|
||||
|
||||
Building RPMs
|
||||
-------------
|
||||
|
||||
For most people you can build RPMs one of two ways.
|
||||
|
||||
From the source:
|
||||
|
||||
rpmbuild -ta freeipmi-X.Y.Z.tar.gz
|
||||
|
||||
From the source rpm:
|
||||
|
||||
rpmbuild --rebuild freeipmi-X.Y.Z-1.src.rpm
|
||||
|
||||
Depending on your default RPM build environment, you may need to be root
|
||||
in order for RPMs to be stored in the default locations.
|
||||
|
||||
After the RPMs are built, you may install them the normal way:
|
||||
|
||||
rpm -i freeipmi-X.Y.Z.ARCH.rpm
|
||||
|
||||
Additional configure options
|
||||
----------------------------
|
||||
|
||||
The following configure options are available to users for more unique
|
||||
compilation requirements and environments.
|
||||
|
||||
--without-encryption
|
||||
|
||||
This option disables compilation of encryption support in FreeIPMI.
|
||||
Most notably, this disables encryption support when doing out of band
|
||||
IPMI 2.0 communication.
|
||||
|
||||
This option may be particularly useful in embedded environments that
|
||||
do not have the libraries needed to compile encryption support.
|
||||
|
||||
--with-dont-check-for-root
|
||||
|
||||
When running tools inband, root access is normally required. In some
|
||||
systems, this may not be desired. This options removes the check for
|
||||
root access in FreeIPMI tools.
|
||||
|
||||
--without-random-device
|
||||
|
||||
This option disables checks and use of /dev/urandom and /dev/random.
|
||||
This may be required for embededded systems without these devices.
|
||||
|
||||
--with-pkgconfig-dir
|
||||
|
||||
This option can configure an alternate default pkgconfig directory.
|
||||
|
||||
--with-bmc-watchdog-logfile
|
||||
|
||||
This option can configure an alternate default bmc-watchdog log
|
||||
directory.
|
||||
|
||||
--with-ipmi-monitoring-sdr-cache-dir
|
||||
|
||||
This option can configure an alternate default libipmimonitoring SDR
|
||||
cache directory.
|
||||
|
25
source/freeipmi/usr/share/doc/freeipmi/README.openipmi
Normal file
25
source/freeipmi/usr/share/doc/freeipmi/README.openipmi
Normal file
@ -0,0 +1,25 @@
|
||||
The Linux OpenIPMI driver is often loaded via the /etc/init.d/ipmi
|
||||
setup script. If your distribution/environment does not have this
|
||||
script, the following script can be used to load/unload the driver.
|
||||
|
||||
#!/bin/sh
|
||||
|
||||
/sbin/modprobe ipmi_devintf
|
||||
|
||||
maj=`cat /proc/devices | awk '/ipmidev/{print $1}'`
|
||||
if [ -c /dev/ipmi0 ]
|
||||
then
|
||||
rm -f /dev/ipmi0
|
||||
/bin/mknod /dev/ipmi0 c $maj 0
|
||||
else
|
||||
/bin/mknod /dev/ipmi0 c $maj 0
|
||||
fi
|
||||
|
||||
/sbin/modprobe ipmi_si
|
||||
|
||||
# do stuff
|
||||
|
||||
/sbin/rmmod ipmi_si
|
||||
/sbin/rmmod ipmi_devintf
|
||||
/sbin/rmmod ipmi_msghandler
|
||||
|
398
source/freeipmi/usr/share/doc/freeipmi/TODO
Normal file
398
source/freeipmi/usr/share/doc/freeipmi/TODO
Normal file
@ -0,0 +1,398 @@
|
||||
*** - priority for future major release
|
||||
XXX - priority for future minor release
|
||||
ooo - priority code cleanup that should be done
|
||||
|
||||
branches to merge
|
||||
-----------------
|
||||
|
||||
to test
|
||||
-------
|
||||
ipmi-oem get/set bmc services for intels2600jf
|
||||
|
||||
FreeIPMI FAQ/documentation
|
||||
--------------------------
|
||||
|
||||
FreeIPMI general
|
||||
----------------
|
||||
- oem extensions
|
||||
- test/check handle firmware versions
|
||||
- document firmware versions in docs/ or mans/?
|
||||
- build system
|
||||
- single Makefile, so parallel build faster?
|
||||
- consider moving #defines to #enums globally for easier debugging w/
|
||||
gdb
|
||||
- event handling api/mechanism
|
||||
- loop/try again on NODE_BUSY errors (***)
|
||||
- treat more like network busy than error?
|
||||
- option for alternate behavior?
|
||||
- update text documents to texinfo (ooo)
|
||||
- OEM extensions generalized
|
||||
- generalize "+" syntax in ipmipower to all FreeIPMI tools?
|
||||
- or use extra option?
|
||||
- audit/cleanup memsets, use sizeof() when appropriate
|
||||
|
||||
FreeIPMI new stuff
|
||||
------------------
|
||||
- ASF - maybe support base protocol stuff like rmcp?
|
||||
- picmg hpm/hpmi.1 standard - defines ipmi firmware update stuff
|
||||
- http://www.picmg.org/v2internal/specifications.htm
|
||||
- pmbus.org
|
||||
- doable via FreeIPMI? Can pass through Smbus to PmBus to do power control monitoring?
|
||||
- server simulator
|
||||
- support testing at scale
|
||||
- test larger set of corner cases, possibilities, workarounds, etc.
|
||||
- different SDR combos
|
||||
- different SEL entries
|
||||
- all permutations of sensors, etc.
|
||||
- config tools for (***)
|
||||
- intel node manager (***)
|
||||
- maybe not? Intel NM does not configure via a standard
|
||||
checkout/commit fashion. Policies are created, then removed.
|
||||
In addition, policies must be disabled before they can be
|
||||
reconfigured.
|
||||
|
||||
some of these mechanisms could be hidden (i.e. if user changed
|
||||
any configuration, disable policy, then re-configure it, then
|
||||
re-enable it), but some would require blatant assumptions, such
|
||||
as number of policies to output into the --checkout .conf file.
|
||||
- firmware firewall
|
||||
- other config options in ipmi-oem
|
||||
- inventec mac/shared nic stuff
|
||||
- will reboot BMC, is big problem
|
||||
- fru library like libipmimonitoring
|
||||
- ipmi proxy
|
||||
- capture lan and do inband, maybe useful if you have dedicated port
|
||||
that can't be seen by the network, and you don't have enough switch
|
||||
ports to have both plugged up to the network.
|
||||
- OCP IPMI extensions
|
||||
- FRU record
|
||||
- command extensions
|
||||
|
||||
FreeIPMI maybe stuff
|
||||
--------------------
|
||||
redo ipmipower/ipmiconole using phi accrual failure detector algorithm?
|
||||
|
||||
library general
|
||||
---------------
|
||||
- merge all libs into one? would aid debian packaging.
|
||||
- make package layout simpler?
|
||||
- make .so-naming consistent?
|
||||
- merge all except libipmidetect?
|
||||
|
||||
libfreeipmi
|
||||
-----------
|
||||
- forwarded command support (errata 35b)
|
||||
- support serial interface?
|
||||
- have funcs that return buflen return ssize_t?, input should be
|
||||
size_t and void *? like read(), write()?
|
||||
- xRC4
|
||||
- on Quanta S99Q/Dell FS12-TY
|
||||
- Began on branches/xrc, from the branch ChangeLog
|
||||
- xRC has been dropped for the time being. After researching xRC,
|
||||
ultimately the current architecture of all of FreeIPMI is
|
||||
ill-suited for it. As a stream based encryption, too much
|
||||
architecture of FreeIPMI has been based on individual packets
|
||||
being sent/recved/encrypted/decrypted independently of each other.
|
||||
Most of xRC implementation is doable with some hacks. For
|
||||
example, the initialization vector and data offsets could be
|
||||
passed as in/out parameters to the assemble/disassemble packet
|
||||
functions. The Krc could be re-generated as needed if the
|
||||
initialization vector had been noticed to change (or data offset
|
||||
== 0). However, the deal break was an "out-of-band" requirement
|
||||
for implementation of the suspend/resume payload encryption. In
|
||||
particular, if a packet from the BMC that had a new initialization
|
||||
vector was dropped on the network, the client would need to send a
|
||||
"suspend/resume payload encryption" packet to tell the BMC to
|
||||
start over again before doing a resend. Architecturally, this was
|
||||
the part that would have been VERY difficult to implement across
|
||||
FreeIPMI as the client would suddenly be required to understand
|
||||
the assemble/disassemble subtleties underneath and send the packet
|
||||
on its own.
|
||||
|
||||
libfreeipmi-fiid
|
||||
----------------
|
||||
- rearch for speed to not use strings, use macros + strings in internal. So something like:
|
||||
{1, FOO_MACRO, "FIELD_NAME", FLAGS}
|
||||
so avoid string compares for get/set/compare/etc., but have available for debug output.
|
||||
|
||||
libfreeipmi-driver
|
||||
------------------
|
||||
- kcs/ssif/etc
|
||||
- how to deal with servers w/ multiple BMCs (***)
|
||||
- need knew inband option on tools?
|
||||
- ssif userspace implementation
|
||||
- see ipmiutil for example
|
||||
|
||||
|
||||
libfreeipmi-api
|
||||
---------------
|
||||
--fail-if-ipmi-not-detected
|
||||
- would need inband flag - discover vs. not-discover on locate
|
||||
- Ultimately impossible to do correctly, vendor need not store
|
||||
anything in acpi/smbios/etc.
|
||||
- User can use ipmi-locate if they really want to probe?
|
||||
|
||||
libfreeipmi-interpret
|
||||
---------------------
|
||||
- handle sensor/sel events outside of spec - configurable in some way?
|
||||
- some vendors have extra bits not in spec
|
||||
- handle sensor/sel events differently for different sensors on same
|
||||
motherboard
|
||||
- e.g.
|
||||
SENSORFAULT | State Deasserted
|
||||
SENSOROK | State Asserted
|
||||
- need mechanism to specify record ids/sensor number/entity/generator?
|
||||
- some sensor interpretations dependent on sensor number, way to add?
|
||||
- QSSCS4R SMI Timeout & Power Throttled sensors
|
||||
- same event-type/sensor-type/etc., but different interpretation??
|
||||
|
||||
libfreeipmi-sdr
|
||||
---------------
|
||||
|
||||
libfreeipmi-fru
|
||||
---------------
|
||||
|
||||
libfreeipmi-sel
|
||||
---------------
|
||||
- cleanup parsing functions
|
||||
|
||||
libipmiconsole
|
||||
--------------
|
||||
- "learn" workarounds function - to figure out workaround flags for user support simultaneous SOL sessions
|
||||
- very hard, almost impossible to do??
|
||||
- "check" function, to see if session currently running
|
||||
- engine_submit() - try and move initialization/setup code into engine
|
||||
to reduce time spent in engine_submit(), this is the core loop used by
|
||||
conman and other console software. (***)
|
||||
- use conditional signals w/ garbage collector
|
||||
- should work, it's not like the poll loop from before
|
||||
- buffer character input chars and send in chunks as necessary (nagle like)
|
||||
- perhaps ~100ms of character data to reduce packets send?
|
||||
- as far as I can tell, most ssh implementations send 1 char at a time,
|
||||
to most users that libipmiconsole will get similar interaction.
|
||||
|
||||
libipmimonitoring
|
||||
-----------------
|
||||
- select sensors via sensor name?
|
||||
- deal w/ motherboards with slightly different SDRs
|
||||
- but some mobos have sensor name == each other, so what is the purpose?
|
||||
- would need to also add sensor number with it??
|
||||
- also to deal w/ probability SDR's change on some mobos
|
||||
- how specify record ids w/ sharing
|
||||
- entity sensor names
|
||||
|
||||
tools common
|
||||
------------
|
||||
- entity ids 0x41, 0x42, are "identical" to other entries
|
||||
- should map them together for --entity-id-names output in
|
||||
ipmi-sensors and ipmi-sel?
|
||||
- hostrange exclude hosts option
|
||||
- not really necessary in FreeIPMI? in pdsh, the reason you really
|
||||
need this is because you can do -a (all) or -g (genders
|
||||
attribute/netgroups attribute).
|
||||
- if user inputs hostname of localhost, do inband not outofband?
|
||||
- config via environment variables too - like config file?
|
||||
- config file - support workarounds/etc. for heterogenous clusters
|
||||
- maybe?
|
||||
- workaround-flags BLAH hosts[1-3]
|
||||
- workaround-flags FOO hosts[5-9]
|
||||
- read/store username/password/k_g out of file encrypted so it's not
|
||||
sitting there in the clear
|
||||
- convenience function to loop infinite times necessary to expand (***)
|
||||
hostrange until done.
|
||||
- i.e. node[0-4]-[3-10]
|
||||
- hack is in ipmipower right now for 2s, no where else supported
|
||||
|
||||
ipmi-sensors
|
||||
------------
|
||||
- split vendor files into motherboard files? Is getting big.
|
||||
- option to check sensor thresholds manually instead of event bitmask
|
||||
- some mobos seem to set flags incorrectly
|
||||
- column for sensor number?
|
||||
- useful for shared sensor output?
|
||||
- how to select specific shared sensor on commad line, can't do normally (***)
|
||||
- i.e. perhaps need to do record-id and something else, like
|
||||
-r 5.2 to indicate record id 5 and offset 2.
|
||||
- issue for libipmimonitoring too?
|
||||
- remove shared sensor option
|
||||
- make default like it should be
|
||||
- this really ties to many other shared sensor issues
|
||||
- do not error out on unexpected sensor_read errors, move on? (***)
|
||||
- i.e. unexpected completion code error?
|
||||
- require rework of sensor-read lib? How detect session timeout, etc.
|
||||
- make 'discretereading' on by default?
|
||||
- it does not appear that to be illegal by IPMI spec.
|
||||
|
||||
ipmi-sel
|
||||
--------
|
||||
- binary search like mechanism to make --display faster
|
||||
- support kernel panic OEM event 0xF0
|
||||
- can't make work, is just my motherboard? Or perhaps specific panics, not test panics?
|
||||
- redhat doesn't enable by default, probably don't need to worry about this much
|
||||
- see http://cateee.net/lkddb/web-lkddb/IPMI_PANIC_STRING.html
|
||||
- see http://www.cyberciti.biz/tips/compiling-linux-kernel-module.html
|
||||
- non-uncommon for motherboards to output events both directions of
|
||||
crossing threshold. Can be confusing b/c assert/deassert not output
|
||||
by default. Should alter output in these cases?
|
||||
- --delete-date-range (***)
|
||||
- ganglia plugin?
|
||||
- nagios plugin?
|
||||
|
||||
ipmipower
|
||||
--------
|
||||
- mechanism to parallelize oem extension options ranges. (***)
|
||||
- i.e. on myhost+[0-3]. Simultaneous power off slots 0-3.
|
||||
- perhaps --serialize-same-host option
|
||||
- Will require larger re-architecture, create additional sockets per
|
||||
power control attempt. The constant sockets created in the
|
||||
ipmipower_connection structs limit this for the time being.
|
||||
|
||||
ipmi-fru
|
||||
--------
|
||||
- write FRU data option
|
||||
- for OEM integrators
|
||||
- or should be in bmc-device?
|
||||
|
||||
bmc-device
|
||||
--------
|
||||
- set bmc global enables
|
||||
- really should be done by firmware or distro
|
||||
- or only as needed in ipmi-oem per vendor need?
|
||||
- (NOT CONFIRMED) get auxiliary log status
|
||||
- set sensor reading (***)
|
||||
|
||||
bmc-watchdog
|
||||
------------
|
||||
Log to normal syslog, not to bmc log
|
||||
- legacy from when bmc-wachdog in cron, not daemon, and would log
|
||||
every bmc reset
|
||||
cleanup to finally use libfreeipmi or common tool functions
|
||||
|
||||
ipmiconsole
|
||||
-----------
|
||||
- support other escape codes like w/ &D
|
||||
- support F1-F12 suggested by user
|
||||
|
||||
ipmi-config
|
||||
------------
|
||||
- make tools prefix sections w/ appropriate prefixes to allow
|
||||
for checking of what sections should be used??
|
||||
- i.e. BMC, CHASSIS, PEF, etc.
|
||||
- probably not, too much backwords compatability crap to handle.
|
||||
Also would make code ugly as hell to make all duplicate sections.
|
||||
should do database of what sections go to what categories
|
||||
- core: support ipv4 mapped ipv6 addresses?
|
||||
- until in spec, no point, maybe deal in ipmi-oem?
|
||||
- chassis, pef & sensors: conf.5 manpage
|
||||
- chassis: (NEVER TESTED) panel button config - need hardware w/ this
|
||||
- chassis: (NEVER TESTED) device instance selector
|
||||
- sensors: instructions for each section??
|
||||
- sensors: when value cannot be encodd accurately, report numbers that can work
|
||||
|
||||
ipmi-oem
|
||||
--------
|
||||
dell poweredge lcd support?
|
||||
|
||||
ipmiseld
|
||||
--------
|
||||
send e-mail on alert noticed/received?
|
||||
|
||||
contributions
|
||||
-------------
|
||||
- perl extensions
|
||||
- api support?
|
||||
- raw support?
|
||||
- python extensions
|
||||
- api support?
|
||||
- raw support?
|
||||
- zenoss plugin
|
||||
- powerman
|
||||
- let ipmipower return error messages to user in some way
|
||||
- intead of "command completed successfully" all the time
|
||||
|
||||
RELEASE TODOS - Do on every release
|
||||
-----------------------------------
|
||||
Email freeipmi-users && freeipmi-devel
|
||||
Email info-gnu@gnu.org
|
||||
Update savannah announcements
|
||||
Update freshmeat.net
|
||||
Update freeipmi webpage
|
||||
Update opendesktop.org page
|
||||
Update ohloh page
|
||||
Update to softpedia??
|
||||
Update fsf directory info.
|
||||
Upload to ftp.gluster.com
|
||||
Upload to ftp.gnu.org
|
||||
|
||||
Workaround for CVE
|
||||
|
||||
perl -pe 's/perm -777 -exec chmod a\+rwx/perm -755 -exec chmod 755 /' Makefile.in > Makefile.in.new
|
||||
|
||||
Workaround for CVE 2012-3386
|
||||
|
||||
perl -pe 's/chmod a\+w \$\(distdir\)/chmod u\+w \$\(distdir\)/' Makefile.in > Makefile.in.new
|
||||
|
||||
info-gnu@gnu.org template e-mail
|
||||
|
||||
FreeIPMI X.X.X has been released. It can be downloaded at:
|
||||
|
||||
http://www.gnu.org/software/freeipmi/download.html
|
||||
|
||||
What is IPMI?
|
||||
|
||||
The Intelligent Platform Management Interface (IPMI) specification
|
||||
defines a set of interfaces for platform management. It is
|
||||
implemented by a large number of hardware manufacturers to support
|
||||
system management on motherboards. The features of IPMI that most
|
||||
users will be interested in are sensor monitoring (e.g. CPU
|
||||
temperatures, fan speeds), remote power control, and serial-over-LAN
|
||||
(SOL).
|
||||
|
||||
What is FreeIPMI?
|
||||
|
||||
FreeIPMI provides in-band and out-of-band IPMI software based on the
|
||||
IPMI v1.5/2.0 specification. FreeIPMI provides tools and libraries
|
||||
for users to access and read IPMI sensor readings, system event log
|
||||
(SEL) entries, serial-over-LAN (SOL), remote power control functions,
|
||||
field replaceable unit (FRU) device information, and more. More
|
||||
information about FreeIPMI can be found at the FreeIPMI webpage at:
|
||||
|
||||
http://www.gnu.org/software/freeipmi/index.html
|
||||
|
||||
Release X.X.X Changes
|
||||
---------------------
|
||||
|
||||
To do this:
|
||||
|
||||
1. The file to be distributed (for example, foo.tar.gz).
|
||||
|
||||
2. Detached GPG binary signature for (1), (for example, foo.tar.gz.sig).
|
||||
|
||||
gpg -b foo.tar.gz
|
||||
|
||||
3. A clearsigned directive file, (for example, foo.tar.gz.directive.asc).
|
||||
|
||||
Format is:
|
||||
|
||||
version: 1.1
|
||||
directory: freeipmi
|
||||
filename: freeipmi-0.X.X.tar.gz
|
||||
comment: FreeIPMI 0.X.X
|
||||
|
||||
gpg --clearsign foo.tar.gz.directive
|
||||
|
||||
4. Upload the file(s) via anonymous ftp to ftp-upload.gnu.org. If the
|
||||
upload is destined for ftp.gnu.org, place the file(s) in the
|
||||
/incoming/ftp directory. If the upload is destined for alpha.gnu.org,
|
||||
place the file(s) in the /incoming/alpha directory.
|
||||
|
||||
Uploads are processed every five minutes. Uploads that are in progress
|
||||
while the upload processing script is running are handled properly, so
|
||||
do not worry about the timing of your upload. Uploaded files that
|
||||
belong to an incomplete triplet are deleted automatically after 24
|
||||
hours.
|
||||
|
||||
Your designated upload email addresses (see Automated Upload
|
||||
Registration) are sent a message if there are any problems processing
|
||||
an upload for your package. You also receive a message when your
|
||||
upload has been successfully processed.
|
@ -0,0 +1,18 @@
|
||||
ganglia_ipmi_sensors.pl
|
||||
-----------------------
|
||||
|
||||
This script can be used to monitor IPMI sensors in ganglia via
|
||||
FreeIPMI's ipmi-sensors. Please see instructions found at the top of
|
||||
the script for detailed instructions.
|
||||
|
||||
By default, this tool will monitor the sensor state (Nominal, Warning,
|
||||
or Critical) of each sensor as determined by libfreeipmi's interpret
|
||||
library and the sensor readings of temperature, fan and voltage
|
||||
sensors. See ipmi-sensors(8) for more general info on ipmi-sensors
|
||||
and freeipmi_interpret_sensors.conf(5) for more information on sensor
|
||||
states.
|
||||
|
||||
Albert Chu
|
||||
chu11 at llnl dot gov
|
||||
|
||||
|
@ -0,0 +1,444 @@
|
||||
#!/usr/bin/perl
|
||||
#############################################################################
|
||||
# Copyright (C) 2003-2010 FreeIPMI Core Team
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 3, or (at your option)
|
||||
# any later version.
|
||||
#
|
||||
# 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/>.
|
||||
#############################################################################
|
||||
#
|
||||
# ganglia_ipmi_sensors.pl
|
||||
#
|
||||
# Author:
|
||||
#
|
||||
# Albert Chu <chu11 at llnl dot gov>
|
||||
#
|
||||
# Description:
|
||||
#
|
||||
# This script can be used to monitor IPMI sensors in ganglia via
|
||||
# FreeIPMI's ipmi-sensors.
|
||||
#
|
||||
# By default, this tool will monitor the sensor state (Nominal,
|
||||
# Warning, or Critical) of each sensor as determined by libfreeipmi's
|
||||
# interpret library and the sensor readings of temperature, fan and
|
||||
# voltage sensors. See ipmi-sensors(8) for more general info on
|
||||
# ipmi-sensors and freeipmi_interpret_sensors.conf(5) for more
|
||||
# information on sensor states.
|
||||
#
|
||||
# Options:
|
||||
#
|
||||
# -h - specify hostname(s) to remotely access (don't specify for inband)
|
||||
# -r - specify search and replace substitution expressions (separated by a colon) to
|
||||
# modify a hostname before being passed to gmetric. This is useful if
|
||||
# the IPMI hostname differs from the desired hostname to input to gmetric.
|
||||
# For example "ipmi:my" would turn "ipmihost4" into "myhost4". Not specifying
|
||||
# a colon results in a degenerate string removal. For example,
|
||||
# "-ipmi" would turn "host4-ipmi" into "host4".
|
||||
# -S - specify an alternate ipmi-sensors location
|
||||
# -s - specify additional ipmi-sensors arguments
|
||||
# -G - specify an alternate gmetric location
|
||||
# -g - specify additional gmetric arguments
|
||||
# -d - print debug info
|
||||
# -D - do not send sensor data to ganglia (useful during debugging)
|
||||
# -H - output help
|
||||
#
|
||||
# Environment Variables:
|
||||
#
|
||||
# IPMI_HOSTS - specify hostname(s) to remotely access (don't specify for inband)
|
||||
# IPMI_HOSTS_SUBST - specify search and replace substitution
|
||||
# expressions (separated by a colon) to modify a
|
||||
# hostname before being passed to gmetric. This is
|
||||
# useful if the IPMI hostname differs from the
|
||||
# desired hostname to input to gmetric.
|
||||
# IPMI_SENSORS_PATH - specify an alternate ipmi-sensors location
|
||||
# IPMI_SENSORS_ARGS - specify additional ipmi-sensors arguments
|
||||
# GMETRIC_PATH - specify an alternate gmetric location
|
||||
# GMETRIC_ARGS - specify additional gmetric arguments
|
||||
#
|
||||
# Setup Notes:
|
||||
#
|
||||
# Specify the remote hosts you wish to access IPMI information from
|
||||
# via the -h option or IPMI_HOSTS environment variable. If you wish
|
||||
# only to monitor the local node, do not specify an ipmi host. The
|
||||
# input to the -h option is passed directly to ipmi-sensors. So you
|
||||
# may specify anything the ipmi-sensors tool accepts including
|
||||
# hostranged (e.g. foo[0-127]) or comma separated
|
||||
# (e.g. foo0,foo1,foo2,foo3) inputs. If you wish to monitor both
|
||||
# remote and local system, remember to specify one of the hosts as
|
||||
# "localhost".
|
||||
#
|
||||
# If stored in a non-default location the -S option or
|
||||
# IPMI_SENSORS_PATH environment variable must be specified to
|
||||
# determine the ipmi-sensors location.
|
||||
#
|
||||
# If stored in a non-default location the -G option or GMETRIC_PATH
|
||||
# environment variable must be specified to determine the gmetric
|
||||
# location.
|
||||
#
|
||||
# In order to specify non-defaults for ipmi-sensors use the -s
|
||||
# argument or IPMI_SENSORS_ARGS environment variable. Typically,
|
||||
# this option is necessary for non-default communication information
|
||||
# or authentication information (e.g. driver path, driver type,
|
||||
# username, password, etc.). Non-default communication information
|
||||
# can also be stored in the FreeIPMI configuration file. This is the
|
||||
# suggested method because passwords and other sensitive information
|
||||
# could show up in ps(1). If you wish to limit the sensors being
|
||||
# monitored, you can also specify which record-ids are to be monitored
|
||||
# (-r option).
|
||||
#
|
||||
# In order to specify non-defaults for gmetric, use the -g argument
|
||||
# or GMETRIC_ARGS environment variable. Typically, this option is
|
||||
# necessary for non-default gmond.conf paths (i.e. -c
|
||||
# /myspecial/gmond.conf).
|
||||
#
|
||||
# Most users will want to set this script to execute in cron(8).
|
||||
# Using cron you may monitor at whatever interval you wish. The
|
||||
# recommended interval should be atleast longer than 20 seconds, since
|
||||
# that is the default session timeout length.
|
||||
#
|
||||
# Help:
|
||||
#
|
||||
# Report bugs to freeipmi-users@gnu.org or freeipmi-devel@gnu.org.
|
||||
#
|
||||
#############################################################################
|
||||
|
||||
use strict;
|
||||
|
||||
use Getopt::Std;
|
||||
|
||||
use Socket;
|
||||
|
||||
my $no_sensor_state = 0;
|
||||
my $no_sensor_readings = 0;
|
||||
my $debug = 0;
|
||||
my $no_ganglia = 0;
|
||||
|
||||
my $IPMI_HOSTS = undef;
|
||||
my $IPMI_HOSTS_SUBST = undef;
|
||||
my $IPMI_SENSORS_PATH = "/usr/sbin/ipmi-sensors";
|
||||
my $IPMI_SENSORS_ARGS = "";
|
||||
my $GMETRIC_PATH = "/usr/bin/gmetric";
|
||||
my $GMETRIC_ARGS = "";
|
||||
my $IPMI_SENSORS_EXTRA_ARGS = "";
|
||||
|
||||
my $IPMI_SENSORS_OUTPUT;
|
||||
my @IPMI_SENSORS_OUTPUT_LINES;
|
||||
my $line;
|
||||
|
||||
my $cmd;
|
||||
my @subst;
|
||||
|
||||
sub usage
|
||||
{
|
||||
my $prog = $0;
|
||||
print "Usage: $prog [-h <hostname(s)>] [-r <string>] [-S <path>] [-s <sensors arguments>] [-G <path>] [-g <arguments>] [-T] [-t] [-d] [-H]\n";
|
||||
print " -h specify hostname(s) to remotely access\n";
|
||||
print " -r specify search and replace substitution expressions on the hostname (e.g. 'ipmi:host')\n";
|
||||
print " -S specify an alternate ipmi-sensors path\n";
|
||||
print " -s specify additional ipmi-sensors arguments\n";
|
||||
print " -G specify an alternate gmetric path\n";
|
||||
print " -g specify additional gmetric arguments\n";
|
||||
print " -T do not monitor sensor state\n";
|
||||
print " -t do not monitor sensor readings\n";
|
||||
print " -d print debug info\n";
|
||||
print " -D do not send sensor data to ganglia (useful during debugging)\n";
|
||||
print " -H output help\n";
|
||||
exit 0;
|
||||
}
|
||||
|
||||
if (!getopts("h:r:S:s:G:g:TtdDH"))
|
||||
{
|
||||
usage();
|
||||
}
|
||||
|
||||
if (defined($main::opt_H))
|
||||
{
|
||||
usage();
|
||||
}
|
||||
|
||||
if (defined($main::opt_h))
|
||||
{
|
||||
$IPMI_HOSTS = $main::opt_h;
|
||||
}
|
||||
|
||||
if (defined($main::opt_r))
|
||||
{
|
||||
$IPMI_HOSTS_SUBST = $main::opt_r;
|
||||
}
|
||||
|
||||
if (defined($main::opt_S))
|
||||
{
|
||||
$IPMI_SENSORS_PATH = $main::opt_S;
|
||||
}
|
||||
|
||||
if (defined($main::opt_s))
|
||||
{
|
||||
$IPMI_SENSORS_ARGS = $main::opt_s;
|
||||
}
|
||||
|
||||
if (defined($main::opt_G))
|
||||
{
|
||||
$GMETRIC_PATH = $main::opt_G;
|
||||
}
|
||||
|
||||
if (defined($main::opt_g))
|
||||
{
|
||||
$GMETRIC_ARGS = $main::opt_g;
|
||||
}
|
||||
|
||||
if (defined($main::opt_T))
|
||||
{
|
||||
$no_sensor_state = 1;
|
||||
}
|
||||
|
||||
if (defined($main::opt_t))
|
||||
{
|
||||
$no_sensor_readings = 1;
|
||||
}
|
||||
|
||||
if (defined($main::opt_d))
|
||||
{
|
||||
$debug = 1;
|
||||
}
|
||||
|
||||
if (defined($main::opt_D))
|
||||
{
|
||||
$no_ganglia = 1;
|
||||
}
|
||||
|
||||
if ($ENV{"IPMI_HOSTS"})
|
||||
{
|
||||
$IPMI_HOSTS = $ENV{"IPMI_HOSTS"};
|
||||
}
|
||||
|
||||
if ($ENV{"IPMI_HOSTS_SUBST"})
|
||||
{
|
||||
$IPMI_HOSTS_SUBST = $ENV{"IPMI_HOSTS_SUBST"};
|
||||
}
|
||||
|
||||
if ($ENV{"IPMI_SENSORS_PATH"})
|
||||
{
|
||||
$IPMI_SENSORS_PATH = $ENV{"IPMI_SENSORS_PATH"};
|
||||
}
|
||||
|
||||
if ($ENV{"IPMI_SENSORS_ARGS"})
|
||||
{
|
||||
$IPMI_SENSORS_ARGS = $ENV{"IPMI_SENSORS_ARGS"};
|
||||
}
|
||||
|
||||
if ($ENV{"GMETRIC_PATH"})
|
||||
{
|
||||
$GMETRIC_PATH = $ENV{"GMETRIC_PATH"};
|
||||
}
|
||||
|
||||
if ($ENV{"GMETRIC_ARGS"})
|
||||
{
|
||||
$GMETRIC_ARGS = $ENV{"GMETRIC_ARGS"};
|
||||
}
|
||||
|
||||
if ($debug)
|
||||
{
|
||||
print "IPMI_HOSTS=$IPMI_HOSTS\n";
|
||||
print "IPMI_HOSTS_SUBST=$IPMI_HOSTS_SUBST\n";
|
||||
print "IPMI_SENSORS_PATH=$IPMI_SENSORS_PATH\n";
|
||||
print "IPMI_SENSORS_ARGS=$IPMI_SENSORS_ARGS\n";
|
||||
print "GMETRIC_PATH=$GMETRIC_PATH\n";
|
||||
print "GMETRIC_ARGS=$GMETRIC_ARGS\n";
|
||||
}
|
||||
|
||||
if (!(-x $IPMI_SENSORS_PATH))
|
||||
{
|
||||
print "$IPMI_SENSORS_PATH cannot be executed\n";
|
||||
exit(1);
|
||||
}
|
||||
|
||||
if (!$no_ganglia)
|
||||
{
|
||||
if (!(-x $GMETRIC_PATH))
|
||||
{
|
||||
print "$GMETRIC_PATH cannot be executed\n";
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
if ($no_sensor_state && $no_sensor_readings)
|
||||
{
|
||||
print "Must monitor atleast sensor state or sensor readings\n";
|
||||
exit(1);
|
||||
}
|
||||
|
||||
if ($IPMI_HOSTS)
|
||||
{
|
||||
$cmd = "$IPMI_SENSORS_PATH $IPMI_SENSORS_ARGS -h $IPMI_HOSTS --quiet-cache --sdr-cache-recreate --always-prefix --no-header-output --output-sensor-state";
|
||||
}
|
||||
else
|
||||
{
|
||||
$cmd = "$IPMI_SENSORS_PATH $IPMI_SENSORS_ARGS --quiet-cache --sdr-cache-recreate --always-prefix --no-header-output --output-sensor-state"
|
||||
}
|
||||
|
||||
if ($debug)
|
||||
{
|
||||
print "ipmi-sensors command: $cmd\n";
|
||||
}
|
||||
|
||||
$IPMI_SENSORS_OUTPUT = `$cmd`;
|
||||
if ($? != 0)
|
||||
{
|
||||
print "$IPMI_SENSORS_PATH: exited with error\n";
|
||||
}
|
||||
|
||||
@IPMI_SENSORS_OUTPUT_LINES = split(/\n/, $IPMI_SENSORS_OUTPUT);
|
||||
|
||||
foreach $line (@IPMI_SENSORS_OUTPUT_LINES)
|
||||
{
|
||||
my $hostname;
|
||||
my $record_id;
|
||||
my $id_string;
|
||||
my $type;
|
||||
my $state;
|
||||
my $reading;
|
||||
my $units;
|
||||
my $event;
|
||||
my $id_string_state;
|
||||
|
||||
my $ip_address;
|
||||
|
||||
my $cmd_state;
|
||||
my $cmd_reading;
|
||||
|
||||
if ($debug)
|
||||
{
|
||||
print "Parsing: $line\n";
|
||||
}
|
||||
|
||||
if ($line =~ /(.+)\: (\d+)(\s+)\| (.+)(\s+)\| (.+)(\s+)\| (.+)(\s+)\| (.+)(\s+)\| (.+)(\s+)\| (.+)/)
|
||||
{
|
||||
$hostname = $1;
|
||||
$record_id = $2;
|
||||
$id_string = $4;
|
||||
$type = $6;
|
||||
$state = $8;
|
||||
$reading = $10;
|
||||
$units = $12;
|
||||
$event = $14;
|
||||
|
||||
# trim whitespace off end of string
|
||||
$record_id =~ s/\s+$//;
|
||||
$id_string =~ s/\s+$//;
|
||||
$type =~ s/\s+$//;
|
||||
$state =~ s/\s+$//;
|
||||
$reading =~ s/\s+$//;
|
||||
$units =~ s/\s+$//;
|
||||
}
|
||||
else
|
||||
{
|
||||
print "Line not parsable\n";
|
||||
next;
|
||||
}
|
||||
|
||||
# make name better, convert spaces and slashes into underscores
|
||||
$id_string =~ s/ /_/g;
|
||||
$id_string =~ s/\//_/g;
|
||||
|
||||
if ($IPMI_HOSTS_SUBST) {
|
||||
@subst = split(/:/, $IPMI_HOSTS_SUBST);
|
||||
$hostname =~ s/$subst[0]/$subst[1]/;
|
||||
}
|
||||
|
||||
if ($hostname ne "localhost" && $hostname ne "127.0.0.1")
|
||||
{
|
||||
my $packet_ip = gethostbyname($hostname);
|
||||
|
||||
if (defined($packet_ip))
|
||||
{
|
||||
$ip_address = inet_ntoa($packet_ip);
|
||||
}
|
||||
else
|
||||
{
|
||||
print "Cannot resolve ip: $hostname\n";
|
||||
next;
|
||||
}
|
||||
}
|
||||
|
||||
if (!$no_sensor_state)
|
||||
{
|
||||
if ($state ne "N/A")
|
||||
{
|
||||
$id_string_state = $id_string . "_State";
|
||||
if ($hostname ne "localhost" && $hostname ne "127.0.0.1")
|
||||
{
|
||||
$cmd_state = "$GMETRIC_PATH $GMETRIC_ARGS -n $id_string_state -v $state -t string -S $ip_address:$hostname";
|
||||
}
|
||||
else
|
||||
{
|
||||
$cmd_state = "$GMETRIC_PATH $GMETRIC_ARGS -n $id_string_state -v $state -t string";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!$no_sensor_readings)
|
||||
{
|
||||
if ((($type eq "Temperature"
|
||||
&& ($units eq "C"
|
||||
|| $units eq "F"))
|
||||
|| ($type eq "Voltage"
|
||||
&& $units eq "V")
|
||||
|| ($type eq "Fan"
|
||||
&& $units eq "RPM"))
|
||||
&& $reading ne "N/A")
|
||||
{
|
||||
if ($hostname ne "localhost" && $hostname ne "127.0.0.1")
|
||||
{
|
||||
$cmd_reading = "$GMETRIC_PATH $GMETRIC_ARGS -n $id_string -v $reading -t double -u $units -S $ip_address:$hostname";
|
||||
}
|
||||
else
|
||||
{
|
||||
$cmd_reading = "$GMETRIC_PATH $GMETRIC_ARGS -n $id_string -v $reading -t double -u $units";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($debug)
|
||||
{
|
||||
if ($cmd_state)
|
||||
{
|
||||
print "gmetric command = $cmd_state\n";
|
||||
}
|
||||
if ($cmd_reading)
|
||||
{
|
||||
print "gmetric command = $cmd_reading\n";
|
||||
}
|
||||
}
|
||||
|
||||
if (!$no_ganglia)
|
||||
{
|
||||
if ($cmd_state)
|
||||
{
|
||||
`$cmd_state`;
|
||||
if ($? != 0)
|
||||
{
|
||||
print "\"$cmd_state\": failed\n";
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
if ($cmd_reading)
|
||||
{
|
||||
`$cmd_reading`;
|
||||
if ($? != 0)
|
||||
{
|
||||
print "\"$cmd_reading\": failed\n";
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,648 @@
|
||||
/*****************************************************************************\
|
||||
* $Id: ipmimonitoring-sel.c,v 1.3 2010-07-22 21:49:00 chu11 Exp $
|
||||
*****************************************************************************
|
||||
* Copyright (C) 2007-2015 Lawrence Livermore National Security, LLC.
|
||||
* Copyright (C) 2006-2007 The Regents of the University of California.
|
||||
* Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER).
|
||||
* Written by Albert Chu <chu11@llnl.gov>
|
||||
* UCRL-CODE-222073
|
||||
*
|
||||
* This file is part of Ipmimonitoring, an IPMI sensor monitoring
|
||||
* library. For details, see http://www.llnl.gov/linux/.
|
||||
*
|
||||
* Ipmimonitoring is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 3 of the License, or (at your
|
||||
* option) any later version.
|
||||
*
|
||||
* Ipmimonitoring 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 Ipmimonitoring. If not, see <http://www.gnu.org/licenses/>.
|
||||
\*****************************************************************************/
|
||||
|
||||
/* This is an example of how to use the libipmimonitoring library to
|
||||
* read and monitor the SEL.
|
||||
*
|
||||
* At the top of this file, you'll find a number of variables for
|
||||
* configuration of IPMI communication and what SEL records you are
|
||||
* interested in monitoring. Those variables are used in the
|
||||
* libipmimonitoring calls below.
|
||||
*
|
||||
* Hopefully this example will be sufficient to help anyone program
|
||||
* IPMI monitoring software for their environment.
|
||||
*
|
||||
* To compile, linking against the library should be sufficient for
|
||||
* most environments. e.g.
|
||||
*
|
||||
* gcc -o ipmimonitoring-sel ipmimonitoring-sel.c -lipmimonitoring
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdint.h>
|
||||
#include <string.h>
|
||||
#include <assert.h>
|
||||
#include <errno.h>
|
||||
|
||||
#include <ipmi_monitoring.h>
|
||||
#include <ipmi_monitoring_offsets.h>
|
||||
|
||||
/* Communication Configuration - Initialize accordingly */
|
||||
|
||||
/* Hostname, NULL for In-band communication, non-null for a hostname */
|
||||
char *hostname = NULL;
|
||||
|
||||
/* In-band Communication Configuration */
|
||||
int driver_type = IPMI_MONITORING_DRIVER_TYPE_KCS; /* or -1 for default */
|
||||
int disable_auto_probe = 0; /* probe for in-band device */
|
||||
unsigned int driver_address = 0; /* not used if probing */
|
||||
unsigned int register_spacing = 0; /* not used if probing */
|
||||
char *driver_device = NULL; /* not used if probing */
|
||||
|
||||
/* Out-of-band Communication Configuration */
|
||||
int protocol_version = IPMI_MONITORING_PROTOCOL_VERSION_1_5; /* or -1 for default */
|
||||
char *username = "foousername";
|
||||
char *password = "foopassword";
|
||||
unsigned char *k_g = NULL;
|
||||
unsigned int k_g_len = 0;
|
||||
int privilege_level = IPMI_MONITORING_PRIVILEGE_LEVEL_USER; /* or -1 for default */
|
||||
int authentication_type = IPMI_MONITORING_AUTHENTICATION_TYPE_MD5; /* or -1 for default */
|
||||
int cipher_suite_id = 0; /* or -1 for default */
|
||||
int session_timeout = 0; /* 0 for default */
|
||||
int retransmission_timeout = 0; /* 0 for default */
|
||||
|
||||
/* Workarounds - specify workaround flags if necessary */
|
||||
unsigned int workaround_flags = 0;
|
||||
|
||||
/* Initialize w/ record id numbers to only monitor specific record ids */
|
||||
unsigned int record_ids[] = {0};
|
||||
unsigned int record_ids_length = 0;
|
||||
|
||||
/* Initialize w/ sensor types to only monitor specific sensor types
|
||||
* see ipmi_monitoring.h sensor types list.
|
||||
*/
|
||||
unsigned int sensor_types[] = {0};
|
||||
unsigned int sensor_types_length = 0;
|
||||
|
||||
/* Initialize w/ date range to only monitoring specific date range */
|
||||
char *date_begin = NULL; /* use MM/DD/YYYY format */
|
||||
char *date_end = NULL; /* use MM/DD/YYYY format */
|
||||
|
||||
/* Set to an appropriate alternate if desired */
|
||||
char *sdr_cache_directory = "/tmp";
|
||||
char *sel_config_file = NULL;
|
||||
|
||||
/* Set to 1 or 0 to enable these SEL flags
|
||||
* - See ipmi_monitoring.h for descriptions of these flags.
|
||||
*/
|
||||
int reread_sdr_cache = 0;
|
||||
int interpret_oem_data = 0;
|
||||
int assume_system_event_record = 0;
|
||||
int entity_sensor_names = 0;
|
||||
|
||||
/* Initialization flags
|
||||
*
|
||||
* Most commonly bitwise OR IPMI_MONITORING_FLAGS_DEBUG and/or
|
||||
* IPMI_MONITORING_FLAGS_DEBUG_IPMI_PACKETS for extra debugging
|
||||
* information.
|
||||
*/
|
||||
unsigned int ipmimonitoring_init_flags = 0;
|
||||
|
||||
static const char *
|
||||
_get_sensor_type_string (int sensor_type)
|
||||
{
|
||||
switch (sensor_type)
|
||||
{
|
||||
case IPMI_MONITORING_SENSOR_TYPE_RESERVED:
|
||||
return ("Reserved");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_TEMPERATURE:
|
||||
return ("Temperature");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_VOLTAGE:
|
||||
return ("Voltage");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_CURRENT:
|
||||
return ("Current");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_FAN:
|
||||
return ("Fan");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_PHYSICAL_SECURITY:
|
||||
return ("Physical Security");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_PLATFORM_SECURITY_VIOLATION_ATTEMPT:
|
||||
return ("Platform Security Violation Attempt");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_PROCESSOR:
|
||||
return ("Processor");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_POWER_SUPPLY:
|
||||
return ("Power Supply");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_POWER_UNIT:
|
||||
return ("Power Unit");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_COOLING_DEVICE:
|
||||
return ("Cooling Device");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_OTHER_UNITS_BASED_SENSOR:
|
||||
return ("Other Units Based Sensor");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_MEMORY:
|
||||
return ("Memory");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_DRIVE_SLOT:
|
||||
return ("Drive Slot");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_POST_MEMORY_RESIZE:
|
||||
return ("POST Memory Resize");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS:
|
||||
return ("System Firmware Progress");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_EVENT_LOGGING_DISABLED:
|
||||
return ("Event Logging Disabled");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_WATCHDOG1:
|
||||
return ("Watchdog 1");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_SYSTEM_EVENT:
|
||||
return ("System Event");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_CRITICAL_INTERRUPT:
|
||||
return ("Critical Interrupt");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_BUTTON_SWITCH:
|
||||
return ("Button/Switch");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_MODULE_BOARD:
|
||||
return ("Module/Board");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_MICROCONTROLLER_COPROCESSOR:
|
||||
return ("Microcontroller/Coprocessor");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_ADD_IN_CARD:
|
||||
return ("Add In Card");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_CHASSIS:
|
||||
return ("Chassis");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_CHIP_SET:
|
||||
return ("Chip Set");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_OTHER_FRU:
|
||||
return ("Other Fru");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_CABLE_INTERCONNECT:
|
||||
return ("Cable/Interconnect");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_TERMINATOR:
|
||||
return ("Terminator");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_SYSTEM_BOOT_INITIATED:
|
||||
return ("System Boot Initiated");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_BOOT_ERROR:
|
||||
return ("Boot Error");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_OS_BOOT:
|
||||
return ("OS Boot");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_OS_CRITICAL_STOP:
|
||||
return ("OS Critical Stop");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_SLOT_CONNECTOR:
|
||||
return ("Slot/Connector");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_SYSTEM_ACPI_POWER_STATE:
|
||||
return ("System ACPI Power State");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_WATCHDOG2:
|
||||
return ("Watchdog 2");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_PLATFORM_ALERT:
|
||||
return ("Platform Alert");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_ENTITY_PRESENCE:
|
||||
return ("Entity Presence");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_MONITOR_ASIC_IC:
|
||||
return ("Monitor ASIC/IC");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_LAN:
|
||||
return ("LAN");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_MANAGEMENT_SUBSYSTEM_HEALTH:
|
||||
return ("Management Subsystem Health");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_BATTERY:
|
||||
return ("Battery");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_SESSION_AUDIT:
|
||||
return ("Session Audit");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_VERSION_CHANGE:
|
||||
return ("Version Change");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_FRU_STATE:
|
||||
return ("FRU State");
|
||||
}
|
||||
|
||||
return ("Unrecognized");
|
||||
}
|
||||
|
||||
static int
|
||||
_ipmimonitoring (struct ipmi_monitoring_ipmi_config *ipmi_config)
|
||||
{
|
||||
ipmi_monitoring_ctx_t ctx = NULL;
|
||||
unsigned int sel_flags = 0;
|
||||
unsigned int i;
|
||||
int sel_count;
|
||||
int errnum;
|
||||
int rv = -1;
|
||||
|
||||
if (ipmi_monitoring_init (ipmimonitoring_init_flags, &errnum) < 0)
|
||||
{
|
||||
fprintf (stderr,
|
||||
"ipmi_monitoring_init: %s\n",
|
||||
ipmi_monitoring_ctx_strerror (errnum));
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (!(ctx = ipmi_monitoring_ctx_create ()))
|
||||
{
|
||||
perror ("ipmi_monitoring_ctx_create:");
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (sdr_cache_directory)
|
||||
{
|
||||
if (ipmi_monitoring_ctx_sdr_cache_directory (ctx,
|
||||
sdr_cache_directory) < 0)
|
||||
{
|
||||
fprintf (stderr,
|
||||
"ipmi_monitoring_ctx_sdr_cache_directory: %s\n",
|
||||
ipmi_monitoring_ctx_errormsg (ctx));
|
||||
goto cleanup;
|
||||
}
|
||||
}
|
||||
|
||||
/* Must call otherwise only default interpretations ever used */
|
||||
if (sel_config_file)
|
||||
{
|
||||
if (ipmi_monitoring_ctx_sel_config_file (ctx,
|
||||
sel_config_file) < 0)
|
||||
{
|
||||
fprintf (stderr,
|
||||
"ipmi_monitoring_ctx_sel_config_file: %s\n",
|
||||
ipmi_monitoring_ctx_errormsg (ctx));
|
||||
goto cleanup;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (ipmi_monitoring_ctx_sel_config_file (ctx, NULL) < 0)
|
||||
{
|
||||
fprintf (stderr,
|
||||
"ipmi_monitoring_ctx_sel_config_file: %s\n",
|
||||
ipmi_monitoring_ctx_errormsg (ctx));
|
||||
goto cleanup;
|
||||
}
|
||||
}
|
||||
|
||||
if (reread_sdr_cache)
|
||||
sel_flags |= IPMI_MONITORING_SEL_FLAGS_REREAD_SDR_CACHE;
|
||||
|
||||
if (interpret_oem_data)
|
||||
sel_flags |= IPMI_MONITORING_SEL_FLAGS_INTERPRET_OEM_DATA;
|
||||
|
||||
if (assume_system_event_record)
|
||||
sel_flags |= IPMI_MONITORING_SEL_FLAGS_ASSUME_SYSTEM_EVENT_RECORD;
|
||||
|
||||
if (entity_sensor_names)
|
||||
sel_flags |= IPMI_MONITORING_SEL_FLAGS_ENTITY_SENSOR_NAMES;
|
||||
|
||||
if (record_ids_length)
|
||||
{
|
||||
if ((sel_count = ipmi_monitoring_sel_by_record_id (ctx,
|
||||
hostname,
|
||||
ipmi_config,
|
||||
sel_flags,
|
||||
record_ids,
|
||||
record_ids_length,
|
||||
NULL,
|
||||
NULL)) < 0)
|
||||
{
|
||||
fprintf (stderr,
|
||||
"ipmi_monitoring_sel_by_record_id: %s\n",
|
||||
ipmi_monitoring_ctx_errormsg (ctx));
|
||||
goto cleanup;
|
||||
}
|
||||
}
|
||||
else if (sensor_types_length)
|
||||
{
|
||||
if ((sel_count = ipmi_monitoring_sel_by_sensor_type (ctx,
|
||||
hostname,
|
||||
ipmi_config,
|
||||
sel_flags,
|
||||
sensor_types,
|
||||
sensor_types_length,
|
||||
NULL,
|
||||
NULL)) < 0)
|
||||
{
|
||||
fprintf (stderr,
|
||||
"ipmi_monitoring_sel_by_sensor_type: %s\n",
|
||||
ipmi_monitoring_ctx_errormsg (ctx));
|
||||
goto cleanup;
|
||||
}
|
||||
}
|
||||
else if (date_begin
|
||||
|| date_end)
|
||||
{
|
||||
if ((sel_count = ipmi_monitoring_sel_by_date_range (ctx,
|
||||
hostname,
|
||||
ipmi_config,
|
||||
sel_flags,
|
||||
date_begin,
|
||||
date_end,
|
||||
NULL,
|
||||
NULL)) < 0)
|
||||
{
|
||||
fprintf (stderr,
|
||||
"ipmi_monitoring_sel_by_sensor_type: %s\n",
|
||||
ipmi_monitoring_ctx_errormsg (ctx));
|
||||
goto cleanup;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((sel_count = ipmi_monitoring_sel_by_record_id (ctx,
|
||||
hostname,
|
||||
ipmi_config,
|
||||
sel_flags,
|
||||
NULL,
|
||||
0,
|
||||
NULL,
|
||||
NULL)) < 0)
|
||||
{
|
||||
fprintf (stderr,
|
||||
"ipmi_monitoring_sel_by_record_id: %s\n",
|
||||
ipmi_monitoring_ctx_errormsg (ctx));
|
||||
goto cleanup;
|
||||
}
|
||||
}
|
||||
|
||||
printf ("%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s\n",
|
||||
"Record ID",
|
||||
"Record Type",
|
||||
"SEL State",
|
||||
"Timestamp",
|
||||
"Sensor Name",
|
||||
"Sensor Type",
|
||||
"Event Direction",
|
||||
"Event Type Code",
|
||||
"Event Data",
|
||||
"Event Offset",
|
||||
"Event Offset String");
|
||||
|
||||
for (i = 0; i < sel_count; i++, ipmi_monitoring_sel_iterator_next (ctx))
|
||||
{
|
||||
int record_id, record_type, sel_state, sensor_type, sensor_number, event_direction,
|
||||
event_offset_type, event_offset, event_type_code, manufacturer_id;
|
||||
unsigned int timestamp, event_data1, event_data2, event_data3;
|
||||
int record_type_class;
|
||||
char *event_offset_string = NULL;
|
||||
const char *sensor_type_str;
|
||||
const char *event_direction_str;
|
||||
const char *sel_state_str;
|
||||
char *sensor_name = NULL;
|
||||
unsigned char oem_data[64];
|
||||
int oem_data_len;
|
||||
unsigned int j;
|
||||
|
||||
if ((record_id = ipmi_monitoring_sel_read_record_id (ctx)) < 0)
|
||||
{
|
||||
fprintf (stderr,
|
||||
"ipmi_monitoring_sel_read_record_id: %s\n",
|
||||
ipmi_monitoring_ctx_errormsg (ctx));
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if ((record_type = ipmi_monitoring_sel_read_record_type (ctx)) < 0)
|
||||
{
|
||||
fprintf (stderr,
|
||||
"ipmi_monitoring_sel_read_record_type: %s\n",
|
||||
ipmi_monitoring_ctx_errormsg (ctx));
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if ((record_type_class = ipmi_monitoring_sel_read_record_type_class (ctx)) < 0)
|
||||
{
|
||||
fprintf (stderr,
|
||||
"ipmi_monitoring_sel_read_record_type_class: %s\n",
|
||||
ipmi_monitoring_ctx_errormsg (ctx));
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if ((sel_state = ipmi_monitoring_sel_read_sel_state (ctx)) < 0)
|
||||
{
|
||||
fprintf (stderr,
|
||||
"ipmi_monitoring_sel_read_sel_state: %s\n",
|
||||
ipmi_monitoring_ctx_errormsg (ctx));
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (sel_state == IPMI_MONITORING_STATE_NOMINAL)
|
||||
sel_state_str = "Nominal";
|
||||
else if (sel_state == IPMI_MONITORING_STATE_WARNING)
|
||||
sel_state_str = "Warning";
|
||||
else if (sel_state == IPMI_MONITORING_STATE_CRITICAL)
|
||||
sel_state_str = "Critical";
|
||||
else
|
||||
sel_state_str = "N/A";
|
||||
|
||||
printf ("%u, %u, %s",
|
||||
record_id,
|
||||
record_type,
|
||||
sel_state_str);
|
||||
|
||||
if (record_type_class == IPMI_MONITORING_SEL_RECORD_TYPE_CLASS_SYSTEM_EVENT_RECORD
|
||||
|| record_type_class == IPMI_MONITORING_SEL_RECORD_TYPE_CLASS_TIMESTAMPED_OEM_RECORD)
|
||||
{
|
||||
|
||||
if (ipmi_monitoring_sel_read_timestamp (ctx, ×tamp) < 0)
|
||||
{
|
||||
fprintf (stderr,
|
||||
"ipmi_monitoring_sel_read_timestamp: %s\n",
|
||||
ipmi_monitoring_ctx_errormsg (ctx));
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
/* XXX: This should be converted to a nice date output using
|
||||
* your favorite timestamp -> string conversion functions.
|
||||
*/
|
||||
printf (", %u", timestamp);
|
||||
}
|
||||
else
|
||||
printf (", N/A");
|
||||
|
||||
if (record_type_class == IPMI_MONITORING_SEL_RECORD_TYPE_CLASS_SYSTEM_EVENT_RECORD)
|
||||
{
|
||||
/* If you are integrating ipmimonitoring SEL into a monitoring application,
|
||||
* you may wish to count the number of times a specific error occurred
|
||||
* and report that to the monitoring application.
|
||||
*
|
||||
* In this particular case, you'll probably want to check out
|
||||
* what sensor type each SEL event is reporting, the
|
||||
* event offset type, and the specific event offset that occurred.
|
||||
*
|
||||
* See ipmi_monitoring_offsets.h for a list of event offsets
|
||||
* and types.
|
||||
*/
|
||||
|
||||
if (!(sensor_name = ipmi_monitoring_sel_read_sensor_name (ctx)))
|
||||
{
|
||||
fprintf (stderr,
|
||||
"ipmi_monitoring_sel_read_sensor_name: %s\n",
|
||||
ipmi_monitoring_ctx_errormsg (ctx));
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if ((sensor_type = ipmi_monitoring_sel_read_sensor_type (ctx)) < 0)
|
||||
{
|
||||
fprintf (stderr,
|
||||
"ipmi_monitoring_sel_read_sensor_type: %s\n",
|
||||
ipmi_monitoring_ctx_errormsg (ctx));
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if ((sensor_number = ipmi_monitoring_sel_read_sensor_number (ctx)) < 0)
|
||||
{
|
||||
fprintf (stderr,
|
||||
"ipmi_monitoring_sel_read_sensor_number: %s\n",
|
||||
ipmi_monitoring_ctx_errormsg (ctx));
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if ((event_direction = ipmi_monitoring_sel_read_event_direction (ctx)) < 0)
|
||||
{
|
||||
fprintf (stderr,
|
||||
"ipmi_monitoring_sel_read_event_direction: %s\n",
|
||||
ipmi_monitoring_ctx_errormsg (ctx));
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if ((event_type_code = ipmi_monitoring_sel_read_event_type_code (ctx)) < 0)
|
||||
{
|
||||
fprintf (stderr,
|
||||
"ipmi_monitoring_sel_read_event_type_code: %s\n",
|
||||
ipmi_monitoring_ctx_errormsg (ctx));
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (ipmi_monitoring_sel_read_event_data (ctx,
|
||||
&event_data1,
|
||||
&event_data2,
|
||||
&event_data3) < 0)
|
||||
{
|
||||
fprintf (stderr,
|
||||
"ipmi_monitoring_sel_read_event_data: %s\n",
|
||||
ipmi_monitoring_ctx_errormsg (ctx));
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if ((event_offset_type = ipmi_monitoring_sel_read_event_offset_type (ctx)) < 0)
|
||||
{
|
||||
fprintf (stderr,
|
||||
"ipmi_monitoring_sel_read_event_offset_type: %s\n",
|
||||
ipmi_monitoring_ctx_errormsg (ctx));
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if ((event_offset = ipmi_monitoring_sel_read_event_offset (ctx)) < 0)
|
||||
{
|
||||
fprintf (stderr,
|
||||
"ipmi_monitoring_sel_read_event_offset: %s\n",
|
||||
ipmi_monitoring_ctx_errormsg (ctx));
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (!(event_offset_string = ipmi_monitoring_sel_read_event_offset_string (ctx)))
|
||||
{
|
||||
fprintf (stderr,
|
||||
"ipmi_monitoring_sel_read_event_offset_string: %s\n",
|
||||
ipmi_monitoring_ctx_errormsg (ctx));
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (!strlen (sensor_name))
|
||||
sensor_name = "N/A";
|
||||
|
||||
sensor_type_str = _get_sensor_type_string (sensor_type);
|
||||
|
||||
if (event_direction == IPMI_MONITORING_SEL_EVENT_DIRECTION_ASSERTION)
|
||||
event_direction_str = "Assertion";
|
||||
else
|
||||
event_direction_str = "Deassertion";
|
||||
|
||||
printf (", %s, %s, %u, %s, %Xh, %Xh-%Xh-%Xh",
|
||||
sensor_name,
|
||||
sensor_type_str,
|
||||
sensor_number,
|
||||
event_direction_str,
|
||||
event_type_code,
|
||||
event_data1,
|
||||
event_data2,
|
||||
event_data3);
|
||||
|
||||
if (event_offset_type != IPMI_MONITORING_EVENT_OFFSET_TYPE_UNKNOWN)
|
||||
printf (", %Xh", event_offset);
|
||||
else
|
||||
printf (", N/A");
|
||||
|
||||
if (event_offset_type != IPMI_MONITORING_EVENT_OFFSET_TYPE_UNKNOWN)
|
||||
printf (", %s", event_offset_string);
|
||||
else
|
||||
printf (", N/A");
|
||||
}
|
||||
else if (record_type_class == IPMI_MONITORING_SEL_RECORD_TYPE_CLASS_TIMESTAMPED_OEM_RECORD
|
||||
|| record_type_class == IPMI_MONITORING_SEL_RECORD_TYPE_CLASS_NON_TIMESTAMPED_OEM_RECORD)
|
||||
{
|
||||
if (record_type_class == IPMI_MONITORING_SEL_RECORD_TYPE_CLASS_TIMESTAMPED_OEM_RECORD)
|
||||
{
|
||||
if ((manufacturer_id = ipmi_monitoring_sel_read_manufacturer_id (ctx)) < 0)
|
||||
{
|
||||
fprintf (stderr,
|
||||
"ipmi_monitoring_sel_read_manufacturer_id: %s\n",
|
||||
ipmi_monitoring_ctx_errormsg (ctx));
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
printf (", Manufacturer ID = %Xh", manufacturer_id);
|
||||
}
|
||||
|
||||
if ((oem_data_len = ipmi_monitoring_sel_read_oem_data (ctx, oem_data, 1024)) < 0)
|
||||
{
|
||||
fprintf (stderr,
|
||||
"ipmi_monitoring_sel_read_oem_data: %s\n",
|
||||
ipmi_monitoring_ctx_errormsg (ctx));
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
printf (", OEM Data = ");
|
||||
|
||||
for (j = 0; j < oem_data_len; j++)
|
||||
printf ("%02Xh ", oem_data[j]);
|
||||
}
|
||||
else
|
||||
printf (", N/A, N/A, N/A, N/A, N/A, N/A, N/A");
|
||||
|
||||
printf ("\n");
|
||||
}
|
||||
|
||||
rv = 0;
|
||||
cleanup:
|
||||
if (ctx)
|
||||
ipmi_monitoring_ctx_destroy (ctx);
|
||||
return (rv);
|
||||
}
|
||||
|
||||
static void
|
||||
_init_ipmi_config (struct ipmi_monitoring_ipmi_config *ipmi_config)
|
||||
{
|
||||
assert (ipmi_config);
|
||||
|
||||
ipmi_config->driver_type = driver_type;
|
||||
ipmi_config->disable_auto_probe = disable_auto_probe;
|
||||
ipmi_config->driver_address = driver_address;
|
||||
ipmi_config->register_spacing = register_spacing;
|
||||
ipmi_config->driver_device = driver_device;
|
||||
|
||||
ipmi_config->protocol_version = protocol_version;
|
||||
ipmi_config->username = username;
|
||||
ipmi_config->password = password;
|
||||
ipmi_config->k_g = k_g;
|
||||
ipmi_config->k_g_len = k_g_len;
|
||||
ipmi_config->privilege_level = privilege_level;
|
||||
ipmi_config->authentication_type = authentication_type;
|
||||
ipmi_config->cipher_suite_id = cipher_suite_id;
|
||||
ipmi_config->session_timeout_len = session_timeout;
|
||||
ipmi_config->retransmission_timeout_len = retransmission_timeout;
|
||||
|
||||
ipmi_config->workaround_flags = workaround_flags;
|
||||
}
|
||||
|
||||
int
|
||||
main (int argc, char **argv)
|
||||
{
|
||||
struct ipmi_monitoring_ipmi_config ipmi_config;
|
||||
|
||||
_init_ipmi_config (&ipmi_config);
|
||||
|
||||
if (_ipmimonitoring (&ipmi_config) < 0)
|
||||
exit (1);
|
||||
|
||||
exit (0);
|
||||
}
|
||||
|
@ -0,0 +1,607 @@
|
||||
/*****************************************************************************\
|
||||
* $Id: ipmimonitoring-sensors.c,v 1.6 2010-07-22 21:49:00 chu11 Exp $
|
||||
*****************************************************************************
|
||||
* Copyright (C) 2007-2015 Lawrence Livermore National Security, LLC.
|
||||
* Copyright (C) 2006-2007 The Regents of the University of California.
|
||||
* Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER).
|
||||
* Written by Albert Chu <chu11@llnl.gov>
|
||||
* UCRL-CODE-222073
|
||||
*
|
||||
* This file is part of Ipmimonitoring, an IPMI sensor monitoring
|
||||
* library. For details, see http://www.llnl.gov/linux/.
|
||||
*
|
||||
* Ipmimonitoring is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 3 of the License, or (at your
|
||||
* option) any later version.
|
||||
*
|
||||
* Ipmimonitoring 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 Ipmimonitoring. If not, see <http://www.gnu.org/licenses/>.
|
||||
\*****************************************************************************/
|
||||
|
||||
/* This is an example of how to use the libipmimonitoring library to
|
||||
* read and monitor sensors.
|
||||
*
|
||||
* At the top of this file, you'll find a number of variables for
|
||||
* configuration of IPMI communication and what sensors you are
|
||||
* interested in monitoring. Those variables are used in the
|
||||
* libipmimonitoring calls below.
|
||||
*
|
||||
* Hopefully this example will be sufficient to help anyone program
|
||||
* IPMI monitoring software for their environment.
|
||||
*
|
||||
* To compile, linking against the library should be sufficient for
|
||||
* most environments. e.g.
|
||||
*
|
||||
* gcc -o ipmimonitoring-sensors ipmimonitoring-sensors.c -lipmimonitoring
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdint.h>
|
||||
#include <string.h>
|
||||
#include <assert.h>
|
||||
#include <errno.h>
|
||||
|
||||
#include <ipmi_monitoring.h>
|
||||
#include <ipmi_monitoring_bitmasks.h>
|
||||
|
||||
/* Communication Configuration - Initialize accordingly */
|
||||
|
||||
/* Hostname, NULL for In-band communication, non-null for a hostname */
|
||||
char *hostname = NULL;
|
||||
|
||||
/* In-band Communication Configuration */
|
||||
int driver_type = IPMI_MONITORING_DRIVER_TYPE_KCS; /* or -1 for default */
|
||||
int disable_auto_probe = 0; /* probe for in-band device */
|
||||
unsigned int driver_address = 0; /* not used if probing */
|
||||
unsigned int register_spacing = 0; /* not used if probing */
|
||||
char *driver_device = NULL; /* not used if probing */
|
||||
|
||||
/* Out-of-band Communication Configuration */
|
||||
int protocol_version = IPMI_MONITORING_PROTOCOL_VERSION_1_5; /* or -1 for default */
|
||||
char *username = "foousername";
|
||||
char *password = "foopassword";
|
||||
unsigned char *k_g = NULL;
|
||||
unsigned int k_g_len = 0;
|
||||
int privilege_level = IPMI_MONITORING_PRIVILEGE_LEVEL_USER; /* or -1 for default */
|
||||
int authentication_type = IPMI_MONITORING_AUTHENTICATION_TYPE_MD5; /* or -1 for default */
|
||||
int cipher_suite_id = 0; /* or -1 for default */
|
||||
int session_timeout = 0; /* 0 for default */
|
||||
int retransmission_timeout = 0; /* 0 for default */
|
||||
|
||||
/* Workarounds - specify workaround flags if necessary */
|
||||
unsigned int workaround_flags = 0;
|
||||
|
||||
/* Initialize w/ record id numbers to only monitor specific record ids */
|
||||
unsigned int record_ids[] = {0};
|
||||
unsigned int record_ids_length = 0;
|
||||
|
||||
/* Initialize w/ sensor types to only monitor specific sensor types
|
||||
* see ipmi_monitoring.h sensor types list.
|
||||
*/
|
||||
unsigned int sensor_types[] = {0};
|
||||
unsigned int sensor_types_length = 0;
|
||||
|
||||
/* Set to an appropriate alternate if desired */
|
||||
char *sdr_cache_directory = "/tmp";
|
||||
char *sensor_config_file = NULL;
|
||||
|
||||
/* Set to 1 or 0 to enable these sensor reading flags
|
||||
* - See ipmi_monitoring.h for descriptions of these flags.
|
||||
*/
|
||||
int reread_sdr_cache = 0;
|
||||
int ignore_non_interpretable_sensors = 1;
|
||||
int bridge_sensors = 0;
|
||||
int interpret_oem_data = 0;
|
||||
int shared_sensors = 0;
|
||||
int discrete_reading = 0;
|
||||
int ignore_scanning_disabled = 0;
|
||||
int assume_bmc_owner = 0;
|
||||
int entity_sensor_names = 0;
|
||||
|
||||
/* Initialization flags
|
||||
*
|
||||
* Most commonly bitwise OR IPMI_MONITORING_FLAGS_DEBUG and/or
|
||||
* IPMI_MONITORING_FLAGS_DEBUG_IPMI_PACKETS for extra debugging
|
||||
* information.
|
||||
*/
|
||||
unsigned int ipmimonitoring_init_flags = 0;
|
||||
|
||||
static const char *
|
||||
_get_sensor_type_string (int sensor_type)
|
||||
{
|
||||
switch (sensor_type)
|
||||
{
|
||||
case IPMI_MONITORING_SENSOR_TYPE_RESERVED:
|
||||
return ("Reserved");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_TEMPERATURE:
|
||||
return ("Temperature");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_VOLTAGE:
|
||||
return ("Voltage");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_CURRENT:
|
||||
return ("Current");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_FAN:
|
||||
return ("Fan");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_PHYSICAL_SECURITY:
|
||||
return ("Physical Security");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_PLATFORM_SECURITY_VIOLATION_ATTEMPT:
|
||||
return ("Platform Security Violation Attempt");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_PROCESSOR:
|
||||
return ("Processor");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_POWER_SUPPLY:
|
||||
return ("Power Supply");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_POWER_UNIT:
|
||||
return ("Power Unit");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_COOLING_DEVICE:
|
||||
return ("Cooling Device");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_OTHER_UNITS_BASED_SENSOR:
|
||||
return ("Other Units Based Sensor");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_MEMORY:
|
||||
return ("Memory");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_DRIVE_SLOT:
|
||||
return ("Drive Slot");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_POST_MEMORY_RESIZE:
|
||||
return ("POST Memory Resize");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS:
|
||||
return ("System Firmware Progress");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_EVENT_LOGGING_DISABLED:
|
||||
return ("Event Logging Disabled");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_WATCHDOG1:
|
||||
return ("Watchdog 1");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_SYSTEM_EVENT:
|
||||
return ("System Event");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_CRITICAL_INTERRUPT:
|
||||
return ("Critical Interrupt");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_BUTTON_SWITCH:
|
||||
return ("Button/Switch");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_MODULE_BOARD:
|
||||
return ("Module/Board");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_MICROCONTROLLER_COPROCESSOR:
|
||||
return ("Microcontroller/Coprocessor");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_ADD_IN_CARD:
|
||||
return ("Add In Card");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_CHASSIS:
|
||||
return ("Chassis");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_CHIP_SET:
|
||||
return ("Chip Set");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_OTHER_FRU:
|
||||
return ("Other Fru");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_CABLE_INTERCONNECT:
|
||||
return ("Cable/Interconnect");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_TERMINATOR:
|
||||
return ("Terminator");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_SYSTEM_BOOT_INITIATED:
|
||||
return ("System Boot Initiated");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_BOOT_ERROR:
|
||||
return ("Boot Error");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_OS_BOOT:
|
||||
return ("OS Boot");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_OS_CRITICAL_STOP:
|
||||
return ("OS Critical Stop");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_SLOT_CONNECTOR:
|
||||
return ("Slot/Connector");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_SYSTEM_ACPI_POWER_STATE:
|
||||
return ("System ACPI Power State");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_WATCHDOG2:
|
||||
return ("Watchdog 2");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_PLATFORM_ALERT:
|
||||
return ("Platform Alert");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_ENTITY_PRESENCE:
|
||||
return ("Entity Presence");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_MONITOR_ASIC_IC:
|
||||
return ("Monitor ASIC/IC");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_LAN:
|
||||
return ("LAN");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_MANAGEMENT_SUBSYSTEM_HEALTH:
|
||||
return ("Management Subsystem Health");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_BATTERY:
|
||||
return ("Battery");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_SESSION_AUDIT:
|
||||
return ("Session Audit");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_VERSION_CHANGE:
|
||||
return ("Version Change");
|
||||
case IPMI_MONITORING_SENSOR_TYPE_FRU_STATE:
|
||||
return ("FRU State");
|
||||
}
|
||||
|
||||
return ("Unrecognized");
|
||||
}
|
||||
|
||||
static int
|
||||
_ipmimonitoring (struct ipmi_monitoring_ipmi_config *ipmi_config)
|
||||
{
|
||||
ipmi_monitoring_ctx_t ctx = NULL;
|
||||
unsigned int sensor_reading_flags = 0;
|
||||
unsigned int i;
|
||||
int sensor_count;
|
||||
int errnum;
|
||||
int rv = -1;
|
||||
|
||||
if (ipmi_monitoring_init (ipmimonitoring_init_flags, &errnum) < 0)
|
||||
{
|
||||
fprintf (stderr,
|
||||
"ipmi_monitoring_init: %s\n",
|
||||
ipmi_monitoring_ctx_strerror (errnum));
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (!(ctx = ipmi_monitoring_ctx_create ()))
|
||||
{
|
||||
perror ("ipmi_monitoring_ctx_create:");
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (sdr_cache_directory)
|
||||
{
|
||||
if (ipmi_monitoring_ctx_sdr_cache_directory (ctx,
|
||||
sdr_cache_directory) < 0)
|
||||
{
|
||||
fprintf (stderr,
|
||||
"ipmi_monitoring_ctx_sdr_cache_directory: %s\n",
|
||||
ipmi_monitoring_ctx_errormsg (ctx));
|
||||
goto cleanup;
|
||||
}
|
||||
}
|
||||
|
||||
/* Must call otherwise only default interpretations ever used */
|
||||
if (sensor_config_file)
|
||||
{
|
||||
if (ipmi_monitoring_ctx_sensor_config_file (ctx,
|
||||
sensor_config_file) < 0)
|
||||
{
|
||||
fprintf (stderr,
|
||||
"ipmi_monitoring_ctx_sensor_config_file: %s\n",
|
||||
ipmi_monitoring_ctx_errormsg (ctx));
|
||||
goto cleanup;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (ipmi_monitoring_ctx_sensor_config_file (ctx, NULL) < 0)
|
||||
{
|
||||
fprintf (stderr,
|
||||
"ipmi_monitoring_ctx_sensor_config_file: %s\n",
|
||||
ipmi_monitoring_ctx_errormsg (ctx));
|
||||
goto cleanup;
|
||||
}
|
||||
}
|
||||
|
||||
if (reread_sdr_cache)
|
||||
sensor_reading_flags |= IPMI_MONITORING_SENSOR_READING_FLAGS_REREAD_SDR_CACHE;
|
||||
|
||||
if (ignore_non_interpretable_sensors)
|
||||
sensor_reading_flags |= IPMI_MONITORING_SENSOR_READING_FLAGS_IGNORE_NON_INTERPRETABLE_SENSORS;
|
||||
|
||||
if (bridge_sensors)
|
||||
sensor_reading_flags |= IPMI_MONITORING_SENSOR_READING_FLAGS_BRIDGE_SENSORS;
|
||||
|
||||
if (interpret_oem_data)
|
||||
sensor_reading_flags |= IPMI_MONITORING_SENSOR_READING_FLAGS_INTERPRET_OEM_DATA;
|
||||
|
||||
if (shared_sensors)
|
||||
sensor_reading_flags |= IPMI_MONITORING_SENSOR_READING_FLAGS_SHARED_SENSORS;
|
||||
|
||||
if (discrete_reading)
|
||||
sensor_reading_flags |= IPMI_MONITORING_SENSOR_READING_FLAGS_DISCRETE_READING;
|
||||
|
||||
if (ignore_scanning_disabled)
|
||||
sensor_reading_flags |= IPMI_MONITORING_SENSOR_READING_FLAGS_IGNORE_SCANNING_DISABLED;
|
||||
|
||||
if (assume_bmc_owner)
|
||||
sensor_reading_flags |= IPMI_MONITORING_SENSOR_READING_FLAGS_ASSUME_BMC_OWNER;
|
||||
|
||||
if (entity_sensor_names)
|
||||
sensor_reading_flags |= IPMI_MONITORING_SENSOR_READING_FLAGS_ENTITY_SENSOR_NAMES;
|
||||
|
||||
if (!record_ids_length && !sensor_types_length)
|
||||
{
|
||||
if ((sensor_count = ipmi_monitoring_sensor_readings_by_record_id (ctx,
|
||||
hostname,
|
||||
ipmi_config,
|
||||
sensor_reading_flags,
|
||||
NULL,
|
||||
0,
|
||||
NULL,
|
||||
NULL)) < 0)
|
||||
{
|
||||
fprintf (stderr,
|
||||
"ipmi_monitoring_sensor_readings_by_record_id: %s\n",
|
||||
ipmi_monitoring_ctx_errormsg (ctx));
|
||||
goto cleanup;
|
||||
}
|
||||
}
|
||||
else if (record_ids_length)
|
||||
{
|
||||
if ((sensor_count = ipmi_monitoring_sensor_readings_by_record_id (ctx,
|
||||
hostname,
|
||||
ipmi_config,
|
||||
sensor_reading_flags,
|
||||
record_ids,
|
||||
record_ids_length,
|
||||
NULL,
|
||||
NULL)) < 0)
|
||||
{
|
||||
fprintf (stderr,
|
||||
"ipmi_monitoring_sensor_readings_by_record_id: %s\n",
|
||||
ipmi_monitoring_ctx_errormsg (ctx));
|
||||
goto cleanup;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((sensor_count = ipmi_monitoring_sensor_readings_by_sensor_type (ctx,
|
||||
hostname,
|
||||
ipmi_config,
|
||||
sensor_reading_flags,
|
||||
sensor_types,
|
||||
sensor_types_length,
|
||||
NULL,
|
||||
NULL)) < 0)
|
||||
{
|
||||
fprintf (stderr,
|
||||
"ipmi_monitoring_sensor_readings_by_sensor_type: %s\n",
|
||||
ipmi_monitoring_ctx_errormsg (ctx));
|
||||
goto cleanup;
|
||||
}
|
||||
}
|
||||
|
||||
printf ("%s, %s, %s, %s, %s, %s, %s, %s, %s, %s\n",
|
||||
"Record ID",
|
||||
"Sensor Name",
|
||||
"Sensor Number",
|
||||
"Sensor Type",
|
||||
"Sensor State",
|
||||
"Sensor Reading",
|
||||
"Sensor Units",
|
||||
"Sensor Event/Reading Type Code",
|
||||
"Sensor Event Bitmask",
|
||||
"Sensor Event String");
|
||||
|
||||
for (i = 0; i < sensor_count; i++, ipmi_monitoring_sensor_iterator_next (ctx))
|
||||
{
|
||||
int record_id, sensor_number, sensor_type, sensor_state, sensor_units,
|
||||
sensor_bitmask_type, sensor_bitmask, sensor_reading_type,
|
||||
event_reading_type_code;
|
||||
char **sensor_bitmask_strings = NULL;
|
||||
const char *sensor_type_str;
|
||||
const char *sensor_state_str;
|
||||
char *sensor_name = NULL;
|
||||
void *sensor_reading;
|
||||
|
||||
if ((record_id = ipmi_monitoring_sensor_read_record_id (ctx)) < 0)
|
||||
{
|
||||
fprintf (stderr,
|
||||
"ipmi_monitoring_sensor_read_record_id: %s\n",
|
||||
ipmi_monitoring_ctx_errormsg (ctx));
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if ((sensor_number = ipmi_monitoring_sensor_read_sensor_number (ctx)) < 0)
|
||||
{
|
||||
fprintf (stderr,
|
||||
"ipmi_monitoring_sensor_read_sensor_number: %s\n",
|
||||
ipmi_monitoring_ctx_errormsg (ctx));
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if ((sensor_type = ipmi_monitoring_sensor_read_sensor_type (ctx)) < 0)
|
||||
{
|
||||
fprintf (stderr,
|
||||
"ipmi_monitoring_sensor_read_sensor_type: %s\n",
|
||||
ipmi_monitoring_ctx_errormsg (ctx));
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (!(sensor_name = ipmi_monitoring_sensor_read_sensor_name (ctx)))
|
||||
{
|
||||
fprintf (stderr,
|
||||
"ipmi_monitoring_sensor_read_sensor_name: %s\n",
|
||||
ipmi_monitoring_ctx_errormsg (ctx));
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if ((sensor_state = ipmi_monitoring_sensor_read_sensor_state (ctx)) < 0)
|
||||
{
|
||||
fprintf (stderr,
|
||||
"ipmi_monitoring_sensor_read_sensor_state: %s\n",
|
||||
ipmi_monitoring_ctx_errormsg (ctx));
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if ((sensor_units = ipmi_monitoring_sensor_read_sensor_units (ctx)) < 0)
|
||||
{
|
||||
fprintf (stderr,
|
||||
"ipmi_monitoring_sensor_read_sensor_units: %s\n",
|
||||
ipmi_monitoring_ctx_errormsg (ctx));
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if ((sensor_bitmask_type = ipmi_monitoring_sensor_read_sensor_bitmask_type (ctx)) < 0)
|
||||
{
|
||||
fprintf (stderr,
|
||||
"ipmi_monitoring_sensor_read_sensor_bitmask_type: %s\n",
|
||||
ipmi_monitoring_ctx_errormsg (ctx));
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if ((sensor_bitmask = ipmi_monitoring_sensor_read_sensor_bitmask (ctx)) < 0)
|
||||
{
|
||||
fprintf (stderr,
|
||||
"ipmi_monitoring_sensor_read_sensor_bitmask: %s\n",
|
||||
ipmi_monitoring_ctx_errormsg (ctx));
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (!(sensor_bitmask_strings = ipmi_monitoring_sensor_read_sensor_bitmask_strings (ctx)))
|
||||
{
|
||||
fprintf (stderr,
|
||||
"ipmi_monitoring_sensor_read_sensor_bitmask_strings: %s\n",
|
||||
ipmi_monitoring_ctx_errormsg (ctx));
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if ((sensor_reading_type = ipmi_monitoring_sensor_read_sensor_reading_type (ctx)) < 0)
|
||||
{
|
||||
fprintf (stderr,
|
||||
"ipmi_monitoring_sensor_read_sensor_reading_type: %s\n",
|
||||
ipmi_monitoring_ctx_errormsg (ctx));
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
sensor_reading = ipmi_monitoring_sensor_read_sensor_reading (ctx);
|
||||
|
||||
if ((event_reading_type_code = ipmi_monitoring_sensor_read_event_reading_type_code (ctx)) < 0)
|
||||
{
|
||||
fprintf (stderr,
|
||||
"ipmi_monitoring_sensor_read_event_reading_type_code: %s\n",
|
||||
ipmi_monitoring_ctx_errormsg (ctx));
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (!strlen (sensor_name))
|
||||
sensor_name = "N/A";
|
||||
|
||||
sensor_type_str = _get_sensor_type_string (sensor_type);
|
||||
|
||||
printf ("%u, %s, %u, %s",
|
||||
record_id,
|
||||
sensor_name,
|
||||
sensor_number,
|
||||
sensor_type_str);
|
||||
|
||||
if (sensor_state == IPMI_MONITORING_STATE_NOMINAL)
|
||||
sensor_state_str = "Nominal";
|
||||
else if (sensor_state == IPMI_MONITORING_STATE_WARNING)
|
||||
sensor_state_str = "Warning";
|
||||
else if (sensor_state == IPMI_MONITORING_STATE_CRITICAL)
|
||||
sensor_state_str = "Critical";
|
||||
else
|
||||
sensor_state_str = "N/A";
|
||||
|
||||
printf (", %s", sensor_state_str);
|
||||
|
||||
if (sensor_reading)
|
||||
{
|
||||
const char *sensor_units_str;
|
||||
|
||||
if (sensor_reading_type == IPMI_MONITORING_SENSOR_READING_TYPE_UNSIGNED_INTEGER8_BOOL)
|
||||
printf (", %s",
|
||||
(*((uint8_t *)sensor_reading) ? "true" : "false"));
|
||||
else if (sensor_reading_type == IPMI_MONITORING_SENSOR_READING_TYPE_UNSIGNED_INTEGER32)
|
||||
printf (", %u",
|
||||
*((uint32_t *)sensor_reading));
|
||||
else if (sensor_reading_type == IPMI_MONITORING_SENSOR_READING_TYPE_DOUBLE)
|
||||
printf (", %.2f",
|
||||
*((double *)sensor_reading));
|
||||
else
|
||||
printf (", N/A");
|
||||
|
||||
if (sensor_units == IPMI_MONITORING_SENSOR_UNITS_CELSIUS)
|
||||
sensor_units_str = "C";
|
||||
else if (sensor_units == IPMI_MONITORING_SENSOR_UNITS_FAHRENHEIT)
|
||||
sensor_units_str = "F";
|
||||
else if (sensor_units == IPMI_MONITORING_SENSOR_UNITS_VOLTS)
|
||||
sensor_units_str = "V";
|
||||
else if (sensor_units == IPMI_MONITORING_SENSOR_UNITS_AMPS)
|
||||
sensor_units_str = "A";
|
||||
else if (sensor_units == IPMI_MONITORING_SENSOR_UNITS_RPM)
|
||||
sensor_units_str = "RPM";
|
||||
else if (sensor_units == IPMI_MONITORING_SENSOR_UNITS_WATTS)
|
||||
sensor_units_str = "W";
|
||||
else if (sensor_units == IPMI_MONITORING_SENSOR_UNITS_PERCENT)
|
||||
sensor_units_str = "%";
|
||||
else
|
||||
sensor_units_str = "N/A";
|
||||
|
||||
printf (", %s", sensor_units_str);
|
||||
}
|
||||
else
|
||||
printf (", N/A, N/A");
|
||||
|
||||
printf (", %Xh", event_reading_type_code);
|
||||
|
||||
/* It is possible you may want to monitor specific event
|
||||
* conditions that may occur. If that is the case, you may want
|
||||
* to check out what specific bitmask type and bitmask events
|
||||
* occurred. See ipmi_monitoring_bitmasks.h for a list of
|
||||
* bitmasks and types.
|
||||
*/
|
||||
|
||||
if (sensor_bitmask_type != IPMI_MONITORING_SENSOR_BITMASK_TYPE_UNKNOWN)
|
||||
printf (", %Xh", sensor_bitmask);
|
||||
else
|
||||
printf (", N/A");
|
||||
|
||||
if (sensor_bitmask_type != IPMI_MONITORING_SENSOR_BITMASK_TYPE_UNKNOWN)
|
||||
{
|
||||
unsigned int i = 0;
|
||||
|
||||
printf (",");
|
||||
|
||||
while (sensor_bitmask_strings[i])
|
||||
{
|
||||
printf (" ");
|
||||
|
||||
printf ("'%s'",
|
||||
sensor_bitmask_strings[i]);
|
||||
|
||||
i++;
|
||||
}
|
||||
}
|
||||
else
|
||||
printf (", N/A");
|
||||
|
||||
printf ("\n");
|
||||
}
|
||||
|
||||
rv = 0;
|
||||
cleanup:
|
||||
if (ctx)
|
||||
ipmi_monitoring_ctx_destroy (ctx);
|
||||
return (rv);
|
||||
}
|
||||
|
||||
static void
|
||||
_init_ipmi_config (struct ipmi_monitoring_ipmi_config *ipmi_config)
|
||||
{
|
||||
assert (ipmi_config);
|
||||
|
||||
ipmi_config->driver_type = driver_type;
|
||||
ipmi_config->disable_auto_probe = disable_auto_probe;
|
||||
ipmi_config->driver_address = driver_address;
|
||||
ipmi_config->register_spacing = register_spacing;
|
||||
ipmi_config->driver_device = driver_device;
|
||||
|
||||
ipmi_config->protocol_version = protocol_version;
|
||||
ipmi_config->username = username;
|
||||
ipmi_config->password = password;
|
||||
ipmi_config->k_g = k_g;
|
||||
ipmi_config->k_g_len = k_g_len;
|
||||
ipmi_config->privilege_level = privilege_level;
|
||||
ipmi_config->authentication_type = authentication_type;
|
||||
ipmi_config->cipher_suite_id = cipher_suite_id;
|
||||
ipmi_config->session_timeout_len = session_timeout;
|
||||
ipmi_config->retransmission_timeout_len = retransmission_timeout;
|
||||
|
||||
ipmi_config->workaround_flags = workaround_flags;
|
||||
}
|
||||
|
||||
int
|
||||
main (int argc, char **argv)
|
||||
{
|
||||
struct ipmi_monitoring_ipmi_config ipmi_config;
|
||||
|
||||
_init_ipmi_config (&ipmi_config);
|
||||
|
||||
if (_ipmimonitoring (&ipmi_config) < 0)
|
||||
exit (1);
|
||||
|
||||
exit (0);
|
||||
}
|
||||
|
18
source/freeipmi/usr/share/doc/freeipmi/contrib/nagios/README
Normal file
18
source/freeipmi/usr/share/doc/freeipmi/contrib/nagios/README
Normal file
@ -0,0 +1,18 @@
|
||||
nagios_ipmi_sensors.pl
|
||||
-----------------------
|
||||
|
||||
This script can be used to monitor IPMI sensors in nagios via
|
||||
FreeIPMI's ipmi-sensors. Please see instructions found at the top of
|
||||
the script for detailed instructions.
|
||||
|
||||
This tool will monitor the sensor state (Nominal, Warning, or
|
||||
Critical) of each sensor as determined by libfreeipmi's interpret
|
||||
library. The Nominal, Warning, and Critical states of each sensor
|
||||
will be collected and counted. The overall IPMI sensor status will be
|
||||
mapped into a Nagios status of OK, Warning, or Critical. Details will
|
||||
then be output for Nagios to read. See ipmi-sensors(8) for more
|
||||
general info on ipmi-sensors and freeipmi_interpret_sensors.conf(5)
|
||||
for more information on sensor states.
|
||||
|
||||
Albert Chu
|
||||
chu11 at llnl dot gov
|
@ -0,0 +1,327 @@
|
||||
#!/usr/bin/perl
|
||||
#############################################################################
|
||||
# Copyright (C) 2003-2009 FreeIPMI Core Team
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 3, or (at your option)
|
||||
# any later version.
|
||||
#
|
||||
# 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/>.
|
||||
#############################################################################
|
||||
#
|
||||
# nagios_ipmi_sensors.pl
|
||||
#
|
||||
# Author:
|
||||
#
|
||||
# Albert Chu <chu11 at llnl dot gov>
|
||||
#
|
||||
# Description:
|
||||
#
|
||||
# This script can be used to monitor IPMI sensors in nagios via
|
||||
# FreeIPMI's ipmi-sensors.
|
||||
#
|
||||
# This tool will monitor the sensor state (Nominal, Warning, or
|
||||
# Critical) of each sensor as determined by libfreeipmi's interpret
|
||||
# library. The Nominal, Warning, and Critical states of each sensor
|
||||
# will be collected and counted. The overall IPMI sensor status will
|
||||
# be mapped into a Nagios status of OK, Warning, or Critical. Details
|
||||
# will then be output for Nagios to read. See ipmi-sensors(8) for
|
||||
# more general info on ipmi-sensors and
|
||||
# freeipmi_interpret_sensors.conf(5) for more information on sensor
|
||||
# states.
|
||||
#
|
||||
# Options:
|
||||
#
|
||||
# -h - specify hostname(s) to remotely access (don't specify for inband)
|
||||
# -S - specify an alternate ipmi_sensors location
|
||||
# -s - specify additional ipmi_sensors arguments
|
||||
# -d - print debug info
|
||||
# -H - output help
|
||||
#
|
||||
# Environment Variables:
|
||||
#
|
||||
# IPMI_HOSTS - specify hostname(s) to remotely access (don't specify for inband)
|
||||
# IPMI_SENSORS_PATH - specify an alternate ipmi-ssensors location
|
||||
# IPMI_SENSORS_ARGS - specify additional ipmi-sensors arguments
|
||||
#
|
||||
# Setup Notes:
|
||||
#
|
||||
# Specify the remote hosts you wish to access IPMI information from
|
||||
# via the -h option or IPMI_HOSTS environment variable. If you wish
|
||||
# only to monitor the local node, do not specify an ipmi host. The
|
||||
# input to the -h option is passed directly to ipmimonitoring. So you
|
||||
# may specify anything the ipmimonitoring tool accepts including
|
||||
# hostranged (e.g. foo[0-127]) or comma separated
|
||||
# (e.g. foo0,foo1,foo2,foo3) inputs. If you wish to monitor both
|
||||
# remote and local system, remember to specify one of the hosts as
|
||||
# "localhost". Most will probably want to monitor just one host (get
|
||||
# the IPMI status for each individual machine being monitored),
|
||||
# however more than one host can be analyzed for a collective result.
|
||||
#
|
||||
# If stored in a non-default location the -S option or
|
||||
# IPMI_SENSORS_PATH environment variable must be specified to
|
||||
# determine the ipmimonitoring location.
|
||||
#
|
||||
# In order to specify non-defaults for ipmimonitoring use the -s
|
||||
# argument or IPMI_SENSORS_ARGS environment variable. Typically,
|
||||
# this option is necessary for non-default communication information
|
||||
# or authentication information (e.g. driver path, driver type,
|
||||
# username, password, etc.). Non-default communication information
|
||||
# can also be stored in the FreeIPMI configuration file. This is the
|
||||
# suggested method because passwords and other sensitive information
|
||||
# could show up in ps(1). If you wish to limit the sensors being
|
||||
# monitored, you can also specify which record-ids are to be monitored
|
||||
# (-s option).
|
||||
#
|
||||
# The setup for this can vary depending on your environment and nagios
|
||||
# setup, but most will need to set this up in nagios by defining a
|
||||
# command and then a service.
|
||||
#
|
||||
# define command {
|
||||
# command_name nagios_ipmi_sensors
|
||||
# command_line /path/nagios_ipmi_sensors.pl -h $ARG1$
|
||||
# }
|
||||
#
|
||||
# define service {
|
||||
# host_name foohost
|
||||
# service_description ipmi
|
||||
# check_command nagios_ipmi_sensors!foohost
|
||||
# }
|
||||
#
|
||||
# The default session timeout length in ipmi-sensors is 20 seconds.
|
||||
# We would recommend that IPMI not be monitored more frequently than
|
||||
# that.
|
||||
#
|
||||
# Help:
|
||||
#
|
||||
# Report bugs to freeipmi-users@gnu.org or freeipmi-devel@gnu.org.
|
||||
#
|
||||
#############################################################################
|
||||
|
||||
use strict;
|
||||
|
||||
use Getopt::Std;
|
||||
|
||||
my $debug = 0;
|
||||
|
||||
my $IPMI_HOSTS = undef;
|
||||
my $IPMI_SENSORS_PATH = "/usr/sbin/ipmi-sensors";
|
||||
my $IPMI_SENSORS_ARGS = "";
|
||||
|
||||
my $IPMI_SENSORS_OUTPUT;
|
||||
my @IPMI_SENSORS_OUTPUT_LINES;
|
||||
my $line;
|
||||
|
||||
my $cmd;
|
||||
|
||||
my $num_output = 0;
|
||||
my $warning_num = 0;
|
||||
my $critical_num = 0;
|
||||
my $fatal_error = 0;
|
||||
|
||||
sub usage
|
||||
{
|
||||
my $prog = $0;
|
||||
print "Usage: $prog [-h <hostname(s)>] [-S <path>] [-s <sensors arguments>] [-d] [-H]\n";
|
||||
print " -h specify hostname(s) to remotely access\n";
|
||||
print " -S specify an alternate ipmi-sensors path\n";
|
||||
print " -s specify additional ipmi-sensors arguments\n";
|
||||
print " -d print debug info\n";
|
||||
print " -H output help\n";
|
||||
exit 0;
|
||||
}
|
||||
|
||||
if (!getopts("h:S:s:dH"))
|
||||
{
|
||||
usage();
|
||||
}
|
||||
|
||||
if (defined($main::opt_H))
|
||||
{
|
||||
usage();
|
||||
}
|
||||
|
||||
if (defined($main::opt_h))
|
||||
{
|
||||
$IPMI_HOSTS = $main::opt_h;
|
||||
}
|
||||
|
||||
if (defined($main::opt_S))
|
||||
{
|
||||
$IPMI_SENSORS_PATH = $main::opt_S;
|
||||
}
|
||||
|
||||
if (defined($main::opt_s))
|
||||
{
|
||||
$IPMI_SENSORS_ARGS = $main::opt_s;
|
||||
}
|
||||
|
||||
if (defined($main::opt_d))
|
||||
{
|
||||
$debug = 1;
|
||||
}
|
||||
|
||||
if ($ENV{"IPMI_HOSTS"})
|
||||
{
|
||||
$IPMI_HOSTS = $ENV{"IPMI_HOSTS"};
|
||||
}
|
||||
|
||||
if ($ENV{"IPMI_SENSORS_PATH"})
|
||||
{
|
||||
$IPMI_SENSORS_PATH = $ENV{"IPMI_SENSORS_PATH"};
|
||||
}
|
||||
|
||||
if ($ENV{"IPMI_SENSORS_ARGS"})
|
||||
{
|
||||
$IPMI_SENSORS_ARGS = $ENV{"IPMI_SENSORS_ARGS"};
|
||||
}
|
||||
|
||||
if ($debug)
|
||||
{
|
||||
print "IPMI_HOSTS=$IPMI_HOSTS\n";
|
||||
print "IPMI_SENSORS_PATH=$IPMI_SENSORS_PATH\n";
|
||||
print "IPMI_SENSORS_ARGS=$IPMI_SENSORS_ARGS\n";
|
||||
}
|
||||
|
||||
if (!(-x $IPMI_SENSORS_PATH))
|
||||
{
|
||||
print "$IPMI_SENSORS_PATH cannot be executed\n";
|
||||
exit(1);
|
||||
}
|
||||
|
||||
# note, don't need --ignore-non-interpretable-sensors, legacy output handles it
|
||||
if ($IPMI_HOSTS)
|
||||
{
|
||||
$cmd = "$IPMI_SENSORS_PATH $IPMI_SENSORS_ARGS -h $IPMI_HOSTS --quiet-cache --sdr-cache-recreate --always-prefix --no-header-output --output-sensor-state";
|
||||
}
|
||||
else
|
||||
{
|
||||
$cmd = "$IPMI_SENSORS_PATH $IPMI_SENSORS_ARGS --quiet-cache --sdr-cache-recreate --always-prefix --no-header-output --output-sensor-state"
|
||||
}
|
||||
|
||||
if ($debug)
|
||||
{
|
||||
print "ipmi-sensors command: $cmd\n";
|
||||
}
|
||||
|
||||
$IPMI_SENSORS_OUTPUT = `$cmd`;
|
||||
if ($? != 0)
|
||||
{
|
||||
print "$IPMI_SENSORS_PATH: exited with error\n";
|
||||
}
|
||||
|
||||
@IPMI_SENSORS_OUTPUT_LINES = split(/\n/, $IPMI_SENSORS_OUTPUT);
|
||||
|
||||
foreach $line (@IPMI_SENSORS_OUTPUT_LINES)
|
||||
{
|
||||
my $hostname;
|
||||
my $record_id;
|
||||
my $id_string;
|
||||
my $type;
|
||||
my $state;
|
||||
my $reading;
|
||||
my $units;
|
||||
my $event;
|
||||
my $id_string_state;
|
||||
|
||||
my $output_str;
|
||||
|
||||
if ($debug)
|
||||
{
|
||||
print "Parsing: $line\n";
|
||||
}
|
||||
|
||||
if ($line =~ /(.+)\: (\d+)(\s+)\| (.+)(\s+)\| (.+)(\s+)\| (.+)(\s+)\| (.+)(\s+)\| (.+)(\s+)\| (.+)/)
|
||||
{
|
||||
$hostname = $1;
|
||||
$record_id = $2;
|
||||
$id_string = $4;
|
||||
$type = $6;
|
||||
$state = $8;
|
||||
$reading = $10;
|
||||
$units = $12;
|
||||
$event = $14;
|
||||
|
||||
# trim whitespace off end of string
|
||||
$record_id =~ s/\s+$//;
|
||||
$id_string =~ s/\s+$//;
|
||||
$type =~ s/\s+$//;
|
||||
$state =~ s/\s+$//;
|
||||
$reading =~ s/\s+$//;
|
||||
$units =~ s/\s+$//;
|
||||
}
|
||||
else
|
||||
{
|
||||
print "Line not parsable\n";
|
||||
$fatal_error++;
|
||||
next;
|
||||
}
|
||||
|
||||
# make name better, convert spaces and slashes into underscores
|
||||
$id_string =~ s/ /_/g;
|
||||
$id_string =~ s/\//_/g;
|
||||
|
||||
if ($state eq "Nominal")
|
||||
{
|
||||
next;
|
||||
}
|
||||
|
||||
if ($state eq "N/A")
|
||||
{
|
||||
next;
|
||||
}
|
||||
|
||||
if ($state eq "Warning")
|
||||
{
|
||||
$warning_num++;
|
||||
$output_str = "WARNING";
|
||||
}
|
||||
elsif ($state eq "Critical")
|
||||
{
|
||||
$critical_num++;
|
||||
$output_str = "CRITICAL";
|
||||
}
|
||||
else
|
||||
{
|
||||
print "State not parsable\n";
|
||||
$fatal_error++;
|
||||
next;
|
||||
}
|
||||
|
||||
if ($num_output)
|
||||
{
|
||||
print "; ";
|
||||
}
|
||||
print "$id_string - $output_str";
|
||||
$num_output++;
|
||||
}
|
||||
|
||||
# Nagios Exit Codes
|
||||
# 0 = OK
|
||||
# 1 = WARNING
|
||||
# 2 = CRITICAL
|
||||
# 3 = UNKNOWN
|
||||
|
||||
if ($fatal_error)
|
||||
{
|
||||
exit 3;
|
||||
}
|
||||
|
||||
if ($critical_num)
|
||||
{
|
||||
exit 2;
|
||||
}
|
||||
|
||||
if ($warning_num)
|
||||
{
|
||||
exit 1;
|
||||
}
|
||||
|
||||
exit 0;
|
453
source/freeipmi/usr/share/doc/freeipmi/contrib/pet/README
Normal file
453
source/freeipmi/usr/share/doc/freeipmi/contrib/pet/README
Normal file
@ -0,0 +1,453 @@
|
||||
petalert.pl
|
||||
-----------------------
|
||||
|
||||
This is a snmptrapd handler script to alert when Platform Event Traps
|
||||
(PET) occur. It was written because traptoemail distributed with
|
||||
net-snmp-5.3.2.2 is incapable of handling multi-line hexstrings and
|
||||
restricted to email alert.
|
||||
|
||||
This script operates in two modes, traphandle or embperl. When in
|
||||
traphandle mode, it concatenates the quoted hex string into one long
|
||||
line, then builds structures to resemble embperl mode. Both modes then
|
||||
invokes helper decoder, ipmi-pet(8) from FreeIPMI, parses the output
|
||||
and alerts in given way like email, nagios external command, nsca, etc.
|
||||
|
||||
|
||||
1. REQUIREMENTS
|
||||
|
||||
freeipmi-1.1.1 and above is required for the script to function. Both
|
||||
FreeIPMI and the script imply Unix-like system, notably GNU/Linux;
|
||||
Windows is not supported as of this writing, Dec 13, 2011.
|
||||
|
||||
Net-SNMP 5.3.2.2 and above is required to make a complete alerting
|
||||
solution. Actually only snmptrapd is related which acts as the trap
|
||||
receiver.
|
||||
|
||||
If you prefer to running it as embedded perl handler, your version of
|
||||
Net-SNMP should have embedded perl support enabled, see "Embedded Perl
|
||||
Support" from snmpd.conf(8) for more infomration. Usually it's
|
||||
enabled, and you can verify with the following command:
|
||||
|
||||
# net-snmp-config --configure-options | tr ' ' '\n' | grep perl
|
||||
'--enable-embedded-perl'
|
||||
|
||||
If you prefer to invoking the handler directly rather than invoking it
|
||||
with perl(1), make sure the script itself has execute permission. Both
|
||||
cases require a working Perl installation, better Perl-5.8.8.
|
||||
|
||||
If you prefer to built-in email alerting, make sure Net::SMTP is
|
||||
installed.
|
||||
|
||||
If you prefer to Nagios monitoring system, make sure the Nagios
|
||||
process and snmptrapd is on the same host. Usually you don't need to
|
||||
worry about write permission of Nagios external command file, because
|
||||
the handler is invoked as root by snmptrapd. If that's not your case,
|
||||
you need to ensure write permission on the command file.
|
||||
|
||||
You might prefer to other alerting methods, bad news is it is not
|
||||
implemented yet. Please drop me a mail, then I might take my time to
|
||||
go on with plugin support.
|
||||
|
||||
Paranoids might check firewall rules allowing only traffic from
|
||||
trusted hosts.
|
||||
|
||||
|
||||
2. CONFIGURATION
|
||||
|
||||
(Note backslash-newline concatenates adjacent lines, so put them in
|
||||
one) Put a line like these in your snmptrapd.conf file:
|
||||
|
||||
traphandle .1.3.6.1.4.1.3183.1.1 /usr/bin/perl \
|
||||
/usr/share/doc/freeipmi/contrib/pet/petalert.pl --mode=traphandle \
|
||||
--alert=email --sdrcache SDRCONF -- -f FROM -s SMTPSERVER ADDRESSES
|
||||
|
||||
Or, if you prefer embedded perl,
|
||||
|
||||
perl do "/usr/share/doc/freeipmi/contrib/pet/petalert.pl";
|
||||
perl IpmiPET::main(qw(--mode=embperl --trapoid=OID --sdrcache=SDRCONF \
|
||||
--alert=email -- -s SMTPSERVER -f FROM ADDRESSES));
|
||||
|
||||
where:
|
||||
only --mode is required, see "petalert.pl -h".
|
||||
|
||||
Make sure execute permission is granted to execute handlers, for
|
||||
example,
|
||||
|
||||
authCommunity execute COMMUNITY_STRING
|
||||
|
||||
see "ACCESS CONTROL" from snmptrapd.conf(8) for more information. Bad
|
||||
news is that you have to use numeric representation, so in addition
|
||||
add "-Of -On" to snmptrapd options.
|
||||
|
||||
You have to enable PET on IPMI nodes as well, including LAN access,
|
||||
PEF alerting, community, alert policy and destination. You may use
|
||||
ipmi-config from FreeIPMI to do the configuration (use --category to
|
||||
checkout core and pef category of configuration). See "IPMI NODES".
|
||||
|
||||
You might wish to set up PTR records for IPMI nodes, otherwise,
|
||||
snmptrapd reports <UNKNOWN> to traphandle and the script will fall
|
||||
back to use ip.
|
||||
|
||||
2.1 ACKNOWLEDGE
|
||||
|
||||
Platform event trap is over UDP, you might worry about trap loss. IPMI
|
||||
spec allows the trap receiver to acknowledge the trap. Use --ack to
|
||||
acknowledge the trap before alerting. You may need workarounds for
|
||||
acknowledgement. See BUGS. So in a acknowlege setup, it might be like
|
||||
this:
|
||||
|
||||
perl do "/usr/share/doc/freeipmi/contrib/pet/petalert.pl";
|
||||
perl IpmiPET::main(qw(--mode=embperl --trapoid=OID --sdrcache=SDRCONF \
|
||||
--ack -W malformedack \
|
||||
--alert=email -- -s SMTPSERVER -f FROM ADDRESSES));
|
||||
|
||||
2.2 NAGIOS INTEGRATION
|
||||
|
||||
Nagios monitoring system could be plugged into by writing to its
|
||||
external command file as passive check. See ipminodes.cfg and
|
||||
check_rmcping for related Nagios configuration.
|
||||
|
||||
Assuming Nagios process is local, use:
|
||||
|
||||
perl do "/usr/share/doc/freeipmi/contrib/pet/petalert.pl";
|
||||
perl IpmiPET::main(qw(--mode=embperl --trapoid=OID --sdrcache=SDRCONF \
|
||||
--alert=nagios -- -H short -S PET NAGIOS_COMMAND_FILE));
|
||||
|
||||
where "-H short" means if 10.2.3.4 resolves to foo.example.com, Nagios
|
||||
passive check gets foo as host; use "-H fqdn" to pass foo.example.com
|
||||
to Nagios. In addition, "-S PET" sets service description.
|
||||
|
||||
If Nagios process is on remote host, normally you turns to NSCA which
|
||||
consists of NSCA daemon on the Nagios host and the send_nsca client
|
||||
program. To alert by send_nsca,
|
||||
|
||||
perl do "/usr/share/doc/freeipmi/contrib/pet/petalert.pl";
|
||||
perl IpmiPET::main(qw(--mode=embperl --trapoid=OID --sdrcache=SDRCONF \
|
||||
--alert=nsca -- --prog /usr/bin/send_nsca -H short -S PET \
|
||||
-- -H NAGIOS_HOST -c SEND_NSCA_CONF));
|
||||
|
||||
Notice the unattached -- appears two times in the configuration line
|
||||
separating three steps of arguments processing, namely generic args,
|
||||
alert specific args, and external helper args.
|
||||
|
||||
|
||||
3. SDR CACHE FILE MAPPING
|
||||
|
||||
Notice the underlying helper program ipmi-pet(8) normally depends on
|
||||
some sdr cache file, either preinitialized or created on demand. If no
|
||||
credential is supplied, ipmi-pet(8) simply assumes localhost and
|
||||
creates sdr cache which is usually
|
||||
~/.freeipmi/sdr-cache/sdr-cache-<hostname>.localhost. You may wish to
|
||||
supply preinitialized ones, then use -c sdrmapping.conf to associate
|
||||
them with IPMI nodes.
|
||||
|
||||
The sdr cache config syntax is: every unindented line starts an sdr
|
||||
cache file, followed by any number of indented lines of IPMI
|
||||
nodes. Every IPMI node line may consist of multiple nodes delimited by
|
||||
whitespaces. Comments follow Shell-style, trailing whitespaces are
|
||||
trimmed, empty lines skipped.
|
||||
|
||||
For example,
|
||||
|
||||
|/path/to/sdr-cache-file-1
|
||||
| 10.2.3.10 # comment
|
||||
|
|
||||
|/path/to/sdr-cache-file-2
|
||||
| 10.2.3.4 # one node
|
||||
| 10.2.3.5 10.2.3.6 # two nodes
|
||||
| 10.2.3.[7-9] # trhee nodes in range form
|
||||
|
|
||||
^-- this is the beginning of lines
|
||||
|
||||
3.1 SDR CACHE INITIALIZATION
|
||||
|
||||
The sdr cache file can be initialized by ipmi-sel(8) and the
|
||||
--sdr-cache-file option.
|
||||
|
||||
# ipmi-sel -h 10.2.3.4 -u root -P --sdr-cache-file=/path/to/sdr-cache-file-X
|
||||
Password:
|
||||
Caching SDR repository information: /path/to/sdr-cache-file-X
|
||||
Caching SDR record 125 of 125 (current record ID 125)
|
||||
ID | Date | Time | Name | Type | Event
|
||||
1 | Dec-12-2011 | 16:41:51 | SEL | Event Logging Disabled | Log Area Reset/Cleared
|
||||
...
|
||||
|
||||
|
||||
4. IPMI NODES
|
||||
|
||||
For PET to be generated, configurations on IPMI nodes have to be done,
|
||||
including LAN access, PEF alerting, trap community, alert policy and
|
||||
destination. You may use ipmi-config from FreeIPMI to do the
|
||||
configuration (use --category to checkout core and pef category of
|
||||
configuration).
|
||||
|
||||
However, before doing configurations and facing unexpected firmware
|
||||
issues, you'd better verify that the trap receiver end works
|
||||
well. Simply modify the following example traphandle input to meet
|
||||
your setup, then feed it to stdin of petalert.pl like this, assuming
|
||||
you prefer to alert email:
|
||||
|
||||
# perl petalert.pl -D :all --mode=traphandle --sdrcache SDRCONF \
|
||||
--alert=email -- -f FROM -s SMTPSERVER ADDRESSES <<EOF
|
||||
pet.example.com
|
||||
UDP: [10.2.3.4]:32768
|
||||
.1.3.6.1.2.1.1.3.0 60:5:11:46.26
|
||||
.1.3.6.1.6.3.1.1.4.1.0 .1.3.6.1.4.1.3183.1.1.0.356096
|
||||
.1.3.6.1.4.1.3183.1.1.1 "44 45 4C 4C 50 00 10 59 80 43 B2 C0 4F 33 33 58
|
||||
00 42 19 EE AB 64 FF FF 20 20 00 41 73 18 00 80
|
||||
01 FF 00 00 00 00 00 19 00 00 02 A2 01 00 C1 "
|
||||
.1.3.6.1.6.3.18.1.3.0 10.2.3.4
|
||||
.1.3.6.1.6.3.18.1.4.0 "public"
|
||||
.1.3.6.1.6.3.1.1.4.3.0 .1.3.6.1.4.1.3183.1.1
|
||||
EOF
|
||||
|
||||
Then normally you will get a notification about the test input. Notice
|
||||
that the three-line octet string "44 45 ... C1 " includes one
|
||||
whitespace at the ending of each line, that's the way snmptrapd(8)
|
||||
works.
|
||||
|
||||
4.1 NODE CONFIGURATION
|
||||
|
||||
You'd better save your customization, if any, before changing
|
||||
anything. Guys with factory default settings feel free to go
|
||||
on. FreeIPMI is outstanding with its ability to save your overall
|
||||
customization with --checkout option in ipmi-config(8).
|
||||
|
||||
To save configurations,
|
||||
|
||||
# ipmi-config --category=core --checkout -f saved-core-config.txt
|
||||
# ipmi-config --category=pef --checkout -f saved-pef-config.txt
|
||||
|
||||
Or to create only one file
|
||||
|
||||
# ipmi-config --category=core,pef --checkout -f saved-config.txt
|
||||
|
||||
Notice the checked out configuration is well commented, you can refer
|
||||
to it for help about the following configuration options.
|
||||
|
||||
To observe differences between current configuration and pet
|
||||
configuration,
|
||||
|
||||
# ipmi-config --category=core --diff <<EOF
|
||||
Section Lan_Channel
|
||||
Volatile_Access_Mode Always_Available
|
||||
Volatile_Enable_Pef_Alerting Yes
|
||||
Non_Volatile_Access_Mode Always_Available
|
||||
Non_Volatile_Enable_Pef_Alerting Yes
|
||||
EndSection
|
||||
Section Lan_Conf
|
||||
IP_Address_Source Static
|
||||
IP_Address 10.2.3.4
|
||||
Subnet_Mask 255.255.255.0
|
||||
Default_Gateway_IP_Address 10.2.3.1
|
||||
EndSection
|
||||
Section User2
|
||||
Username root
|
||||
Password CHANGE_ME
|
||||
Enable_User Yes
|
||||
Lan_Privilege_Limit Administrator
|
||||
EndSection
|
||||
EOF
|
||||
|
||||
# ipmi-config --category=pef --diff <<EOF
|
||||
Section Lan_Alert_Destination_1
|
||||
Alert_Destination_Type PET_Trap
|
||||
Alert_Acknowledge Yes
|
||||
Alert_Acknowledge_Timeout 5
|
||||
Alert_Retries 2
|
||||
Alert_Gateway Default
|
||||
Alert_IP_Address 10.2.3.254
|
||||
Alert_MAC_Address 00:00:00:00:00:00
|
||||
EndSection
|
||||
Section Community_String
|
||||
Community_String COMMUNITY_STRING
|
||||
EndSection
|
||||
Section Alert_Policy_1
|
||||
Policy_Type Always_Send_To_This_Destination
|
||||
Policy_Enabled Yes
|
||||
Policy_Number 1
|
||||
Destination_Selector 1
|
||||
Channel_Number 1
|
||||
Alert_String_Set_Selector 0
|
||||
Event_Specific_Alert_String No
|
||||
EndSection
|
||||
EOF
|
||||
|
||||
Note configuration with ipmi-config(8) can be used out of band once
|
||||
IPMI LAN access is OK, which means you no longer need to logon the
|
||||
host to do further configuration.
|
||||
|
||||
# ipmi-config --category=pef -h 10.2.3.4 -u root -P --diff <<EOF
|
||||
...
|
||||
EOF
|
||||
Password:
|
||||
|
||||
In addition, FreeIPMI is featured by configuring many hosts in one
|
||||
run, see "HOSTRANGED SUPPORT" of ipmi-config(8) and others from
|
||||
FreeIPMI.
|
||||
|
||||
When you are sure about the changes, use --commit to apply. Then you
|
||||
can use bmc-device to generate a software generated platform event:
|
||||
|
||||
# bmc-device --platform-event="41 04 05 73 6f assertion 80 01 ff"
|
||||
|
||||
You should get notified about the event a few seconds later, otherwise
|
||||
check vendor rules. If the node is Dell PowerEdge R610 or 1950, you
|
||||
have to make a catch-all filter for the software generated event,
|
||||
|
||||
# ipmi-config --category=pef --commit <<EOF
|
||||
Section Event_Filter_40
|
||||
Filter_Type Software_Configurable
|
||||
Enable_Filter Yes
|
||||
Event_Filter_Action_Alert Yes
|
||||
Event_Filter_Action_Power_Off No
|
||||
Event_Filter_Action_Reset No
|
||||
Event_Filter_Action_Power_Cycle No
|
||||
Event_Filter_Action_Oem No
|
||||
Event_Filter_Action_Diagnostic_Interrupt No
|
||||
Event_Filter_Action_Group_Control_Operation No
|
||||
Alert_Policy_Number 1
|
||||
Event_Severity Unspecified
|
||||
Group_Control_Selector 0
|
||||
Generator_Id_Byte_1 0xFF
|
||||
Generator_Id_Byte_2 0xFF
|
||||
Sensor_Type Any
|
||||
Sensor_Number 0xFF
|
||||
Event_Trigger 0xFF
|
||||
Event_Data1_Offset_Mask 0xFFFF
|
||||
Event_Data1_AND_Mask 0x00
|
||||
Event_Data1_Compare1 0xFF
|
||||
Event_Data1_Compare2 0x00
|
||||
Event_Data2_AND_Mask 0x00
|
||||
Event_Data2_Compare1 0xFF
|
||||
Event_Data2_Compare2 0x00
|
||||
Event_Data3_AND_Mask 0x00
|
||||
Event_Data3_Compare1 0xFF
|
||||
Event_Data3_Compare2 0x00
|
||||
EndSection
|
||||
EOF
|
||||
|
||||
If you still have problems you may wish to read "Figure 17-2 Event
|
||||
Filter, Alert Policy, and Alert Destination, String Relationships"
|
||||
from IPMIv2 spec, and/or check your network traffic. You might be the
|
||||
unlucky guy triggering unspotted firmware bugs. See BUGS.
|
||||
|
||||
|
||||
5. LOGGING
|
||||
|
||||
petalert.pl supports sophisticated logging. Use "-D token" to enable
|
||||
logging of specific parts, or "-D :all" to enable very verbose
|
||||
output. Internally it uses Data::Dumper to represent Perl structs, you
|
||||
can simply copy to files to evaluate. For example, an acknowledge
|
||||
request invocation was logged as
|
||||
|
||||
[Sun Dec 11 13:47:51 2011] ack command line [
|
||||
'/usr/sbin/ipmi-pet',
|
||||
[
|
||||
'--pet-acknowledge',
|
||||
'-h',
|
||||
'10.2.3.4',
|
||||
'356096',
|
||||
'44',
|
||||
'45',
|
||||
'4C',
|
||||
'4C',
|
||||
...
|
||||
]
|
||||
]
|
||||
|
||||
The above request invocation could be rebuilt by
|
||||
|
||||
# perl -le '@v=<STDIN>; $x=eval "@v"; print join(" ", $x->[0], @{$x->[1]})."\n"'
|
||||
[
|
||||
'/usr/sbin/ipmi-pet',
|
||||
[
|
||||
'--pet-acknowledge',
|
||||
'-h',
|
||||
'10.2.3.4',
|
||||
'356096',
|
||||
'44',
|
||||
'45',
|
||||
'4C',
|
||||
'4C',
|
||||
...
|
||||
]
|
||||
]
|
||||
Ctrl-D
|
||||
/usr/sbin/ipmi-pet --pet-acknowledge -h 10.2.3.4 356096 44 45 4C 4C ...
|
||||
|
||||
Then you could simply paste the command in the shell to simulate a
|
||||
manual acknowledge. Looks like acknowledge requests without previous
|
||||
PET is also accepted and responded as usual.
|
||||
|
||||
snmptrapd(8) itself allows for logging of traps into syslog which
|
||||
requires log permission, see "ACCESS CONTROL" from snmptrapd.conf for
|
||||
more information.
|
||||
|
||||
NSCA daemon logs to syslog, set "debug=1" in nsca.cfg to get detailed
|
||||
connection handling. Nagios is also able to log to syslog, set
|
||||
"use_syslog=1" in nagios.cfg to help debugging alert.
|
||||
|
||||
|
||||
6. PET TRAFFIC
|
||||
|
||||
On a no-acknowledge setup, usually there should be only one packet on
|
||||
behalf of the PET from the ipmi node targeting the trap receiver,
|
||||
however, firmware defect was spotted resulting in additional traffic,
|
||||
see BUGS.
|
||||
|
||||
On an acknowledge setup, there should be three packets per event, one
|
||||
PET, one PET acknowledge request from trap receiver targeting the ipmi
|
||||
node, and one PET acknowledge response in the other direction. More
|
||||
bugs were spotted, see BUGS.
|
||||
|
||||
Any setup, packets could be captured like this
|
||||
# tcpdump -i any -nn -vvv -s0 -w pet.pcap 'host 10.2.3.4 and udp'
|
||||
|
||||
Then you can browse the interactions with the help of Wireshark.
|
||||
|
||||
|
||||
7. BUGS
|
||||
|
||||
It's spotted that factory default rules of iDRAC Express on Dell
|
||||
PowerEdge R610 don't match software generated events. You need to make
|
||||
a catch-all filter rule to report those events. However, hardware
|
||||
gernerated events are not subject to such limitation. To verify this
|
||||
situation, open the case to generate a hardware generated intrusion
|
||||
event. Dell PowerEdge 1950 with BMC has similiar problem. The
|
||||
difference is that 1950 has 31 filter rules, so you don't worry about
|
||||
overwriting an existent one.
|
||||
|
||||
It's spotted that Dell PowerEdge 1950 with BMC suffers clock drift,
|
||||
remarkably SEL timestamps. bmc-device(8) from FreeIPMI could be used
|
||||
to adjust SEL time and SDR repository time,
|
||||
# bmc-device --set-sdr-repository-time=now
|
||||
# bmc-device --set-sel-time=now
|
||||
Notice that 'now' refers to current timestamp on the host where the
|
||||
commands are issued. bmc-device(8) works out of band, so simply issue
|
||||
the commands on a host where clock is synchronized.
|
||||
|
||||
It's spotted that iDRAC Express on Dell PowerEdge R610 generates two
|
||||
traps per hardware event. Notice session id from the two traps differ,
|
||||
they are different traps instead of duplication, even though other
|
||||
contents of payload are identical.
|
||||
|
||||
It's spotted that iDRAC Express on Dell PowerEdge R610 produces
|
||||
malformed PET acknowledge responses. In this case, ipmi-pet exits with
|
||||
timeout error "ipmi_cmd_pet_acknowledge: message timeout". You may use
|
||||
'-W malformedack', which is simply passed through, to instruct the
|
||||
underlying helper ipmi-pet(8) to disable such detection and to
|
||||
immediately return. Timeout hurts snmptrapd because slow handler
|
||||
hinders the main loop. To discover potential time consuming cases,
|
||||
use "-D perf" and observe the log.
|
||||
|
||||
It's spotted that some DNS servers return "localhost" on private ip
|
||||
addresses rather than NXDOMAIN, in this case, snmptrapd(8) passes
|
||||
"localhost" as resolved hostname to petalert.pl which is
|
||||
confused. You'd better switch to a correctly configured DNS server, or
|
||||
contact the administrator to solve the problem.
|
||||
|
||||
|
||||
Kaiwang Chen
|
||||
kaiwang.chen@gmail.com
|
||||
|
@ -0,0 +1,65 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Checks ipmi nodes by RMCP ping/pong
|
||||
# Mon 12 Dec 2011 kaiwang.chen@gmail.com
|
||||
|
||||
PACKETS=3
|
||||
|
||||
while getopts ":H:w:c:p:" opt
|
||||
do
|
||||
case $opt in
|
||||
H)
|
||||
HOST=$OPTARG
|
||||
;;
|
||||
w)
|
||||
WARNING=$OPTARG
|
||||
;;
|
||||
c)
|
||||
CRITICAL=$OPTARG
|
||||
;;
|
||||
p)
|
||||
PACKETS=$OPTARG
|
||||
;;
|
||||
\?)
|
||||
echo "RMCPPING UNKNOWN - invalid option -$OPTARG"
|
||||
exit 3
|
||||
;;
|
||||
:)
|
||||
echo "RMCPPING UNKNOWN - Option -$OPTARG requires an argument."
|
||||
exit 3
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
[[ "$HOST"x == x ]] && {
|
||||
echo "RMCPPING UNKNOWN - which ipmi node to ping"
|
||||
exit 3
|
||||
}
|
||||
|
||||
PROG=/usr/sbin/rmcpping
|
||||
[[ -x $PROG ]] || {
|
||||
echo "RMCPPING UNKNOWN - check $PROG executable"
|
||||
exit 3
|
||||
}
|
||||
|
||||
LOSS=`$PROG -c $PACKETS $HOST | sed -n '/packet loss/{s/^.*, \([0-9]*\)[.][0-9]*% packet loss$/\1/;p}'`
|
||||
|
||||
[[ "$WARNING"x == "x" || "$CRITICAL"x == "x" ]] && {
|
||||
echo "RMCPPING UNKNOWN - Packet loss $LOSS%"
|
||||
exit 3
|
||||
}
|
||||
WARNING=`echo $WARNING|sed s/%//`
|
||||
CRITICAL=`echo $CRITICAL|sed s/%//`
|
||||
|
||||
if [[ $LOSS -ge $CRITICAL ]]
|
||||
then
|
||||
echo "RMCPPING CRITICAL - Packet loss $LOSS%"
|
||||
exit 2
|
||||
elif [[ $LOSS -ge $WARNING ]]
|
||||
then
|
||||
echo "RMCPPING WARNING - Packet loss $LOSS%"
|
||||
exit 1
|
||||
else
|
||||
echo "RMCPPING OK - Packet loss $LOSS%"
|
||||
exit 0
|
||||
fi
|
@ -0,0 +1,49 @@
|
||||
; commands
|
||||
define command{
|
||||
command_name check-ipminode-alive
|
||||
command_line $USER1$/check_rmcpping -H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$ -p 3
|
||||
}
|
||||
define command{
|
||||
command_name check_dummy
|
||||
command_line $USER1$/check_dummy 3 'It is a volatile passive check'
|
||||
}
|
||||
|
||||
; templates
|
||||
define service{
|
||||
name pet-service
|
||||
use generic-service
|
||||
flap_detection_enabled 0
|
||||
active_checks_enabled 0
|
||||
passive_checks_enabled 1
|
||||
max_check_attempts 1
|
||||
is_volatile 1
|
||||
register 0
|
||||
check_command check_dummy
|
||||
}
|
||||
define host{
|
||||
name ipmi-node
|
||||
use generic-host
|
||||
check_period 24x7
|
||||
check_interval 5
|
||||
retry_interval 1
|
||||
max_check_attempts 10
|
||||
check_command check-ipminode-alive!20%!60%
|
||||
notification_period workhours
|
||||
notification_interval 120
|
||||
notification_options d,u,r
|
||||
contact_groups admins
|
||||
register 0
|
||||
}
|
||||
|
||||
; ipmi nodes and services
|
||||
define host{
|
||||
use ipmi-node
|
||||
host_name foo ; short
|
||||
alias foo.example.com ; fqdn
|
||||
address 10.2.3.4
|
||||
}
|
||||
define service{
|
||||
use pet-service
|
||||
host_name foo
|
||||
service_description PET
|
||||
}
|
827
source/freeipmi/usr/share/doc/freeipmi/contrib/pet/petalert.pl
Normal file
827
source/freeipmi/usr/share/doc/freeipmi/contrib/pet/petalert.pl
Normal file
@ -0,0 +1,827 @@
|
||||
#!/usr/bin/perl -w
|
||||
|
||||
# This is snmptrapd handler script to alert Platform Event Traps (PET).
|
||||
# I wrote it because traptoemail distributed with net-snmp-5.3.2.2 is
|
||||
# incapable of handling multi-line hexstrings and restricted to email alert.
|
||||
#
|
||||
# This script operates in two modes, traphandle or embperl. When in
|
||||
# traphandle mode, it concatenates the quoted hex string into one long line,
|
||||
# then builds structures to resemble embperl mode. Both modes then invokes
|
||||
# helper decoder, ipmi-pet(8) from FreeIPMI, parses the output and alerts
|
||||
# in given way like email, nagios external command, etc. See README for
|
||||
# a simple tutorial.
|
||||
#
|
||||
# This script is tested on Dell PowerEdge 1950 and PowerEdge R610 servers.
|
||||
# Feel free to adjust to meet your need. It's BSD-licensed.
|
||||
#
|
||||
# ChangeLog
|
||||
#
|
||||
# * Fri 16 Dec 2011 kaiwang.chen@gmail.com
|
||||
# - Re-add nsca support.
|
||||
# - Protect against hex string for traphandle missing ending whitespace.
|
||||
#
|
||||
# * Wed 14 Dec 2011 kaiwang.chen@gmail.com
|
||||
# - Add performance logging support with 'perf' token
|
||||
#
|
||||
# * Mon 12 Dec 2011 kaiwang.chen@gmail.com
|
||||
# - Remove nsca support because snmptrapd is meant to run on the Nagios host
|
||||
# - Fix nagios external command file support
|
||||
# - Map FreeIPMI Nominal state to Nagios OK
|
||||
# - Fix Net::SMTP typos and options handling
|
||||
# - Remove USAGE section, please refer to README
|
||||
#
|
||||
# * Sun 11 Dec 2011 kaiwang.chen@gmail.com
|
||||
# - Add -W to pass workaround flags to ipmi-pet
|
||||
#
|
||||
# * Wed 7 Dec 2011 kaiwang.chen@gmail.com
|
||||
# - Add --ack support
|
||||
# - capture exit code of helper
|
||||
#
|
||||
# * Mon 14 Nov 2011 kaiwang.chen@gmail.com
|
||||
# - complete rewritten, supports embperl mode and additional alert methods
|
||||
#
|
||||
# * Sat 12 Nov 2011 kaiwang.chen@gmail.com
|
||||
# - support sdr cache file mapping with -c option
|
||||
# - add debug log
|
||||
# - in case of no PTR, fallback to ip
|
||||
#
|
||||
# * Sun 06 Nov 2011 kaiwang.chen@gmail.com
|
||||
# - Inital version
|
||||
|
||||
package IpmiPET::Perf;
|
||||
use Time::HiRes qw(tv_interval gettimeofday);
|
||||
sub new {
|
||||
bless {
|
||||
_elapsed => 0,
|
||||
}, __PACKAGE__;
|
||||
}
|
||||
sub start { shift->{_start} = [gettimeofday] }
|
||||
sub stop {
|
||||
my ($obj,$name) = @_;
|
||||
my $t1 = [gettimeofday];
|
||||
my $t = tv_interval($obj->{_start}, $t1);
|
||||
$obj->{_elapsed} += $t;
|
||||
if ($name) {
|
||||
$obj->{_laps}{$name} = $t;
|
||||
}
|
||||
return $t;
|
||||
}
|
||||
sub reset {
|
||||
my ($obj) = @_;
|
||||
$obj->{_elapsed} = 0;
|
||||
if ($obj->{_start}) { delete $obj->{_start} }
|
||||
if ($obj->{_laps}) { delete $obj->{_laps} }
|
||||
}
|
||||
sub elapsed { shift->{_elapsed} }
|
||||
sub laps { shift->{_laps} }
|
||||
1;
|
||||
|
||||
|
||||
package IpmiPET;
|
||||
|
||||
use strict;
|
||||
use Getopt::Long;
|
||||
|
||||
# mapping IPMI nodes to preinitialized sdr caches
|
||||
my %cache_mapping=();
|
||||
|
||||
# options
|
||||
my %opts = ();
|
||||
|
||||
# options and args pass to specific alert mechanisms
|
||||
my %alert_opts = (); # when use builtin features to alert
|
||||
my $alert_prog = ""; # when use external program to alert
|
||||
|
||||
# logger
|
||||
my $log_filename = "/var/log/petalert.log";
|
||||
my %logger_token = ('warn' => 1); # always warn
|
||||
|
||||
# performance ticker
|
||||
my $perf;
|
||||
|
||||
|
||||
sub usage {
|
||||
print <<"EOF";
|
||||
USAGE
|
||||
|
||||
$0 [OPTIONS] -- [ALERT_SPECIFIC_OPTIONS] ALERT_SPECIFIC_ARGS
|
||||
|
||||
OPTIONS
|
||||
-m
|
||||
--mode {traphandle|embperl}
|
||||
Specify mode of execution. Required.
|
||||
--ack
|
||||
Acknowledge the trap before alert.
|
||||
-W
|
||||
--workaround
|
||||
Sets workaround flags for ipmi-pet to acknowledge the trap.
|
||||
-o
|
||||
--trapoid OID
|
||||
Sets trapoid in embperl mode, or defaults to "all".
|
||||
-c
|
||||
--sdrcache sdr_cache_config
|
||||
Specify the sdr cache configuration file.
|
||||
-f
|
||||
--log log_file
|
||||
Specify logging file
|
||||
-n
|
||||
--alert {mail|nagios|nsca|noop|MODULE}
|
||||
Specify alert method. Defaults to "noop".
|
||||
|
||||
ALERT SPECIFIC OPTIONS AND ARGS
|
||||
email
|
||||
--prog mailer
|
||||
Sets mailer. If not specified, falls back to Net::SMTP.
|
||||
mailer_options_and_args
|
||||
|
||||
--server smtp_server
|
||||
Sets the smtpserver for Net::SMTP to send the mail through.
|
||||
Defaults to "localhost".
|
||||
--from from_address
|
||||
Sets the email for Net:SNMP to be used on the From: line.
|
||||
Defaults to "root".
|
||||
to_addresses
|
||||
Sets where you want Net::SMTP to send the email to. Required.
|
||||
|
||||
nagios
|
||||
--host {fqdn|short}
|
||||
Sets host in nagios external commands. Defaults to short (first component).
|
||||
--service
|
||||
Sets service in nagios external commands. Defaults to PET.
|
||||
command_file
|
||||
Sets Nagios external command file, a named pipe (FIFO).
|
||||
Required.
|
||||
nsca
|
||||
--prog send_nsca
|
||||
Sets path to send_nsca binary, required.
|
||||
--host {fqdn|short}
|
||||
Sets host for the passive check. Defaults to short (first component).
|
||||
--service
|
||||
Sets service for the passive check. Defaults to PET.
|
||||
-- send_nsca_options_and_args
|
||||
Pass options and args through to send_nsca binary.
|
||||
|
||||
noop Yes, it is a no-op.
|
||||
|
||||
MODULE <not implemented>
|
||||
--prog plugin
|
||||
Path to plugin script, which must provides..
|
||||
plugin_options_and_args
|
||||
Additional arguments passed to plugin as \@ARGV.
|
||||
EOF
|
||||
|
||||
exit;
|
||||
}
|
||||
|
||||
sub logger {
|
||||
my ($token, $msg, $variable) = @_;
|
||||
$token ||= "";
|
||||
|
||||
if (open my $fh, ">>", $log_filename) {
|
||||
if ($logger_token{":all"} || $logger_token{$token}) {
|
||||
if ($variable) {
|
||||
use Data::Dumper;
|
||||
my $t = $Data::Dumper::Terse;
|
||||
$Data::Dumper::Terse = 1;
|
||||
print $fh "[".localtime()."] $token $msg " . Dumper($variable);
|
||||
$Data::Dumper::Terse = $t;
|
||||
}
|
||||
else {
|
||||
print $fh "[".localtime()."] $token $msg\n";
|
||||
}
|
||||
}
|
||||
close $fh;
|
||||
}
|
||||
}
|
||||
|
||||
# extract ip from value like "UDP: [172.23.252.107]:32768"
|
||||
sub extract_ip {
|
||||
my ($ip) = ($_[0] =~ /\[([\d.]+)\]:/);
|
||||
return $ip || "0.0.0.0";
|
||||
}
|
||||
|
||||
# decode specified event hexstring into hash like
|
||||
# 'Time' => '13:16:24',
|
||||
# 'Event' => 'General Chassis Intrusion ; Intrusion while system On',
|
||||
# 'System_ID' => '256',
|
||||
# 'State' => 'Critical',
|
||||
# 'GUID' => '44454c4c-5000-1059-8043-b2c04f333358',
|
||||
# 'Date' => 'Oct-15-2011',
|
||||
# 'Manufacturer_ID' => 'Dell Inc.',
|
||||
# 'Name' => 'Sensor #115',
|
||||
# 'Severity' => 'N/A',
|
||||
# 'Event_Direction' => 'Assertion Event',
|
||||
# 'Type' => 'Physical_Security'
|
||||
#
|
||||
sub decode_pet {
|
||||
my ($specific, $event_hexstring, $sdrcache) = @_;
|
||||
|
||||
my $ipmi_pet = "/usr/sbin/ipmi-pet";
|
||||
my @o = qw(-v -v --output-event-severity --output-event-state --interpret-oem-data --comma-separated-output);
|
||||
if ($sdrcache) { push @o, "--sdr-cache-file", $sdrcache }
|
||||
push @o, $specific;
|
||||
$event_hexstring =~ tr/0-9a-fA-F/ /cs; # sanity check
|
||||
$event_hexstring =~ s/^\s+//; # in case of (split/\s+/)[0] being ""
|
||||
push @o, split /\s+/, $event_hexstring;
|
||||
|
||||
my @x = ();
|
||||
logger("decode", "command line ", [$ipmi_pet, \@o]);
|
||||
if (open my $fh, "-|", $ipmi_pet, @o) {
|
||||
@x = <$fh>;
|
||||
close $fh;
|
||||
if ($? >> 8) {
|
||||
logger("warn", "decode failure with CHILD_ERROR: $?");
|
||||
return;
|
||||
}
|
||||
}
|
||||
else {
|
||||
logger("warn", "decoder failure: $!");
|
||||
return;
|
||||
}
|
||||
chomp(@x);
|
||||
|
||||
logger("decode", "output ", \@x);
|
||||
my @headers = split /,/, $x[0];
|
||||
my @values = split /,/, $x[1]; # TODO support doubly quoted value
|
||||
if (@headers != @values) {
|
||||
logger("warn", "Spot malicious comma separated value", \@x);
|
||||
}
|
||||
my %event = ();
|
||||
for my $i (0..$#headers) {
|
||||
my $h = $headers[$i];
|
||||
$h =~ s/ /_/g;
|
||||
$event{$h} = $values[$i];
|
||||
}
|
||||
logger("decode", "event ", \%event);
|
||||
return \%event;
|
||||
}
|
||||
|
||||
sub ack_pet {
|
||||
my ($specific, $event_hexstring, $host, $workaround) = @_;
|
||||
|
||||
my $ipmi_pet = "/usr/sbin/ipmi-pet";
|
||||
my @o = qw(--pet-acknowledge);
|
||||
if ($workaround) {
|
||||
push @o, "-W", $workaround;
|
||||
}
|
||||
push @o, "-h", $host;
|
||||
push @o, $specific;
|
||||
$event_hexstring =~ tr/0-9a-fA-F/ /cs; # sanity check
|
||||
$event_hexstring =~ s/^\s+//; # in case of (split/\s+/)[0] being ""
|
||||
push @o, split /\s+/, $event_hexstring;
|
||||
|
||||
my @x = ();
|
||||
logger("ack", "command line ", [$ipmi_pet, \@o]);
|
||||
if (open my $fh, "-|", $ipmi_pet, @o) {
|
||||
@x = <$fh>;
|
||||
close $fh;
|
||||
if ($? >> 8) {
|
||||
logger("warn", "ackhelper failure with CHILD_ERROR: $?");
|
||||
}
|
||||
}
|
||||
else {
|
||||
logger("warn", "ackhelper failure: $!");
|
||||
}
|
||||
}
|
||||
|
||||
# ipmi-pet localtime to calendar time
|
||||
sub pettime {
|
||||
my ($event) = @_;
|
||||
require POSIX;
|
||||
my ($hour,$min,$sec) = split /:/, $event->{Time};
|
||||
my ($mon,$mday,$year) = split /-/, $event->{Date};
|
||||
$year -= 1900;
|
||||
my %m = (
|
||||
Jan => 0, Feb => 1, Mar => 2, Apr => 3, May => 4, Jun => 5,
|
||||
Jul => 6, Aug => 7, Sep => 8, Oct => 9, Nov => 10, Dec => 11,
|
||||
);
|
||||
if (exists $m{$mon}) { $mon = $m{$mon} }
|
||||
else {
|
||||
logger("warn", "pettime month $mon will map to 0, please check ipmi-pet");
|
||||
$mon = 0;
|
||||
}
|
||||
return POSIX::mktime($sec, $min, $hour, $mday, $mon, $year);
|
||||
}
|
||||
|
||||
# convert event to nagios plugin output
|
||||
# See http://nagios.sourceforge.net/docs/3_0/pluginapi.html
|
||||
sub nagios_check {
|
||||
my ($event) = @_;
|
||||
my ($code, $state);
|
||||
|
||||
$state = uc($event->{State});
|
||||
if ($state eq "WARNING") {$code = 1}
|
||||
elsif ($state eq "CRITICAL") {$code = 2}
|
||||
elsif ($state eq "OK") {$code = 0}
|
||||
elsif ($state eq "NOMINAL") {$code = 0; $state = "OK"}
|
||||
else {$code = 3; $state = "UNKNOWN"}
|
||||
|
||||
my $plugin_output = join(" ", $state, "-", map { defined $_ ? $_ : "" } @{%{$event}}{qw(Name Type Event_Direction Event)});
|
||||
$plugin_output =~ tr/\n\t;|/@:/;
|
||||
|
||||
return ($code, $plugin_output);
|
||||
}
|
||||
sub nagios_host {
|
||||
my ($pdu_info, $opt) = @_;
|
||||
my $h = $pdu_info->{hostname};
|
||||
if ($opt eq 'short') {
|
||||
($h) = ($pdu_info->{hostname} =~ m/([^.]+)/);
|
||||
}
|
||||
return $h;
|
||||
}
|
||||
|
||||
# assemble SMTP DATA, http://cr.yp.to/smtp/mail.html
|
||||
# TODO return encoded data
|
||||
sub mail_data {
|
||||
my ($from, $to, $pdu_info, $uptime, $event) = @_;
|
||||
|
||||
local $" = ", "; # " balance
|
||||
my $data = <<"DATA";
|
||||
To: @{$to}
|
||||
From: $from
|
||||
Subject: PET from $pdu_info->{hostname}: $event->{State} - $event->{Event}
|
||||
|
||||
Host: $pdu_info->{hostname} ($pdu_info->{receivedfrom}) uptime $uptime
|
||||
DATA
|
||||
|
||||
for my $k (qw(Date Time Name Type Event Event_Direction State Severity GUID Manufacturer_ID System_ID)) {
|
||||
$data .= "$k: $event->{$k}\n";
|
||||
}
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
# embperl NetSNMP::TrapReceiver trap receiver
|
||||
sub my_receiver {
|
||||
my ($pdu_info, $varbindings) = @_;
|
||||
|
||||
#use Data::Dumper;print Dumper($pdu_info); print Dumper($varbindings);
|
||||
logger("embperl", "original input is ", \@_);
|
||||
|
||||
# inject hostname
|
||||
unless (exists $pdu_info->{hostname}) {
|
||||
use Socket;
|
||||
my $ip = extract_ip($pdu_info->{receivedfrom});
|
||||
$perf->start;
|
||||
$pdu_info->{hostname} = gethostbyaddr(inet_aton($ip), AF_INET) || $ip;
|
||||
$perf->stop("resolv");
|
||||
}
|
||||
|
||||
# do cleanup before processing; values are untouched if -OQ, see snmpcmd(1)
|
||||
for (@$varbindings) {
|
||||
$_->[1] =~ s/^OID: //;
|
||||
$_->[1] =~ s/^IpAddress: //;
|
||||
$_->[1] =~ s/^STRING: //;
|
||||
$_->[1] =~ s/^Hex-STRING: //;
|
||||
if ($_->[1] =~ s/^Timeticks: //) {
|
||||
$_->[1] =~ s/^\(\d+\) //;
|
||||
$_->[1] =~ s/ days, /:/;
|
||||
}
|
||||
}
|
||||
logger("embperl", "input after cleanup is ", \@_);
|
||||
|
||||
process($pdu_info, $varbindings);
|
||||
my $laps = $perf->laps;
|
||||
logger("perf", join(", ", map { $_ . "=" . $laps->{$_} } keys %{$laps}));
|
||||
$perf->reset;
|
||||
}
|
||||
|
||||
# you got it..
|
||||
sub process {
|
||||
my ($pdu_info, $varbindings) = @_;
|
||||
my ($event_oid, $specific, $uptime, $event);
|
||||
|
||||
# locate the PET event hex string, and extract specific trap number
|
||||
for my $v (@{$varbindings}) {
|
||||
if ($v->[0] =~ /^\Q.1.3.6.1.6.3.1.1.4.3.0\E$/) {
|
||||
$event_oid = $v->[1];
|
||||
}
|
||||
if ($v->[0]=~ /^\Q.1.3.6.1.6.3.1.1.4.1.0\E$/) {
|
||||
($specific)=($v->[1]=~/(\d+)$/);
|
||||
}
|
||||
if ($v->[0] =~ /^\Q.1.3.6.1.2.1.1.3.0\E$/) {
|
||||
$uptime = $v->[1];
|
||||
}
|
||||
}
|
||||
$event_oid .= ".1";
|
||||
|
||||
$uptime ||= "00:00:00:00.00";
|
||||
if (my ($d,$H,$M,$S,$x) = ($uptime =~ /(\d+):(\d+):(\d+):(\d+)\.(\d+)/)) {
|
||||
if ($d > 0) { $uptime = "${d}d${H}h" }
|
||||
elsif ($H > 0) { $uptime = "${H}h${M}m" }
|
||||
elsif ($M > 0) { $uptime = "${M}m${S}s" }
|
||||
else { $uptime = "${S}.${x}s" }
|
||||
}
|
||||
|
||||
# convert event string to human readable form
|
||||
for my $v (@{$varbindings}) {
|
||||
if ($v->[0] =~ /^\Q$event_oid\E$/) {
|
||||
my $ip = extract_ip($pdu_info->{receivedfrom});
|
||||
if ($opts{ack}) {
|
||||
$perf->start;
|
||||
ack_pet($specific, $v->[1], $ip, $opts{workaround});
|
||||
$perf->stop("ack");
|
||||
}
|
||||
|
||||
my $sdrcache = resolve_sdrcache($ip);
|
||||
|
||||
# decode octet hex string
|
||||
$event = decode_pet($specific, $v->[1], $sdrcache);
|
||||
}
|
||||
}
|
||||
|
||||
# invalid events cease here
|
||||
return unless $event;
|
||||
|
||||
alert($pdu_info, $uptime, $event);
|
||||
return;
|
||||
}
|
||||
|
||||
# build NetSNMP::TrapReceiver style structures from standard input
|
||||
# See NOTIFICATION PROCESSING snmptrapd.conf(5)
|
||||
sub get_from_stdin {
|
||||
my ($stdin) = @_;
|
||||
my $hostname = shift @{$stdin};
|
||||
my $ipaddress = shift @{$stdin};
|
||||
|
||||
chomp($hostname);
|
||||
chomp($ipaddress);
|
||||
|
||||
# in case of no PTR records available for the IPMI node
|
||||
if($hostname eq "<UNKNOWN>" && (my $ip = extract_ip($ipaddress))) {
|
||||
$hostname = $ip;
|
||||
}
|
||||
|
||||
# some defaults, blindly.. to resemble those by NetSNMP::TrapReceiver
|
||||
my %pdu_info = (
|
||||
notificationtype => "TRAP",
|
||||
hostname => $hostname,
|
||||
receivedfrom => $ipaddress,
|
||||
version => 0,
|
||||
errorstatus => 0,
|
||||
messageid => 0,
|
||||
transactionid => 1,
|
||||
errorindex => 0,
|
||||
requestid => 0,
|
||||
);
|
||||
|
||||
my @varbindings= ();
|
||||
my ($oid,$value);
|
||||
my $more = 0;
|
||||
my $line = "";
|
||||
for (@{$stdin}) {
|
||||
if ($more == 0 && $line) {
|
||||
$line =~ s/\n\Z//s;
|
||||
($oid, $value) = ($line =~ /([^\s]+)\s+(.*)/s);
|
||||
$line = "";
|
||||
push @varbindings, [$oid, $value, "="];
|
||||
}
|
||||
|
||||
# recognize doubly quoted context
|
||||
my $count = 0;
|
||||
my $x = -1;
|
||||
$x=index($_, q{"});
|
||||
while ($x >= 0) {
|
||||
unless ($x > 0 && substr($_, $x-1, 1) eq "\\") {
|
||||
$count++;
|
||||
}
|
||||
$x += 1;
|
||||
$x=index($_, q{"}, $x);
|
||||
}
|
||||
if ($count % 2 == 1) {
|
||||
$more = $more == 1 ? 0 : 1;
|
||||
}
|
||||
|
||||
$line .= "$_\n";
|
||||
}
|
||||
if ($line) {
|
||||
$line =~ s/\n\Z//s;
|
||||
($oid, $value) = ($line =~ /([^\s]+)\s+(.*)/s);
|
||||
$line = "";
|
||||
push @varbindings, [$oid, $value];
|
||||
}
|
||||
|
||||
# Notice the assembled varbindings slightly differs from that in embperl.
|
||||
# For instance, hex string is surrounded by doubly quote, and never
|
||||
# prefixed by "Hex-STRING: ".
|
||||
return (\%pdu_info, \@varbindings);
|
||||
}
|
||||
|
||||
# traphandle handler
|
||||
sub handle_trap {
|
||||
chomp(my @stdin = <STDIN>);
|
||||
logger("traphandle", "input text is ", \@stdin);
|
||||
my ($pdu_info, $varbindings) = get_from_stdin(\@stdin);
|
||||
logger("traphandle", "got pdu_info and varbindings ", [$pdu_info,$varbindings]);
|
||||
process($pdu_info, $varbindings);
|
||||
|
||||
my $laps = $perf->laps;
|
||||
logger("perf", join(", ", map { sprintf '%s=%f', $_,$laps->{$_} } keys %{$laps}));
|
||||
$perf->reset;
|
||||
}
|
||||
|
||||
# alert dispatcher
|
||||
sub alert {
|
||||
my ($pdu_info, $uptime, $event) = @_;
|
||||
|
||||
if ($opts{'alert'} eq 'email') {
|
||||
my $data = mail_data($alert_opts{'from'}, \@ARGV, $pdu_info, $uptime, $event);
|
||||
logger("alert", "mail data is", [\$data]);
|
||||
|
||||
if ($alert_prog) {
|
||||
logger("alert", "mailer invoked with ", [$alert_prog,\@ARGV]);
|
||||
$perf->start;
|
||||
if (open MAILER, "|-", $alert_prog, @ARGV) {
|
||||
print MAILER $data;
|
||||
close MAILER;
|
||||
}
|
||||
else {
|
||||
logger("warn", "Unable to alert through mailer[$alert_prog @ARGV]: $!");
|
||||
}
|
||||
$perf->stop("mailer");
|
||||
}
|
||||
else {
|
||||
logger("alert", "mail by Net::SMTP ", [$alert_opts{'server'},$alert_opts{'from'}, \@ARGV]);
|
||||
$perf->start;
|
||||
eval {
|
||||
my $message = Net::SMTP->new($alert_opts{'server'}) || die "ERROR: can't talk to server $alert_opts{'server'}\n";
|
||||
$message->mail($alert_opts{'from'});
|
||||
$message->to(@ARGV) || die "ERROR: failed to send to the recepients ",join(",",@ARGV),": $!";
|
||||
$message->data();
|
||||
$message->datasend($data);
|
||||
$message->dataend();
|
||||
$message->quit;
|
||||
};
|
||||
$perf->stop("netsmtp");
|
||||
if ($@) {
|
||||
logger("warn", "alert mail failure ", $@);
|
||||
}
|
||||
}
|
||||
}
|
||||
elsif ($opts{'alert'} eq 'nagios') {
|
||||
my $command_file = $ARGV[0];
|
||||
logger("alert", "nagios external command file is $command_file");
|
||||
|
||||
my $t = pettime($event);
|
||||
my ($code,$plugin_output) = nagios_check($event);
|
||||
my $nagios_host = nagios_host($pdu_info, $alert_opts{host});
|
||||
my $nagios_service = $alert_opts{service};
|
||||
|
||||
# http://nagios.sourceforge.net/docs/3_0/extcommands.html
|
||||
my $cmd = "[$t] PROCESS_SERVICE_CHECK_RESULT;$nagios_host;$nagios_service;$code;$plugin_output";
|
||||
logger("alert", "nagios command is", $cmd);
|
||||
|
||||
$perf->start;
|
||||
if (open NAGIOS, ">>", $command_file) {
|
||||
print NAGIOS "$cmd\n";
|
||||
close NAGIOS;
|
||||
}
|
||||
else {
|
||||
logger("warn", "nagios failure with $command_file: $!");
|
||||
}
|
||||
$perf->stop("nagios");
|
||||
}
|
||||
elsif ($opts{'alert'} eq 'nsca') {
|
||||
logger("alert", "send_nsca invoked as ", [$alert_prog, \@ARGV]);
|
||||
|
||||
my ($code,$plugin_output) = nagios_check($event);
|
||||
my $nagios_host = nagios_host($pdu_info, $alert_opts{host});
|
||||
my $nagios_service = $alert_opts{service};
|
||||
|
||||
# http://nagios.sourceforge.net/download/contrib/documentation/misc/NSCA_Setup.pdf
|
||||
my $cmd= "$nagios_host\t$nagios_service\t$code\t$plugin_output";
|
||||
logger("alert", "nsca command is", $cmd);
|
||||
|
||||
$perf->start;
|
||||
if (open NSCA, "|-", $alert_prog, @ARGV) {
|
||||
print NSCA "$cmd\n";
|
||||
close NSCA;
|
||||
if ($? >> 8) {
|
||||
logger("warn", "nsca failure with CHILD_ERROR: $?");
|
||||
}
|
||||
}
|
||||
else {
|
||||
logger("warn", "nsca failure: $!");
|
||||
}
|
||||
$perf->stop("nsca");
|
||||
}
|
||||
elsif ($opts{'alert'} eq 'noop') {
|
||||
logger('alert', 'noop alert selected');
|
||||
}
|
||||
else {
|
||||
logger("alert", "alert module");
|
||||
# TODO module
|
||||
die "alert module is not implemented!";
|
||||
}
|
||||
}
|
||||
|
||||
# load sdr cache config into global mapping hash
|
||||
sub load_sdrcache_config {
|
||||
my ($conf) = @_;
|
||||
|
||||
my $cache_file = "";
|
||||
my $nl = 0;
|
||||
for (@{$conf}) {
|
||||
$nl++;
|
||||
chomp;
|
||||
s/#.*$//; # trim comment
|
||||
s/\s+$//; # trim trailing whitespaces
|
||||
next if /^$/;
|
||||
if (/^\S/) {
|
||||
if (-e $_) {
|
||||
$cache_file = $_;
|
||||
}
|
||||
else {
|
||||
return "ERROR: no such sdr cache file[$_] at line #$nl";
|
||||
}
|
||||
}
|
||||
if (/^\s/) {
|
||||
s/^\s+//; # trim leading whitespaces
|
||||
if ($cache_file) {
|
||||
for (split /\s+/) {
|
||||
$cache_mapping{$_} = $cache_file;
|
||||
}
|
||||
}
|
||||
else {
|
||||
return "ERROR: missing sdr cache file for host[$_] at line #$nl";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
# given an ipv4 address, resolve to related sdr cache
|
||||
sub resolve_sdrcache {
|
||||
my ($ipmi_node) = @_;
|
||||
my $sdrcache = "";
|
||||
if (exists $cache_mapping{$ipmi_node}) {
|
||||
$sdrcache = $cache_mapping{$ipmi_node};
|
||||
logger("sdrcache", "$ipmi_node resolved to $sdrcache");
|
||||
}
|
||||
else {
|
||||
my $re = qr/^(.*)\[([-\d,]+)\](.*)$/; # to match against eg. 10.2.3.[4-7]
|
||||
for my $k (keys %cache_mapping) {
|
||||
if (my ($prefix,$range,$suffix) = ($k =~ m/$re/)) {
|
||||
if (my ($item) = ($ipmi_node =~ /^\Q$prefix\E(.+)\Q$suffix\E$/)) {
|
||||
for (split /,+/, $range) {
|
||||
my ($f,$t);
|
||||
if (
|
||||
((($f,$t) = m/^(\d+)-(\d+)$/) && $f <= $item && $item <= $t)
|
||||
|| $item == $_
|
||||
) {
|
||||
# got it
|
||||
$sdrcache = $cache_mapping{$k};
|
||||
logger("sdrcache", "$ipmi_node resolved to ", [$k => $sdrcache]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$sdrcache || logger("sdrcache", "$ipmi_node will use default cache");
|
||||
|
||||
return $sdrcache;
|
||||
}
|
||||
|
||||
# process and verify args
|
||||
sub process_args {
|
||||
# parse global ARGV for this package
|
||||
GetOptions(\%opts, 'help!', 'quiet!', 'mode|m=s', 'ack!', 'workaround|W=s',
|
||||
'trapoid|o=s', 'sdrcache|c=s', 'log|f=s', 'Debug|D=s', 'alert|n=s');
|
||||
|
||||
if ($opts{'help'}) {
|
||||
usage();
|
||||
}
|
||||
|
||||
# log file
|
||||
if ($opts{'log'}) {
|
||||
if (-w $opts{'log'}) {
|
||||
$log_filename = $opts{'log'};
|
||||
}
|
||||
else {
|
||||
die "log file $opts{'log'} is not writable";
|
||||
}
|
||||
}
|
||||
unless ($opts{'quiet'}) {
|
||||
print STDERR "petalert.pl is logging to $log_filename, use -q to suppress this tip\n";
|
||||
}
|
||||
|
||||
# comma-separted debug tokens
|
||||
if ($opts{'Debug'}) {
|
||||
$logger_token{$_} = 1 for split /,+/, $opts{'Debug'};
|
||||
}
|
||||
# logging now ready
|
||||
logger("argv", "parsed options is ", \%opts);
|
||||
|
||||
if ($opts{'sdrcache'}) {
|
||||
my $conf = $opts{'sdrcache'};
|
||||
logger("sdrcache", "config is [$conf]");
|
||||
|
||||
open CONF, "<", $conf || logger("warn", "assumes default cache because failed to config file[$conf]: $!");
|
||||
chomp(my @lines = <CONF>);
|
||||
close CONF;
|
||||
|
||||
load_sdrcache_config(\@lines);
|
||||
logger("sdrcache", "cache_mapping is ", \%cache_mapping);
|
||||
|
||||
if ($opts{'syntax-only'}) {
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
if ($opts{'mode'} eq 'embperl') {
|
||||
unless (exists $opts{trapoid}) {
|
||||
$opts{trapoid} = "all";
|
||||
logger("argv", "no trapoid specified, defaults to all");
|
||||
}
|
||||
require NetSNMP::TrapReceiver;
|
||||
}
|
||||
elsif ($opts{'mode'} eq 'traphandle') {
|
||||
}
|
||||
else {
|
||||
print STDERR "Unknown operation mode: $opts{mode}\n";
|
||||
usage();
|
||||
}
|
||||
|
||||
# alert method defaults to no-op
|
||||
unless (exists $opts{'alert'}) {
|
||||
$opts{'alert'} = 'noop';
|
||||
logger("argv", "no alert method specified, defaults to noop");
|
||||
}
|
||||
|
||||
# alert methods
|
||||
if ($opts{'alert'} eq 'email') {
|
||||
# use external mail program
|
||||
if ($ARGV[0] && $ARGV[0] eq "--prog") {
|
||||
shift @ARGV;
|
||||
$alert_prog = shift @ARGV;
|
||||
unless (-x $alert_prog) {
|
||||
die "mailer[$alert_prog] is not executable\n";
|
||||
}
|
||||
}
|
||||
# or use perl module
|
||||
else {
|
||||
GetOptions(\%alert_opts, "server=s", "from=s");
|
||||
require Net::SMTP;
|
||||
}
|
||||
}
|
||||
elsif ($opts{'alert'} eq 'nagios' || $opts{'alert'} eq 'nsca') {
|
||||
GetOptions(\%alert_opts, "prog=s", "host|H=s", "service|S=s");
|
||||
$alert_opts{host} ||= "short";
|
||||
$alert_opts{service} ||= "PET";
|
||||
if ($alert_opts{host} ne "fqdn" && $alert_opts{host} ne "short") { # TODO
|
||||
die "Unknown host mapping $alert_opts{host}\n";
|
||||
}
|
||||
if ($opts{'alert'} eq 'nagios' && !($ARGV[0] && -w $ARGV[0])) {
|
||||
die "nagios external command file[$ARGV[0]] is not writable\n";
|
||||
}
|
||||
if ($opts{'alert'} eq 'nsca' && ! $alert_opts{prog}) {
|
||||
die "send_nsca binary is not set\n";
|
||||
}
|
||||
$alert_prog = $alert_opts{prog} || "";
|
||||
}
|
||||
elsif ($opts{'alert'} eq 'noop') {
|
||||
}
|
||||
else {
|
||||
my $module = $opts{'alert'};
|
||||
if (-r $module) {
|
||||
require "$module";
|
||||
# TODO
|
||||
die "<not implemenented yet>";
|
||||
}
|
||||
else {
|
||||
die "Unknown alert module to load: $module\n";
|
||||
}
|
||||
# invokes handler
|
||||
}
|
||||
|
||||
# @ARGV now holds alert specific arguments
|
||||
}
|
||||
|
||||
sub main {
|
||||
@ARGV = @_; # set global ARGV for this package
|
||||
process_args();
|
||||
$perf = IpmiPET::Perf->new;
|
||||
if ($opts{'mode'} eq 'traphandle') {
|
||||
logger("main", "running as traphandle");
|
||||
handle_trap();
|
||||
}
|
||||
elsif ($opts{'mode'} eq 'embperl') {
|
||||
logger("main", "running as embperl");
|
||||
NetSNMP::TrapReceiver::register($opts{trapoid}, \&my_receiver) ||
|
||||
warn "failed to register our perl trap handler\n";
|
||||
}
|
||||
else {
|
||||
die "Should never reach here!\n";
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
# run the program
|
||||
if ( !caller ) { exit main(@ARGV); }
|
||||
|
||||
1;
|
File diff suppressed because it is too large
Load Diff
272
source/freeipmi/usr/share/doc/freeipmi/freeipmi-coding.txt
Normal file
272
source/freeipmi/usr/share/doc/freeipmi/freeipmi-coding.txt
Normal file
@ -0,0 +1,272 @@
|
||||
FreeIPMI Coding
|
||||
|
||||
by
|
||||
|
||||
Albert Chu
|
||||
chu11@llnl.gov
|
||||
Last Updated: February 8, 2012
|
||||
|
||||
These are some short descriptions on coding style, API style, other
|
||||
thoughts for those interested in developing for FreeIPMI.
|
||||
|
||||
1) Code Style
|
||||
-------------
|
||||
|
||||
The GNU coding style was selected for FreeIPMI. Please try to follow
|
||||
the coding style used in the rest of FreeIPMI. Here's a short example
|
||||
that covers the generics of the GNU coding style.
|
||||
|
||||
int
|
||||
main(int argc, char **argv)
|
||||
{
|
||||
int a = 0;
|
||||
int b = 1;
|
||||
|
||||
if (a == 1)
|
||||
printf("yoda\n");
|
||||
|
||||
if (a == 5
|
||||
|| b == 1)
|
||||
{
|
||||
printf("foobar\n");
|
||||
printf("xyzzy\n");
|
||||
}
|
||||
|
||||
while (a++ < 5)
|
||||
printf("lala\n");
|
||||
|
||||
while (b++ < 7)
|
||||
{
|
||||
printf("blah\n");
|
||||
printf("garble\n");
|
||||
}
|
||||
}
|
||||
|
||||
2) Parameter Checking
|
||||
---------------------
|
||||
|
||||
Please carefully check the input parameters on the inputs your
|
||||
program and/or functions take. Minor parsing issues can lead to
|
||||
catastrophic mistakes in IPMI.
|
||||
|
||||
For example, suppose you have a --power-control option that takes a
|
||||
number to represent a type of operation (on, off, etc.). Suppose a
|
||||
user inputs "--power-control=foobar". The "foobar" will be read as a
|
||||
'0' by strtoul(). If not properly checked, the '0' can be passed to
|
||||
the IPMI Chassis Control command, which uses the '0' to power off a
|
||||
node.
|
||||
|
||||
In programs, when appropriate, output error messages to the user
|
||||
indicating that how and why the inputted parameters were incorrect.
|
||||
|
||||
3) Code Consistency
|
||||
-------------------
|
||||
|
||||
Please keep your code as consistent as possible to other code in
|
||||
FreeIPMI. That includes code indenting style, brace style, API style,
|
||||
and naming convention (which is discussed in more detail below).
|
||||
|
||||
Although there may be situations that a particular API style or naming
|
||||
convention will make things easier for you and your code (such as
|
||||
shortening the name of a function, decreasing the number of parameters
|
||||
you need to pass to a function via a struct, etc.), we ask that your
|
||||
code be consistent so that it does not confuse other developers.
|
||||
|
||||
If there is a distinct technical reason that you must use a different
|
||||
API style, please bring it up with the FreeIPMI authors.
|
||||
|
||||
For example, pretty much all of the "fill" functions in libfreeipmi
|
||||
take the exact parameters they need to fill the fiid object which is
|
||||
passed along as a parameter. All parameters are passed by value, not
|
||||
by a pointer or other method (e.g. object, struct, etc.).
|
||||
|
||||
Exceptions do exist. For example, fill_cmd_chassis_identify() takes
|
||||
parameters passed by pointer instead of passed by value. The reason
|
||||
is that both fields are optional and need not be filled according to
|
||||
the IPMI specification. The pointer gives the caller the ability to
|
||||
set values (by passing a valid pointer) or not (by passing NULL).
|
||||
|
||||
4) Libfreeipmi naming/function parameter conventions
|
||||
----------------------------------------------------
|
||||
|
||||
The naming style in libfreeipmi was developed primarily for the
|
||||
purpose of readability when code is being compared to the IPMI
|
||||
specification.
|
||||
|
||||
Due to the size of the IPMI spec, there will be a lot of code. In
|
||||
earlier versions of FreeIPMI, there was confusion on where code was
|
||||
located, what parameters were called, how parameters should be input,
|
||||
etc. due to different people using different abbreviations styles,
|
||||
putting functions out of order with the spec, in different files,
|
||||
using/not-using different bitmasks, etc. The code has been auditted
|
||||
and cleaned up since then.
|
||||
|
||||
So when adding new functions/templates/parameters/files/etc. to
|
||||
libfreeipmi, please name them consistently to the rest of the
|
||||
libfreeipmi library and the IPMI specification.
|
||||
|
||||
This includes:
|
||||
- naming functions/templates/parameters/files based on the spec
|
||||
- in most cases, not abbreviating any words (or using consistent
|
||||
abbreviations in the rest of the library, check first!)
|
||||
- matching parameter lists to the templates and in the same order
|
||||
- ordering functions/templates/parameters/files/etc. consistently with the spec.
|
||||
|
||||
For example:
|
||||
|
||||
ipmi-messaging-support-cmds.c
|
||||
|
||||
is the file for messaging support commands, chapter 22 of the IPMI 2.0 spec.
|
||||
|
||||
tmpl_cmd_get_channel_authentication_capabilities_rq
|
||||
tmpl_cmd_get_channel_authentication_capabilities_rs
|
||||
|
||||
are the templates for the Get Channel Authentication Capapilities
|
||||
command.
|
||||
|
||||
fiid_template_t tmpl_cmd_get_channel_authentication_capabilities_rq =
|
||||
{
|
||||
{ 8, "cmd", FIID_FIELD_REQUIRED | FIID_FIELD_LENGTH_FIXED},
|
||||
{ 4, "channel_number", FIID_FIELD_REQUIRED | FIID_FIELD_LENGTH_FIXED},
|
||||
{ 3, "reserved1", FIID_FIELD_REQUIRED | FIID_FIELD_LENGTH_FIXED},
|
||||
{ 1, "get_ipmi_v2.0_extended_data", FIID_FIELD_REQUIRED | FIID_FIELD_LENGTH_FIXED},
|
||||
{ 4, "maximum_privilege_level", FIID_FIELD_REQUIRED | FIID_FIELD_LENGTH_FIXED},
|
||||
{ 4, "reserved2", FIID_FIELD_REQUIRED | FIID_FIELD_LENGTH_FIXED},
|
||||
{ 0, "", 0}
|
||||
};
|
||||
|
||||
fiid_template_t tmpl_cmd_get_channel_authentication_capabilities_rs =
|
||||
{
|
||||
{ 8, "cmd", FIID_FIELD_REQUIRED | FIID_FIELD_LENGTH_FIXED | FIID_FIELD_MAKES_PACKET_SUFFICIENT},
|
||||
{ 8, "comp_code", FIID_FIELD_REQUIRED | FIID_FIELD_LENGTH_FIXED | FIID_FIELD_MAKES_PACKET_SUFFICIENT},
|
||||
{ 8, "channel_number", FIID_FIELD_REQUIRED | FIID_FIELD_LENGTH_FIXED},
|
||||
{ 1, "authentication_type.none", FIID_FIELD_REQUIRED | FIID_FIELD_LENGTH_FIXED},
|
||||
{ 1, "authentication_type.md2", FIID_FIELD_REQUIRED | FIID_FIELD_LENGTH_FIXED},
|
||||
{ 1, "authentication_type.md5", FIID_FIELD_REQUIRED | FIID_FIELD_LENGTH_FIXED},
|
||||
{ 1, "authentication_type.reserved1", FIID_FIELD_REQUIRED | FIID_FIELD_LENGTH_FIXED},
|
||||
{ 1, "authentication_type.straight_password_key", FIID_FIELD_REQUIRED | FIID_FIELD_LENGTH_FIXED},
|
||||
{ 1, "authentication_type.oem_prop", FIID_FIELD_REQUIRED | FIID_FIELD_LENGTH_FIXED},
|
||||
{ 1, "authentication_type.reserved2", FIID_FIELD_REQUIRED | FIID_FIELD_LENGTH_FIXED},
|
||||
{ 1, "authentication_type.ipmi_v2.0_extended_capabilities_available", FIID_FIELD_REQUIRED | FIID_FIELD_LENGTH_FIXED},
|
||||
{ 1, "authentication_status.anonymous_login", FIID_FIELD_REQUIRED | FIID_FIELD_LENGTH_FIXED},
|
||||
{ 1, "authentication_status.null_username", FIID_FIELD_REQUIRED | FIID_FIELD_LENGTH_FIXED},
|
||||
{ 1, "authentication_status.non_null_username", FIID_FIELD_REQUIRED | FIID_FIELD_LENGTH_FIXED},
|
||||
{ 1, "authentication_status.user_level_authentication", FIID_FIELD_REQUIRED | FIID_FIELD_LENGTH_FIXED},
|
||||
{ 1, "authentication_status.per_message_authentication", FIID_FIELD_REQUIRED | FIID_FIELD_LENGTH_FIXED},
|
||||
{ 1, "authentication_status.k_g", FIID_FIELD_REQUIRED | FIID_FIELD_LENGTH_FIXED},
|
||||
{ 2, "authentication_status.reserved", FIID_FIELD_REQUIRED | FIID_FIELD_LENGTH_FIXED},
|
||||
{ 1, "channel_supports_ipmi_v1.5_connections", FIID_FIELD_REQUIRED | FIID_FIELD_LENGTH_FIXED},
|
||||
{ 1, "channel_supports_ipmi_v2.0_connections", FIID_FIELD_REQUIRED | FIID_FIELD_LENGTH_FIXED},
|
||||
{ 6, "reserved", FIID_FIELD_REQUIRED | FIID_FIELD_LENGTH_FIXED},
|
||||
{ 24, "oem_id", FIID_FIELD_REQUIRED | FIID_FIELD_LENGTH_FIXED},
|
||||
{ 8, "oem_auxiliary_data", FIID_FIELD_REQUIRED | FIID_FIELD_LENGTH_FIXED},
|
||||
{ 0, "", 0}
|
||||
};
|
||||
|
||||
The fields listed in the templates above directly match table 22-15,
|
||||
the Get Channel Authentication Capabilities request and response
|
||||
commands.
|
||||
|
||||
int fill_cmd_get_channel_authentication_capabilities (uint8_t channel_number,
|
||||
uint8_t maximum_privilege_level,
|
||||
fiid_obj_t obj_cmd_rq);
|
||||
|
||||
The function above matches the naming and takes exactly the parameters
|
||||
needed by the Get Channel Authentication Capabilities request
|
||||
template.
|
||||
|
||||
The coding conditions specified above may lead to function names or
|
||||
function parameters names that exceed the 80 column mark or having
|
||||
very long parameter lists. We accept this annoyance (or poor coding
|
||||
style, we admit it), as we consider matching the specification as a
|
||||
more important need in libfreeipmi.
|
||||
|
||||
For example:
|
||||
|
||||
int
|
||||
fill_cmd_set_lan_configuration_parameters_authentication_type_enables (uint8_t channel_number,
|
||||
uint8_t callback_level_none,
|
||||
uint8_t callback_level_md2,
|
||||
uint8_t callback_level_md5,
|
||||
uint8_t callback_level_straight_password,
|
||||
uint8_t callback_level_oem_proprietary,
|
||||
uint8_t user_level_none,
|
||||
uint8_t user_level_md2,
|
||||
uint8_t user_level_md5,
|
||||
uint8_t user_level_straight_password,
|
||||
uint8_t user_level_oem_proprietary,
|
||||
uint8_t operator_level_none,
|
||||
uint8_t operator_level_md2,
|
||||
uint8_t operator_level_md5,
|
||||
uint8_t operator_level_straight_password,
|
||||
uint8_t operator_level_oem_proprietary,
|
||||
uint8_t admin_level_none,
|
||||
uint8_t admin_level_md2,
|
||||
uint8_t admin_level_md5,
|
||||
uint8_t admin_level_straight_password,
|
||||
uint8_t admin_level_oem_proprietary,
|
||||
uint8_t oem_level_none,
|
||||
uint8_t oem_level_md2,
|
||||
uint8_t oem_level_md5,
|
||||
uint8_t oem_level_straight_password,
|
||||
uint8_t oem_level_oem_proprietary,
|
||||
fiid_obj_t obj_cmd_rq);
|
||||
|
||||
The function name and parameters look pretty long and terrible. But
|
||||
the names and fields exactly match the get authentication type enables
|
||||
fields listed in Table 23-4. There should be very little difficulty
|
||||
understanding what this funciton does, how it should be called, and
|
||||
what the parameters are if you are reading along with the spec.
|
||||
|
||||
Because we want the code to match the IPMI spec as closely as
|
||||
possible, we currently accept the code inefficiencies (due to large
|
||||
stacks of parameters) that come with having long parameters lists and
|
||||
the atrocities of having gigantic 25+ parameter function calls in
|
||||
code.
|
||||
|
||||
5) Compilation and Development Notes
|
||||
------------------------------------
|
||||
|
||||
Normally, to build and develop from the source tree you need to run:
|
||||
|
||||
./autogen.sh
|
||||
./configure
|
||||
make
|
||||
|
||||
out of the directory you are in.
|
||||
|
||||
The following configure options can help you with many development
|
||||
issues:
|
||||
|
||||
--enable-debug
|
||||
|
||||
This option will turn on compilation of debugging symbols. More
|
||||
warnings may also be enabled when compiling.
|
||||
|
||||
In addition, this option may enable a few "workarounds" to allow for
|
||||
easier development of code. Most notably, inband drivers may look in
|
||||
additional locations for an ipckey, so that inband development can be
|
||||
done in a local directory without a full installation.
|
||||
|
||||
Generally speaking, if developing out of a local tree, you'll almost
|
||||
always want to enable this flag.
|
||||
|
||||
--enable-profile
|
||||
|
||||
If --enable-debug is enabled, this option will turn on compilation
|
||||
with profiling data.
|
||||
|
||||
--enable-trace
|
||||
|
||||
Compile tracing information into a significant portion of FreeIPMI
|
||||
code. This will result in significant amounts of extra information to
|
||||
be output.
|
||||
|
||||
--enable-rawdumps
|
||||
|
||||
Some users may be more familiar with raw IPMI packet dumps instead of
|
||||
the detailed field identified dumps that normally occur when running
|
||||
tools with --debug. In this case, --enable-rawdumps, will inform
|
||||
FreeIPMI to also output packets in raw form.
|
||||
|
||||
|
598
source/freeipmi/usr/share/doc/freeipmi/freeipmi-design.txt
Normal file
598
source/freeipmi/usr/share/doc/freeipmi/freeipmi-design.txt
Normal file
@ -0,0 +1,598 @@
|
||||
FreeIPMI Design
|
||||
|
||||
by
|
||||
|
||||
Albert Chu
|
||||
chu11@llnl.gov
|
||||
Last Updated: August 27, 2013
|
||||
|
||||
These are some notes on various design decisions made in FreeIPMI.
|
||||
|
||||
1) Fiid vs. other Marshalling/Unmarshalling Styles
|
||||
--------------------------------------------------
|
||||
|
||||
Several programmers have asked us why we have chosen a relatively
|
||||
unpopular/different method to marshall/unmarshall IPMI packets and
|
||||
build network packets.
|
||||
|
||||
First, lets discuss several classic methods for
|
||||
marshalling/unmarshalling data when using structs to represent a
|
||||
packet.
|
||||
|
||||
Method A: Marshall/Unmarshall "manually":
|
||||
-----------------------------------------
|
||||
|
||||
struct packet
|
||||
{
|
||||
uint8_t field_1; /* 1 bit */
|
||||
uint8_t field_2; /* 3 bits */
|
||||
uint8_t field_3; /* 4 bits */
|
||||
int16_t field_4; /* 16 bits */
|
||||
};
|
||||
|
||||
my_marshall_function(struct packet *pkt, char *buf, unsigned int buflen)
|
||||
{
|
||||
buf[0] |= pkt->field_1 & 0x1;
|
||||
buf[0] |= (pkt->field_2 << 1) & 0x0E;
|
||||
buf[0] |= (pkt->field_3 << 4) & 0xF0;
|
||||
/* assuming network byte order here */
|
||||
buf[1] |= (pkt->field_4 & 0xFF00) >> 8;
|
||||
buf[2] |= pkt->field_4 & 0x00FF;
|
||||
}
|
||||
|
||||
my_unmarshall_function(struct packet *pkt, char *buf, unsigned int buflen)
|
||||
{
|
||||
pkt->field_1 = buf[0] & 0x01;
|
||||
pkt->field_2 = buf[0] & 0x0E >> 1;
|
||||
pkt->field_3 = buf[0] & 0xF0 >> 4;
|
||||
#if LITTLE_ENDIAN_HOST
|
||||
pkt->field_4 = buf[2] | buf[1] << 8;;
|
||||
#else
|
||||
pkt->field_4 = buf[1] | buf[2] << 8;;
|
||||
#endif
|
||||
}
|
||||
|
||||
general_usage_example()
|
||||
{
|
||||
struct packet pkt;
|
||||
char buf[1024];
|
||||
int len;
|
||||
|
||||
pkt.field_1 = 1;
|
||||
pkt.field_2 = 2;
|
||||
pkt.field_3 = 3;
|
||||
pkt.field_4 = 5;
|
||||
|
||||
my_marshall_function(&pkt, buf, 1024);
|
||||
my_send_data_function(buf);
|
||||
|
||||
len = my_receive_data_function(buf);
|
||||
my_unmarshall_function(&pkt, buf, len);
|
||||
|
||||
printf("field_1 is: %d\n", pkt.field_1);
|
||||
}
|
||||
|
||||
Pros:
|
||||
|
||||
A) No need to deal with struct packing issues in the compiler.
|
||||
B) The struct definition describes packets closely and is relatively
|
||||
easy to use and understand.
|
||||
C) Relatively efficient.
|
||||
D) General usage code size is relatively small.
|
||||
E) General usage need not determine field type (e.g. is it an unsigned
|
||||
or signed integer).
|
||||
|
||||
Cons:
|
||||
|
||||
A) Have to deal with endian problems.
|
||||
B) Lots of marshalling and unmarshalling code are required for each
|
||||
packet type.
|
||||
C) Relatively difficult to deal with optional fields. (You'll need
|
||||
flags in the struct to indicate if a field was set/unset, or validate
|
||||
the fields via protocol definition knowledge.)
|
||||
D) Relatively difficult to deal with variable length fields. (You'll
|
||||
need a length parameter in the struct to indicate the length of a
|
||||
field.)
|
||||
E) Packet dumps/debugging is relatively poor (you only get hex) or you
|
||||
have to create debug functions to handle each packet type.
|
||||
F) Struct changes (e.g. due to IPMI errata changes) may break ABI if
|
||||
the structs are part of a public interface.
|
||||
|
||||
Method B: Cast a buffer to a packed struct:
|
||||
-------------------------------------------
|
||||
|
||||
For Example:
|
||||
|
||||
struct packet
|
||||
{
|
||||
uint8_t field_1 : 1;
|
||||
uint8_t field_2 : 3;
|
||||
uint8_t field_3 : 4;
|
||||
int16_t field_4;
|
||||
};
|
||||
|
||||
my_marshall_function(struct packet *pkt, char *buf, unsigned int buflen)
|
||||
{
|
||||
memcpy(buf, pkt, sizeof(struct packet));
|
||||
#if LITTLE_ENDIAN_HOST
|
||||
swap(&buf[1], &buf[2]);
|
||||
#endif
|
||||
}
|
||||
|
||||
my_unmarshall_function(struct packet *pkt, char *buf, unsigned int buflen)
|
||||
{
|
||||
*pkt = *((struct packet *)buf);
|
||||
#if LITTLE_ENDIAN_HOST
|
||||
pkt->field_4 = ntohs(pkt->field_4);
|
||||
#endif
|
||||
}
|
||||
|
||||
general_usage_example()
|
||||
{
|
||||
struct packet pkt;
|
||||
char buf[1024];
|
||||
int len;
|
||||
|
||||
pkt.field_1 = 1;
|
||||
pkt.field_2 = 2;
|
||||
pkt.field_3 = 3;
|
||||
pkt.field_4 = 5;
|
||||
|
||||
my_marshall_function(&pkt, buf, 1024);
|
||||
my_send_data_function(buf);
|
||||
|
||||
len = my_receive_data_function(buf);
|
||||
my_unmarshall_function(&pkt, buf, len);
|
||||
|
||||
printf("field_1 is: %d\n", pkt.field_1);
|
||||
}
|
||||
|
||||
Pros:
|
||||
|
||||
A) Not too much marshalling and unmarshalling code is required.
|
||||
B) General usage code size is relatively small.
|
||||
C) The struct definition describes packets exactly and is relatively
|
||||
easy to use and understand.
|
||||
D) Very efficient (little actual marshalling/unmarshalling needs to be done.)
|
||||
E) General usage need not determine field type (e.g. is it an unsigned
|
||||
or signed integer).
|
||||
|
||||
Cons:
|
||||
|
||||
A) Have to deal with endian problems.
|
||||
B) Have to deal with portability of struct packing techniques between
|
||||
different compilers (there are differences in compilers, but nowadays,
|
||||
this may be easier/more portable than I originally believed it to be).
|
||||
C) Difficult to deal with optional fields (no flags can be put
|
||||
in the struct to indicate if a field was set/unset, can only
|
||||
validate the fields via protocol definition knowledge.)
|
||||
D) No mechanism to deal with variable length fields (no length
|
||||
field can be put in the struct to indicate the field length.)
|
||||
E) Packet dumps/debugging is relatively poor (you only get hex) or you
|
||||
have to create debug functions to handle each packet type.
|
||||
F) Struct changes (e.g. due to IPMI errata changes) may break ABI if
|
||||
the structs are part of a public interface.
|
||||
|
||||
Our Method C: string_name -> bitmask mapping
|
||||
--------------------------------------------
|
||||
|
||||
The "FreeIPMI Interface Definition" or 'fiid' API in libfreeipmi uses
|
||||
a string_name/bit_count template and an API to get and set values in a
|
||||
packet to handle marshalling/unmarshalling.
|
||||
|
||||
The following are a few of the API functions used for FIID to give you
|
||||
an idea for the fiid API:
|
||||
|
||||
fiid_obj_t fiid_obj_create (fiid_template_t tmpl);
|
||||
int32_t fiid_obj_errnum(fiid_obj_t obj);
|
||||
int8_t fiid_obj_clear (fiid_obj_t obj);
|
||||
int8_t fiid_obj_set (fiid_obj_t obj, char *field, uint64_t val);
|
||||
int8_t fiid_obj_get (fiid_obj_t obj, char *field, uint64_t *val);
|
||||
int32_t fiid_obj_get_all (fiid_obj_t obj, uint8_t *data, uint32_t data_len);
|
||||
int32_t fiid_obj_set_all (fiid_obj_t obj, uint8_t *data, uint32_t data_len);
|
||||
|
||||
The following is the fiid equivalent in the previous examples:
|
||||
|
||||
fiid_template_t tmpl_example =
|
||||
{
|
||||
{1, "field_1", FIID_FIELD_REQUIRED | FIID_FIELD_LENGTH_FIXED},
|
||||
{3, "field_2", FIID_FIELD_REQUIRED | FIID_FIELD_LENGTH_FIXED},
|
||||
{4, "field_3", FIID_FIELD_REQUIRED | FIID_FIELD_LENGTH_FIXED},
|
||||
{16, "field_4", FIID_FIELD_REQUIRED | FIID_FIELD_LENGTH_FIXED},
|
||||
{0, "", 0}
|
||||
};
|
||||
|
||||
general_usage_example()
|
||||
{
|
||||
fiid_obj_t obj;
|
||||
char buf[1024];
|
||||
int len;
|
||||
uint64_t val;
|
||||
|
||||
obj = fiid_obj_create(tmpl_example);
|
||||
fiid_obj_set(obj, "field_1", 1);
|
||||
fiid_obj_set(obj, "field_2", 2);
|
||||
fiid_obj_set(obj, "field_3", 3);
|
||||
fiid_obj_set(obj, "field_4", 5);
|
||||
|
||||
/* "marshall" the packet */
|
||||
fiid_obj_get_all(obj, buf, 1024);
|
||||
my_send_data_function(buf);
|
||||
|
||||
fiid_obj_clear(obj);
|
||||
|
||||
len = my_receive_data_function(buf);
|
||||
|
||||
/* "unmarshall" the packet */
|
||||
fiid_obj_set_all(obj, buf, len);
|
||||
|
||||
fiid_obj_get(obj, "field_1", &val);
|
||||
printf("field_1 is: %d\n", (int16_t)val);
|
||||
}
|
||||
|
||||
The pros and cons of the fiid method are:
|
||||
|
||||
Pros:
|
||||
|
||||
A) No need to deal with endian problems (handled internally in the API).
|
||||
B) No need to deal with struct packing issues (bit shifts are handled
|
||||
internally in the API).
|
||||
C) Easier to deal with optional fields (For marshalling, don't set a
|
||||
field. For unmarshalling, the api can identify if a field is set or not).
|
||||
D) Easier to deal with variable length fields (For marshalling, set
|
||||
whatever length you want. For unmarshalling, the api can identify the
|
||||
length of the field read).
|
||||
E) Templates describe the packets exactly.
|
||||
F) Easy to do large packet dumps and debug (fields and values easily
|
||||
output and identified).
|
||||
G) Significantly reduce the amount of marshalling, unmarshalling, and
|
||||
debug code needed (the API handles it all already).
|
||||
F) Template changes (e.g. due to IPMI errata changes) shouldn't break
|
||||
ABI. (You can publish the template strings, need not publish the
|
||||
template itself.)
|
||||
|
||||
Cons:
|
||||
|
||||
A) Need to learn/use a reasonably large API and learn/use all the
|
||||
templates.
|
||||
B) Pretty inefficient (lots of string comparisons).
|
||||
C) General usage code size is increased.
|
||||
D) General usage must determine and cast field to appropriate type
|
||||
(e.g. is it an unsigned or signed integer).
|
||||
|
||||
(Side Comments:
|
||||
|
||||
Some other networking APIs have a similar API, but use
|
||||
macros/enums for the field names rather than strings. Many of the
|
||||
above benefits are identical, except the debug dump output
|
||||
capabilities are weaker in exchange for better performance.
|
||||
|
||||
Some other networking APIs may return a type of a field (e.g. signed
|
||||
vs unsigned, 16bit vs 32bit, etc.). That would remove need to
|
||||
determine casting in general usage in exchange for larger general
|
||||
usage code size.)
|
||||
|
||||
The big reasons why this was developed and chosen over traditional
|
||||
methods.
|
||||
|
||||
A) The IPMI specification is very large, so reducing code size weighed
|
||||
in as an important factor for the FreeIPMI authors. This allowed
|
||||
there to be fewer marshalling/unmarshalling/debug functions. By one
|
||||
FreeIPMI author's counting in the specification, there are 304
|
||||
different base payloads in the IPMI specification. This does not
|
||||
include permutations of payloads due to different versions, optional
|
||||
fields, headers, trailers, encryption, oem extensions, record formats
|
||||
data is stored in, etc.
|
||||
|
||||
B) There are a relatively large number of optional fields and variable
|
||||
length fields in the IPMI specification. As stated above, the
|
||||
traditional struct based marshalling/unmarshalling have issues
|
||||
with handling these.
|
||||
|
||||
C) The lack of IPMI compliance from vendors is a well known problem in
|
||||
the open-source community. The templates have saved developers
|
||||
countless hours of debugging time due to the easy method by which
|
||||
packets can be dumped with their fields and values quickly identified.
|
||||
It is very easy to find vendor IPMI compliance problems very quickly.
|
||||
|
||||
Here's an example of a dump:
|
||||
|
||||
pwopr2: : RMCP Header:
|
||||
pwopr2: : ------------
|
||||
pwopr2: [ 6h] = version[ 8b]
|
||||
pwopr2: [ 0h] = reserved[ 8b]
|
||||
pwopr2: [ FFh] = sequence_number[ 8b]
|
||||
pwopr2: [ 7h] = message_class.class[ 5b]
|
||||
pwopr2: [ 0h] = message_class.reserved[ 2b]
|
||||
pwopr2: [ 0h] = message_class.ack[ 1b]
|
||||
pwopr2: : IPMI Session Header:
|
||||
pwopr2: : --------------------
|
||||
pwopr2: [ 0h] = authentication_type[ 8b]
|
||||
pwopr2: [ 0h] = session_sequence_number[32b]
|
||||
pwopr2: [ 0h] = session_id[32b]
|
||||
pwopr2: [ 9h] = ipmi_msg_len[ 8b]
|
||||
pwopr2: : IPMI Message Header:
|
||||
pwopr2: : --------------------
|
||||
pwopr2: [ 20h] = rs_addr[ 8b]
|
||||
pwopr2: [ 0h] = rs_lun[ 2b]
|
||||
pwopr2: [ 6h] = net_fn[ 6b]
|
||||
pwopr2: [ C8h] = checksum1[ 8b]
|
||||
pwopr2: [ 81h] = rq_addr[ 8b]
|
||||
pwopr2: [ 0h] = rq_lun[ 2b]
|
||||
pwopr2: [ 26h] = rq_seq[ 6b]
|
||||
pwopr2: : IPMI Command Data:
|
||||
pwopr2: : ------------------
|
||||
pwopr2: [ 38h] = cmd[ 8b]
|
||||
pwopr2: [ Eh] = channel_number[ 4b]
|
||||
pwopr2: [ 0h] = reserved1[ 3b]
|
||||
pwopr2: [ 1h] = get_ipmi_v2.0_extended_data[ 1b]
|
||||
pwopr2: [ 2h] = maximum_privilege_level[ 4b]
|
||||
pwopr2: [ 0h] = reserved2[ 4b]
|
||||
pwopr2: : IPMI Trailer:
|
||||
pwopr2: : --------------
|
||||
pwopr2: [ 1Fh] = checksum2[ 8b]
|
||||
|
||||
2) Non-generic error messages
|
||||
-----------------------------
|
||||
|
||||
Under some circumstances, it may be preferred to return generic error
|
||||
messages to the user, so that a malicious user cannot infer remote
|
||||
login information from different error messages returned. For
|
||||
example, returning a generic error message of "Permission Denied"
|
||||
would not give a malicious user information on whether the username or
|
||||
password was input incorrectly.
|
||||
|
||||
Although implemented earlier on, the FreeIPMI authors have elected to
|
||||
not implement this now. There are many vendor implementations of IPMI
|
||||
and many configuration options (authentication mechanism, cipher suite
|
||||
id, username, password, K_g, privilege level) needed for proper IPMI
|
||||
session establishment. The number of error messages that could be
|
||||
mapped into a generic "Permission Denied" would make it too difficult
|
||||
for users to determine why they failed to connect properly. The
|
||||
overall worth of implementing a generic "Permission Denied" error
|
||||
message just doesn't seem worth it now.
|
||||
|
||||
3) Get Channel Authentication Capabilities Command
|
||||
--------------------------------------------------
|
||||
|
||||
The Get Channel Authentication Capabilities Command is typically the
|
||||
first packet sent in the IPMI session. It returns information
|
||||
on the remote machine's support of:
|
||||
|
||||
A) IPMI 1.5 authentication mechanisms (e.g. md2, md5, etc.)
|
||||
B) IPMI 1.5 and/or IPMI 2.0
|
||||
C) per msg authentication
|
||||
D) K_g status
|
||||
E) null username/non-null username/anonymous logins
|
||||
|
||||
Currently in FreeIPMI, we check each of these values during the
|
||||
session setup to determine if a person can connect to the remote
|
||||
machine later in the protocol:
|
||||
|
||||
A) If the user input an unsupported authentication mechanism, we
|
||||
return an error.
|
||||
|
||||
B) If the user requested IPMI 2.0, but the remote machine doesn't
|
||||
support IPMI 2.0, we return an error.
|
||||
|
||||
C) We determine if per msg authentication should be considered later
|
||||
in the protocol session.
|
||||
|
||||
D) If the user was required/not-required to input a K_g value, we
|
||||
return an error appropriately.
|
||||
|
||||
E) If the user input an unsupported username/password combination, we
|
||||
return an error appropriately.
|
||||
|
||||
There is a question as to what values above, if any, need to be
|
||||
checked and appropriate errors returned to the user. The Get Channel
|
||||
Authentication Capabilities command is often implemented incorrectly
|
||||
by a number of vendors, so that overall benefit of checks has been put
|
||||
in question. The FreeIPMI authors have elected to keep all the checks
|
||||
for the following reasons.
|
||||
|
||||
* 'A' and 'B' should be checked to avoid potential timeouts:
|
||||
|
||||
- Later in the protocol, the password could be sent/hashed
|
||||
incorrectly, leading to a timeout because packets are not accepted by
|
||||
the remote machine.
|
||||
|
||||
- If the remote machine does not support IPMI 2.0, later packets
|
||||
could timeout because the remote machine does not recognize the packet
|
||||
format.
|
||||
|
||||
* 'C''s checks could be skipped as long as per msg authentication was not
|
||||
supported.
|
||||
|
||||
* 'D''s checks could be skipped, because an improper null vs non-null K_g
|
||||
will be caught later during IPMI 2.0 authentication.
|
||||
|
||||
* 'E''s checks are the most complicated. An improper null vs non-null
|
||||
username will be caught later during IPMI 1.5 and IPMI 2.0
|
||||
authentication. An improper null vs non-null password can be caught
|
||||
later during IPMI 2.0 authentication, but may result in a timeout
|
||||
during IPMI 1.5 authentication.
|
||||
|
||||
An argument could also be made that the speed at which an invalid
|
||||
username/password error is returned to a user could also give a
|
||||
malicious user information on the username/password of the remote BMC.
|
||||
|
||||
In the end, the authors have felt the overall positive benefits
|
||||
provided by the checking of these values provides more than the
|
||||
negative implications. Changes in the overall industry implementation
|
||||
could change this viewpoint later.
|
||||
|
||||
4) Configuration tool callback design
|
||||
-------------------------------------
|
||||
|
||||
Ipmi-config is coded with a archicture that reads/writes each
|
||||
configurable field in the BMC separately.
|
||||
|
||||
As an example, suppose we have the following BMC configuration file
|
||||
we'd like to commit.
|
||||
|
||||
FieldA Value1
|
||||
FieldB.1 Value2
|
||||
FieldB.2 Value3
|
||||
FieldB.3 Value4
|
||||
FieldB.4 Value5
|
||||
|
||||
Suppose FieldA is read/written using a single IPMI packet and fields
|
||||
FieldB.1-FieldB.4 can be read/written using a single IPMI packet.
|
||||
|
||||
In the architecture that ipmi-config is currently based on, the above
|
||||
would require 5 read requests to read all 5 values. It would require
|
||||
1 read request for FieldA, 4 read requests for FieldB.1-FieldB.4, and
|
||||
5 write requests to write the values.
|
||||
|
||||
Obviously, this sounds like (and is!) very inefficient.
|
||||
|
||||
The authors acknowledge that the code is very inefficient b/c it will
|
||||
cause an excess number of request/response packets to be generated. With
|
||||
a large number of inputs the Configtools can be slow.
|
||||
|
||||
Here are some of the major reasons why this was done and is still
|
||||
kept.
|
||||
|
||||
A) Due to widely varying IPMI versions and implementations, this
|
||||
handles the write configuration case best. Suppose FieldB.2 is only
|
||||
configurable on IPMI 2.0 systems but not IPMI 1.5 systems. Suppose
|
||||
(perhaps b/c it is optional in the IPMI specification) FieldB.3 is
|
||||
supported by some vendors but not other vendors. Suppose FieldB.4 is
|
||||
simply not implemented correctly by the vendor.
|
||||
|
||||
This architecture allows the majority of the configuration to succeed
|
||||
on a specific platform, and allows the end user to know exactly what
|
||||
fields may or may not be configurable. If all 4 fields of
|
||||
FieldB.1-FieldB.4 were written at the same time, there is currently no
|
||||
method in the IPMI protocol to know what field was configured
|
||||
incorrectly and why (only a generic error of "invalid input" is
|
||||
returned, but you won't know which field it is).
|
||||
|
||||
In the future, functionality could be added to retry each field
|
||||
separately if there was such a failure, however that would add another
|
||||
piece of complexity into the code we currently don't have time to add.
|
||||
In addition, with so many IPMI firmware implementations, it may
|
||||
difficult to add such functionality because of the wide array of error
|
||||
cases that might occur.
|
||||
|
||||
B) There are several (and possibly more future) vendor compliance
|
||||
problems that can be (or will need to be) worked around. By using
|
||||
this architecture, each specific field can be worked around
|
||||
independently depending on the vendor. These workarounds need to be
|
||||
handled on both the read and write conditions.
|
||||
|
||||
One of the major fallouts from this design is that if an
|
||||
invalid/illegal configuration exists on the motherboard by default,
|
||||
some configuration values may not be configurable. For example,
|
||||
suppose we want to write the following config to the BMC.
|
||||
|
||||
FieldA.1 Value1
|
||||
FieldA.2 Value2
|
||||
FieldA.3 Value3
|
||||
FieldA.4 Value4
|
||||
|
||||
The architecture of the config tools will read FieldA.1-FieldA.4 from
|
||||
the BMC, change only FieldA.1, then try to write all the fields back
|
||||
to the BMC. Then it would be repeated for FieldA.2, etc.
|
||||
|
||||
However, suppose the default setting on the motherboard for FieldA.4
|
||||
is illegal. Then each time we attempt to write FieldA.1, FieldA.2,
|
||||
and FieldA.3, an invalid input error will be returned b/c FieldA.4 is
|
||||
illegal. Things cannot change until FieldA.4 is modified.
|
||||
|
||||
In a worse scenario, suppose the default setting on the motherboard is
|
||||
illegal for both FieldA.3 and FieldA.4. That means we will receive an
|
||||
invalid input error for the config of FieldA.1 through FieldA.4.
|
||||
|
||||
Currently, this has been seen a very small minority of systems and
|
||||
work arounds have been added for those systems.
|
||||
|
||||
Another similar fallout from this design is that the vendor must allow
|
||||
"piecemeal" configuration. In other words, the vendor must allow a
|
||||
subset of the fields to perhaps be configured "incorrectly" while the
|
||||
other subset may be configured "correctly". Some vendors require that
|
||||
fields be written "simultaneously", and do not support the ability to
|
||||
alter configuration one by one.
|
||||
|
||||
Again, this has been seen a very small minority of systems and work
|
||||
arounds have been added for those systems.
|
||||
|
||||
5) Dealing with workarounds
|
||||
---------------------------
|
||||
|
||||
There is an admitted conflict in determining whether vendor compliance
|
||||
issues should be handled automatically vs. a specified workaround
|
||||
(e.g. on the commandline or via a flag in a library).
|
||||
|
||||
On one hand, we would like for the tools to operate as simply for the
|
||||
users as possible without the need to specify strange workarounds or
|
||||
options on the command line. For example, we could detect vendor
|
||||
product-IDs early in the protocol, and if necessary for a particular
|
||||
vendor, turn on the workarounds.
|
||||
|
||||
On the other hand, some workarounds cannot be detected properly all of
|
||||
the time. For example, the workaround may exist on one firmware
|
||||
release vs. another firmware release. It may exist between one
|
||||
product of a vendor vs. another product from the vendor. Another
|
||||
example, is that while we can make a pretty decent guess what the
|
||||
vendor intended, ultimately, there's no real way to know if the guess
|
||||
is correct.
|
||||
|
||||
A number of these workarounds are due to vendor compliance problems
|
||||
that are sometimes so intrusive (e.g. using a different hashing
|
||||
algorithm for keys) they must require a workaround on the command line
|
||||
b/c there is really no other way to handle it. However, some could be
|
||||
handled seemlessly, but would require altered behavior to handle the
|
||||
"common case" or "lowest common denominator" of all IPMI protocols.
|
||||
|
||||
The general rule that the FreeIPMI authors have come to is that if the
|
||||
workaround changes some "normal" or "good" behavior, it must require a
|
||||
specified workaround. Although it may/will be annoying to a number of
|
||||
users, I feel it is better for the long term. It can hopefully also
|
||||
pressure vendors into fixing their implementations.
|
||||
|
||||
As an example, on some motherboards, we found that System Event Log
|
||||
(SEL) records reported an invalid sensor generator ID. We found that
|
||||
the reported generator ID was shifted off by one. Thus, as a
|
||||
workround, if a SDR entry cannot be found for a respective system
|
||||
event, we will also search for a SDR entry using the generator ID
|
||||
shifted by one. If the resulting SDR entry is found, we assume the
|
||||
original generator ID was just off by one and we use the located SDR
|
||||
record. This workaround is seemless and doesn't involve an option on
|
||||
the command line.
|
||||
|
||||
In contrast, we found on some other motherboards that some SEL records
|
||||
report an invalid event record type. Unlike the above situation,
|
||||
there is no additional information from this record that can tell us
|
||||
how to parse the record. For the particular motheboard, these illegal
|
||||
SEL records were normal system event records with improperly coded
|
||||
record types. Therefore, we implemented a workaround called
|
||||
"assumesystemevent", which the user can specify to assume a valid
|
||||
system event record no matter what.
|
||||
|
||||
Admittedly, the area is grey, and at some point, it's a judgement call
|
||||
:-)
|
||||
|
||||
6) Dealing with OEM extensions
|
||||
------------------------------
|
||||
|
||||
Similar to the "Dealing with workarounds" question above, there is a
|
||||
similar question of how to deal with OEM extensions. Should code
|
||||
automatically detect the manufacturer and product to determine if OEM
|
||||
extensions can be handled or should be output?
|
||||
|
||||
We would like the tools to operate as simply for the users without
|
||||
specifying options on the command line. However, can we trust that a
|
||||
vendor will implement their extensions consistently across
|
||||
motherboards, products, or even firmware revisions?
|
||||
|
||||
The general decision is that there will be an option for the user to
|
||||
specify if they would like OEM interpreted output if available. Many
|
||||
FreeIPMI tools come with a --interpret-oem-data option for this
|
||||
situation. If a motherboard is specifically supported by FreeIPMI,
|
||||
the user is free to use and trust the OEM support. However, if OEM
|
||||
extensions happen to work for a unlisted motherboard, the user must
|
||||
take the output with some grain of salt.
|
||||
|
||||
|
468
source/freeipmi/usr/share/doc/freeipmi/freeipmi-hostrange.txt
Normal file
468
source/freeipmi/usr/share/doc/freeipmi/freeipmi-hostrange.txt
Normal file
@ -0,0 +1,468 @@
|
||||
Using Hostrange Input/Output in HPC environments
|
||||
|
||||
by
|
||||
|
||||
Albert Chu
|
||||
chu11@llnl.gov
|
||||
Last Updated: August 27, 2013
|
||||
|
||||
1) Introduction with Pdsh
|
||||
-------------------------
|
||||
|
||||
Much of the hostrange input/output in FreeIPMI is modeled off the
|
||||
input/output in the tool pdsh (http://pdsh.sourceforge.net). Pdsh is
|
||||
a parallel shell utility which allows you to execute an arbitrary
|
||||
command across a cluster. Algorithmically, pdsh creates a sliding
|
||||
window of threads, each which generates a remote shell using an
|
||||
underlying 'rcmd" functionality (such as rcmd(3) or ssh(1)). As
|
||||
threads complete, the new threads launch the command on other hosts
|
||||
until the command has been executed on all hosts specified.
|
||||
|
||||
It is utilized at Lawrence Livermore National Laboratory (LLNL) on
|
||||
clusters ranging from 4 to 3000 nodes. Commands are capable of being
|
||||
executed across the entire cluster in the matter of seconds rather
|
||||
then minutes it would take to execute serially in a shell prompt.
|
||||
|
||||
Here's an example of pdsh at work on a small cluster.
|
||||
|
||||
> pdsh -w "wopr[0-5]" hostname
|
||||
wopr0: wopr0
|
||||
wopr1: wopr1
|
||||
wopr2: wopr2
|
||||
wopr3: wopr3
|
||||
wopr5: wopr5
|
||||
wopr4: wopr4
|
||||
|
||||
Determining the hostname of every node in your cluster isn't too
|
||||
useful or interesting. However, perhaps you want to determine if
|
||||
every node of your cluster booted with the same kernel.
|
||||
|
||||
> pdsh -w "wopr[0-5]" uname -r
|
||||
wopr1: 2.6.9-65
|
||||
wopr0: 2.6.9-65
|
||||
wopr5: 2.6.9-65
|
||||
wopr2: 2.6.9-65
|
||||
wopr4: 2.6.9-65
|
||||
wopr3: 2.6.9-65
|
||||
|
||||
Seems pretty useful. However, on larger clusters, this type of output
|
||||
will get pretty large, especially if the command generates greater
|
||||
than 1 line of output for each node. Lets say I want to determine if
|
||||
the same config file has been configured on every node of the cluster.
|
||||
|
||||
> pdsh -w "wopr[0-5]" "cat /tmp/pretend_config"
|
||||
wopr1: foo=/usr
|
||||
wopr1: bar=/tmp
|
||||
wopr1: baz=/etc
|
||||
wopr1: xyzzy=static
|
||||
wopr1:
|
||||
wopr0: foo=/usr
|
||||
wopr0: bar=/tmp
|
||||
wopr0: baz=/etc
|
||||
wopr0: xyzzy=static
|
||||
wopr0:
|
||||
wopr2: foo=/usr
|
||||
wopr2: bar=/tmp
|
||||
wopr2: baz=/etc
|
||||
wopr2: xyzzy=dynamic
|
||||
wopr2:
|
||||
wopr4: foo=/usr
|
||||
wopr4: bar=/tmp
|
||||
wopr4: baz=/etc
|
||||
wopr4: xyzzy=static
|
||||
wopr4:
|
||||
wopr5: foo=/usr
|
||||
wopr5: bar=/tmp
|
||||
wopr5: baz=/etc
|
||||
wopr5: xyzzy=static
|
||||
wopr5:
|
||||
wopr3: foo=/usr
|
||||
wopr3: bar=/tmp
|
||||
wopr3: baz=/etc
|
||||
wopr3: xyzzy=static
|
||||
wopr3:
|
||||
|
||||
As you can see, it's beginning to get pretty long and perhaps a bit
|
||||
hard to digest.
|
||||
|
||||
Pdsh also comes with a tool called dshbak for buffering this output to
|
||||
make it more human readable.
|
||||
|
||||
> pdsh -w "wopr[0-5]" "cat /tmp/pretend_config" | dshbak
|
||||
----------------
|
||||
wopr1
|
||||
----------------
|
||||
foo=/usr
|
||||
bar=/tmp
|
||||
baz=/etc
|
||||
xyzzy=static
|
||||
|
||||
----------------
|
||||
wopr3
|
||||
----------------
|
||||
foo=/usr
|
||||
bar=/tmp
|
||||
baz=/etc
|
||||
xyzzy=static
|
||||
|
||||
----------------
|
||||
wopr5
|
||||
----------------
|
||||
foo=/usr
|
||||
bar=/tmp
|
||||
baz=/etc
|
||||
xyzzy=static
|
||||
|
||||
----------------
|
||||
wopr2
|
||||
----------------
|
||||
foo=/usr
|
||||
bar=/tmp
|
||||
baz=/etc
|
||||
xyzzy=dynamic
|
||||
|
||||
----------------
|
||||
wopr4
|
||||
----------------
|
||||
foo=/usr
|
||||
bar=/tmp
|
||||
baz=/etc
|
||||
xyzzy=static
|
||||
|
||||
This is a much nicer output to read. However, if you have a much
|
||||
larger cluster (or possibly much larger output), this type of output
|
||||
will still be quite difficult to handle. Dshbak also comes with a
|
||||
consolidation function to shorten the output.
|
||||
|
||||
> pdsh -w "wopr[0-5]" "cat /tmp/pretend_config" | dshbak -c
|
||||
----------------
|
||||
wopr[0-1,3-5]
|
||||
----------------
|
||||
foo=/usr
|
||||
bar=/tmp
|
||||
baz=/etc
|
||||
xyzzy=static
|
||||
|
||||
----------------
|
||||
wopr2
|
||||
----------------
|
||||
foo=/usr
|
||||
bar=/tmp
|
||||
baz=/etc
|
||||
xyzzy=dynamic
|
||||
|
||||
We see that for this particular pretend cluster config file, one
|
||||
node's configuration is different.
|
||||
|
||||
Another problem that often comes up with large clusters is that nodes
|
||||
are removed from the cluster for servicing or are down due to hardware
|
||||
problems, hangs, crashes, etc. So tools like pdsh can often sit and
|
||||
timeout on those nodes that have problems.
|
||||
|
||||
In the cluster used in this example, wopr6 is a node that is currently
|
||||
down and times out after awhile when you use pdsh.
|
||||
|
||||
> time pdsh -w "wopr[0-6]" hostname
|
||||
wopr0: wopr0
|
||||
wopr1: wopr1
|
||||
wopr4: wopr4
|
||||
wopr2: wopr2
|
||||
wopr5: wopr5
|
||||
wopr3: wopr3
|
||||
pdsh@wopri: wopr6: mcmd: connect failed: No route to host
|
||||
|
||||
real 0m3.007s
|
||||
user 0m0.003s
|
||||
sys 0m0.007s
|
||||
|
||||
However, your average user may not know wopr6 is down, or does not
|
||||
wish to continually remove problem nodes (in this case wopr6) from the
|
||||
list of nodes to communicate with.
|
||||
|
||||
The -v option in pdsh is used to selectively eliminate those nodes
|
||||
that are considered down by whatsup and the libnodeupdown library
|
||||
(http://whatsup.sourceforge.net).
|
||||
|
||||
Whatsup currently shows that wopr6 is down.
|
||||
|
||||
> whatsup
|
||||
up: 7: wopr[0-5],wopri
|
||||
down: 1: wopr6
|
||||
|
||||
So the -v option will have pdsh skip wopr6 automatically.
|
||||
|
||||
> time pdsh -v -w "wopr[0-6]" hostname
|
||||
wopr1: wopr1
|
||||
wopr0: wopr0
|
||||
wopr2: wopr2
|
||||
wopr5: wopr5
|
||||
wopr4: wopr4
|
||||
wopr3: wopr3
|
||||
|
||||
real 0m0.034s
|
||||
user 0m0.005s
|
||||
sys 0m0.012s
|
||||
|
||||
The time differences may not seem like much difference in these
|
||||
examples. But think of when this is done across an extremeley large
|
||||
cluster (i.e. thousands of nodes).
|
||||
|
||||
2) Hostrange input/output in FreeIPMI
|
||||
-------------------------------------
|
||||
|
||||
Much of the hostrange input/output can be handled by running FreeIPMI
|
||||
tools with pdsh. However, pdsh requires that a shell be executed on
|
||||
the remote node. This can disrupt the CPU of running jobs on the
|
||||
cluster and removes the advantage that IPMI over LAN does not
|
||||
interrupt a CPU.
|
||||
|
||||
Hostrange support has been added into most FreeIPMI tools. More than
|
||||
one node at a time can be specified on the command line using the
|
||||
hostrange format similar in pdsh. Using a threaded model similar to
|
||||
pdsh, each of the tools will create a sliding-window of threads, each
|
||||
executing out-of-band IPMI in parallel. The number of threads in the
|
||||
window can be increased or decreased using the fanout -F option.
|
||||
|
||||
The tools now have similar functionality to pdsh, but all of the IPMI
|
||||
communication is done out-of-band. Ipmipower, which supported
|
||||
hostranges since 0.1.0, has had some of its options and output
|
||||
modified to to be consistent with the other tools.
|
||||
|
||||
(Note: On our test cluster, 'pwopr' hostnames have been used instead
|
||||
of 'wopr' for configuring the IPMI IP addresses. We have also XXXed
|
||||
out our local usernames and passwords of course :-)
|
||||
|
||||
For example:
|
||||
|
||||
> ipmi-sensors -h "pwopr[0-5]" -u XXX -p YYY --record-ids=10
|
||||
pwopr0: 10 | CPU3 Vcore | Voltage | 1.31 | V | 'OK'
|
||||
pwopr5: 10 | CPU3 Vcore | Voltage | 1.25 | V | 'OK'
|
||||
pwopr1: 10 | CPU3 Vcore | Voltage | 1.23 | V | 'OK'
|
||||
pwopr3: 10 | CPU3 Vcore | Voltage | 1.26 | V | 'OK'
|
||||
pwopr2: 10 | CPU3 Vcore | Voltage | 1.32 | V | 'OK'
|
||||
pwopr4: 10 | CPU3 Vcore | Voltage | 1.26 | V | 'OK'
|
||||
|
||||
Dshback functionality has been added with the -B (--buffered) and -C
|
||||
(--consolidated) options.
|
||||
|
||||
> bmc-info -h "pwopr[0-5]" -u XXX -p YYY --get-device-id -B
|
||||
----------------
|
||||
pwopr5
|
||||
----------------
|
||||
Device ID : 34
|
||||
Device Revision : 1
|
||||
Device SDRs : unsupported
|
||||
Firmware Revision : 1.0c
|
||||
Device Available : yes (normal operation)
|
||||
IPMI Version : 2.0
|
||||
Sensor Device : supported
|
||||
SDR Repository Device : supported
|
||||
SEL Device : supported
|
||||
FRU Inventory Device : supported
|
||||
IPMB Event Receiver : unsupported
|
||||
IPMB Event Generator : unsupported
|
||||
Bridge : unsupported
|
||||
Chassis Device : supported
|
||||
Manufacturer ID : Peppercon AG (10437)
|
||||
Product ID : 4
|
||||
Auxiliary Firmware Revision Information : 38420000h
|
||||
<snip - there's a lot more of the same stuff>
|
||||
|
||||
> bmc-info -h "pwopr[0-5]" -u XXX -p YYY --get-device-id -C
|
||||
----------------
|
||||
pwopr[0-1,5]
|
||||
----------------
|
||||
Device ID : 34
|
||||
Device Revision : 1
|
||||
Device SDRs : unsupported
|
||||
Firmware Revision : 1.0c
|
||||
Device Available : yes (normal operation)
|
||||
IPMI Version : 2.0
|
||||
Sensor Device : supported
|
||||
SDR Repository Device : supported
|
||||
SEL Device : supported
|
||||
FRU Inventory Device : supported
|
||||
IPMB Event Receiver : unsupported
|
||||
IPMB Event Generator : unsupported
|
||||
Bridge : unsupported
|
||||
Chassis Device : supported
|
||||
Manufacturer ID : Peppercon AG (10437)
|
||||
Product ID : 4
|
||||
Auxiliary Firmware Revision Information : 38420000h
|
||||
<snip - different firmware for pwopr[2-4]>
|
||||
|
||||
If you have happened to install pdsh on your system, you may use
|
||||
dshbak instead of the -B or -C option. The -B and -C options were
|
||||
added since many users may have not installed pdsh.
|
||||
|
||||
A whatsup-like tool and library have also been developed called
|
||||
ipmidetect. It performs a similar functionality to whatsup, but
|
||||
instead detects what IPMI nodes exist in the cluster for faster
|
||||
hostranged output. The tool requires the ipmidetectd daemon be setup
|
||||
and configured on the client (see ipmidetectd(8) and
|
||||
ipmidetectd.conf(5) for more information). The ipmidetectd daemon
|
||||
regularly ipmipings remote nodes. The ipmidetect tool and library
|
||||
will determine detected vs. undetected ipmi systems based on the most
|
||||
recent ipmipings received. [1]
|
||||
|
||||
> /usr/sbin/ipmidetect
|
||||
detected: 6: pwopr[0-5]
|
||||
undetected: 1: pwopr6
|
||||
|
||||
For example, we re-introduce the bad 'pwopr6' node into the hostrange:
|
||||
|
||||
> time ipmi-sensors -h "pwopr[0-6]" -u XXX -p YYY --record-ids=10
|
||||
pwopr5: 10 | CPU3 Vcore | Voltage | 1.25 | V | 'OK'
|
||||
pwopr4: 10 | CPU3 Vcore | Voltage | 1.26 | V | 'OK'
|
||||
pwopr0: 10 | CPU3 Vcore | Voltage | 1.31 | V | 'OK'
|
||||
pwopr3: 10 | CPU3 Vcore | Voltage | 1.26 | V | 'OK'
|
||||
pwopr2: 10 | CPU3 Vcore | Voltage | 1.32 | V | 'OK'
|
||||
pwopr1: 10 | CPU3 Vcore | Voltage | 1.23 | V | 'OK'
|
||||
pwopr6: ipmi_ctx_open_outofband(): Connection timed out
|
||||
real 0m25.000s
|
||||
user 0m0.029s
|
||||
sys 0m0.003s
|
||||
|
||||
Running with the -E option (and assuming ipmidetectd has been setup
|
||||
and is running) the -E option quickly eliminates pwopr6.
|
||||
|
||||
> time ipmi-sensors -h "pwopr[0-6]" -u XXX -p YYY --record-ids=10 -E
|
||||
pwopr0: 10 | CPU3 Vcore | Voltage | 1.31 | V | 'OK'
|
||||
pwopr2: 10 | CPU3 Vcore | Voltage | 1.32 | V | 'OK'
|
||||
pwopr1: 10 | CPU3 Vcore | Voltage | 1.23 | V | 'OK'
|
||||
pwopr4: 10 | CPU3 Vcore | Voltage | 1.26 | V | 'OK'
|
||||
pwopr5: 10 | CPU3 Vcore | Voltage | 1.25 | V | 'OK'
|
||||
pwopr3: 10 | CPU3 Vcore | Voltage | 1.26 | V | 'OK'
|
||||
|
||||
real 0m0.113s
|
||||
user 0m0.030s
|
||||
sys 0m0.003s
|
||||
|
||||
Notice the large affect this has on the time for the command to
|
||||
complete.
|
||||
|
||||
3) Suggested use of hostrange input/output in FreeIPMI
|
||||
------------------------------------------------------
|
||||
|
||||
Unlike pdsh, where you can run an arbitrary shell command, each
|
||||
FreeIPMI tool has a relatively fixed type of output or sets of outputs
|
||||
you can run. Based on the features run or the output of the command,
|
||||
the hostrange input/output will likely be used differently
|
||||
dependending with the tool. The following are some suggestions. They
|
||||
are the ways the author thinks most will use the hostrange
|
||||
input/output.
|
||||
|
||||
ipmi-sensors:
|
||||
|
||||
Each node of the cluster will likely have slightly different
|
||||
temperatures, voltages, etc. Therefore you may wish to run
|
||||
ipmi-sensors with the -q option to make it easier to consolidate
|
||||
output.
|
||||
|
||||
> ipmi-sensors -h "pwopr[0-6]" -u XXX -p YYY -g temperature -E -C -q
|
||||
----------------
|
||||
pwopr[0-2,4-5]
|
||||
----------------
|
||||
4 | CPU1 Temp | Temperature | 'OK'
|
||||
5 | CPU2 Temp | Temperature | 'OK'
|
||||
6 | CPU3 Temp | Temperature | 'OK'
|
||||
7 | CPU4 Temp | Temperature | 'OK'
|
||||
8 | Sys Temp | Temperature | 'OK'
|
||||
----------------
|
||||
pwopr3
|
||||
----------------
|
||||
4 | CPU1 Temp | Temperature | 'OK'
|
||||
5 | CPU2 Temp | Temperature | 'OK'
|
||||
6 | CPU3 Temp | Temperature | 'OK'
|
||||
7 | CPU4 Temp | Temperature | 'OK'
|
||||
8 | Sys Temp | Temperature | 'At or Below (<=) Lower Non-Recoverable Threshold'
|
||||
|
||||
Based on what you see, you can of course dig deeper on those
|
||||
individual nodes. I imagine many users will want to run ipmi-sensors
|
||||
with the default output (each line of output is prepended with
|
||||
"hostname: "). In this mode, key error messages and the node it came
|
||||
from can be easily monitored along w/ grep and awk in scripts.
|
||||
|
||||
The --no-header-output and --ignore-not-available-sensors options may
|
||||
be useful for reducing output across a lot of nodes. The
|
||||
--sdr-cache-recreate option may be useful to gracefully handle errors.
|
||||
|
||||
Users may wish to use the --output-sensor-state option w/ ipmi-sensors
|
||||
to also output the current sensor state. This option will output
|
||||
NOMINAL, WARNING, and CRITICAL states which allow for easy grepping.
|
||||
|
||||
ipmi-sel:
|
||||
|
||||
Each node will likely have drastically different ipmi-sel output and a
|
||||
massive amount of it. Therefore buffered or consolidated output will
|
||||
not be very useful. The hostrange input is most useful for gathering
|
||||
the SEL output of the entire cluster quickly and out-of-band. You can
|
||||
then grep for some type of error condition you are specifically
|
||||
looking for or pipe it into a log monitoring utility.
|
||||
|
||||
The hostrange functionality is also very useful to quickly clear the
|
||||
SEL logs across the entire cluster.
|
||||
|
||||
The --no-header-output option may be useful for reducing output across
|
||||
a lot of nodes. The --sdr-cache-recreate option may be useful to
|
||||
gracefully handle errors.
|
||||
|
||||
Users may wish to use the --output-event-state option w/ ipmi-sel to
|
||||
also output the current sensor state. This option will output
|
||||
NOMINAL, WARNING, and CRITICAL states which allow for easy grepping.
|
||||
|
||||
bmc-info:
|
||||
|
||||
When using hostranges, you are probably trying to verify the firmware
|
||||
version or hardware type for each BMC in your cluster. You probably
|
||||
want to run bmc-info with the consolidated output (-C) set most of the
|
||||
time. System GUIDs are also different between systems, so in order to
|
||||
limit the amount of different output, you may want to run with the
|
||||
--get-device-id option to limit the output.
|
||||
|
||||
ipmi-raw:
|
||||
|
||||
The output of ipmi-raw will likely be only 1 long line. The
|
||||
consolidated output is likely what you're interested in using.
|
||||
|
||||
ipmi-config:
|
||||
|
||||
The typical use is to run w/ --checkout to checkout a configuration,
|
||||
modify that file with new configuration information, then run w/
|
||||
--commit to write the new configuration. I imagine most users will
|
||||
only run with hostrange support with the --commit option to configure
|
||||
multiple machines in parallel. Note that since a significant amount
|
||||
of configuration must be done in-band before out-of-band communication
|
||||
can occur (i.e. configuring IP addresses, MAC addresses), most may
|
||||
elect to not configure a machine out of band at all. The --diff
|
||||
option may be used across many machines to see if a configuration
|
||||
differs on any machine within a cluster.
|
||||
|
||||
4) Exceptions to the hostrange support in FreeIPMI
|
||||
--------------------------------------------------
|
||||
|
||||
The hostrange input/output is not been supported in a few situations.
|
||||
|
||||
o Each BMC in the cluster must be configured with a different IP
|
||||
address and MAC address. So the parallelism that the hostrange input
|
||||
gives you effectively cannot be used when trying to use ipmi-config's
|
||||
--commit option to configure a cluster using one config file.
|
||||
Therefore we prohibit hostranged input when trying to configure these
|
||||
values in ipmi-config.
|
||||
|
||||
o Ipmipower was written with a different architecture than bmc-info,
|
||||
ipmi-sensors, ipmi-sel, etc. because of need for it to interact with
|
||||
Powerman, so it cannot use the parallel stdout libraries developed.
|
||||
It instead emulates the --buffer-output, --consolidate-output, and
|
||||
--fanout functionality of the other tools.
|
||||
|
||||
Additional Notes
|
||||
----------------
|
||||
|
||||
[1] Why doesn't FreeIPMI just use whatsup? Whatsup defines "up" to
|
||||
typically mean that an OS up running healthily. IPMI can operate
|
||||
without the OS running, even when the node is "powered off."
|
||||
Therefore, an alternate tool had to be developed. A plugin for
|
||||
whatsup could have been developed to determine "up vs. down" using
|
||||
IPMI, but the authors of FreeIPMI did not want FreeIPMI to become
|
||||
dependent on whatsup.
|
134
source/freeipmi/usr/share/doc/freeipmi/freeipmi-libraries.txt
Normal file
134
source/freeipmi/usr/share/doc/freeipmi/freeipmi-libraries.txt
Normal file
@ -0,0 +1,134 @@
|
||||
FreeIPMI Libraries
|
||||
|
||||
by
|
||||
|
||||
Albert Chu
|
||||
chu11@llnl.gov
|
||||
Last Updated: May 18, 2012
|
||||
|
||||
The following is a short summary of the libraries and APIs available for
|
||||
use in FreeIPMI.
|
||||
|
||||
Libfreeipmi
|
||||
-----------
|
||||
|
||||
Libfreeipmi is the primary library that most of the FreeIPMI tools are based
|
||||
upon. The following describe the sub-sections of the library.
|
||||
|
||||
api - The highest level API provided by libfreeipmi. It abstracts
|
||||
away the details of inband and outofband protocols from the user. It
|
||||
also provides useful error codes for the user to easily interpret IPMI
|
||||
problems. 'api' is used by most FreeIPMI tools and libraries, such as
|
||||
bmc-info(8), ipmi-sensors(8), and libipmimonitoring(3).
|
||||
|
||||
cmds - Provides fiid templates and 'fill' functions for IPMI
|
||||
commands. Also provides macros definining common parameters for
|
||||
IPMI commands. The cmds are used by most other portions of
|
||||
libfreeipmi including the 'api' sub-section and tools such as
|
||||
ipmipower(8) and ipmiconsole(8).
|
||||
|
||||
debug - Provides various packet/record dumping utility functions.
|
||||
Utilized by the 'api' subsection and by tools such as ipmipower(8) and
|
||||
ipmiconsole(8).
|
||||
|
||||
driver - Provides APIs for in-band IPMI communication. Currently
|
||||
supported drivers are KCS, SSIF, OpenIPMI, and sunbmc. The 'driver'
|
||||
subsction is used by tools such as bmc-watchdog(8) and the 'api'
|
||||
sub-section.
|
||||
|
||||
fiid - The "FreeIPMI Interface Definition" provides an API used for
|
||||
the construction/deconstruction of packets in libfreeipmi. The API
|
||||
works around fiid-templates, which are then used to create
|
||||
fiid-objects. Fiid-templates are used to describe packets through
|
||||
a string-name to bit-field mapping. The API allows users to
|
||||
read/write fields in an object using the string to bit-field
|
||||
mapping. Marshalling, packing, endian, and various other network
|
||||
issues are handled within 'fiid'. Fiid objects are used throughout
|
||||
libfreeipmi, including the 'api' sub-section, 'cmds' sub-sections,
|
||||
and various tools.
|
||||
|
||||
fru - Provides an API for reading and parsing Field Replaceable Unit
|
||||
(FRU) records. Utilized by tools such as ipmi-fru(8).
|
||||
|
||||
interface - Provides 'assemble' and 'disassemble' functions for
|
||||
building packets for individual in-band or out-of-band protocols.
|
||||
Also provides all necessary fiid templates, 'fill' functions, and
|
||||
other utility functions necessary to communicate on an IPMI
|
||||
interface. Utilized by the 'api' sub-section and tools such as
|
||||
ipmipower(8) and ipmiconsole(8).
|
||||
|
||||
interpret - Provides an API for interpreting sensor or SEL events by
|
||||
mapping them into Nominal, Warning, or Critical states. Utilized by
|
||||
FreeIPMI tools and libraries, such as ipmi-sensors(8), ipmi-sel(8),
|
||||
and libipmimonitoring(3).
|
||||
|
||||
locate - Provides an API to probe several standards to find default
|
||||
values for in-band IPMI communication. Utilized by the 'api'
|
||||
sub-section and the ipmi-locate(8) tool.
|
||||
|
||||
payload - Provides macros, fiid-templates, and information on paylods
|
||||
used in IPMI. Used predominantly by ipmiconsole(8) and other
|
||||
serial-over-LAN (SOL) related code.
|
||||
|
||||
record-format - Provides macros, fiid-templates, and information on
|
||||
records used in IPMI. Utilized by the 'fru' and 'sdr' subsection and
|
||||
tools like ipmi-sensors(8) and ipmi-fru(8).
|
||||
|
||||
sdr - Provides an API for creating, caching, reading, and parsing a
|
||||
sensor data repository (SDR) and the SDR records within it. Utilized
|
||||
by tools such as ipmi-fru(8) and ipmi-sensors(8).
|
||||
|
||||
sel - Provides an API for reading and parsing System Event Log (SEL)
|
||||
entries. Utilized by tools such as ipmi-sel(8).
|
||||
|
||||
sensor-read - Provides an API for reading a sensor. Utilized by tools
|
||||
such as ipmi-sensors(8).
|
||||
|
||||
spec - Provides macros and arrays for various other definitions and
|
||||
tables in IPMI. Utilized by tools such as ipmi-sensors(8).
|
||||
|
||||
util - Provides various utility functions for the calculation of keys,
|
||||
sensor readings, etc. Utilized by most of the rest of FreeIPMI.
|
||||
|
||||
Libipmiconsole
|
||||
--------------
|
||||
|
||||
Libipmiconsole implements a high level serial-over-lan (SOL) API for
|
||||
remote console access. It can be used to establish and manage
|
||||
multiple IPMI 2.0 SOL sessions. The goal of this library is to
|
||||
abstract away all of the underlying IPMI/SOL details away from the
|
||||
user into a relatively simple file descriptor interface.
|
||||
|
||||
Libipmimonitoring
|
||||
-----------------
|
||||
|
||||
Libipmimonitoring implements a high level SEL and sensor monitoring
|
||||
API. An iterator interface is provided that allows the user to
|
||||
iterate through sensor values, groups, units, and states.
|
||||
|
||||
Libipmidetect
|
||||
-------------
|
||||
|
||||
Libipmidetect implements a high level API for determing which nodes in
|
||||
a cluster do or do-not support IPMI. This library is primarily useful
|
||||
for detecting when nodes are removed from a cluster for servicing, so
|
||||
that IPMI applications can avoid unnecessary timeouts. The library
|
||||
interacts with the ipmidetectd(8) daemon.
|
||||
|
||||
pkg-config support
|
||||
------------------
|
||||
|
||||
FreeIPMI provides pkg-config support for all the above libraries.
|
||||
|
||||
You can thus use the standard configure macros:
|
||||
|
||||
PKG_CHECK_MODULES(FREEIPMI, libfreeipmi, HAVE_LIBFREEIPMI="yes", HAVE_LIBFREEIPMI="no")
|
||||
|
||||
Or use direct pkg-config calls:
|
||||
|
||||
CFLAGS += $(shell pkg-config --cflags libfreeipmi)
|
||||
LIBS += $(shell pkg-config --libs libfreeipmi)
|
||||
|
||||
|
||||
For more information, refer to pkg-config documentation:
|
||||
http://www.freedesktop.org/wiki/Software/pkg-config
|
@ -0,0 +1,227 @@
|
||||
IPMI OEM additions/extensions documentation requirements
|
||||
|
||||
Albert Chu
|
||||
chu11@llnl.gov
|
||||
Last Updated: January 3, 2011
|
||||
|
||||
The following is a list of the common OEM documentation requirements
|
||||
that are needed for full OEM support in FreeIPMI.
|
||||
|
||||
IPMI OEM Command Extensions/Additions
|
||||
-------------------------------------
|
||||
|
||||
IPMI OEM command extensions/additions for setting up, controlling,
|
||||
configuring, monitoring, and managing the system that are not in the
|
||||
IPMI specification. Many times, this is needed to configure hardware
|
||||
or gather information for monitoring, gather information to diagnose
|
||||
problems, etc. Or in more general terms, OEM command
|
||||
extensions/additions necessary to help manage the system.
|
||||
|
||||
Examples include:
|
||||
|
||||
OEM commands for configuring the hardware for IPMI. For example,
|
||||
configuring the ethernet port to be shared or dedicated (ipmi-oem's
|
||||
Inventec's get/set-nic-mode commands are an example of this).
|
||||
|
||||
OEM commands for retrieving motherboard specific information. For
|
||||
example, OEM commands for reading firmware versions (ipmi-oem's
|
||||
Supermicro extra-firmware-info command is an example of this).
|
||||
|
||||
OEM commands for retrieving motherboard specific hardware information
|
||||
necessary for hardware monitoring. For example, retrieving the
|
||||
current health status of hardware (ipmi-oem's Fujitsu
|
||||
get-remote-storage-status command is an example of this).
|
||||
|
||||
OEM commands for resetting configuration back to the manufacturer
|
||||
defaults (ipmi-oem's Dell reset-to-defaults command is an
|
||||
example of this).
|
||||
|
||||
OEM commands for configuring any additional "features" added to IPMI
|
||||
by the vendor. For example, how to configure the ports, timeout,
|
||||
on/off of web server abilities on the BMC (ipmi-oem's Dell
|
||||
get/set-web-server-config commands are an example of this).
|
||||
|
||||
IPMI OEM Parameter Extensions
|
||||
-----------------------------
|
||||
|
||||
IPMI OEM parameter extensions to IPMI for setting up, controlling,
|
||||
configuring, monitoring, and managing the system that are not in the
|
||||
IPMI specification. For example, IPMI parameter extensions for
|
||||
reading service tags via the Get System Info Parameters command or
|
||||
configuring SOL Inactivity Timeouts via the Get/Set SOL Configuration
|
||||
Parameters command (ipmi-oem's Dell get-system-info and
|
||||
get/set-sol-inactivity-timeout commands are examples of this).
|
||||
|
||||
The following is a (likely) incomplete list of IPMI commands OEM
|
||||
parameter extensions may have been added to.
|
||||
|
||||
Get/Set System Info Parameters (22.14a/22.14b)
|
||||
|
||||
Get/Set LAN Configuration Parameters (23.1/23.2)
|
||||
|
||||
Get/Set PEF Configuration Parameters (30.3/30.4)
|
||||
|
||||
Get/Set SOL Configuration Parameters (26.2/26.3)
|
||||
|
||||
Get/Set Serial Modem Configuration Parameters (25.1/25.2)
|
||||
|
||||
Get/Set System Boot Options (28.12/28.13)
|
||||
|
||||
IPMI OEM events offsets and event data
|
||||
--------------------------------------
|
||||
|
||||
IPMI OEM event offsets and event data to read sensors and system event
|
||||
log (SEL) information. The following is a (likely) incomplete list of
|
||||
areas where IPMI OEM extensions may have been added pertaining to
|
||||
event offsets and event data.
|
||||
|
||||
OEM Event Type Codes (see Table 42-1)
|
||||
|
||||
OEM Sensor Types and Offsets and Event Data2/3 information (see Table 42-3)
|
||||
|
||||
OEM Entity IDs (see 43.14)
|
||||
|
||||
OEM System Event Data2 and Data3 information for all possible events (see 29.7)
|
||||
|
||||
IPMI OEM Records
|
||||
----------------
|
||||
|
||||
IPMI OEM records that store motherboard information or motherboard
|
||||
event information. The following is a (likely) incomplete list of
|
||||
areas where IPMI OEM extensions may have been added pertaining to
|
||||
various records.
|
||||
|
||||
OEM SEL Records (32.2 and 32.3)
|
||||
|
||||
OEM SDR Records (43.12)
|
||||
|
||||
OEM FRU Records (see Platform Management FRU Information Storage Definition v1.0)
|
||||
|
||||
IPMI OEM Misc
|
||||
-------------
|
||||
|
||||
The following are miscellaneous IPMI commands or areas that may have
|
||||
OEM options or extensions related to setting up, controlling,
|
||||
configuring, monitoring, and managing the system that are not in the
|
||||
IPMI specification.
|
||||
|
||||
Get Device ID Auxiliary Information (see 20.1)
|
||||
|
||||
DCMI Get/Set Power Limit Exception Actions (See DCMI 6.6.2 and 6.6.3)
|
||||
|
||||
Necessary Documentation Details
|
||||
-------------------------------
|
||||
|
||||
The following is a summary of documentation information detail that is
|
||||
necessary to add OEM extension support into FreeIPMI.
|
||||
|
||||
A)
|
||||
|
||||
Details on the exact bit/hex and field layout of the packet or record
|
||||
should be documented.
|
||||
|
||||
For example, sometimes we are given nothing more than a hex string, e.g.
|
||||
|
||||
"0x21 0x33 0x44 0x00 0x00 0x01"
|
||||
|
||||
and told this will do FOO action. This isn't useful because we don't
|
||||
know what each byte does or what additional options are available.
|
||||
|
||||
A specific packet/record layout similar to what is in the IPMI
|
||||
spec should be documented.
|
||||
|
||||
B)
|
||||
|
||||
Hex to string/flag mapping information in sensors, system event logs,
|
||||
configuration fields, etc. should be documented.
|
||||
|
||||
For example, documentation may list:
|
||||
|
||||
"[0:3] - FOO type"
|
||||
|
||||
OR
|
||||
|
||||
"event data 2 holds the FOO type"
|
||||
|
||||
OR
|
||||
|
||||
"event data 2 - FOO error, see FOO error doc."
|
||||
|
||||
with nothing else.
|
||||
|
||||
Details for how to map hex/masks to strings/flags should be
|
||||
documented. For example, something like:
|
||||
|
||||
0x1 = type 1
|
||||
0x2 = type 2
|
||||
0x3 = type 3
|
||||
|
||||
OR
|
||||
|
||||
0x1 = bitmask condition 1
|
||||
0x2 = bitmask condition 2
|
||||
0x4 = bitmask condition 3
|
||||
|
||||
OR
|
||||
|
||||
0x80 = error message 1
|
||||
0x81 = error message 2
|
||||
0x82 = error message 3
|
||||
|
||||
C)
|
||||
|
||||
Enough detail should be documented to calculate, determine, handle
|
||||
errors, etc. of various packet or record fields. This is especially
|
||||
true when bitmasks, bit shifts, bit manipulation, multipliers,
|
||||
etc. are involved.
|
||||
|
||||
For example, we may be given a code snippet such as:
|
||||
|
||||
if (event_data2 & 0xF)
|
||||
printf("DIMM bank %d\n", event_data3);
|
||||
|
||||
In the example above, there is a fair amount of detail missing:
|
||||
|
||||
- How do you print DIMM information if "event_data2 & 0xF" isn't true?
|
||||
|
||||
- Or is it an error condition? If so what error conditions are
|
||||
possible?
|
||||
|
||||
- It seems that event_data2 holds a bitmask, what other bitmask
|
||||
conditions are possible?
|
||||
|
||||
D)
|
||||
|
||||
The units of packet or record fields should always be documented.
|
||||
|
||||
E)
|
||||
|
||||
The endian of multibyte fields should always be documented.
|
||||
|
||||
F)
|
||||
|
||||
Configuration fields should be documented as read only, write only, or
|
||||
read/write.
|
||||
|
||||
G)
|
||||
|
||||
Details for mapping between technical information and "real life"
|
||||
information should be documented.
|
||||
|
||||
For example, documents may show how to map DIMM locations into DIMM 0,
|
||||
DIMM 1, DIMM2, DIMM 3, etc. However, no algorithm for mapping this
|
||||
into information physically printed on the motherboard (e.g. DIMM A1,
|
||||
DIMM A2, DIMM B1, DIMM B2) is not given. Without it, the information
|
||||
is of very little use to those using FreeIPMI to diagnose problems.
|
||||
|
||||
Other Notes
|
||||
-----------
|
||||
|
||||
While it is possible that code would be sufficient documentation of
|
||||
the above, it is typically not sufficient. Code often implements a
|
||||
subset of the actual data/information for the needs of the particular
|
||||
software. For example, outputting only the information the software
|
||||
deems "useful" and ignoring the rest. Code is often not documented
|
||||
at a level that is sufficient as real documentation. In order to
|
||||
convert the code into code necessary for another project may require
|
||||
reverse engineering or guesses.
|
1455
source/freeipmi/usr/share/doc/freeipmi/freeipmi-testing.txt
Normal file
1455
source/freeipmi/usr/share/doc/freeipmi/freeipmi-testing.txt
Normal file
File diff suppressed because it is too large
Load Diff
1028
source/freeipmi/usr/share/info/freeipmi-faq.info
Normal file
1028
source/freeipmi/usr/share/info/freeipmi-faq.info
Normal file
File diff suppressed because it is too large
Load Diff
BIN
source/freeipmi/usr/share/man/man3/libfreeipmi.3.gz
Normal file
BIN
source/freeipmi/usr/share/man/man3/libfreeipmi.3.gz
Normal file
Binary file not shown.
BIN
source/freeipmi/usr/share/man/man3/libipmiconsole.3.gz
Normal file
BIN
source/freeipmi/usr/share/man/man3/libipmiconsole.3.gz
Normal file
Binary file not shown.
BIN
source/freeipmi/usr/share/man/man3/libipmidetect.3.gz
Normal file
BIN
source/freeipmi/usr/share/man/man3/libipmidetect.3.gz
Normal file
Binary file not shown.
BIN
source/freeipmi/usr/share/man/man3/libipmimonitoring.3.gz
Normal file
BIN
source/freeipmi/usr/share/man/man3/libipmimonitoring.3.gz
Normal file
Binary file not shown.
BIN
source/freeipmi/usr/share/man/man5/bmc-config.conf.5.gz
Normal file
BIN
source/freeipmi/usr/share/man/man5/bmc-config.conf.5.gz
Normal file
Binary file not shown.
BIN
source/freeipmi/usr/share/man/man5/freeipmi.conf.5.gz
Normal file
BIN
source/freeipmi/usr/share/man/man5/freeipmi.conf.5.gz
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
source/freeipmi/usr/share/man/man5/ipmi-config.conf.5.gz
Normal file
BIN
source/freeipmi/usr/share/man/man5/ipmi-config.conf.5.gz
Normal file
Binary file not shown.
Binary file not shown.
BIN
source/freeipmi/usr/share/man/man5/ipmiconsole.conf.5.gz
Normal file
BIN
source/freeipmi/usr/share/man/man5/ipmiconsole.conf.5.gz
Normal file
Binary file not shown.
BIN
source/freeipmi/usr/share/man/man5/ipmidetect.conf.5.gz
Normal file
BIN
source/freeipmi/usr/share/man/man5/ipmidetect.conf.5.gz
Normal file
Binary file not shown.
BIN
source/freeipmi/usr/share/man/man5/ipmidetectd.conf.5.gz
Normal file
BIN
source/freeipmi/usr/share/man/man5/ipmidetectd.conf.5.gz
Normal file
Binary file not shown.
BIN
source/freeipmi/usr/share/man/man5/ipmimonitoring.conf.5.gz
Normal file
BIN
source/freeipmi/usr/share/man/man5/ipmimonitoring.conf.5.gz
Normal file
Binary file not shown.
Binary file not shown.
BIN
source/freeipmi/usr/share/man/man5/ipmipower.conf.5.gz
Normal file
BIN
source/freeipmi/usr/share/man/man5/ipmipower.conf.5.gz
Normal file
Binary file not shown.
BIN
source/freeipmi/usr/share/man/man5/ipmiseld.conf.5.gz
Normal file
BIN
source/freeipmi/usr/share/man/man5/ipmiseld.conf.5.gz
Normal file
Binary file not shown.
BIN
source/freeipmi/usr/share/man/man5/libipmiconsole.conf.5.gz
Normal file
BIN
source/freeipmi/usr/share/man/man5/libipmiconsole.conf.5.gz
Normal file
Binary file not shown.
BIN
source/freeipmi/usr/share/man/man5/libipmimonitoring.conf.5.gz
Normal file
BIN
source/freeipmi/usr/share/man/man5/libipmimonitoring.conf.5.gz
Normal file
Binary file not shown.
BIN
source/freeipmi/usr/share/man/man7/freeipmi.7.gz
Normal file
BIN
source/freeipmi/usr/share/man/man7/freeipmi.7.gz
Normal file
Binary file not shown.
BIN
source/freeipmi/usr/share/man/man8/bmc-config.8.gz
Normal file
BIN
source/freeipmi/usr/share/man/man8/bmc-config.8.gz
Normal file
Binary file not shown.
BIN
source/freeipmi/usr/share/man/man8/bmc-device.8.gz
Normal file
BIN
source/freeipmi/usr/share/man/man8/bmc-device.8.gz
Normal file
Binary file not shown.
BIN
source/freeipmi/usr/share/man/man8/bmc-info.8.gz
Normal file
BIN
source/freeipmi/usr/share/man/man8/bmc-info.8.gz
Normal file
Binary file not shown.
BIN
source/freeipmi/usr/share/man/man8/bmc-watchdog.8.gz
Normal file
BIN
source/freeipmi/usr/share/man/man8/bmc-watchdog.8.gz
Normal file
Binary file not shown.
BIN
source/freeipmi/usr/share/man/man8/ipmi-chassis-config.8.gz
Normal file
BIN
source/freeipmi/usr/share/man/man8/ipmi-chassis-config.8.gz
Normal file
Binary file not shown.
BIN
source/freeipmi/usr/share/man/man8/ipmi-chassis.8.gz
Normal file
BIN
source/freeipmi/usr/share/man/man8/ipmi-chassis.8.gz
Normal file
Binary file not shown.
BIN
source/freeipmi/usr/share/man/man8/ipmi-config.8.gz
Normal file
BIN
source/freeipmi/usr/share/man/man8/ipmi-config.8.gz
Normal file
Binary file not shown.
BIN
source/freeipmi/usr/share/man/man8/ipmi-console.8.gz
Normal file
BIN
source/freeipmi/usr/share/man/man8/ipmi-console.8.gz
Normal file
Binary file not shown.
BIN
source/freeipmi/usr/share/man/man8/ipmi-dcmi.8.gz
Normal file
BIN
source/freeipmi/usr/share/man/man8/ipmi-dcmi.8.gz
Normal file
Binary file not shown.
BIN
source/freeipmi/usr/share/man/man8/ipmi-detect.8.gz
Normal file
BIN
source/freeipmi/usr/share/man/man8/ipmi-detect.8.gz
Normal file
Binary file not shown.
BIN
source/freeipmi/usr/share/man/man8/ipmi-fru.8.gz
Normal file
BIN
source/freeipmi/usr/share/man/man8/ipmi-fru.8.gz
Normal file
Binary file not shown.
BIN
source/freeipmi/usr/share/man/man8/ipmi-locate.8.gz
Normal file
BIN
source/freeipmi/usr/share/man/man8/ipmi-locate.8.gz
Normal file
Binary file not shown.
BIN
source/freeipmi/usr/share/man/man8/ipmi-oem.8.gz
Normal file
BIN
source/freeipmi/usr/share/man/man8/ipmi-oem.8.gz
Normal file
Binary file not shown.
BIN
source/freeipmi/usr/share/man/man8/ipmi-pef-config.8.gz
Normal file
BIN
source/freeipmi/usr/share/man/man8/ipmi-pef-config.8.gz
Normal file
Binary file not shown.
BIN
source/freeipmi/usr/share/man/man8/ipmi-pet.8.gz
Normal file
BIN
source/freeipmi/usr/share/man/man8/ipmi-pet.8.gz
Normal file
Binary file not shown.
BIN
source/freeipmi/usr/share/man/man8/ipmi-ping.8.gz
Normal file
BIN
source/freeipmi/usr/share/man/man8/ipmi-ping.8.gz
Normal file
Binary file not shown.
BIN
source/freeipmi/usr/share/man/man8/ipmi-power.8.gz
Normal file
BIN
source/freeipmi/usr/share/man/man8/ipmi-power.8.gz
Normal file
Binary file not shown.
BIN
source/freeipmi/usr/share/man/man8/ipmi-raw.8.gz
Normal file
BIN
source/freeipmi/usr/share/man/man8/ipmi-raw.8.gz
Normal file
Binary file not shown.
BIN
source/freeipmi/usr/share/man/man8/ipmi-sel.8.gz
Normal file
BIN
source/freeipmi/usr/share/man/man8/ipmi-sel.8.gz
Normal file
Binary file not shown.
BIN
source/freeipmi/usr/share/man/man8/ipmi-sensors-config.8.gz
Normal file
BIN
source/freeipmi/usr/share/man/man8/ipmi-sensors-config.8.gz
Normal file
Binary file not shown.
BIN
source/freeipmi/usr/share/man/man8/ipmi-sensors.8.gz
Normal file
BIN
source/freeipmi/usr/share/man/man8/ipmi-sensors.8.gz
Normal file
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user