From 5c33adf59bbd14ac5f076e6eddd052a478e33335 Mon Sep 17 00:00:00 2001 From: Packit Service Date: Dec 10 2020 00:07:05 +0000 Subject: OpenIPMI-2.0.27 base --- diff --git a/AUTHORS b/AUTHORS new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/AUTHORS diff --git a/CONFIGURING_FOR_LAN b/CONFIGURING_FOR_LAN new file mode 100644 index 0000000..298f146 --- /dev/null +++ b/CONFIGURING_FOR_LAN @@ -0,0 +1,110 @@ +I get asked this question a lot. Configuring a LAN interface is +unfortunately complex because you have to do a bunch of different +things to get one up and running. However, it can be done. + +First, I *strongly* recommend using the GUI for this. There are many +parameters, far too many to easily handle in a command-line +interface. It can be done with a command-line interface, but it is +ugly. + +The first thing to do is open a connection to the system. Generally +you would be doing this on a local BMC (because the LAN is not +working), so I'll assume that. You can configure LAN remotely, with +the obvious risks. Anyway, in the GUI, do File->Open Domain, select +"smi", and select 0 for the interface (assuming that's the one you +want). Let the connection come up. In openipmish, do: + domain open local smi 0 +and wait for it to come up. + +Once up, you have 3 major configuration items: + * Channel configuration + * User configuration + * LAN Parameters + + +CHANNEL CONFIGURATION +--------------------- + +Once your connection is up, you need to figure out what channels need +to be configured. Systems with more than one Ethernet port will +generally have one channel for each port. In this case, figuring out +which port goes to which channel is left as an exercise for the +reader. You can list all the channels by right-clicking on the MC in +the GUI and choosing "Channel Info", or by doing: + mc chan info +in ipmish. You are looking for channels with a medium of 4, or +8023_LAN. + +Once you have the channel(s), you need to enable them. Iin the GUI, +open the tree for each channel you need to configure, and open up user +access. There are two different user access setting, one is volatile +(and will be set immediately) the other is non-volatile (and will be +restored upon power-up). You need to set both of them. Enable "Per +Msg Auth", "User Auth", set the "Access Mode" to "ALWAYS", and set the +"Privilege Limit" to the limit you want, generally "admin". Then +"Save" the configuration. In openipmish, do "help mc chan" and follow +the instructions for the "set_access" command. + + +USER CONFIGURATION +------------------ + +After this, re-open the channel menu because you need that to get to +the user and LANPARM configuration. Right click on each channel you +need to configure and choose "User Info". You need to add a user for +each channel. User 1 generally has no username and is a generic +user. The other users can get a name set. Unfortunately, there is no +way to fetch the "Enabled" or "Session Limit" values, so those will +show as "?" until you set them. You need to set the name (if not user +1), "Enabled" to True, "Link Auth Enabled" to True, "Msg Auth Enabled" +to True, "Access Callback Only" to False, and the "Privilege Limit" to +the privilege you want, generally admin for full access. To set the +password for a user, right click on the user's number and choose "Set +Password". Passwords cannot be fetched or displayed in IPMI. + +In openipmish, do "help mc chan user" and use these tools to set the +various settings listed above for a user + +Note that on some systems, setting the user will fail unless you +explicitly set the "Session Limit" (this is a bug in their +implementation). so you might have to set that. Zero disables it and +is generally a good choice. + +LAN CONFIGURATION +----------------- + +Once you have users configured, you are ready to configure LAN +setting. Right-click on the channel again and choose "LANPARMS". +This pulls up a large list of settings. + +There are several things you need to configure. First you need to set +the ip_addr_source. If it is DHCP, BIOS, or some other automatic +setting, that's fine. If it is manually configured, you must set the +ip_addr and subnet_mask settings. + +If you want the system to be accessible when off, you must set the +bmc_generated_arps and/or bmc_generated_garps to true. You might have +to experiment to see which one works. + +If you want to route through a router, you must set up the gateway IP +addresses and MAC addresses. + +Last, but not least, you must set up the enables. For LAN 1.5 +(non-RMCP+) access, you must set the "enable_auth_xxx[privilege]" +values to the ones you want. In general, md5 is the best you have +with LAN 1.5, so enable md5 and disable everything else, unless you +just want no access controls and enable "none". You should enable it +for the privilege levels you want. + +FOr RMCP+, you have to enable the cipher suites you are interested in. +The cipher suite entries are listed, you have to set the +"max_priv_for_cipher_suite" for the corresponding cipher suites you +want. Again, these are privilege levels. + +If you are using openipmish, use the "help lanparm" command and trace +down. And good luck, you will need it. + +ANYTHING ELSE +------------- + +I think that is all, but I've probably missed something. diff --git a/COPYING b/COPYING new file mode 100644 index 0000000..d60c31a --- /dev/null +++ b/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) 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 +this service 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 make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. 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. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +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 +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the 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 a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE 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. + + 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 +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + 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 2 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, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision 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, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This 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 Library General +Public License instead of this License. diff --git a/COPYING.BSD b/COPYING.BSD new file mode 100644 index 0000000..4c6f900 --- /dev/null +++ b/COPYING.BSD @@ -0,0 +1,25 @@ +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions 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. + 3. The name of the author may not be used to endorse or promote + products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING +IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. diff --git a/COPYING.LIB b/COPYING.LIB new file mode 100644 index 0000000..c4792dd --- /dev/null +++ b/COPYING.LIB @@ -0,0 +1,515 @@ + + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations +below. + + When we speak of free software, we are referring to freedom of use, +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 this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. +^L + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it +becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. +^L + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control +compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. +^L + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. +^L + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. +^L + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. +^L + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +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 +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply, and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License +may add an explicit geographical distribution limitation excluding those +countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser 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 Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. +^L + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "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 +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY 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 +LIBRARY (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 LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS +^L + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms +of the ordinary General Public License). + + To apply these terms, attach the following notices to the library. +It is safest to attach them to the start of each source file to most +effectively convey the exclusion of warranty; and each file should +have at least the "copyright" line and a pointer to where the full +notice is found. + + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +Also add information on how to contact you by electronic and paper +mail. + +You should also get your employer (if you work as a programmer) or +your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James +Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + + diff --git a/ChangeLog b/ChangeLog new file mode 100644 index 0000000..926ed4b --- /dev/null +++ b/ChangeLog @@ -0,0 +1,9036 @@ +2014-02-11 Corey Minyard + + * lib/domain.c: Fix a wrong comparison in cmp_int(). + +2014-01-20 Corey Minyard + + * configure.in -> configure.ac + Plus some cleanups and update the version to 2.0.21. + +2014-01-10 Corey Minyard + + * lanserv/marvell-bmc/marvell_mod.c: Add a command to directly + set the duty cycle of the fans. + +2013-12-23 Corey Minyard + + * lanserv/OpenIPMI/mcserv.h, lanserv/OpenIPMI/msg.h, lanserv/bmc.c: + The IANA numbers are supposed to be in bytes 2-4 off responses to IANA + commands, but they were not being put there. Fix this in the main IANA + handling to do this automatically, and modify the command handling to + strip the IANA from the command and add it to a message field. This + makes handling of IANA commands more natural and allows standard message + response generation to work. + * sol.c: Adjust for the previous change. + * marvell-bmc/marvell_mod.c: ditto + + * lanserv/sol.c: Check that an MC has SOL enabled befor attempting + to use the SOL data when setting custom SOL settings. + +2013-11-07 Corey Minyard + + * lanserv/ipmi_sim.c: Set SO_REUSEADDR on the serial TCP and IPMI + LAN sockets to avoid "address in use" errors when quitting and + restarting. + +2013-11-06 Corey Minyard + + * lanserv/OpenIPMI/persist.h, lanserv/persist.c, lanserv/ipmi_sim.c: + Add a way to pass in the state directory on the command line so + the persist location can be specified then instead of just at + compile time. + +2013-10-10 Corey Minyard + + * include/OpenIPMI/os_handler.h: Add a real and monotonic time + fetcher. + * cmdlang/os_debug: Add the new time fetchers. + * tcl/tcl_os_hnd.c, unix/unix_os_hnd.c, ui/ui_os.c: ditto + * unix/posix_os_hnd.c, unix/posix_thread_os_hnd.c: ditto + * unix/selector.c: Switch to using monotonic time. + * lib/ipmi_lan.c: Change gettimeofday() to the proper time handlers. + * lib/mc.c, lib/oem_atca_conn.c, lib/sdr.c: ditto + * lib/sensor.s, sample/ipmicmd.c, tcl/test_handlers.c: ditto + * ui/basic_ui.c, ui/ui.c, unix/test_handlers.c: ditto + * lanserv/OpenIPMI/serv.h: Add a real and monotonic time + fetcher. + * lanserv/ipmi_sim.c, lanserv/lanserv.c: Supply time fetchers + using the os handler. + * lanserv/bmc.c: Use the time fetchers instead of gettimeofday(). + * lanserv/bmc_app.c, lanserv/bmc_storage.c: ditto + * lanserv/marvell-bmc/marvell_mod.c: ditto + +2013-08-30 Corey Minyard + + * include/OpenIPMI/Makefile.am: Add ipmi_string.h to the + distributed includes. + + * configure.in: Move to version 2.0.20-rc3. + +2013-08-29 Corey Minyard + + * lanserv/sdrcomp/Makefile.am, lanserv/marvell-bmc/Makefile.am: + Remove the sdrcomp_build program, it wasn't necessary. + + * configure.in: The dia program changed the --version output + from stdout to stderr. Account for that. + + * configure.in: Move to version 2.0.20-rc2. + +2013-08-28 Corey Minyard + + * unix/posix_thread_os_hnd.c: Add a lock to the timer to avoid + races starting and stopping the timer. + + * cmdlang/cmd_lanparm.c: Cleanups for warnings. + * cmdlang/cmd_solparm.c: ditto + * lanserv/ipmi_sim.c: ditto + * lib/entity.c: ditto + * lib/ipmi_lan.c: ditto + * lib/ipmi_smi.c: ditto + * lib/mc.c: ditto + * lib/oem_atca.c: ditto + * lib/sensor.c: ditto + * sample/ipmicmd.c: ditto + * sample/sample2.c: ditto + * ui/basic_ui.c: ditto + * ui/ui.c: ditto + * utils/ipmi_malloc.c: ditto + * utils/string.c: ditto + + * tcl/test_handlers.c: Call Tcl_CreateInterp() to initialize + the Tcl code before using. + + * include/OpenIPMI/ipmi_cmdlang.h: Add some missing includes. + + * lanserv/OpenIPMI/persist.h, lanserv/persist.c, lanserv/emu_cmd.c: + Add a emu command to disable persistence, mostly for testing. + + * lanserv/ipmi_sim.c: Still write '> ' if echo is off, so the test + code can tell when a command is done. + + * lanserv/lanserv_ipmi.c: Fix the response length on set_channel + access, fix the lan parameter command and rollback so it works + multiple times. + + * swig/perl/Lanserv.pm: Big rework of the tests so they work with + recent simulator changes. + * swig/perl/Makefile.am: ditto + * swig/perl/lan.conf: ditto + * swig/perl/test_chan: ditto + * swig/perl/test_fru: ditto + * swig/perl/test_lanparm: ditto + * swig/perl/test_pef: ditto + * swig/perl/test_pet: ditto + +2013-08-28 Nikita Yushchenko + + * unix/posix_thread_os_hnd.c: This patch makes behaviour of + posix_thread_os_hnd's stop_timer() same as behaviour of + posix_os_hnd's stop_timer() currently is. + + * swig/perl/.gitignore, swig/python/.gitignore, tcl/.gitignore: + More .gitignore. + +2013-08-27 Nikita Yushchenko + + * lib/ipmi_lan.c: This change is needed to allow software using + library to see "connection timeout" error, that happens when BMC + indeed does not respond. + +2013-06-13 Nikita Yushchenko + + * lib/ipmi_lan.c: Fix misbehaviour of code in + check_session_seq_num() when incoming sequence number contains + garbage. Also, it fixes type of 'bit' variable same as type of + (*map) it operates on... but still not enough for lt_allowed=16. + + * lib/ipmi_lan.c: Change the message map size to 32 bits so it can + handle a full 16-message window. + +2013-05-29 `Corey Minyard + + * lanserv/serv.c: Don't return negative of the checksum, let the + calling routine do that so it can do running checksums. + + * lanserv/bmc.c, lanserv/lanserv.c: Negate the checksum. + + * lanserv/serial_ipmi.c, lanserv/lanserv_ipmi.c: Fix some style issues + around the checksum code. + +2013-05-06 Corey Minyard + + * lanserv/marvell-bmc/marvell.emu: Change the SEL size to 1000 entries. + + * lanserv/sol.c: Fix an error shutdown issue that can result in a + SIGSEGV. + +2013-04-15 Corey Minyard + + * lanserv/marvell-bmc/marvell_mod.c: Modify the power on sequence + to hold the reset for 100ms after power on. + +2013-04-11 Corey Minyard + + * lanserv/marvell-bmc/marvell_mod.c: Fix the calculations for the + 1.05V sensor. + + * lanserv/marvell-bmc/marvell_mod.c: Add a duty cycle modify field + to let you adjust the duty cycle of the fans. + +2013-03-28 Corey Minyard + + * lanserv/bmc_storage.c: Modified the fru_trywait to be + fru_timedwait when waiting for the FRU semaphore, and added a + 250ms timeout on it. That should be enough time for any + asynchronous operation to complete, but avoids an error return. + +2013-03-27 Corey Minyard + + * lanserv/bmc_storage.c: Added EINTR and partial read/write + handling for FRU data. + +2013-03-08 Corey Minyard + + * lanserv/marvell-bmc/marvell_mod.c: Fix a typo in an error string. + + * sample/ipmi_serial_bmc_emu.c: Fix the IP address configuration + so it actually works. + +2013-03-07 Corey Minyard + + * lanserv/marvell-bmc/marvell_mod.c: The system serial number for + the board was being set wrong, the data was off by 1 in the fru + version 2 case. + + * lanserv/marvell-bmc/marvell_mod.c: Rewrite the chassis info for + a board if the version of the main chassis info is different than the + version for the board. + +2013-03-05 Corey Minyard + + * lanserv/marvell-bmc/marvell_mod.c: Fix a bug in the board + removal simulation. + +2013-03-04 Corey Minyard + + * lanserv/emu_cmd.c, lanserv/OpenIPMI/serv.h: Add the ability to + dynamically add new emulator commands. Useful for debugging. + + * lanserv/emu.h: Removed things moved to serv.h. + + * lanserv/marvell-bmc/marvell_mod.c: Add the ability to simulate + a board being removed. + + * lanserv/bmc_sensor.c: The hysteresis was being pulled from the + wrong bytes in the SDR. + + * lanserv/marvell-bmc/marvell_mod.c: For the chassis power control, + if any board is on the report the power as on. + + * lanserv/marvell-bmc/marvell_mod.c: Add a bunch of internal + documentation and reorganize things a bit to make sure that + related functions are grouped together. + +2013-02-25 Corey Minyard + + * lanserv/bmc_sensor.c: The previous change to avoid bogus events + from polled sensors turned off the timer for polled sensors, thus + nothing happened. Start the timer. + + * lanserv/marvell-bmc/lancontrol: Handle incomplete arp results. + +2013-02-22 Corey Minyard + + * lanserv/OpenIPMI/mcserv.h, lanserv/emu_cmd.c: Add postinit + function to the polled sensor handler to call after the sensor is + created. + + * lanserv/bmc_sensor.c: Add the ability to set the initial event + state for a polled file sensor. + + * lanserv/marvell-bmc/marvell_mod.c: Start out the power supply + sensor with the present bit set so that no log is issued for + normal startup. + +2013-02-21 Corey Minyard + + * lanserv/bmc_storage.c: Fix an issue with writing FRU data to a + file, it was writing the wrong data. + + * lanserv/bmc_sensor.c: Delay enabling the FRU and reading sensor + data a bit so that false events don't get put into the event log. + + * lanserv/marvell-bmc/*.sdrs: Fix the events to be deassert events + for the various deassertions. + + * lanserv/marvell-bmc/marvell_mod.c: Fix the reset reason sensor, + it wasn't actually adding the proper value into the event to tell + what happened. + + * lanserv/bmc_storage.c: Make the SEL overflow bit work. + +2013-02-12 Corey Minyard + + * lanserv/ipmi_sim.c: Add a way to catch fatal signals, and add a + shutdown handler for when the program either shuts down normally + or catches a signal. + + * lanserv/sol.c, lanserv/ipmi_sim.c: Add a method to save the sol + data to a backup file when the program shuts down, and restore the + backup data when the program comes back up. Also remove the + sol_shutdown() function an move that handling over to the new + method. + + * lanserv/marvell-bmc/lan.conf: Add sol shutdown/restore files for + all the sol sessions. + +2013-02-07 Corey Minyard + + * configure.in, lanserv/Makefile.am: Add a --with-marvell-bmc + option. + + * lanserv/marvell-bmc/marvell_mod.c: Add support for the version + 2.0 FRU. + +2013-02-06 Corey Minyard + + * lanserv/marvell-bmc/marvell_mod.c: Add an option to disable the + watchdog timer. + + * lanserv/marvell-bmc/marvell_mod.c: Fix reset reason to be hard + reset unless coldboot or warmboot is set. + +2013-02-04 Corey Minyard + + * configure.in: Add support for BUILD_CC. + + * configure.in, lanserv/sdrcomp: Move sdrcomp into its own + subdirectory so it can be ready before marvell-bmc, and add + a build version of sdrcomp. + + * lanserv/sdrcomp/marvell-bmc/Makefile.am: Get all the extra stuff + to distribute properly and build the SDRs automatically. + + * lanserv/marvell-bmc/marvell_mod.c: Fix a cold power up bug, + don't change the board power state if it's not a cold power up. + + * lanserv/marvell-bmc/marvell_mod.c: If the BMC sees a critical + temperature for a board, it waits until it sees it twice before + powering the board down. + + * lanserv/marvell-bmc/marvell_mod.c: Switch the handling of + critical temperatures and sensor settings so the sensor setting + goes first. Before the sensor setting was after the board was + powered off and the sensor was disabled, so on an overtemp the + event wouldn't be logged. + + * lanserv/marvell-bmc/marvell_mod.c: Fix the name of the dimm + sensor. + + * lanserv/marvell-bmc/marvell_mod.c: Always use the motherboard + temperature sensor when calculating fan duty. + +2013-02-03 Corey Minyard + + * lanserv/marvell-bmc/marvell_mod.c: Add support for /dev/watchdog. + + * lanserv/marvell-bmc/marvell_mod.c: Add a sensor for reporting + the reboot reason of the BMC. + + * lanserv/marvell-bmc/marvell_mod.c: Clean up some stray \n's that + shouldn't be in sys->log() calls. + + * lanserv/bmc.c: Fix handling of adding commands to existing + netfns, the cb_data may be NULL in that case. + +2013-01-24 Corey Minyard + + * swig/python/openipmigui/Makefile.am: Fix the localcopy command + to actually make a local copy. + + * lanserv/marvell-bmc/marvell_mod.c, lanserv/marvell-bmc/board.sdrs: + Increase the range of the 0.9V sensor. + + * lanserv/marvell-bmc/marvell_mod.c: Minor cleanups and memory + usage inprovements. + +2013-01-23 Corey Minyard + + * lanserv/bmc_sensor.c: Don't require a sensor to be enabled to + be polled. The sensor enable is often set in the polling routine. + + * lanserv/marvell-bmc/lan.conf: Fix the LAN configuration to better + match the hardware. + + * lanserv/marvell-bmc/marvell_mod.c: Fix the power supply sensor, + it was fairly broken with respect to presence. + +2013-01-21 Corey Minyard + + * lanserv/marvell-bmc/marvell_mod.c: Don't allow power to be + changed on a board that is not present. + + * lanserv/marvell-bmc/marvell_mod.c: Light the fan fail LED on a + fan failure. + + * lib/sensor.c, lib/entity.c: Allow software ids to be used as + normal addresses. + + * lanserv/marvell-bmc/marvell_mod.c: Fix an issue with setting + board presence in the wrong place. + +2013-01-20 Corey Minyard + + * lanserv/marvell-bmc, lanserv/Makefile.am: Add the Marvell BMC + code ipmi_sim plugin. + + * lanserv/ipmi_sim.c, lanserv/lanserv.c: Add config.h include so + syslog testing will work. + +2013-01-18 Corey Minyard + + * lanserv/*: Change the command handler to take a cb_data + parameter. + + * lanserv/OpenIPMI/mcserv.h, lanserv/bmc_storage.c: Modify the FRU + data to be more memory efficient. + * lanserv/bmc_picmg.c: Adjust for previous change. + +2013-01-14 Corey Minyard + + * lanserv/bmc.h, lanserv/OpenIPMI/mcserv.h, lanserv/bmc_sensor.h: + Modify the sensor bit settings to use bitmasks of a uint16_t + instead of an array of characters. Less code, less memory, and + faster. + + * lanserv/bmc_app.c, lanserv/bmc_picmg.c: Adjust for the previous + change. + + * lanserv/bmc_sensor.c, lanserv/OpenIPMI/mcserv.h: Add handling of + sensor rearm and add a way to register to get called if a sensor + is rearmed. + +2013-01-11 Corey Minyard + + * lanserv/sol.c: Fix a bug where a sol connection can hang on an + overflow of data. The handling of sol reading was reworked quite + a bit because of this, and to fix other issues related to history. + The history handling throws a bit of a curve into this, because + you want data to go to the history even if you can't read any more + to send out the network interface. So reading data is no longer + flow-controlled if history is enabled. Instead the buffer size + was increased and reads always are enabled on the port. + + In addition, the maximum send size was increased to 255 bytes and + a few places were a wrong timer was started were fixed. + + * lanserv/extcmd.c: Fix handling of IP addresses to work on any + endianness. + + * lanserv/lanserv_ipmi.c: Change the maximum message size to ~1024. + + * lanserv/lanserv_ipmi.c: Modify the reading of values during a + set so that it reads values from the local data, not the external + data, when the parameter has been set but not committed. ipmitool + expects to be able to re-read parameters and get the value it + wrote. + +2013-01-10 Corey Minyard + + * lanserv/extcmd.c: Fix issues with IP addresses on ARM. + + * lanserv/ipmi_sim: Don't bring up a LAN channel if the address + is not configured. + + * lanserv/lanserv_ipmi.c: Fix allowed auths settings to use the + actual values, and fix the type 16 parameter. + + * lanserv/bmc.h, lanserv/bmc_app.c, lanserv/OpenIPMI/mcserv.h: Add + version setting capability to the MC. + + * lanserv/bmc.c, lanserv/OpenIPMI/mcserv.h: Add a way to fetch the + openipmi lanserv version. + + * lanserv/bmc_sensor.c: Convert reading raw data for sensors to + using raw, not buffered, I/O. ASCII reading remains buffered. + + * lanserv/bmc_storace.c: Convert reading/writing EEPROM data to + use raw I/O, not buffered I/O. + +2013-01-09 Corey Minyard + + * lanserv/sdrcomp.c: Add type 18 SDR. + +2013-01-07 Corey Minyard + + * lanserv/ipmi_sim.c: Fix the IO exception callback. + + * lanserv/Makefile.am: Update version. + + * unix/posix_os_hnd.c: Remove some dead code. + + * unix/selector.c: Consolidate the processing. + + * lanserv/bmc_sensor.c: Add mask capability to the file sensor. + + * lanserv/sdrcomp.c: Add timestamps and entity names to SDRs. + +2013-01-06 Corey Minyard + + * lanserv/mcserv.h, lanserv/bmc_sensor.c: Add flags to the threshold + and event support settings to allow values to be passed in to control + which parts are initialized. + * lanserv/emu_cmd.c: Adjust for the previous changes. + + * lanserv/bmc_sensor.c: Finish the SDR initialization code. + + * lanserv/bmc_sensor.c: Convert the ascii file scanner to a general + scanner that can be used for raw or ascii files. + + * lanserv/bmc_sensor.c: Fix the polling to to limit threshold values + from 0-255. + + * lanserv/emu_cmd.c: Use standard, not base 16, for all integer values + except raw data input. + + * lanserv/persist.c: Fix a bug reading lower-case hex values. + + * lanserv/sdrcomp.c: Fix some issues with type 2 sdrs. + + * lanserv/ipmisim1.emu: Adjust for the previous changes. + + * lanserv/persist.c: Fix a memory overwrite reading data. + + * lanserv/bmc_sensor.c: Don't process polled sensor data if it's + not valid. + +2013-01-03 Corey Minyard + + * lanserv/*: Fix const correctness issues. + + * lanserv/emu_cmd.c, lanserv/config.c: Add variable definition and + include commands. + +2013-01-02 Corey Minyard + + * lanserv/sdrcomp.c: Lots of enhancements, names for fields, + and general things to make this easier to use. + + * lanserv/bmcsensor.c: Added a multiplier for ascii file sensor + handling. + +2012-12-29 Corey Minyard + + * lanserv/OpenIPMI/mcserv.h, lanserv/bmc.h, lanserv/bmc_sensor.h: + Rework the just added poll sensor capability to have it return the + new value. This will make it easier to run in a separate thread, + if necessary. + + * lanserv/bmc_sensor.c: Fix event delivery handling of the data + values. + + * lanserv/bmc_storage.c: Fix issues with the persistent storage of + data. + + * lanserv/emu.h, lanserv/bmc.c, lanserv/emu_cmd.c: Add options to + the MC and add an option to use or not use SDR persistence. + +2012-12-28 Corey Minyard + + * lanserv/OpenIPMI/serv.h, lanserv/config.c, lanserv/ipmi_sim.c: + Add a post-init function for modules. + +2012-12-27 Corey Minyard + + * lanserv/bmc.h, lanserv/bmc_sensor.c, lanserv/OpenIPMI/mcserv.h: + Added sensor infrastructure for registering and initializing + sensor types. + + * lanserv/emu_cmd.c: Added code to use the registration of sensor + types and the setting of polled sensors. + +2012-12-21 Corey Minyard + + * lanserv/OpenIPMI/mcserv.h, lanserv/bmc_storage.c: Add the + ability to represent a FRU inventory device with a function, and + add a helper function for doing this with a file. + + * lanserv/emu_cmd.c: Adjust for the previous change. + + * lanserv/sel.c: Add persistence to the SEL. + + * lanserv/sdrcomp.c: Add type 16 and 17 SDR types. + + * lanserv/bmc.h, lanserv/bmc_storage.c: Add a function to iterate + SDRs. + + * lanserv/bmc.c: Remove init_sensor_from_sdr(). + + * lanserv/bmc_sensor.c: Add initialization of a sensor from the + BMC's main SDR repository. + +2012-12-20 Corey Minyard + + * lanserv/OpenIPMI/persist.h, lanserv/persist.c: Add the ability + to write persist data to a FILE and to iterate persist data. + + * lanserv/sdrcomp.c, lanserv/Makefile.am: Add the ability to + output SDRs in persist format. + + * lanserv/bmc.c, lanserv/bmc.h, lanserv/bmc_storage.h: Remove the + watchdog sensor SDR init and add the ability to read and write the + SDRs from persistent data. + +2012-12-18 Corey Minyard + + * include/OpenIPMI/ipmi_string.h, utils/string.c, Makefile.am: + Move IPMI string handling to the utils library. + + * include/OpenIPMI/internal/ipmi_int.h, lib/ipmi.c: Move the IPMI + string handling from here. + + * lanserv/OpenIPMI/serv.h, lanserv/config.h: Add a "get_int" + handler for SDRs. + + * lanserv/config.c: Add some other valid boolean values for use in + SDRs: (yes, no, 1, 0). + + * lanserv/sdrcomp.c: Add start of code to compile SDRs from human + readable text. + +2012-12-17 Corey Minyard + + * lanserv/emu.c: Some reorganization getting ready to split + up this file. + + * lanserv/serv.c, lanserv/OpenIPMI/serv.h: Create a common + ipmb_checksum routine. + * lanserv/emu.c: Use the common ipmb_checksum routine + * lanserv/lanserv.c: ditto + * lanserv/lanserv_ipmi.c: ditto + * lanserv/serial_ipmi.c: ditto + + * lanserv/bmc.c: Rename from emu.c + + * lanserv/bmc.c, lanserv/Makefile.am: Split this file up into + smaller pieces, roughly per NETFN. + * lanserv/bmc_app.c: ditto + * lanserv/bmc_chassis.c: ditto + * lanserv/bmc_picmc.c: ditto + * lanserv/bmc_sensor.c: ditto + * lanserv/bmc_storage.c: ditto + * lanserv/bmc_transport.c: ditto + +2012-12-01 Corey Minyard + + * lanserv/OpenIPMI/serv.h, lanserv/config.c, lanserv/ipmi_sim.c: + Add the ability to print the version of ipmi_sim and any loaded + modules. + +2012-11-14 Corey Minyard + + * lanserv/OpenIPMI.mcserv.h, lanserv/OpenIPMI/mcserv.h: Add + graceful shutdown defines. + + * lanserv/emu: Add graceful shutdown capability. + +2012-11-09 Corey Minyard + + * lanserv/emu.c: OpenIPMI was assigned an IANA number, so use it + for our custom messages. + +2012-11-07 Corey Minyard + + * lanserv/OpenIPMI/mcserv.h, lanserv/sol.c, lanserv/lan.conf: + Change noreadclear to readclear. + +2012-11-06 Corey Minyard + + * lanserv/Makefile.am, lanserv/sol.c, lanserv/config.c: Move the + sol code to only be compiled into ipmi_sim, not the lanserv + command. + + * lanserv/emu.c, lanserv/OpenIPMI/mcserv.h: Add an IANA handler + and a handler for the OpenIPMI-specific IANA and allow other + parts of the system to register commands against it. + + * lanserv/sol.c: Add a new command to limit the size fetched from + the SOL history buffer. + + +2012-10-29 Corey Minyard + + * lanserv/OpenIPMI/serv.h, lanserv/ipmi_sim.c: Add a gen_rand + function to the sys_data_t structure. + + * lanserv/OpenIPMI/mcserv.h, lanserv/sol.c, lanserv/config.c: + By default clear the SOL history buffer after it is read, but + add a parameter to not clear it. + +2012-10-05 Corey Minyard + + * lanserv/emu.c, lanserv/OpenIPMI/mcserv.h: Reworked the chassis + control function a bit to make it more flexible. Added power + cycle capability. + + * lanserv/Makefile.am, lanserv/ipmi_sim.c: Add a version number to + the simulator. + +2012-10-04 Corey Minyard + + * lanserv/emu.c: Fix a problem handling FRU data that is larger + than 64K. + +2012-10-03 Corey Minyard + + * lanserv/OpenIPMI/serv.h: Increase the number of IPMBs to 256 + and modify the code to allow odd IPMB addresses. + * lanserv/config.c: ditto + * lanserv/emu.c: ditto + * lanserv/ipmi_sim.c: ditto + * lanserv/sol.c: ditto + + * lib/Makefile.am: Remove '-L$(libdir)' from the LDFLAGS, as that + causes issues with cross compiling. + + * lanserv/persist.c: Fix a problem reading integet persisten + values. + + * lanserv/sol.c, lanserv/emu.c: Fix some bugs with SOL config + handling. + +2012-10-02 Corey Minyard + + * lanserv/sol.c, lanserv/config.c: Add a way to disable RTS/CTS + handling on the port. + + * lanserv/sol.c: Fix a bug handling data when the buffer gets + full. + +2012-10-01 Corey Minyard + + * lanserv/OpenIPMI/serv.h: Add printf attribute to the log functions. + + * lanserv/serv.c, lanserv/lanserv_ipmi.c: Fix problems with log + function attributes being wrong. + +2012-09-29 Corey Minyard + + * lanserv/config.c, lanserv/ipmi_sim.c: Move the dynamic loading + to after the main part of the simulator is initialized. + + * lanserv/sol.c: Print the right pid if the device is UUCP locked. + +2012-09-27 Corey Minyard + + * lanserv/emu.c: Added an internal capability to do power control. + +2012-09-26 Corey Minyard + + * lanserv/OpenIPMI/serv.h, lanserv/ipmi_sim.c: Add a way to do I/O + handling to the sys_data structure. + + * lanserv/sol.c: Switch sol over to use the sys_data I/O handling + instead of directly using the OS handlers. + +2012-09-25 Corey Minyard + + * lanserv/config.c: Have the module initialization function + return an int, 0 for success and errno for failure. + +2012-09-24 Corey Minyard + + * doc/Makefile.am: One more fix for building outside the source + directory. + + * lanserv/OpenIPMI/Makefile.am: Add a missing file. + + * lanserv/Makefile.am: Fix a cross-compile issue. + +2012-09-21 Corey Minyard + + * lanserv/emu.c, lanserv/lanserv_ipmi.c: Test handling a SOL + session on a satellite MC, fix some issues with that. + +2012-09-20 Corey Minyard + + * lanserv/emu.c: Make the FRU history be per-session so multiple + users will consistent data. + +2012-09-19 Corey Minyard + + * lanserv/emu.c: Convert the command handling over to using + tables to allow commands to be dynamically added, and add + a function to do this. + + * lanserv/config.c: Add a way to dynamically load libraries + into the simulator. + + * cmdlang/Makefile.am: Rework so OpenIPMI can build in an external + directory. + * cmdlang/ipmish.c: ditto + * include/OpenIPMI/ipmi_conn.h: ditto + * include/OpenIPMI/ipmi_lan.h: ditto + * include/OpenIPMI/ipmi_types.h: ditto + * include/OpenIPMI/ipmiif.h.in: ditto + * lib/Makefile.am: ditto + * sample/Makefile.am: ditto + * swig/perl/Makefile.am: ditto + * swig/python/Makefile.am: ditto + * swig/python/openipmigui/Makefile.am: ditto + * ui/Makefile.am: ditto + * unix/Makefile.am: ditto + +2012-09-17 Corey Minyard + + * lanserv/extcmd.c, lanserv/OpenIPMI/extcmd.h: Add a mapping + capability to map values to strings. + + * lanserv/emu.c, lanserv/lanserv_ipmi.c: Convert over to the + extcmd string mapping facility. + +2012-09-16 Corey Minyard + + * lanserv/config.c, lanserv/emu.c: Add an external command + function for doing power and reset control. + + * lanserv/ipmi_sim_chassiscontrol: Add an example script for power + configuration. + + * lanserv/emu.c: Add boot config control handling. + + * lanserv/ipmi_sim_chassiscontrol: Add boot config control. + +2012-09-15 Corey Minyard + + * lanserv/extcmd.c, lanserv/extcmd.h: Add an external command + processing facility. + + * lanserv/lanserv_ipmi.c, lanserv/OpenIPMI/lanserv.h: Use the + external command processing facility to handle reading and writing + the external LAN configuration parameters. + + * lanserv/ipmi_sim_lancontrol: Add an example script for LAN + configuration. + +2012-09-14 Corey Minyard + + * lanserv/lanserv_ipmi.c, lanserv/OpenIPMI/serv.h: Rework the + session registration code to be able to add a separate MC for + different payloads. + + * lanserv/sol.c, lanserv/emu.c, lanserv/OpenIPMI/mcserv.h: + Add the ability to fetch the SOL history buffer as FRU + data. + +2012-09-13 Corey Minyard + + * lanserv/sol.c: Finish up the SOL implementation by adding + a timer and modem control signal handling. + + * lanserv/sol.c, lanserv/config.c, lanserv/OpenIPMI/mcserv.h: Add + a history buffer that tracks the last N bytes of serial port + output, where N is specific in the config file. + +2012-09-11 Corey Minyard + + * include/OpenIPMI/os_handler.h: Add functions to handle write + and except status on an FD. + + * unix/posix_os_hnd.c: Add the above functions for this handler. + +2012-09-08 Corey Minyard + + * lanserv/*: Start adding SOL functionality, implement commands, + start working on payload handling and getting all the various + pieces tied in to the frameworks. + +2012-09-07 Corey Minyard + + * lanserv/OpenIPMI/mcserv.h, lanserv/sol.c: Implemented UUCP + locking on SOL ports and basic SOL device setup. + +2012-09-05 Corey Minyard + + * lanserv/lanserv_ipmi.c, lanserv/OpenIPMI/lanserv.h: Remove a + bunch of LAN config options we are not supporting. + + * lanserv/lanserv_ipmi.c: Implement Get Channel Cipher Suites + and implement a few other authentication mechanisms that needed + to be done. + + * lanserv/config.c, lanserv/persist.c, lanserv/persist.h: Allow + printf-type names for alloc and read persist operations. + + * lanserv/lanserv_ipmi.c, lanserv/OpenIPMI/lanserv.h: Add persistence + for some LAN data. + + * lanserv/sol.c, lanserv/emu.c, lanserv/lanserv_ipmi.c: Start + adding the SOL protocol. + +2012-09-04 Corey Minyard + + * lanserv/persist.c, lanserv/persist.h, lanserv/Makefile.am: Add a + persistence tool to use for storing data on the disk. + + * lanserv/config.h, lanserv/emu.c, lanserv/ipmi_sim.c: Save and + restore users information using the persistence tool. + + * lanserv/OpenIPMI/serv.h, lanserv/ipmi_sim.c, lanserv/lanserv.c: + Remove the write_config function, replacing it with the persistence + tool. + +2012-08-09 Corey Minyard + + * lanserv/*: Move the receive queue into the MC where it belongs. + + * swig/python/openipmigui/_mc_chan.py: Fix channel scanning code + so it scans channel 15, too. + + * lanserv/*: Move the channel structures into the MC and allow + per-MC channel settings. + + * lanserv/*: Move the startcmd into the MC to allow more than + one VM to hook to simulated IPMI environment on different MCs. + + * lib/chassis.c, lib/mc.c, include/OpenIPMI/internal/ipmi_mc.h: + Create power and reset controls for non-BMC MCs with the chassis + bit set, use the IPMB address for the instance in that case. + + * lanserv/*: Move the user and PEF structures into the MC. + +2012-08-08 Corey Minyard + + * lanserv/*: Rename "bmc_data_t" to "sys_data_t" because it's mostly + info about the whole emulator, not BMC-specific. Also, move the + lmc_data_t structure and functions to a separate include file. + This is getting ready to move some things that are in bmc_data_t + to the specific MCs, as some of the things are mc-specific, like + channels. + +2012-08-03 Jim Mankovich + + * unix/posix_os_hnd.c: The unix/posix_os_hnd.c stop_timer function + will stop the timer correctly, but it can never be restarted again + because the os_hnd_timer_id_t running status is not reset to zero + (0 == !running). I ran into this problem when trying to change + the ipmb rescan timer value via ipmi_domain_set_ipmb_rescan_time). + If you ever call this function, the ipmb rescan timer will be + stopped and you can never restart it again. This function should + really check the result of start_timer and report an error if it + can't restart the timer. + +2012-07-21 Corey Minyard + + * lanserv/lan.conf: Fix the startcmd example to match changes + made in the qemu code. + + * lib/pet.c: Someone running static analysis (they didn't give + their name, just a sourceforge login) reported that the sizeof + operator for an array parameter always returns the size of a + pointer. This was used when copying a MAC address, and was thus + incorrect. Change the memcpy to use "6". + + * lib/ipmi_smi.c: Someone noticed that the return values from + opening an IPMI device could be inconsistent because it tries a + bunch of possibilities and returns the last error. So ignore + ENOENT as it is meaningless unless everything return ENOENT. + +2012-07-21 Bob Cagle + + * lib/normal_fru.c: The length can exceed a char size in a board + info area, but a char was used to hold the length. Change it to + an int. + +2012-07-21 Stephane Blain + + * lib/sensor.c: If there are not valid sensors in the SDR, don't + return an error from scanning the SDRs. There's just no sensors. + + * lib/oem_atca.c: Fix an issue with invalid severe errors coming + out due to the floating IPMB address being picked up. + + * lib/sdr.c: In oem_atca.c (atca_event_handler), + ipmi_start_ipmb_mc_scan is called each time an 0xf0 event is + received. because of the race condition, the MC callback is called + with wrong information (sdr_fetch_info_t->changed is not set + correctly). + +2012-07-01 Corey Minyard + + * cmdlan/Makefile.am, glib/Makefile.am, lib/Makefile.am: + Fix some build issues with libraries. + * tcl/Makefile.am, unix/Makefile.am: ditto + + * configure.in: Move to version 2.0.20-rc1. + +2012-06-28 Corey Minyard + + * swig/python/sample.py, swig/python/sample2.py: Fix some issues + with proper shutdown and cleanup. + + * sample/ipmicmd.c: Don't free the response, let the system do it + in the normal case. + + * lib/ipmi_lan.c: Fix issues with locking and reporting connection + failure status. + + * sample/ipmi_serial_bmc_emu.c: Convert to work with IPv6. + + * lanserv, man: Did a massive restructure of lanserv and the + IPMI simulator for supporting a VM interface. + + * swig/python/openipmigui/_sensor.py: Fix a reference error + causing a failure in some cases when setting event thresholds. + + * swig/python/openipmigui/gui_setdialog.py: BooleanVar will return + an integer in some cases, account for that. + +2012-05-24 Corey Minyard + + * lanserv/OpenIPMI/ipmi_sim_info.h, lanserv/OpenIPMI/lanserv.h: + Moved some generic information into ipmi_sim_info.h for use by + the emulator and lanserv. + + * lanserv/emu.c, lanserv/emu.h, lanserv/emu_cmd.h: Rework the + emulator to move some generic information into ipmi_sim_info.h + structures. + + * lanserv/ipmi_sim.c, lanserv/lanserv.c, lanserv/lanserv_config.c: + Rework for the above changes. + * lanserv/lanserv_ipmi.c: ditto + +2012-05-21 Corey Minyard + + * os_handler.c, ipmi_malloc.c: Since the OS handler waiter stuff + uses ipmi_malloc(), initialize it from there. And only initialize + the os_handler once in ipmi_malloc_init(), to avoid any issues + with the OS handler changing. + + * lanserv_emu.c, ipmi_sim.c, Makefile.am: Rename lanserv_emu to + ipmi_sim, and modify ipmi_sim to use the OS handler. + + * lanserv/emu.c: Fix a buffer overrun if a SEND_MSG response was + too large to fit into the buffer. + +2012-04-27 Corey Minyard + + * cmdlang/cmd_sensor.c: A sensor event does not have to be readable + to support event enables. + +2012-01-05 Michael Pauzner + + * unix/posix_thread_os_hnd.c: Add pthread_attr_setinheritsched() + when setting the priority of a thread, so the set will actually + work. + +2011-10-12 Corey Minyard + + * Makefile.am, swig/python/Makefile.am: Fixed the rungui setting due + to changes in autoconf and such. + + * configure.in: Add a check for execinfo.h that used to be automatic. + + * swig/OpenIPMI.i: Fix an issue with domain.iterate_mcs(). The + callback name was inconsistent, causing issues. Make the callback + name domain_iter_mc_cb in all cases. + + * swig/python/Makefile.am, swig/python/sample2.py: Add a simple + sample program to send get device id periodically. + + * utils/ipmi_malloc.c: Fix a bug in the malloc code to handle if no + traceback is passed in. + + * configure.in: Move to version 2.0.19. + +2011-06-15 Anduras AG + + * configure.in, ui/Makefile.am: Add support for ncursesw. + +2010-07-14 Corey Minyard + + * Makefile.am, configure.in, cmdlang/Makefile.am, doc/Makefile.am, + glib/Makefile.am, lanserv/Makefile.am lib/Makefile.am, tcl/Makefile.am, + ui/Makefile.am, unix/Makefile.am, utils/Makefile.am: Remove all + gnu make specific constructs and make automake happy. + + * sample/ipmi_serial_bmc_emu, sample/ipmicmd.c, sample/rmcp_ping.c, + libedit/read.c, libedit/readline.c, libedit/vi.c, lib/mc.c, + lib/lanparm.c, lib/ipmi_smi.c, lib/ipmi_payload.c, lib/ipmi_lan.c, + lib/domain.c, lanserv/lanserv.c: Cleaned up some pointer aliasing + problems and some signed/unsigned compare problems. + +2010-06-02 Dann Frazier + + * ipmi.init - Initscripts should be idempotent, meaning you can + safely call "start" multiple times in a row and receive a success + each time if the service is running. This requirement is mentioned + in the LSB Spec, version 3.1, section 20.2. + + The openipmi initscript does not meet this requirement when the + ipmi watchdog option is enabled. The 'start' method will return an + error if /dev/watchdog already exists. But, if /dev/watchdog is + there because ipmi_watchdog is already loaded, we should not + receive an error. + + This change fixes this. It also includes a fix for a syntax error + that prevents start_watchdog_common() from working at all. + +2010-05-28 Corey Minyard + + * lib/sensor.c: Change the "share count" checking to check if + share count is > 1, not > 0, because some silly machines set the + value to one when they should set it to zero, and one is a silly + setting. + +2010-05-03 Corey Minyard + + * swig/python/Makefile.am, swig/perl/Makefile.am: The swig command + could possibly get the wrong target, and the OpenIPMI_wrap.c file + was being included in the distribution, which could cause the + OpenIPMI.py and OpenIPMI.pm files to not be properly generated. + Fix those problems. + + * configure.in: Move to version 2.0.18. + +2010-04-29 Corey Minyard + + * configure.in: Move to version 2.0.17. + +2010-04-28 Corey Minyard + + * include/OpenIPMI/ipmiif.h, lib/ipmi.c: Add a cache option + to allow using the local cache to be enabled or disabled. + + * include/OpenIPMI/internal/ipmi_domain.h, lib/domain.c, + include/OpenIPMI/ipmiif.h.in: + Add support for the cache option. Also rearrange the handling + of options to parse them before the domain is setup, otherwise + the SDR allocation would be done before the cache option is + processed. + + * lib/sdr.c: Add support for the cache option. + +2010-04-27 Alex Deiter + + * configure.in, cmdlang/Makefile.am, sample/Makefile.am: Properly + handle the terminal library. + + * swig/perl/Makefile.am: Clean up compile issues. + + * swig/python/Makefile.i, swig/OpenIPMI.i, + swig/python/openipmigui/Makefile.am: + Clean up various compile issues with the python sources. + +2010-04-27 Corey Minyard + + * lib/sensor.c: Use unsigned int, not double, to hold the raw + sensor value. + + * lib/ipmi_lan.c: Pass in the correct socket length to sendto, + not just the maximum possible size. + +2010-04-21 Alex Deiter + + * cmdlang/ipmish.c, cmdlang/out_fru.c, configure.in, + lanserv/OpenIPMI/lanserv.h, lanserv/emu.h, lanserv/lanserv.c, + lanserv/lanserv_emu.c, lib/fru_spd_decode.c, lib/oem_intel.c, + sample/dump_sensors.c, sample/ipmi_serial_bmc_emu.c, + sample/sample.c, sample/sample2.c, sample/sample3.c + sample/solterm.c, unix/selector.c, unix/test_heap.c: + Get OpenIPMI to compile under FreeBSD. + +2010-03-24 Corey Minyard + + * swig/python/sample.py, swig/python/Makefile.am: Added a python + sample program, converted from the perl sample program. + + * swig/perl/sample: Fixed a few bugs notices in the conversion + to python. + +2010-01-04 Corey Minyard + + * lib/ipmi_smi.c: Fix a bug noticed by a user who filed + Sourceforge bug 2924182 on this, error cleanup in the case of an + SMI setup failure would crash in some cases, and I noticed a + use of freed data in the same routine and fixed that, too. + +2009-10-19 Corey Minyard + + * cmdlang/os_debug.c, glib/glib_os_hnd.c, tcl/tcl_os_hnd.c, + unix/posix_os_hnd.c, unix/posix_thread_os_hnd.c: Fix a bug filed + by dcb on SourceForce, modify set_gdbm_filename() in all these + files to properly use the allocated name instead of the passed + in name. + +2009-09-14 Jan Safranek + + * ipmi.init: On certain HW (e.g. IBM HS20 blade) the /dev/watchdog + is created by kernel during boot (provided by i6300esb + driver). /etc/init.d/ipmi script then does not recognize the + device is already there and tries to configure new one, which + obviously fails. The init script does not show any error and + pretends everything is OK. So modify the init script to detect + that another watchdog is registered and print a failure message. + +2009-06-17 Eric J. Bowersox + + * lib/ipmi_lan.c: Two more null-pointer fixes to ipmi_lan.c, found + in 2.0.16. The first is in a debugging message in + rmcpp_find_ipmi, which was using the IPMI_CONN_NAME(ipmi) macro in + a scenario in which the pointer it was passing would always be + NULL, causing a segfault. I modified the debug message to remove + the connection name, as none of the other debug messages in that + function use the connection name anyway. + + The second is in lan_oem_done, which may be called with a NULL + "ipmi" parameter (such as, indirectly, via lan_cleanup at line + 4030). It contains recovery code for that purpose, but the + initialization of "lan" at line 4308 causes a segfault before the + code gets to that point. I moved the initialization to after the + test for NULL. + +2009-06-15 Corey Minyard + + * lib/oem_atca_conn.c: Fix a logic problem in the disabling + of ATCA address checking. + +2009-06-13 Corey Minyard + + * lib/oem_atca_conn.c: Fix a problem where the ATCA address + checking code could be called even if it was disabled. + +2009-03-16 Corey Minyard + + * configure.in: Move to version 2.0.16. It's been a while and + a release is a good idea, I think. + +2009-01-16 Corey Minyard + + * lib/normal_fru.c: An Intel document (IPMI 0.9 to IPMI 1.0 Change + Summary and Porting Considerations from October 1, 1998) mentioned + the FRU version was updated from 1 to 2. Nothing else really + changed this, but some systems used the version 2. So account for + this change. + +2009-01-09 Jan Safranek + + * sample/rmcp_ping.c: I know, it's just a library sample, but + people find rmcp_ping useful and it should report something when + user provides wrong command line arguments. + +2008-12-09 Corey Minyard + + * lib/ipmi_lan.c, lib/oem_atca.c, sample/dump_sensors.c: Fix some + compiler warnings. + +2008-12-08 Dann Frazier + + * doc/IPMI.ltx: Fix some typos. + +2008-11-19 Corey Minyard + + * lib/domain.c: Allow scanning IPMB address 0x20 even if the the + channel medium is not IPMB. This helps fake out things where + there is no IPMB channel but an MC at 0x20 is still reported + in the SDRs. + +2008-11-07 Corey Minyard + + * lib/ipmi_lan.c: Fix some bugs notices by Stephane Blain + (stblain at users.sourceforge.net) dealing with the hash + function for ipmi lan objects. + +2008-09-07 Corey Minyard + + * unix/selector.c: Fixed a problem with a missing NULL check + on sending a signal. + + * sample/Makefile.am, sample/waiter_sample.c: Add a sample that + does waiting using the OS handler waiter. + +2008-09-05 Corey Minyard + + * lib/ipmi_payload.c: Work around a bug in some systems that + switch the request and response address in IPMI LAN messages. + +2008-07-14 Corey Minyard + + * unix/selector.c: Fixed handling of waking up threads. + +2008-07-02 Corey Minyard + + * utils/os_handler.c: Fixed a messed up refcount when a waiter + times out. + + * lib/strings.c: Fixed another typo noticed by Nancy Nichols. + +2008-06-29 Corey Minyard + + * lib/hmac.c: Someone named "Sia" reported on Sourceforge that + OpenIPMI was using the wrong key for HMAC-MD5-128. And they were + right. Problem is now fixed. + +2008-06-26 Corey Minyard + + * lib/strings.c: Fix a typo noticed by Nancy Nichols. + + * configure.in: Fixed the dia test to work with 3-level version. + + * lib/hmac.c: A variable in the SHA1 init function was declared + static instead of const. This means that in a multi-threaded + program, it is possibly (though quite unlikely) that the data + could get corrupted. + + * swig/python/openipmiguid/gui_domainDialog.py: Improve the error + handling to make it easier to track down problems. + +2008-05-21 Corey Minyard + + * lib/domain.c: Don't remove everything from the IPMB scan if + all the get channel commands fail. There may still be something + on IPMB 0. + + * lib/domain.c: Fix an overflow problem dealing with IPMB + addresses. If the IPMB ignores list covered all addresses, the + scan code would go into an infinite loop. + + * lib/domain.c, include/OpenIPMI/ipmi_mc.h: Cleaned up the + defaulting of the channel to IPMB, including using defines instead + of constants. + + * configure.in: Move to version 2.0.15. + +2008-04-21 Corey Minyard + + * sample/sample.c: Fixed some array index errors that Nancy + Nichols noticed. + +2008-04-12 Corey Minyard + + * include/OpenIPMI/ipmiif.h.in, include/OpenIPMI/ipmi_mc.h: Added + handlers that can be called when a registered handlers is removed + (cleaned up) automatically (usually when an object is destroyed). + This sounds kind of weird, perhaps, but object referenced as + callback data can be refcounted by perl and Python (and maybe + other things). If an object gets destroyed, there was no easy way + (besides keeping a list yourself and watching for object + destruction) to detect this. To avoid burdening the user with + having to watch that stuff, provide an easy way for them to know + when a callback handler is automatically removed. + + * include/OpenIPMI/internal/ipmi_entity.h: Added helper functions + for the callback cleanup. + + * lib/control.c, lib/domain.c, lib/entity.c, lib/mc.c, + lib/sensor.c: Actually implement the callback cleanup handlers. + + * swig/OpenIPMI.i: Use the callback cleanup handlers to clean + things up properly and avoid memory leaks. + + * swig/perl/test_pet: Remove the now-unneeded cleanup of the + update handlers. + +2008-04-10 Corey Minyard + + * lib/ipmi_lan.c: Don't mark a connection as started unless it + starts up completely. + + * lib/ipmi.c: Fixed a log race that was caused by the shutdown + changes. + + * lib/pet.c: Fix some refcounting problems, make sure the pet + object exists while callbacks are in progress. + + * swig/OpenIPMI.i: Clean up refcount handling for PEF, PET, and + LANPARM objects to avoid race conditions and problems on errors. + + * swig/perl/Makefile.am: Set the proper glib patch so that perl + can pick it up when running tests. + + * lib/pef.c: Make sure the PEF object stays around during the + capabilities check. + +2008-04-04 Corey Minyard + + * lib/domain.c: The send_command_option function of a connection + is optional, only use it if it is present. + +2008-04-03 Corey Minyard + + * include/OpenIPMI/ipmiif.h.in, lib/domain.c: Made the "name" + field in ipmi_open_domain a const. + + * lib/fru_spd_decode.c: Made the initialization reentrant. + + * lib/ipmi_lan.c: Use IPMI_CON_OPTION_LIST_END instead of "0". + Also add -M to the option list + + * include/OpenIPMI/ipmi_conn.h, lib/ipmi_lan.c: Added a connection + option specifying that a message has side effects. For messages + with side effects, increase the retry timeout to 5 seconds. This + is for reservation messages; on a slow link a reservation would be + resent, then the first response would be received and the old + reservation was being returned. + + * include/OpenIPMI/ipmi_mc.h, lib/mc.c: Added a side-effect send + command function. + * include/OpenIPMI/ipmiif.h.in, lib/domain.c: ditto + + * lib/sel.c, lib/sdr.c: Switch over to using the side effect + functions for doing reservations. + + * man/ipmi_cmdlang.7: Add the -M option. + + * lib/ipmi.c: Fix init/shutdown problems to allow init to be + called after a shutdown. + * lib/aes_cbc.c: ditto + * lib/hmac.c: ditto + * lib/md5.c: ditto + * lib/rakp.c: ditto + * lib/normal_fru.c: ditto + * lib/fru_spd_decode.c: ditto + * lib/fru.c: ditto + * lib/oem_atca.c: ditto + * lib/oem_atca_conn.c: ditto + + * sample/sample.c: Add test code for multiple init/shutdown. + + +2008-03-27 Corey Minyard + + * lib/mc.c: Fixed a rather serious bug in event handling, in some + cases it would never properly deliver events. + + * configure.in: Move to version 2.0.14. + +2008-03-12 Corey Minyard + + * include/OpenIPMI/lanserv.h, lanserv/OpenIPMI/lanserv.h: Move + lanserv.h into the lanserv directory. It still installs in + OpenIPMI as before. + + * configure.in, lanserv/Makefile.am, lanserv/OpenIPMI/Makefile.am: + Required changes to move lanserv.h. + * include/OpenIPMI/Makefile.am: ditto + + * lanserve/Makefile.am: Remove the dependency on OpenIPMIutils by + directly handling the source files from that directory and not + linking the utils library. + +2008-01-22 Serkan Çalış + + * libedit/makelist: When we try to compile OpenIMPI (2.0.11 or + previous versions) under Turkish locale, we get some erors like + chared.c:442: error: 'ED_UNASSIGNED' undeclared (first use in + this function) + This is because Turkish character i. Using ASCII could solve the + problem. I am attaching a patch for makelist, so we can compile + it. + +2007-12-20 Corey Minyard + + * swig/python/openipmigui/_sel.py, swig/python/openipmigui/gui_list.py: + Fine-tune some GUI settings. + + * lib/entity.c: Fix a possible race condition in the entity code. + + * lib/domain.c: Make the localonly option actually work. + +2007-10-16 Corey Minyard + + * swig/python/openipmigui/gui_domainDialog.py: Insert the default + value into string and integer values, primarily so the "Max + Outstanding Msgs" field has a proper default value. + + * include/OpenIPMI/internal/ipmi_fru.h: One of the changes for + problems with older compilers had bad side effects; it resulted + in corrupt data in some cases. Change it back. + + * tcl/Makefile.am, glib/Makefile.am: I was instructed by the + Debian maintainer that -rpath is a bad idea, and Debian had a + writeup. However, the automake documentation says that if you use + EXTRA_LTLIBRARIES for optional libraries, you must use -rpath. So + change the files back that use EXTRA_LTLIBRARIES. + + * glib/Makefile.am: Add an pythoninstalllib option to instruct + where to install the shared libraries for python. Also install + the library directly in the install location and not in + lib-dynload. + + * swig/OpenIPMI.i: Fixed a refcounting problem with + parse_args_iter_help(). + + * configure.in: Since one of the changes fixed a critical bug, + move to version 2.0.13. + +2007-10-02 Corey Minyard + + * include/OpenIPMI/internal/ipmi_fru.h, lib/normal_fru.c: Fix + problems compiling with older compilers. + * lib/oem_atca_fru.c: ditto + + * lib/ipmi_lan.c: Fixed a problem where the LAN code would pick + rmcp+ defaults that might not be available. Instead, pick the + most secure available default. + + * lib/domain.c: Free mc_oem_handlers when shutting down. + + * */Makefile.am: Removed -R and -rpath from everything, per + a bug report from Debian. + + * swig/python/Makefile.am, swig/python/openipmigui/Makefile.am: + Use INSTALL_DATA, not INSTALL_PROGRAM, to install python code. + + * man/rmcp_ping.1: Some minor manpage fixups. + + * configure.in: Move to version 2.0.12. + +2007-09-15 Corey Minyard + + * ui/ui_os.c: This file shouldn't use the ipmi_mem_alloc and + ipmi_mem_free calls, as that introduces a circular dependency. + Only use malloc and free here. + +2007-09-12 Corey Minyard + + * cmdlang/cmd_mc.c: Fix an unsigned problem pointed out by Phil + Estes. + +2007-09-11 Corey Minyard + + * lib/ipmi_lan.c, include/OpenIPMI/ipmi_lan.h: Add support for a + parameter to set the maximum number of outstanding messages on a + LAN connection. This used to be fixed to 2, but now can range + from 1 to 63. + + * swig/python/openipmigui/gui_domainDialog.py: Remove some unused + definitions. Add support for "int" types of parameters, like the + new maximum outstanding message count. Fix a bug if the parm type + is not supported. + + * lanserv/emu.c: Enable support for the reserve SDR commands. Not + having this confuses ipmitool. + +2007-09-06 Corey Minyard + + * lib/sensor.c, lib/entity.c: Don't abort SDR handling if the + device string is invalid. Just go on and set the id to + "**INVALID**" + +2007-08-17 Corey Minyard + + * sample/dump_sensors.c, sample/Makefile.am: Added a little + program to just dump all the sensors. + +2007-07-23 Corey Minyard + + * lib/conn.c: Fix a possible race if an OEM check fails. + +2007-07-11 Corey Minyard + + * lib/domain.c, include/OpenIPMI/internal/ipmi_oem.h: + Added infrastructure for fixups for main SDRs. + + * lib/oem_intel.c: Add main SDR fixups for Intel SE7520 + motherboards. + +2007-05-25 Corey Minyard + + * lib/mc.c: Fix the domain fully up get/put operations to + work properly. Before, the fully up could come early in + some situations. + +2007-05-24 Corey Minyard + + * ui/ui.c: Move the call to ipmi_init() to before where things + may be allocated. Thanks to Bruce Rosenkrantz for pointing + this out. + +2007-05-22 Corey Minyard + + * swig/python/openipmigui/gui_SoL.py: Add dumping useful + information if data processing for terminal input raises an + exception. + + * swig/python/openipmigui/_term.py: Add some missed range checking + to make sure Y values are within range with vt100 H and f + commands. + + * swig/python/OpenIPMI_lang.i: If a method raises an exception, + print the method name. + +2006-07-21 Gerhard Obrecht + + * lib/oem_kontron_conn.c: Add more board support. + +2007-03-05 Corey Minyard + + * lib/sensor.c, include/OpenIPMI/internal/ipmi_sensor.h: Added a + new function to get/set whether the sensor should be used for + presence. This is a replacement for the ignore_if_no_entity, + whose use is vague, and abstracts this operation a little better. + * lib/control.c, include/OpenIPMI/internal/ipmi_control.h: ditto + for controls. + + * lib/entity.c, lib/oem_atca.c, lib/oem_motorola_mxp.c: Switch + over to the new presence ignore functions. + * lib/oem_test.c, sample/example_oem.c: ditto + + * lib/entity.c: Other presence handling fixes. + + * cmdlang/Makefile.am: Remove the -L$(DESTDIR)$libdir, it was + broken to add it. + * glib/Makefile.am: ditto + * lanserv/Makefile.am: ditto + * lib/Makefile.am: ditto + * swig/perl/Makefile.am: ditto + * swig/python/Makefile.am: ditto + * tcl/Makefile.am: ditto + * ui/Makefile.am: ditto + * unix/Makefile.am: ditto + + * lib/domain.c, lib/entity.c: Found some minor bugs pointed out + by new compilers. + + * swig/python/Makefile.am: Create lib-dynload before installing + into it. + +2007-03-05 David Greigo + + * sample/ipmicmd.c: Fix problems with handling errors in + non-interactive mode. + +2007-02-25 Corey Minyard + + * configure.in, OpenIPMI.spec.in: Improve the handling of perl + installation. Also improve the tcl and glib12 handling to make it + more automatic. + + * configure.in: Move to version 2.0.11 + +2007-02-09 Corey Minyard + + * tcl/Makefile.am: Add $(TCL_LIBS) to the test programs ld flags. + +2007-01-10 Michael Chu + + * sdr.c: Fix ipmi_sdr_save related issues: use standard fetch size, + correct offset and record id values, parameter checking and passing, + do sdr reservation and check status after sdr clear. + +2006-12-28 Corey Minyard + + * swig/python/openipmigui/gui_cmdwin.py: Fix a problem + +2006-12-06 Corey Minyard + + * lanserv/Makefile.am: Added the utils library to the + applications. + +2006-12-04 Corey Minyard + + * swig/python/openipmigui/gui.py: Made more reasonable defaults + for the initial window settings. + + * doc/IPMI.ltx, doc/SimpleMonitoring.dia, doc/ipmi.bib: Add some + more docs and some use cases. + +2006-11-30 Corey Minyard + + * lib/sensor.c, include/OpenIPMI/ipmiif.h.in: Some sensors are not + readable, specifically event-only sensors and sensors with system + software IDs as the owner. Add a readable field to the sensor + object and check on read operations to make sure it is readable. + Technically, for SDRs with a system software ID owner, it might be + better to make sure that threadhold and event enables are not + done, but hopefully the SDRs are right. Yeah, right, I know. + + * include/OpenIPMI/internal/ipmi_sensor.h: Add a function to set + the readable field for a sensor. + + * swig/OpenIPMI.i: Add the readable method to the sensor object. + + * swig/python/openipmigui/_sensor.py: Don't read the value for + unreadable sensors, instead put "(not readable)" in the value. + + * lib/sensor.c: Fix some problems parsing type 3 SDRs. Also added + some error logs and cleaned things up a bit. + + * configure.in: Move to version 2.0.10 + +2006-11-29 Corey Minyard + + * include/OpenIPMI/ipmi_types.h: Increase the value of + MAX_IPMI_USED_CHANNELS to 14. It was increased to 12 in the Feb + 2006 markup of the spec, but just go all the way to 14; it doesn't + really matter. We don't want to include 14, and 15, though, those + are special channels. + +2006-11-20 Pierre Sangouard + + * include/OpenIPMI/ipmi_picmg.h: I've found a small issue in + ipmi_picmg.h: Get Shelf Power Allocation command uses a wrong code + (0x19), it should be 0x22 instead. This was changed at the very + last minute before ECN-002 release since it conflicted with AMC.0 + defined commands. The attached patch fixes this issue. + +2006-11-16 Corey Minyard + + * lib/entity.c: ipmi_entity_fetch_frus_cb() violated the rule of + returning an error and still calling the done handler (and it + didn't check the done handler for NULL). Fix this problem. + + * lib/domain.c: Fixed a problem when a shutdown occurred during + startup. + + * swig/python/openipmigui/_saveprefs.py: Make sure that the + startup file is only accessible by the user and refuse to start up + if it is world orgroup accessible. + * swig/python/openipmigui/_gui_cmdwin.py: Ditto for the history file. + + * configure.in: Move to version 2.0.9 + +2006-11-15 Corey Minyard + + * lib/domain: Fix a problem with active/standby connections; now + force command rerouting when a connection goes inactive, as well + as when a connection goes active. + + * lib/domain.c: Modified command rerouting a little more. The + send sequences are now per-connection instead of per-domain and + the routing is only done when a connection goes inactive or down. + This is more reliable and will make multiple active connections + work better. + +2006-11-14 Corey Minyard + + * swig/python/openipmigui/gui.py: Rework the mouse wheel stuff so + it works on older version of tk. + * swig/python/openipmigui/gui_list.py: ditto + * swig/python/openipmigui/gui_treelist.py: ditto + + * Makefile.am, swig/python/Makefile.am: "make rungui" wouldn't + work on systems that could dynamically choose the glib library. + Add an LD_LIBRARY_PATH back in for that directory only. + + * lib/fru.c, include/OpenIPMI/internal/ipmi_fru.h: Exported a + function to reference the FRU structure without claiming the lock. + + * lib/normal_fru.c: Removed a deadlock where a FRU was referenced + while the lock was held. + + * lib/fru.c: If the FRU fetch start fails, return an error. + + * lib/mc.c: Fixed a deadlock in certain error cases. + + * lib/oem_atca.c: Make sure the entity is gotten before creating + the FRU controls with it. + + * cmdlang/os_debug.c: Can't use ipmi_mem_alloc any more to + allocate a lock, the locks are claimed too early. + + * lib/ipmi_lan.c: Fixed a missing shutdown check that could cause + a race at shutdown and a possible segv. + + * lib/oem_atca.c: Fixed a possible memory leak in the LEDs if an + ATCA domain is shut down while it is coming up. + + * lib/sdr.c: Fix a problem with the fetch retry count being reset + to zero sometimes on a restart. + + * lib/sdr.c, lib/mc.c: Added a way to stop the SDR timer + operations during cleanup of an MC. + +2006-11-13 Corey Minyard + + * lib/control.c, lib/sensor.c: Change the shutdown order of OEM + controls so the OEM data is freed last, after the control is + removed from the entity. + + * lib/control.c, lib/sensor.c: Don't fail freeing an OEM control + or sensor if the index is reused. The control is still valid to + free. + + * lib/oem_atca.c: Free all the FRUs for an entity when the entity + is freed at domain shutdown. + + * lib/sdr.c: Fix a race where if the SDR data is asked for the + first time and then again immediately after, the DB will be + fetched twice and the second time will overwrite the first data. + Only fetch DB data if the SDR fetch state is idle. Also, when + fetching from the DB, free the SDR data if it is allocated. + + * lib/control.c, lib/sensor.c: Modified the addition of + nonstandard sensor and controls so that the next unused number is + picked instead of having to supply the number. + + * lib/oem_atca.c: Modified the controls for the IPMCs to let the + control code pick the control number. This handles a problem + controls not being handled correctly for ATCA blades with multiple + FRUs. + +2006-11-10 Corey Minyard + + * lib/domain.c: Don't set a connection inactive if it goes down, + let the active-reporting interface handle that. Otherwise systems + without inactive links will report inactive if the connection goes + down. + +2006-11-09 Corey Minyard + + * swig/python/openipmigui/gui_list.py: Added a way to set the + style of a column entry. + + * swig/python/openipmigui/gui.py: Added a "watch list" to the GUI. + You can put controls, entities, and sensors you want to watch into + this list and monitor them. + + * swig/python/openipmigui/_sensor.py: Add support for the watch list. + * swig/python/openipmigui/_control.py: ditto + * swig/python/openipmigui/_entity.py: ditto + +2006-11-08 Corey Minyard + + * Makefile.am, configure.in: Rework the setting up of the library + environment for Perl and Python. The code would, by default, pick + up the libraries from the installed directory instead of the local + directories. For lack of a better option, the modifications + LD_PRELOAD the libraries that are required. Also make the setting + of the libs required by swig cleaner and put it in a common place. + * swig/perl/Makefile.am: ditto + * swig/python/Makefile.am: ditto + * swig/python/openipmigui/Makefile.am: ditto + +2006-11-07 Corey Minyard + + * swig/python/openipmigui/_fru.py: Added a refresh button to + re-read the whole FRU contents. This allows you to change + multi-record data and see what happens. + + * swig/python/openipmigui/gui.py: Got wheel mouse scrolling working. + * swig/python/openipmigui/gui_list.py: ditto + * swig/python/openipmigui/gui_treelist.py: ditto + + * swig/python/openipmigui/gui_setdialog.py: Added an option to + allow using a Text widget for multi-line input (for multi-record + data). + + * swig/python/openipmigui/_fru.py: Use the long option to + gui_setdialog for binary or unicode data. + + * include/OpenIPMI/ipmi_fru.c, lib/fru.c, include/OpenIPMI/ipmi_fru.h: + Added infrastructure for getting enumeration values from FRU nodes. + + * lib/normal_fru.c: Added enumeration support for multirecord FRU + nodes. + + * lib/oem_atca_fru.c: Added enumeration stuff for the few items + that need it. + + * swig/OpenIPMI.i: Added the enumeration interface. + + * swig/python/openipmigui/_fru.py: Added support for the new FRU + enumerations. + +2006-11-06 Corey Minyard + + * include/OpenIPMI/internal/ipmi_fru.h, lib/normal_fru.c: Redid + the adjustment of offsets and lengths to work properly with nested + arrays. + + * swig/python/openipmigui/gui_cmdwin.py: Fixed some problems + dealing with backspace and delete. + +2006-11-05 Corey Minyard + + * include/OpenIPMI/internal/ipmi_fru.h, lib/normal_fru.c: Reworked + the way writing to arrays is done so it is cleaner and allows + insertion at arbitrary points and elements that are other arrays + or basic items. + + * include/OpenIPMI/ipmi_fru.h: Worked on docs for the changes. + + * swig/python/openipmigui/_fru.py, lib/oem_atca_fru.c: Adjusted + for the previous changes. + + * swig/OpenIPMI.i: Make sure the string on an empty binary array + is terminated. + +2006-11-03 Corey Minyard + + * lib/oem_atca_fru.c: Massive rewrite to make this table-driven and + add setting capability. + + * swig/python/openipmigui/gui_treelist.py: Add the ability to insert + items before a list element. + + * swig/python/openipmigui/_fru.py: Add the ability to insert items + before an array element. Fix boolean handling. + + * lib/normal_fru.c, include/OpenIPMI/internal/ipmi_fru.h: Move the + FRU decoding from the ATCA code into here and make it generic. + Convert the standard FRU multirecord handling to the new code. + + * lib/oem_atca_fru.c: Convert multirecord handling over to the + generic version. + + * configure.in: Move to version 2.0.9-rc1 + +2006-11-01 Corey Minyard + + * lib/entity.c: Fixed a problem with scanning entity association + records. + + * include/OpenIPMI/ipmi_fru.h, lib/normal_fru.c: Added + multi-record helper functions for modifying multirecord data. + + * lib/normal_fru.c: Fixed some problems dealing with multirecord + lengths. + + * lib/oem_atca_fru.c: Added writing FRU data for the address + table. + + * swig/python/openipmigui/_fru.py: Adjustment to improve the way + this works. + +2006-10-31 Corey Minyard + + * include/OpenIPMI/ipmi_fru.h, lib/normal_fru.c: Added some better + handling of multirecord modification. + + * lib/fru.c: Warn and recover on zero-length FRU writes. + + * lib/normal_fru.c: Added better setup handling for new FRU areas. + + * lib/normal_fru.c: Added FRU area data to the FRU information. + + * swig/python/openipmigui/_fru.py: Added support for re-displaying + the FRU data if FRU area offset data changes. + + * swig/python/openipmigui/gui_treelist.py: Added support for + clearing all the data in the list. + +2006-10-30 Corey Minyard + + * include/OpenIPMI/ipmi_fru.h, include/OpenIPMI/internal/ipmi_fru.h: + Added functions for getting a FRU array's subtype. + * lib/fru.c: ditto + * swig/OpenIPMI.i: ditto + + * swig/OpenIPMI.i: Modify fetching a subtype to return the array + length (or -1 for non-arrays) in the value of get_field() on sub + nodes. + + * lib/normal_fru.c: Added subtype handling for custom string + arrays. + + * lib/normal_fru.c: Fixed reporting of arrays in custom strings so + that it is possible to tell an empty array from a non-existent + field. + + * swig/python/openipmigui/gui_treelist.py: Added the ability to + remove items from the tree and added better cleanup facilities. + + * swig/python/openipmigui/_fru.py: Added the ability to remove + array items. + +2006-10-28 Corey Minyard + + * include/OpenIPMI/ipmi_fru.h, include/OpenIPMI/internal/ipmi_fru.h: + Added basic function interfaces for setting values in FRU nodes. + + * lib/fru.c: Added infrastructure for setting FRU nodes. + + * lib/normal_fru.c: Added support for setting the basic FRU item + through the FRU nodes. + + * lib/oem_atca.c, lib/oem_atca_fru.c: Modified for new multirecord + handling for setting, though no set support yet. + + * swig/OpenIPMI.i: Added support for the new FRU node set field + and settable functions. + + * swig/python/openipmigui/_fru.py: Added support for setting FRU + items. + +2006-10-27 Corey Minyard + + * lib/oem_atca.c, doc/IPMI.ltx: Created a power feed control for + ATCA shelfs. + +2006-10-26 Corey Minyard + + * lib/entity.c, include/OpenIPMI/internal/ipmi_entity.h: Added a + function to refetch entity FRU information and report when it is + done. + + * lib/entity.c, include/OpenIPMI/ipmiif.h.in: Added a way to know + when an entity that is reported present has all its data (FRU + information) fetched. + + * cmdlang/cmd_entity.c: Added reporting of entities being fully + up. + +2006-10-25 Corey Minyard + + * lib/oem_atca_fru.c: Added all the current ATCA-defined FRU + information multirecord descriptors. + + * cmdlang/out_fru.c: Only parse the given number of array + elements, don't rely an an error return to finish the array. + + * lib/entity.c: Fix a small problem where there was a remote + chance that a FRU fetch would occur before the entity was reported + present. + + * lib/normal_fru.c: Fix a memory leak with multirecords that don't + have decoders. + + * swig/python/openipmigui/_domain.py: Added a way to dump + arbitrary FRU info in a domain. + + * swig/python/openipmigui/gui_treelist.py: Added a way to expand + the entire tree. + + * swig/python/openipmigui/_fru.py: Expand the entire tree when + displaying FRU information. + +2006-10-24 Corey Minyard + + * include/OpenIPMI/ipmi_domain.h, lib/fru.c: More work on the + special FRU handling. + + * lanserv/emu.c, lanserv/emu.h, lanserv/lanserv_emu.c: Added + support for ATCA FRU locking. + + * lib/oem_atca.c: Added FRU data handling for reading/writing FRU + inventory device 254 on the shelf manager. + + * swig/python/openipmigui/_fru.py: Make sure FRU data gets freed. + +2006-10-23 Corey Minyard + + * include/OpenIPMI/ipmi_bits.h, lib/strings.c: Add some new sensor + types from IPMI 2.0. + + * lib/oem_atca.c: Added support for detecting version changes with + a version change sensor event. + + * include/OpenIPMI/ipmi_domain.h, lib/domain.c, lib/fru.c: Added + infrastructure for handling special FRU characteristics for a + domain. + +2006-10-22 Corey Minyard + + * lib/oem_atca_conn.c: Fixed a few glitches with the new ATCA + auxiliary connection facility. + + * doc/IPMI.ltx: Added info on the new ATCA capabilities. + +2006-10-21 Corey Minyard + + * lanserv/emu.c, lanserv/emu.h, lanserv/lanserv_emu.c: Added + support for the PICMG get IP addresses and get FRU control + capabilities commands. + + * lib/domain.c: Interpret ENOENT from a low-level connection + change to mean the connection no longer exists. + + * lib/oem_atca.c: Free the new FRU control capabilities controls. + + * lib/oem_atca_conn.c: Clean up the ATCA IP address pinging stuff + to work properly. + + * sample/rmcp_ping.c: Fix a problem with specifying the port. + + * swig/python/openipmigui/gui.py: Add a port removal function. + + * swig/python/openipmigui/_domain.py: Pass some more parameters + to the port up function. + + * swig/python/openipmigui/_conn.py: Allow dynamic changes to the + ports. + +2006-10-20 Corey Minyard + + * include/OpenIPMI/ipmiif.h.in, lib/domain.c: Added a function to + get port information. + * include/OpenIPMI/ipmi_conn.h, lib/ipmi_lan.c: ditto + + * cmdlang/cmd_conn.c, man/ipmi_cmdlang.7: Added support for the + new port information. + * swig/OpenIPMI.i: ditto + * swig/python/openipmi/_conn.py: ditto + + * include/OpenIPMI/ipmi_lan.h, lib/ipmi_lan.c: Exposed some + internals for use by the OEM ATCA handler dealing with RMCP ping + sockets. + + * include/OpenIPMI/ipmi_picmg.h: Added the new PICMG messages from + the new ATCA spec. + + * lib/oem_atca_conn.c: Added support for ATCA RMCP ping sockets so + that the auxiliary IP connections on ATCA chassis can be + monitored. + +2006-10-16 Corey Minyard + + * doc/IPMI.ltx: Added some docs on redundant connections and on + ATCA. + + * man/openipmicmd.1: Added information about the proper handling + of response messages. + + * swig/python/openipmigui/gui.py: Fix a problem where sensor + settings would get greyed + +2006-10-12 Philipp Hahn + + * man/ipmi_cmdlang.7: Various cleanups + * man/openipmi_conparms.7: ditto + * man/openipmigui.1: ditto + * man/openipmish.1 ditto + * man/rmcp_ping.1 ditto + +2006-10-13 Corey Minyard + + * swig/python/openipmigui/_mc_lanparm.py: Fix a problem in a + pulldown. + +2006-10-11 Corey Minyard + + * swig/python/openipmigui/_misc.py: Added an int array to hex + string converter. + + * swig/python/gui_cmdwin.py: Print command output in hex. + + * swig/python/_sel.py: Print event data in hex. + +2006-10-06 Corey Minyard + + * lib/ipmi_smi.c: Fix the IPMB address setting code to only set + the channels that are reported to it. + + * lib/oem_atca_conn.c: Properly initialize the ipmb array that is + passed to the other code. + +2006-10-05 Corey Minyard + + * sample/ipmi_serial_bmc_emu.c, sample/Makefile.am: Added a serial + BMC emulator. + +2006-09-22 Corey Minyard + + * swig/python/openipmigui.py: Fixed a problem dealing with + different python/TCL thread models in the GUI. Major ugliness. + See the code for details. + + * configure.in: Move to version 2.0.8 + +2006-09-21 Coly Li + + * swig/python/Makefile.am: Fix the path mistake for install + handling. + +2006-09-21 Coly Li + + * swig/OpenIPMI.i: add the missed IPMI_SWIG_C_CB_EXIT to + add_domain_change_handler and remove_domain_change_handler. + +2006-09-20 Corey Minyard + + * cmdlang/Makefile.am: Add proper uninstall handling + * include/OpenIPMI/Makefile.am: ditto + * include/OpenIPMI/internal/Makefile.am: ditto + * sample/Makefile.am: ditto + * swig/perl/Makefile.am: ditto + * swig/python/Makefile.am: ditto + * swig/python/openipmigui/Makefile.am: ditto + + * swig/OpenIPMI.i: Fix a misnamed #ifdef that caused + cleanup_lang() to not be called. + +2006-09-19 Corey Minyard + + * swig/python/openipmigui/_mc_solparm.py: Use the proper data + object for a SOL parameter window. + +2006-09-15 + + * man/openipmicmd.1: Fix the man page number in the header. + +2006-09-13 Corey Minyard + + * lib/mc.c: Don't set the event receiver in the MC recheck if the + user has asked it to not be set. + +2006-08-24 Corey Minyard + + * swig/python/openipmigui/gui_list.py: Split up the list processing + into two parts, one for a standalone toplevel list, and one for a + list that can be contained in something else. + +2006-08-01 Corey Minyard + + * configure.in, doc/Makefile.am: Autodetect the dia version and use + the right command-line arguments depending on version. + + * Makefile.am, swig/Makefile.am: Add DIST_SUBDIRS so "make dist" + will work even if you don't have all the tools present. + + * Makefile.am, include/OpenIPMI/Makefile.am: Added proper files to + DISTCLEANFILES. + +2006-07-31 Corey Minyard + + * lib/entity.c: Fixed a problem with error handling for bad SDRs. + +2006-07-24 Corey Minyard + + * FAQ - Added info on interpreting errors. + +2006-07-22 Corey Minyard + + * lib/rakp.c: Fix a problem that causes a crash in RMCP+ if the + IPMI interface is deleted between the RAKP1 and RAKP3 messages. + + * swig/python/openipmigui/_mc_chan.py: Fix a shutdown problem that + could cause wierd things to happen if you delete the channel + window while it was being fetched. + +2006-07-21 Gerhard Obrecht + + * lib/oem_kontron_conn.c: Add more board support and fix + some IPMB addressing problems. + +2006-07-18 Corey Minyard + + * swig/python/openipmigui.py, swig/python/openipmigui/gui.py: Fix + some problems with shutdown, gets rid of an annoying failure at + shutdown and fixes a lockup problem if there are no domains. + +2006-07-16 Corey Minyard + + * sample/sample.c: Change over to use ipmi_parse_args2() so we + are setting a good example for the users. + * sample/sample2.c: ditto + * sample/sample3.c: ditto + +2006-06-27 Corey Minyard + + * swig/python/openipmigui/gui.py: Fix cleanup of items to clear + out parents properly. + +2006-06-23 Gerhard Obrecht + + * lib/oem_kontron_conn.c: Add new board support. + +2006-06-18 Corey Minyard + + * FAQ, README: Add info about the encryption used by OpenIPMI. + +2006-06-08 Corey Minyard + + * configure.in: Convert wxpython into Tkinter. + + * configure.in: Older version of Tcl don't have Tcl_GetTime, they + have an equivalent TclpGetTime (that was private, but everyone + still used it). + + * README - Update some information, including adding all the + required and optional packages. + + * OpenIPMI.spec.in: Added the Tcl stuff. + + * Makefile.am: Added CONFIGURING_FOR_LAN + + * configure.in: Move to version 2.0.7. + +2006-06-07 Corey Minyard + + * swig/python/openipmigui/*: Get SoL and the command window working + with Tix, the GUI conversion is complete except for testing. + + * doc/Makefile.am: Convert the export option for dia from + --export-to-format to --filter. + +2006-06-02 Corey Minyard + + * lib/pefc.c: Only call the set_done() callback if it is non-NULL. + + * lib/mc.c: If a set_user() call is done with nothing changed in + the user, make sure the handler is not NULL before calling and + call the right free function. + + * swig/python/openipmigui*: Rewrote the GUI using Tk. The SOL + terminal is not done yet, but I think everything else works. + Still needs testing, but most stuff should work ok. + +2006-06-01 Corey Minyard + + * swig/OpenIPMI.i: Fix some problems with TCL not doing logs + correctly. + +2006-05-31 Corey Minyard + + * configure.in: For gdbm, make sure to check for the library and + not just the header file. + +2006-05-30 Corey Minyard + + * configure.in: Fix the TCL_LIBS value when --with-tcllibs is + hand-specified. + +2006-05-26 Corey Minyard + + * lib/mc.c, lib/ipmi_lan.c: Fix a couple of more signed/unsigned + comparison warning. + + * swig/OpenIPMI.i: Fix the TCL init code. + +2006-05-12 Corey Minyard + + * include/OpenIPMI/ipmi_posix.h: Remove selector interface. + + * unix/posix_os_hnd.c: Remove selector interface and make + sset_log_handler static. + * unix/posix_thread_os_hnd.c: ditto + + * cmdlang/os_debug.c: Make sset_log_handler static. + + * unix/selector.c: Rework the mutex code to use the os handler, + not some special interfaces that break static compiles. + +2006-05-02 Corey Minyard + + * include/Makefile.am, include/net, lib/ipmi_smi.c, lanserv/lanserv.c: + Remove include/net, as the socket interface is not used any + more. + + * README: Improved the code structure information. + +2006-04-18 Corey Minyard + + * configure.in, lanserv/lanserv.c: Add detection for syslog. + +2006-04-06 Corey Minyard + + * tcl/tcl_os_hnd.c, tcl/test_handlers.c: Get these working. + + * cmdlang/ipmish.c: Add TCL support. + * swig/OpenIPMI.i: ditto + * swig/perl/Makefile.am: ditto + * swig/python/Makefile.am: ditto + +2006-04-05 Corey Minyard + + * tcl/*, include/OpenIPMI/ipmi_tcl.h, configure.in, Makefile.am: + Start adding TCL support. + * OpenIPMItcl.pc.in: ditto + +2006-03-31 Corey Minyard + + * */Makefile.am: Add -Wsign-compare to find signed/unsigned + comparison problems. + + * practically everything: Fixed signed/unsigned comparison problems. + +2006-03-18 Corey Minyard + + * lib/sel.c: There were some subtle problems with deletes of large + SEL contents with per-event deletion. This cleans those up to + make deleting large numbers of SEL entries more efficient. + + * swig/python/openipmigui/_sel.py: Call DeleteAllItems, not + ClearAll, to remove all the elements of the list. ClearAll + cleared the columns, too. + +2006-03-17 Corey Minyard + + * lib/ipmi.c: Fix a bug, the input length for binary/unicode data + wasn't being checked in device string parsing. + + * lib/ipmi.c, include/OpenIPMI/internal/ipmi_int.h: Modify + ipmi_get_device_string() to return an error instead of the length, + so that errors can be handled properly in device strings. + + * lib/normal_fru.c: Adjust for previous change. + * lib/oem_atca.c: ditto + * lib/oem_atca_fru.c: ditto + * lib/entity.c: ditto + * lib/sensor.c: ditto + + * swig/python/openipmigui/_sel.py: Cleaned up this file. + +2006-03-14 Corey Minyard + + * lib/domain.c: If the ipmi connections received in + ll_event_handler is invalid, ignore the event. + + * lib/oem_atca_conn.c: Fix the passing of the ipmb array + in an error path. + + * include/OpenIPMI/ipmi_conn.h, lib/conn.c: The statistics + interface for connections was broken for supporting multiple + domains with the same connection. Add a new interface that is + capable of this. + + * lib/lan.c: Add the new statistic interface support. + * lib/domain.c: ditto + +2006-03-01 Corey Minyard + + * lib/oem_atca_conn.c: Need to pass an entire channel set's worth + of IPMB addresses to the IPMB address change handlers. + * lib/oem_kontron_conn.c: ditto + * lib/oem_force_conn.c: ditto + * lib/oem_motorola_conn.c: ditto + + * util/ipmi_malloc.c: Fixed some problems with some memory + debugging handling. With memory debugging on, it would leak + memory! + + * lib/sdr.c: Added some trace debugging stuff. + + * lib/ipmi_lan.c, lib/ipmi_smi.c: Added printing of connection + names in debug output (where possible). + + * lib/mc.c: Don't start operations unless the MC is in the proper + state. + + * lib/entity.c: Make sure only one presence check is running at a + time. + + * swig/python/openipmigui/gui.py: Fixed some ordering problems, + make sure things are not used after deletion. + + * swig/python/openipmigui/fru.py: Handle some problems dealing + with certain FRU data combinations. + + * lib/sel.c, lib/mc.c: Fix the SEL name string. + + * configure.in: Move to version 2.0.6. + +2006-02-28 Corey Minyard + + * lib/chassis.c: Make sure to remove the active handler from the + list when deleting the control. + + * lib/mc.c: If the timer was stopped due to a not running + condition, mark the timer as stopped. + + * swig/python/openipmigui/_domain.py: Fix the interpretation of + the "connected" parameter is the connection reporting. It means + that any connection to the domain is up, not that the particular + connection is up. + + * libedit/read.c: Don't beep on el_push, that causes way too much + beeping for my taste. + + * lib/ipmi_lan.c, lib/ipmi_payload.c, include/OpenIPMI/ipmi_lan.h: + Make sure ipmi->handle_send_rsp_err is called outside of the + sequence lock. + + * lib/sensor.c, include/OpenIPMI/internal/ipmi_sensor.h: Removed + the internal sensors wait queue (part of ipmi_sensors_t). This + was only used to serialized SDR access, but the sdr has it's own + wait queue, so this was kind of pointless. + + * lib/mc.c: Removed the use of the sensor wait queue. It caused + problems handling failure conditions and was pointless. Also + added some debug tracing stuff. + +2006-02-27 Corey Minyard + + * lib/ipmi_lan.c: Make sure use_orig_addr is handled in all cases, + including timeouts and shutdown. + + * lib/domain.c: Set the connection name to something more useful. + + * swig/python/openipmigui.py: Add a log to stdout option. + + * lib/mc.c: Rework the startup code to properly handle all types + of failures. Some failure cases were not handled correctly and + could leave things hanging. + + * lib/sdr.c: Add a useful name and proper handling of shutdown + situations to avoid leaks. + +2006-02-26 Corey Minyard + + * lib/domain.c, lib/ipmi.c: Don't copy address information for + system interface address responses, use the address the sender + supplied. This fixes problem with system interface MC scanning. + + * cmdlang/cmd_sensor.c: Fixed some misnamed comments. + + * lib/entity.c: Make sure the domain exists before calling + _ipmi_put_domain_fully_up(). + + * lib/ipmi_lan.c: Don't call the LAN close_done call until all the + messages have been returned as errors. + + * lib/mc.c: Fix some accounting problems with errors and + startup_count. + + * lib/oem_motorola_mxp.c: Don't add an AMC is the removal handler + can't be registered. + + * lib/sensor.c, lib/control.c: Add some missing MC gets and puts. + + * swig/python/openipmigui/*: Fix a lot of little problems with + handling certain failure cases, removal and adding of sensors, and + a host of other things. + +2006-02-25 Corey Minyard + + * swig/python/openipmigui.py, man/openipmigui.1: Add the ability + to send log output to stderr as well as the command window. + + * lib/entity.c: Fixed some possible deadlocks dealing with the + built-in hot-swap state machine and presence handling. + +2006-02-24 Corey Minyard + + * swig/python/openipmigui.py, man/openipmigui.1: Added some + command-line parameters to control some thing about the GUI. + + * sample/rmcp_ping.c, sample/Makefile.am, man/rmcp_ping.1: Add a + command to do RMCP pinging. + + * OpenIPMI.spec.in: Add the rmcp_ping program. + + * lib/sel.c: Fix some possible deadlocks. + + * include/OpenIPMI/ipmi_conn.h: Added a way to discover how many + ports the connection supports. + + * lib/ipmi_lan.c: Add the function to return the number of ports. + + * lib/domain.c: Set the enabled ports right at startup to avoid + invalid readings of the number of ports. + + * lib/entity.c: Fix a memory leak in certain error conditions + using the internal hot-swap state machine. + + * lib/ipmi_lan.c: Fix some locking problems that could lead to + deadlock. Don't call connection handlers in certain timeout cases + with the sequence lock held. + + * lib/oem_motorola_mxp.c: Add some missing entity puts. + + * swig/python/openipmigui/*: Fixed problems with entities that + need to be re-parented. + +2006-02-14 Corey Minyard + + * utils/os_handler.c, include/OpenIPMI/os_handler.h: Add an + interface to allow easier waiting for IPMI things to complete. + + * utils/Makefile.am: Add the new os_handler.c file. + + * unix/test_handlers.c, unix/Makefile.am: Add some OS handler + tests and tests for the wait operations. + +2006-02-13 Radisys + + * lib/ipmi_smi.c: Fix the IPMB address setting code to actually + use the right types when interacting with the driver. + +2006-02-12 Corey Minyard + + * OpenIPMI.spec.in: Added some missing files. + + * configure.in: Move to version 2.0.5. + +2006-02-11 Corey Minyard + + * lib/lanparm.c: Added a hack for non-compliant systems that + return 0xcc for unsupported LANPARM parameters instead of the + proper 0x80 return code. + +2006-02-10 Corey Minyard + + * cmdlang/Makefile.am: Fix so it will install into any random + directory. + * glib/Makefile.am: ditto + * lanserv/Makefile.am: ditto + * lib/Makefile.am: ditto + * sample/Makefile.am: ditto + * ui/Makefile.am: ditto + * unix/Makefile.am: ditto + + * lib/lanparm.c: Fixed a data overrun in ipmi_lanparm_set_config. + * lib/solparm.c: ditto + + * swig/python/openipmigui/*: Fixed a bunch of problems dealing + with wxPython 2.4 issues. Ugly... + + * lib/normal_fru.c: Fix a cleanup order problem. + + * lib/domain.c, include/OpenIPMI/ipmiif.h.in: Added a way to get + the connection type string. + + * swig/OpenIPMI.i: Added the connection type string. + + * swig/python/openipmigui/_conn.py: Print the connection type. + + * cmdlang/cmd_control.c: Don't return that we handles the event, + pass it on. + * cmdlang/cmd_entity.c: ditto + * cmdlang/cmd_sensor.c: ditto + * cmdlang/cmd_sel.c: ditto + * swig/python/openipmigui/_entity.py: ditto + * swig/python/openipmigui/_sensor.py: ditto + + * swig/python/openipmigui/errstr.py: Only do a clear in 2.4 + + * swig/python/openipmigui/_sel.py: Fix problems deleting single + events. + +2006-02-10 Coly , Corey Minyard + + * libedit: Add this directory + + * cmdlang/ipmish.c, cmdlang/Makefile.am: Add support for libedit + into ipmish. + +2006-02-10 Corey Minyard + + * configure.in: Convert over to use config.h instead of passing + everything on the command line for the compiler. + * cmdlang/ipmish.c, cmdlang/os_debug.c: ditto + * glib/glib_os_hnd.c: ditto + * lanserv/lanserv_config.c, lanserv/lanserv_ipmi.c: ditto + * lib/aes_cbc.c, lib/hmac.c, lib/md5.c, lib/rakp.c: ditto + * lib/ipmi.c, lib/ipmi_lan.c, lib/ipmi_smi.c: ditto + * swig/OpenIPMI.i: ditto + * swig/perl/Makefile.am: ditto + * swig/python/Makefile.am: ditto + * ui/basic_ui.c: ditto + * unix/posix_os_hnd.c, unix/posix_thread_os_hnd.c: ditto + * utils/ipmi_malloc.c: ditto + +2006-02-09 Corey Minyard + + * configure.in: Added more support for handling dual glib + libraries (1.2 and 2.0) in the swig stuff. + + * glib/Makefile.am, glib/glib_os_hnd.c: Added more support for + handling dual glib libraries. + * include/OpenIPMI/ipmi_glib.h: ditto + + * swig/Makefile.am: Removed glib shim, as it was not going to + work. + + * swig/OpenIPMI.i: Fixed the glib stuff so it works properly with + dual glib libraries. + * swig/perl/Makefile.am, swig/python/Makefile.am: ditto + + * swig/python/openipmigui/_SoL.py: Fixed to work with wxPython + 2.4. + + * swig/OpenIPMI.i: Added missing callback entry and exit markers + for SoL. + + * swig/python/openipmigui/gui.py: Fixed getting boolean attributes + so it works with older versions of python. + +2006-02-08 Corey Minyard + + * swig/perl/OpenIPMI_perl.c, swig/python/OpenIPMI_lang.i: Added a + new return value type that will take an empty return and not + modify the return value. + + * swig/OpenIPMI.i: Allow event handlers to take return values from + the handler, but preserve current semantics. + + * swig/python/openipmigui/_entity.py: Cleanup and set return + values from event handlers. + * swig/python/openipmigui/_sensor.py: ditto + + * include/OpenIPMI/ipmiif.h.in, include/OpenIPMI/ipmi_bits.h: + Added a way for an event handler to "handle" the event (not send + it to the unhandled event handler) but still pass the event data + on to other handlers. + * lib/sensor.c, lib/control.c, lib/entity.c: ditto + + * lib/entity.c: Changed the internal presence handling to never + pass an event (since one is never really available, and shouldn't + matter). The API is still there, though, and should be handled as + before. + + * lib/oem_atca.c: Fixed a missing event handled initialization. + + * swig/OpenIPMI.i: Added the new IPMI_EVENT_HANDLED_PASS return + value. + + * swig/python/openipmigui/_entity.py: Switched to the pass event + handler return. + * swig/python/openipmigui/_sensor.py: ditto + * cmdlang/cmd_control.c: ditto + * cmdlang/cmd_entity.c: ditto + * cmdlang/cmd_control.c: ditto + + * configure.in, glib/Makefile.am, glib/glib_os_hnd.c: Add support + for a separate glib 1.2 library, so we can build with either. + + * OpenIPMIglib.pc.in: Fix some linking problems, don't need the + glib libs or cflags. + + * OpenIPMIglib12.pc.in: Add this for the new glib 1.2 library. + + * swig/Makefile.am, swig/glibshim.c, swig/OpenIPMI.i: Add a glib + shim so we can do both glib-2.0 and glib-1.2 at the same time. + + * swig/python/openipmigui.py: Add some parameter handling + + * swig/python/openipmigui/_domain.py: Fix some problems with + handling python 2.2. + * swig/python/openipmigui/_term.py: ditto + +2006-02-07 Corey Minyard + + * lib/lanparm.c, include/OpenIPMI/ipmi_lanparm.h: Add a way to + detect if a parm is an enum and get the enum string and index + values. + * lib/solparm.c, include/OpenIPMI/ipmi_solparm.h: ditto + * lib/pef.c, include/OpenIPMI/ipmi_pef.h: ditto + + * swig/OpenIPMI.i: Add the new enum interfaces for lanparm and + solparm and pef. + + * swig/python/openipmigui/_SoL.py: Add an error report if SoL + won't work on an interface. + + * swig/python/openipmigui/_mc_chan.py: Add support for detecting + if an MC supports SoL before offering solparm configuration. + + * swig/python/openipmigui/_mc_lanparm.py: Add support for handling + enum values. + * swig/python/openipmigui/_mc_lanparm.py: ditto + + * lib/pef.c: Return EAGAIN if the lock could not be claimed on the + PEF config fetch. + + * swig/python/openipmigui/_mc.py: Add support for detecting if an + MC supports PEF and offser PEF configuration menu items for it if + so. + + * swig/python/openipmigui/_mc_pef.py: Add support for PEF + configuration. + + * swig/python/openipmigui/Makefile.am: Add solparm and pef + configuration files. + + * Makefile.am: Added the ability to run the GUI from the main + makefile. + + * man/openipmigui.1: Added docs on SOL, pefparms, solparms, and + fixed up a few things. + + * lib/cmd_mc.c: Added the ability to dump all channels easily, and + added useful string names to the channel info. + +2006-02-06 Corey Minyard + + * lib/solparm.c, include/OpenIPMI/ipmi_solparm.c: Added + configuration of SoL parameters. + + * lib/Makefile.am, include/OpenIPMI/Makefile.am: Added new solparm + files. + + * cmdlang/cmd_solparm.c, cmdlang/cmdlang.c, cmdlang/Makefile.am: + Added support for solparms. + + * swig/OpenIPMI.i: Added support for solparms. + + * swig/OpenIPMI.i: Fixed bugs in lanparm and pef config and parm + set handling, they were referencing a possibly uninitialized + variable. + + * swig/python/openipmigui/_mc_solparm.py: Added solparm support in + the GUI. + + * swig/python/openipmigui/_mc_chan.py: Tie-ins for solparm support + are here. + + * swig/python/openipmigui/Makefile.am: Add the new solparm file. + +2006-02-03 Corey Minyard + + * lib/ipmi_sol.c: Fixed some problem with nack handling. + + * swig/OpenIPMI.i: The nack_release function had an invalid + parameter. + + * swig/python/openipmigui/_term.py: Finished out a lot of the ANSI + handling and added color support. + +2006-02-02 Corey Minyard + + * swig/python/openipmigui/_SoL.py: Add in all the SoL handling. + +2006-02-01 Corey Minyard + + * swig/python/openipmigui/_term.py: Lots of work on terminal + emulation and improving performance. + +2006-01-28 Corey Minyard + + * swig/perl/OpenIPMI_perl.c, swig/perl/OpenIPMI.h: Added the + ability to return a return value from a function. + * swig/python/OpenIPMI_lang.i: ditto + + * swig/OpenIPMI.i: Modified sol_data_received_cb to handle the + return value properly. + + * include/OpenIPMI/ipmi_sol.h, lib/ipmi_sol.c: Added a function to + release a SOL NACK situation. + + * swig/OpenIPMI.i: Added the SOL NACK release function. + + * swig/python/openipmigui/_term.c: Fixed a problem with character + handling. + +2006-01-27 Corey Minyard + + * lib/domain.c: If the BMC returned a completely bogus response to + a get device id during connection startup, the domain would remain + in a perpetually messed up state. This adds something to the + normal domain audit to detect this situation and try again. + + * lib/ipmi_sol.c: Worked on the packet and state locking to make + sure that a lock was held during state changes, locks were not + held in callbacks, and callbacks are done in the right order. + + * lib/ipmi_sol.c: Added code to do packet processing in order and + not hold locks in callbacks. This required some complicated + additions of wait lists, but should guarantee to the user that all + callbacks will be in order and will occur one at a time from a SoL + connection. + + * lib/entity.c: Modified MC refcounts to not be held over a + message. Bad idea. + + * lib/ipmi_lan.c: The OEM finished callback could return a NULL + connection if shutdown was occurring, handle that. + + * swig/python/openipmigui/_cmdwin.py: Added history saving for the + command window. + * swig/python/openipmigui.py: ditto + + * swig/python/openipmigui/_saveprefs.py: Clean up error handling. + + * swig/python/openipmigui/gui.py: Clean up shutdown so that + domains are cleaned up no matter how the shutdown occurs. + + * swig/python/openipmigui/Makefile.am: Modify python path to + allow building and execution in alternate object directories. + + * swig/perl/Makefile.am: Modify paths to allow make check to + work in alternate object directories. + +2006-01-26 Corey Minyard + + * lib/normal_fru.c: Clear out the FRU settings if the FRU decode + fails, to avoid a crash at FRU destruction time. + +2006-01-25 Corey Minyard + + * lib/strings.c: Added some sensor code strings specified by + errata to the spec. + + * lib/ipmi_sol.c: Replaced the callback_lists used for reporting + status with locked lists. The locked-lists are race-free and + handle all the deletion while in use type cases. + + * lib/ipmi_sol.c: Make logging consistent with the rest of + OpenIPMI, add the filename and function to all logs. + + * lib/ipmi_sol.c: Add locking for OOB handling, as it was racy. + + * lib/ipmi_sol.c, lib/ipmi.c: Moved SOL payload registration to + initialization routines so it is only done once. + + * lib/ipmi_sol.c: Added locks for the SoL connection list and + reworked the list so the memory allocation is not required. + + * lib/ipmi_sol.c: Consolidated the callback list handling into the + one place it was left in use. Converted all the fatal logs into + severe ones since fatal means the logger should termintate the + program. + + * lib/ipmi_sol.c: Added refcounting to make sure the sol + connection is not in use when it is deleted. + + * lib/ipmi_sol.c: Reworked the timer code to handle shutdown races + properly. + +2006-01-24 Corey Minyard + + * lib/ipmi_sol.c: Modified formatting to conform with the OpenIPMI + standard formatting. Make a few minor fixes (marked with FIXMEs + for now). + + * lib/ipmi_sol.c: Fixed a bunch of memory leaks. Still some left + with the callback lists, but those need to be replaced with locked + lists, so they are not worth fixing right now. + + * swig/python/openipmigui/_term.py: Started working on a terminal + emulator for SoL. + + * swig/python/openipmigui/_SoL.py: Started working on SoL interface + code for the GUI. + + * swig/pythong/openipmigui/Makefile.am: Added the above two files. + +2006-01-20 Corey Minyard + + * include/OpenIPMI/ipmi_conn.h: Added a way to send messages with + options; primarily for supporting per-packet authentication and + encryption settings. + + * include/OpenIPMI/ipmi_sol.h: Added C++ handling. + + * lib/ipmi_lan.c: Added the ability to support per-packet + encryption and authentication for asynchronous packets (primarily + for SOL) using the previous change to the connection interface. + + * lib/ipmi_sol.c: Added the ability to support separate + authentication and encryption on the interfaces. Also, default + the values to use encryption. + + * sample/solterm.c: Modify to use encryption and authentication by + default. Also modify the way connection parameters are specified + so that it is standard (the "lan" is required") and get the + connection help via the standard interface. Also removed all the + DOS newlines and converted them to *nix. + + * man/Makefile.am, man/openipmi_conparms.7: Added a man page on + the standard connection parms, so it doesn't have to be in every + man page. + + * man/openipmicmd.1: Swith over to use the new conparms manpage. + + * man/solterm.1: Added docs for solterm. + + * lib/domain.c: Fixed a shutdown problem if a shutdown occurred + during a bus scan that detected an MC. + + * swig/python/openipmigui/_domain.py: Fix a problem with shutting + down in startup. conn_change_cb could be called after the + connections were brought down (due to a race). + + * swig/OpenIPMI.i: Finish out the SoL interface. + + * swig/perl/OpenIPMI_perl.c: Add a "*b" format to the callback + caller to allow sizes arrays of characters (including nils) to be + passed. + * swig/python/OpenIPMI_lang.i: ditto + +2006-01-19 Corey Minyard + + * include/OpenIPMI/ipmi_sol.h, lib/ipmi_sol.c: Modified one + interface a little to pass the state as the correct type. + + * include/OpenIPMI/ipmi_con.h: Added a way to increment the + usecount for a connection. Right now this is only available on + LAN, so that a domain connection can be reused for something + else. + + * lib/ipmi_lan.c: Added the usecount function. + + * include/OpenIPMI/ipmiif.h.in, lib/domain.c: Added a way to fetch + the connections used by a domain. + +2006-01-16 Corey Minyard + + * swig/OpenIPMI.i: Fix a bug in getting some event fields. + +2006-01-15 Corey Minyard + + * man/ipmish.1, man/openipmish.1: Rename ipmish to openipmish. + + * man/ipmicmd.1, man/openipmicmd.1: Rename ipmicmd to openipmicmd. + + * OpenIPMI.spec.in: Modify for renames and and the GUI. + + * swig/OpenIPMI.i: Added some missing docs. + + * configure.in: Move to version 2.0.4. + +2006-01-13 Corey Minyard + + * cmdlang/Makefile.am: Add os_debug.c into the openipmish build, + and remove it from the main library build, to allow the command + language to be used elsewhere. + + * swig/OpenIPMI.i: Add command language interfaces for the swig + interfaces. + + * swig/perl/Makefile.am, swig/python/Makefile.am: Now we need to + link with libOpenIPMIcmdlang. + + * swig/perl/OpenIPMI_lang.i, swig/python/OpenIPMI_lang.i: Add + defines for a generic callback (assuming we have already checked + it for valid functions). + + * swig/python/openipmigui/*.py, swig/python/openipmigui.py: Add a + command line interface to the GUI. + + * lib/mc.c: Fixed a memory leak that occurred in certain situations + when a shutdown occurs during startup. + +2006-01-12 Corey Minyard + + * lib/ipmi.c, include/OpenIPMI/internal/ipmi_int.h: Massive + restructure of the way connections done. All the connection-type + specific code was moved out of ipmi.c and into the individual + connection code. A way to register connections was added, and + ways to query argument fields from connection types was added. + Basically, it completely abstract connection type information so + new connections can be seamlessly added to OpenIPMI without + changing the core code, GUI, or anything else like that. + + * include/OpenIPMI/ipmi_conn.h, lib/domain.c, lib/ipmiif.h.in: + Added a way to get the arguments for a connections. + + * lib/ipmi_lan.c, lib/ipmi_smi.c: Adjusted for the previous + changes. + + * include/OpenIPMI/ipmiif.h.in, swig/OpenIPMI.i: Added interfaces + for the connection abstraction. + + * swig/perl/OpenIPMI_lang.i, swig/python/OpenIPMI_lang.i: Added + types necessary for the new connection abstractions. + + * swig/perl/test_lanparm, swig/perl/test_pet: Modified due to + a previous renumbering of the LAN parameters. + + * swig/python/openipmigui.py, swig/python/openipmigui/*.py: + Massive restructure to use all the previous changes to support + dynamically determining connection type content for saving + parameters and for querying the user for new connections. Also + switched over to using domain watching to detect new domains. + +2006-01-10 Corey Minyard + + * include/OpenIPMI/internal/ipmi_int.h, lib/ipmi.c: Add support + for connection-type registration for parsing, to remove all the + connection-specific code from ipmi.c. This is very important + because it allows OEM connection handlers to register themselves + fully and interact with standard mechanisms for connection + setup/teardown. Also add a help interface. + + * lib/ipmi.c: Added handling for multiple calls to ipmi_init() and + ipmi_shutdown(). + + * lib/ipmi_lan.c: Add support for the new parsing interface, + basically moving stuff from ipmi.c. + * lib/ipmi_smi.c: ditto + + * lib/ipm_lan.c: Remove _ipmi_lan_handle_connected, as it is not + needed any more as MXP is gone. + + * swig/python/openipmigui/_conn.py: Add support for connection + handling in domains. + * swig/python/openipmigui/_domain.py: ditto + * swig/python/openipmigui/gui.py: ditto + + * swig/python/openipmigui/Makefile.am: Add the _conn.py file. + + * sample/ipmicmd.c, sample/Makefile.am: Remove the popt parsing + code, it could not properly handle the new-style arguments (that + had "-" after popt finished parsing the options. It's a lot + shorter without popt, anyway. + + * include/OpenIPMI/ipmiif.h.in: Added parse args and option help + interfaces. + + * swig/OpenIPMI.i: Added parse args and option help interfaces. + + * cmdlang/cmdlang.c, include/OpenIPMI/ipmi_cmdlang.h: Add a + "help_finish" function to commands to allow dynamic help + content. + + * cmdlang/ipmish.c: Adjust for previous changes. + + * cmdlang/cmd_domain.c: Make the "domain open" help dynamic based + upon the new help interfaces. + + * include/OpenIPMI/ipmi_conn.h: Add an interface to the connection + for returning the current arguments that could be fed to a new + connection. + +2006-01-09 Corey Minyard + + * man/openipmigui.1, man/Makefile.am: Started a man page for the + GUI. + + * lib/domain.c, include/OpenIPMI/ipmiif.h: Added a way to rescan + all IPMB busses known by the domain. + + * swig/OpenIPMI.i: Added the rescan all IPMB busses function. + + * lib/lanparm.c: Moved the num_alert_destinations field to a + location that makes more sense. + + * swig/python/openipmigui.py: Renamed "~/.ipmigui.startup" to + "~/.openipmigui.startup" + + * swig/python/openipmigui/*.py: Finish up user handling, clean up + a bunch of other things. + +2006-01-08 Corey Minyard + + * lib/mc.c: Added handling of checking if the channel support + RMCP+ before allowing setting of 20-bit passwords. Also allow + a null handler for ipmi_mc_set_user(). + + * swig/python/openipmigui/*.py: Work on IPMI user handling. + +2006-01-06 Corey Minyard + + * swig/OpenIPMI.i: Need a separate blocking and callback setup + define, as we might need to handle these differently. + + * swig/python/OpenIPMI_lang.i: Add defines for the previous + change. + * swig/perl/OpenIPMI_lang.i: ditto + + * swig/python/openipmigui/*.py, swig/python/openipmigui.py: More + work on getting the 2.4 version of wxPython working. + + * swig/OpenIPMI.i: Fix a comment, change the users callback + and object list reference to pass the proper value. + * swig/perl/OpenIPMI_perl.c: Adjust for the previous change. + + * lib/mc.c: Allow a NULL callback in ipmi_mc_channel_set_access(). + + * swig/python/openipmigui/*.py: Work on getting the lanparm values + and channel values settable. + +2006-01-05 Corey Minyard + + * swig/OpenIPMI.i: Add a way for the languages to plug-in code at + the beginning and end of a function that handles callbacks or may + block. This allows Python to release the GIL lock in older + versions of Python. + + * swig/python/OpenIPMI_lang.i: Add defines for the previous + change. + * swig/perl/OpenIPMI_lang.i: ditto + + * swig/OpenIPMI.i: Only initialize gthreads if it is not already + initialized. + + * swig/python/openipmigui.py: Fix the GUI startup to use the + proper OnInit structure for wxPython. + + * unix/posix_thread_os_hnd.c, unix/posix_os_hnd.c: Fix the + get_random() function to fill in all the data. + + * swig/python/openipmigui/*.py: Convert over from the wxPython 2.6 + Bind() functions to the older EVT_xxx() bind functions. + +2005-12-30 Corey Minyard + + * swig/OpenIPMI.i: Fix problems with the channel info and + channel access data structures provided in callbacks; make + copies of those so the use can keep them around in the swig + languages. Also add copy operations on the channel access + and user data structures and fix some problems with references + on various set operations. + + * swig/python/OpenIPMI_lang.i: Create references for objects + passed to Python parameters, since Python doesn't do that + automatically. + + * swig/python/openipmigui/Makefile.am: Add _mc_chan.py and + _mc_lanparm.py. + + * swig/python/openipmigui/_mc_chan.py: Add MC channel info + handling + + * swig/python/openipmigui/_mc_lanparm.py: Add MC lanparm + handling. + + * swig/python/openipmigui/_domain.py: Fix some formatting + + * swig/python/openipmigui/_mc.py: Add support for the MC channel + and lanparm handling. + +2005-12-29 Corey Minyard + + * lib/ipmi_payload.c: Fix things so send message commands can be + routed through a LAN channel. This allows ATCA AMCs to be + directly communicated with. + +2005-12-28 Corey Minyard + + * cmdlang/cmd_domain.c, man/ipmi_cmdlang.7: Add doc info about + the authtype and privilege fields. + + * lib/rakp.c: Fix a comment error about the message the rolem hack + applies to. + + * swig/python/Makefile.am: Add a way to run the gui from the + makefile, to avoid having to set the paths by hand. + +2005-12-20 Corey Minyard + + * doc/IPMI.ltx: Fixed a cross reference. + + * doc/Makefile.am: Fixed the latex build to run bibtex and latex + the apropriate number of times. + +2005-12-14 Corey Minyard + + * swig/OpenIPMI.i, swig/python/OpenIPMI_lang.i: Added support for + older versions of Python. + + * OpenIPMI.spec.in: Cleaned up some GUI stuff. + + * swig/python/openipmigui: Lots of work in this directory, have a + mostly complete GUI now. + + * include/OpenIPMI/ipmi_posix.h; Added posix_vlog() back so + openhpi will compile. posix_vlog() is still considered + deprecated, though. + * unix/posix_thread_os_hnd.c, unix/posix_os_hnd.c: ditto + + * cmdlang/cmd_domain.c, man/ipmi_cmdlang.7: Fixed some problems + with the "domain open" documentation. + + * cmdlang/cmd_domain.c: Fixed a problem with a possible memory + leak in one failure scenario. + + * swig/OpenIPMI.i, samples/solterm.c: Switch over to the new log + handler. + + * unix/posix_thread_os_hnd.c: Fix a problem where a wrong + function was being called for logging. + + * swig/OpenIPMI.i, configure.in: Modified things to use the + right threads library for perl and python. + * swig/perl/Makefile.am, swig/perl/OpenIPMI_lang.i: ditto + * swig/python/Makefile.am, swig/python/OpenIPMI_lang.i: ditto + + * configure.in: Move to version 2.0.3. + +2005-12-13 Corey Minyard + + * lib/rakp.c: Add a proper error handler for timeouts. + + * lanserv/lanserv_ipmi.c: return an error on invalid auth to + rakp3. + + * cmdlang/ipmish.c, cmdlang/cmd_domain.c: Add useful error + reporting. + + * include/OpenIPMI/ipmi_err.h, lib/strings.h: Added a way to get + the length of an error string so it can be dynamically allocated + to the right size. + + * swig/OpenIPMI.i: Added an error string fetcher. + +2005-12-08 Corey Minyard + + * swig/OpenIPMI.i: Added the event method call_handlers that allow + an event to be interpreted after the fact. + +2005-12-06 Corey Minyard + + * swig/OpenIPMI.i: Fix wrong name of set_event_log_enable for the + MC class. + +2005-12-05 Corey Minyard + + * swig/OpenIPMI.i: Added compare functions for all entity ids. + + * swig/OpenIPMI.i: Redid all constants to use %constant. Also + renamed some misnamed ones, they are not supposed to begin with + IPMI_. + + * swig/OpenIPMI.i: Fixed the hot-swap comments for the + auto-activate/deactivate settings. + + * include/OpenIPMI/ipmiif.h.in, lib/entity.c, swig/OpenIPMI.i: + Added a function that returns if the entity supports auto activate + or auto deactivate time. + + * lib/fru.c: Make sure to return an error instead of crashing if a + root node fetcher is not installed. + + * lib/oem_atca.c: Set the auto activate/deactivate function to + NULL instead of real functions that return value. That lets the + upper level code detect that this is not supported. + + * swig/python/OpenIPMI_lang.i: Fixes problems with returning NULL + char ** and other ** objects. + +2005-12-03 Corey Minyard + + * swig/OpenIPMI.i: Added a method to get the MC id for an entity. + +2005-12-02 Corey Minyard + + * swig/OpenIPMI.i: There was a critical error in the + convert_to_xxx methods; they returned a string instead of an error + and were inconsistent (A NULL return might mean success or an + error). Make them consistently return an int and remove the + "convert_" prefix since it seems unnecessary. This is, + unfortunately, not backwards compatible, but needs to be fixed. + And hopefully there are not too many perl/python users yet. + + * swig/perl/*, swig/python/*: Adjusted for the previous change. + + * swig/OpenIPMI.i: Fixed problems dealing with threshold and event + strings. + + * swig/OpenIPMI.i: Have the discrete event handle call the proper + callback. + + * swig/OpenIPMI.i: Add an event delete capability. + + * swig/python/OpenIPMI_lang.i: Fix a hidden (in a macro) vague + else clase. + +2005-12-01 Corey Minyard + + * include/OpenIPMI/ipmi_mc.h, include/OpenIPMI/internal/ipmi_sensor.h: + Move the ipmi_sensor_get_mc() call to a more public interface, + primarily to give the GUI access to it. + + * swig/OpenIPMI.i: Add get_mc() to the sensor class. + + * swig/OpenIPMI.i: Added function to conver the various threshold + and event values into strings. + +2005-11-30 Corey Minyard + + * lib/mc.c: Got something wrong in the new MC state machine. Need + to call mc_startup without any locks held. + + * lib/entity.c: Fixed some problems with detecting presence from + children. Also fixed some bugs dealing with entity containment + SDR records. + + * swig/OpenIPMI.i: Fix threshold printing + +2005-11-29 Corey Minyard + + * lib/entity.c: Keep the entity key around (channel, IPMB, id, + instance) even if the entity's SDR is destroyed. + + * lib/mc.c: Added a callback when the MC is completely up. This + was a major undertaking, the basic operation of MCs had to change + substantialy. Before, MCs could go active and inactve any number + of times and the transitions were counted and reported + appropriately. This no longer happens; the MC will go through a + state machine and active/inactive/fully up will only happen in + order. + + * swig/OpenIPMI.i: Add the MC fully up handler methods. + + * lib/oem_atca.c: Make sure the MC is scanned when the entity is + newly present (as well as when it goes away, which was already + there). Also some code cleanups. + + * lib/ipmi_smi.c: Fix a "memory use while free" problem at + shutdown. + + * cmdlang/cmd_domain.c: Remove the code and requirement for + including internal/ipmi_event.h + + * lib/domain.c: Restart the domain audit timer immediately when + the timeout is set. + + * glib/glib_os_hnd.c: Clear the running flag when timer is + stopped. + +2005-11-28 Corey Minyard + + * lib/oem_atca.c: Make sure the main entities I create hang around + after devices have been removed, so the configured data from the + address table stays valid. + +2005-11-27 Corey Minyard + + * swig/python/ipmigui.py: removed + + * swig/python/openipmigui.py, swig/pythong/openipmigui/*: Started + work on a real GUI. + + * OpenIPMI.spec.in, configure.in: Added GUI directories. + +2005-11-26 Corey Minyard + + * lib/oem_atca.c: Set the number of values properly on non-identifier + controls. + + * swig/OpenIPMI.i: Properly name get_light and set_light (remove + the ipmi_control_ from in front of them). Fix a doc error. + + * include/OpenIPMI/ipmiif.h.in: The setting light information + about local control and color support didn't have per-light + values, which was a problem. A new interface was added, the + old one only works for the first light. + * include/OpenIPMI/internal/ipmi_control.h: ditto + * lib/control.c: ditto + * cmdlang/cmd_control: ditto + * lib/oem_atca.c: ditto + * swig/OpenIPMI.i: ditto + + * swig/OpenIPMI.i: Fix a problem setting light parms + +2005-11-25 Corey Minyard + + * lib/aes_cbc.c: Make sure we don't coredump if the connection + doesn't get set up. + + * lib/domain.c: Don't iterate the domain list if it is NULL. + + * lib/ipmi_lan.c: Allow RMCP+ to be specified explicitly as a + connection type. + + * swig/OpenIPMI.i: On an error, pass in a valid dummy array when + delivering control value lists, since they may be NULL on an + error. + + * swig/OpenIPMI.i: Add entity SDR id and entity id string fetch + methods. + +2005-11-24 Corey Minyard + + * lib/mc.c, lib/domain.c: Make sure certain things don't run when + the object is being destroyed. + + * lib/opq.c: Fix an opq destroy error. + +2005-11-23 Corey Minyard + + * lib/sensor.c: Remove the check for the MC being active when + allowing the sensor to perform operations. It's not always + accurate and shouldn't matter. + * lib/control.c: ditto + + * swig/OpenIPMI.i: Fix some string handling errors. + + * swig/OpenIPMI.i: Fix the threshold_reading_cb to pass the error + as a parameter + + * swig/python/OpenIPMI_lang.i: Handle generating exception + information from callbacks. + +2005-11-22 Corey Minyard + + * swig/python/OpenIPMI_lang.i: Fixed all the calls to grab/release + the lock state so things will always work properly no matter where + the calls come from. + +2005-11-21 Corey Minyard + + * lib/entity.c: call _ipmi_mc_put() at the end of + ipmi_entity_get_mc_id(). + +2005-11-17 Corey Minyard + + * lib/sensor.c: Make sure to handle all cases of partial data in a + set sensor event enables response. Also be sure to mask off + reserved bits. + + * cmdlang/cmd_sensor.c: Fix an error report function location. + + * include/OpenIPMI/ipmi_mc.h: Add ipmi_event_alloc() to this file + so you can allocate events to add to the SEL. Otherwise you would + have to include internal include files. + + * cmdlang/cmd_sel.c: No longer need the event.h include. + + * lanserv/lanserv_ipmi.h, include/OpenIPMI/lanserv.h: Change the + "idx" of a session to its handle (since the index is something + else) and rework the "Get Session" handling code in the lan server + to actually be correct. + +2005-11-16 Corey Minyard + + * swig/perl/Lanserv.pm: Removed the need for threads, use fork() + instead, for the perl tests. + * swig/perl/test_chan: ditto + * swig/perl/test_fru: ditto + * swig/perl/test_lanparm: ditto + * swig/perl/test_pef: ditto + * swig/perl/test_pet: ditto + + * swig/perl/OpenIPMI_lang.i: Added unsigned in typemaps for swig. + + * unix/heap.h: Fix a test so an unsigned value doesn't go negative + in a test. + + * swig/perl/Makefile.am: Add test_pef, since it was missing. + + * lib/pef.c: Fix a problem writing PEF alert strings. + +2005-11-13 Corey Minyard + + * lib/ipmi.c: Remove some bogus additions of string nil characters + and fix an incorrect index for setting the second port of a LAN + address. + +2005-11-09 Corey Minyard + + * lib/sel.c: Don't set startup_SEL_time if the user hand-sets + the SEL time. + + * lib/oem_atca.c: Added some prints on some ATCA table errors. + +2005-11-04 Corey Minyard + + * lib/mc.c: Allowed null handlers in some set calls. + + * include/OpenIPMI/ipmiif.h.in: Correct some documentation on + managed hot-swap. + + * include/OpenIPMI/ipmi_fru.h: Added some missing information to + the comments. + + * doc/IPMI.ltx: Added info on the new FRU interfaces, cleaned up a + few things. + +2005-10-30 Corey Minyard + + * include/OpenIPMI/internal/ipmi_mc.h, lib/mc.c: Add a way to + force the active value without reporting it. + + * lib/domain.c: Force the system address MC to always be active, + since it makes no sense for it to be inactive. + + * lib/cmdlang.c: Make sure output is reported properly for binary + and unicode output to avoid warning messages. + +2005-10-24 Matt Domsch + * ipmi.sysconf: add IPMI_POWERCYCLE back in, change SuSEconfig + modulename to .ipmi + +2005-10-20 Corey Minyard + + * include/OpenIPMI/ipmi_conn.h: Modify the ipmb-providing + functions to take an array of IPMB addresses, not a single ipmb + address. Required for per-channel IPMB support. An unfortunate + (mostly internal) interface change. + + * lib/domain.c, include/OpenIPMI/internal/ipmi_domain.h: Add + per-channel IPMB address support. + * lib/ipmi_lan.c: ditto + * lib/ipmi_smi.c: ditto + * lib/oem_atca.c: ditto + * lib/oem_atca_conn.c: ditto + * lib/oem_force_conn.c: ditto + * lib/oem_intel.c: ditto + * lib/oem_kontrol_conn.c: ditto + + * include/linux/ipmi.h: Add per-channel IPMB support ioctls. + + * lib/ipmi_smi.c: Remove socket support, as nobody should be using + it. + + * everything: Cleaned up a bunch of new warnings from the gcc 4.0 + compiler. + + * include/OpenIPMI/internal/ipmi_domain.h, lib/domain.c: The MC + scanning functions were not following the rules properly; the done + function would still be called on some errors. Some users were + handling this properly and some weren't. This cleans it up to + follow the standard rules (return an error then no callback, + return success then always callback). + * lib/oem_motorola_mxp.c: ditto + + * include/OpenIPMI/internal/ipmi_domain.h, lib/domain.c, lib/atca.c: + Modified the way bus scanning works so that the ATCA code can use + it. + + * include/OpenIPMI/internal/ipmi_domain.h, lib/domain.c: Modified + the domain fully up code to take a debugging parm to help know who + is not releasing this properly. + * lib/entity.c: ditto + * lib/mc.c: ditto + +2005-10-17 Corey Minyard + + * include/OpenIPMI/ipmi_fru.h: Add ipmi_bits.h include. + + * include/OpenIPMI/internal/ipmi_fru.h: Add some needed includes. + + * lib/oem_atca.c, lib/oem_atca_fru.c: Move the FRU decoding to a + different file. + + * include/OpenIPMI/ipmiif.h.in, lib/strings.c: Added ATCA blade + domain type, and the option for local-only domains. + + * lib/domain.c, lib/ipmi.c, include/OpenIPMI/internal/ipmi_domain.h: + Added local-only domain options support. + + * lib/domain.c, include/OpenIPMI/internal/ipmi_domain.h: Added a + way to get the connections for a domain. + + * lib/oem_atca.c: Added support for local blade domains when coming + in from an system interface. + +2005-10-17 Matt Domsch + * ipmi.init: if ipmi_devintf can't be removed, don't delete /dev/ipmi0 + * ipmi.init: merge SuSE config file foo=yes vs foo=1 changes. + * ipmi.sysconf: ditto + +2005-10-13 Corey Minyard + + * cmdlang/Makefile.am: Fix the clean to work properly. + * glib/Makefile.am: ditto + * lanserv/Makefile.am: ditto + * lib/Makefile.am: ditto + * ui/Makefile.am: ditto + * unix/Makefile.am: ditto + * utils/Makefile.am: ditto + + * lib/fru.c: Added a call to cleanup the old FRU recs when the rec + data for the FRU information is set and old FRU data exists. + + * lib/fru_spd_decode.c: Don't free the FRU data at shutdown. + + * lib/normal_fru.c: If you add a record area to a non-normal FRU, + convert it to a normal FRU. This lets you edit a corrupt FRU. + + * lib/oem_intel.c: Add support for the Intel SE7520 motherboard. + +2005-10-09 Corey Minyard + + * lib/opq.c: Added a way to pre-allocaste opq entries, a way to + put an item at the front of the opq instead of at the end, and a + way for an opq operation to return if it was started or not (an + optimization to keep from blowing the stack in operations that + might heavily nest). + + * lib/control.c: Adjusted for the opq changes. + * lib/entity.c: ditto + * lib/lanparm.c: ditto + * lib/mc.c: ditto + * lib/pef.c: ditto + * lib/sdr.c: ditto + * lib/sensor.c: ditto + + * lib/sel.c: Optimized SEL clearing. If the SEL detects that all + entries are deleted, it will immediately add a fetch operation at + the head of the queue. If the fetch operation succeeds and clears + the SEL, any pending deletes are marked as already done and will + return a success for the operation. + + * lib/sel.c, include/OpenIPMI/internal/ipmi_sel.h: Added a way to + try to force an SEL clear immediately. NOTE: Do not use this. + This is only for HPI. + + * lib/mc.c, include/OpenIPMI/ipmi_mc.h: Added an SEL clear + function for the MC. NOTE: Do not use this. This is only for + HPI. + + * include/OpenIPMI/internal/ipmi_mc.h: Added a way to set a custom + clear handler. + + * cmdlang/cmd_sel.c: Added a way to force-clear an MC's SEL. + + * lanserv/emu.c: Fixed some bugs in SEL handling. + +2005-10-05 Corey Minyard + + * lib/entity.c, include/OpenIPMI/internal/ipmi_entity.h: Added a + way to set the FRU for an entity. + + * lib/oem_atca.c: Put the shelf FRU info into the chassis entity + (the 23.1 entity). + + * lib/oem_atca.c: Fix some problems with references on the + multirecord decoding. + + * lib/normal_fru.c: Make sure the fru is unlocked while calling + the root node handlers. + + * lib/fru.c: Make sure the FRU is unlocked while decoding the FRU + data. + +2005-10-04 Matt Domsch + * ipmi.init: don't strictly require LSB functions on Red Hat / VMware + +2005-10-02 Corey Minyard + + * utils/*.c, lanserv/*.c, lanserv/*.h: Relicense part of OpenIPMI + under a dual LGPL/BSD license so it may be used as part of a BMC + implementation. + * include/OpenIPMI/internal/ilist.h: ditto + * include/OpenIPMI/internal/md2.h: ditto + * include/OpenIPMI/internal/md5.h: ditto + * include/OpenIPMI/internal/ipmi_malloc.h: ditto + * include/OpenIPMI/internal/ipmi_locks.h: ditto + * include/OpenIPMI/internal/locked_list.h: ditto + * include/OpenIPMI/ipmi_auth.h: ditto + * include/OpenIPMI/ipmi_err.h: ditto + * include/OpenIPMI/ipmi_log.h: ditto + * include/OpenIPMI/os_handler.h: ditto + * include/OpenIPMI/ipmi_debug.h: ditto + * include/OpenIPMI/ipmi_addr.h: ditto + * include/OpenIPMI/ipmi_msgbits.h: ditto + * include/OpenIPMI/ipmi_picmg.h: ditto + * include/OpenIPMI/ipmi_bits.h: ditto + * include/OpenIPMI/ipmi_types.h: ditto + * include/OpenIPMI/lanserv.h: ditto + +2005-09-29 Corey Minyard + + * lib/oem_atca.c: Make sure the shelf entity is reported + before any child entities of the ATCA shelf. + +2005-09-22 Corey Minyard + + * lib/fru.c: Added an error when FRU decode failed. + + * lib/normal_fru.c: Fixed the filename in error prints and remove + an error log when the checksum fails. + + * lib/ipmi.c, lib/fru_spd_decode.c: Added FRU info decoding for + SPD FRU information. This info type occurs in DRAMs. + + * lib/sample.c: Switched over to use the new FRU decode fetching + method. + +2005-09-21 Corey Minyard + + * lib/event.c, include/OpenIPMI/ipmiif.h.in: Added a way to + "interpret" an existing event the same way that new incoming + events are interpreted. + + * cmdlang/cmd_sel.c: Added an "interp" option to the event + listing command to interpret the event. + +2005-09-14 Matt Domsch + + * ipmi.init: use poweroff_control or poweroff_powercycle module + option to ipmi_poweroff as appropriate. kernel 2.6.14-rc1 + (driver 36.0) and newer uses poweroff_powercycle. + + * OpenIPMI.spec.in: %preun and %postun fixes from Fedora Core + +2005-09-08 Matt Domsch + + * ipmi.init: silence modprobe output, matches Fedora again + +2005-09-06 Corey Minyard + + * lib/fru.c: Check that the write and write complete functions are + available before allowing them to be called. + +2005-09-06 Corey Minyard + + * include/OpenIPMI/ipmiif.in, lib/entity.c: Added a function to + get the mcid of an entity, for MC and generic entities. + +2005-08-31 Matt Domsch + + * ipmi.init: Updated initscript to return sane status values from + all commands. + +2005-08-31 Corey Minyard + + * lib/fru.c, include/OpenIPMI/ipmi_fru.h: Create a new abstract + FRU interface based upon the node stuff done with multi-records. + This is getting ready for FRU data that is not standard IPMI (SPD + in DIMMs, for instance). + + * include/OpenIPMI/internal/ipmi_oem.h: Move some FRU-specific + interfaces out of here. + + * include/OpenIPMI/internal/ipmi_fru.h: Move the FRU-specific + interfaces into here. + + * lib/normal_fru.c, lib/oem_atca.c: Convert over to the new FRU + interfaces. This changed all the multi-record interfaces, but is + much cleaner. + + * cmdlang/out_fru.c: Use new FRU data dumping interface. + + * swig/OpenIPMI.i: Added an interface to get the FRU's root node, + for the new abstract FRU interface. + +2005-08-29 Corey Minyard + + * lib/ipmi_lan.c: Fixed a possible race during shutdown with timer + handling. + + * lib/opq.c: Only allow the opq destroy to be done once, in case + it is called again from the destroy callbacks. + + * lib/event.c, include/OpenIPMI/internal/ipmi_event.h: Add a way + to get the generating MC from a standard IPMI event. + + * lib/event.c, include/OpenIPMI/ipmiif.h.in: Add a way + to get the generating sensor from a standard IPMI event. + + * lib/domain.c: Convert over to the new function to get the + generating MC. + + * lib/fru.c, include/OpenIPMI/internal/ipmi_fru.h: Removed all the + "normal" FRU processing and made interfaces so it can be put into + another file and abstracted (to allow multiple FRU data types). + Not quite done yet, but a long way down the road. + + * lib/normal_fru.c, lib/Makefile.am, lib/ipmi.c: The "normal" fru + processing moved here. + +2005-08-26 Corey Minyard + + * ipmi.init, ipmi.sysconf, Makefile.am, OpenIPMI.spec.in: Add init + script stuff. + + * include/OpenIPMI/ipmi_fru.h, lib/fru.c, cmdlang/cmd_fru.c: Add + general FRU float handling. + +2005-08-25 Corey Minyard + + * lib/sensor.c, lib/control.c: Fix so proper counts are held in + shutdown situations. + +2005-08-24 Corey Minyard + + * lib/domain.c, include/OpenIPMI/internal/ipmi_domain.h: Added a + way to tell if the domain is in shutdown. + + * lib/sensor.c: Don't allow operations if the domain/mc it is + attached to is in shutdown or is not active. There was a problem + where if a sensor was getting refetched in the fetch completion + handler, and it blew the stack because the fetch would go through + the opq, fail, call the handler, start the fetch, etc. + * lib/control.c: ditto + + * lib/sensor.c: Fix an error path in states_get_start() that was + incorrectly returning success. Fix a typo in a comment. + + * include/OpenIPMI/ipmi_sol.h: Make this into a normal unix text + file (remove carraige returns) and general formatting cleanups. + +2005-08-23 Gerhard Obrecht + + * lib/ipmi.c, lib/Makefile.am, lib/oem_kontron_conn.c: Add + support for the Kontron system interface IPMB address setting. + +2005-08-23 Corey Minyard + + * cmdlang/cmd_sensor.c, man/ipmi_cmdlang.7: Fixed the docs on the + threshold names. + + * lib/sensor.c: Fix threshold setting to clear out the unused + threshold values (just so random data isn't sent). + +2005-08-19 Corey Minyard + + * lib/sensor.c: When doing a "set sensor enable", only disable the + bits that the sensor says it supports. + + * lib/lanparm.c: Added a hack for working with broken systems that + return the wrong alert destination number with the response. + +2005-08-18 Corey Minyard + + * lib/oem_atca.c: When a hot-swap event comes in and the MC + already exists, it is probably an AMC insertion/removal. + Rescan the SDRs on the IPMC when this occurs, as it probably has + new sensors. + +2005-08-16 Corey Minyard + + * OpenIPMI.pc.in: Fix linking and order for libOpenIPMIutils. + * OpenIPMIcmdlang.pc.in: ditto + * OpenIPMIglib.pc.in: ditto + * OpenIPMIposix.pc.in: ditto + * OpenIPMIpthread.pc.in: ditto + * OpenIPMIui.pc.in: ditto + +2005-08-05 Corey Minyard + + * lib/entity.c: Fix an entity destruction problem that could + result in a SEGV in some situations. + + * swig/OpenIPMI.i: Fix the fru multi-record node handling. + * swig/perl/OpenIPMI_lang.i: ditto + * swig/python/OpenIPMI_lang.i: ditto + * swig/perl/sample: Added code for dumping multirecords. + +2005-08-02 Corey Minyard + + * cmdlang/os_debug.c: Fix so log handler gets set correctly. + + * cmdlang/out_fru.c: Add support for multi-record parsing. + + * include/OpenIPMI/ipmi_fru.h, lib/fru.c: Add consts where needed. + * include/OpenIPMI/internal/ipmi_int.h: ditto + * include/OpenIPMI/internal/ipmi_oem.h: ditto + + * lanserv/atca.emu: Add more multi-records for testing. + + * lib/fru.c: Fix return of the multi-record root name. + + * lib/oem_atca.c: Fix problems with the multi-record parsing, add + support for the ATCA address table. + + * swig/OpenIPMI.i: Add support for the fru nodes and multi-record + parsing. + * swig/perl/OpenIPMI_lang.i, swig/python/OpenIPMI_lang.i: new + types for multi-record parsing. + + * ui/ui.c: Some const fixes. + + * lib/lanparm.c: Fixed the RMCP+ cipher suites lanparm entry so it + is optional. + + * include/OpenIPMI/internal/ipmi_oem.h: Add comments on + registering FRU multi-record handlers. + + * lib/fru.c, include/internal/ipmi_oem.h, include/ipmi_fru.h: + Modified the fru node to return floating point and boolean + values. + * lib/oem_atca.c: ditto + * ui/ui.c: ditto + * cmdlang/out_fru.c: ditto + + * lib/fru.c: Added support for the standard FRU multi-record for + power supplies (types 0-2). + +2005-07-21 Darius Davis + + * lib/ipmi_sol.c: Fix potential crash due to a dodgy memset(). + Fixed an incorrect warning text string. + +2005-07-14 Corey Minyard + + * lib/sensor.c: Make sure the entity for a sensor is locked even + if the MC is bad. + + * lib/sel.c: Remove a bogus sel_unlock(). + + * include/OpenIPMI/os_handler.h: Add a way to directly set the + log handler for an os handler. + + * include/OpenIPMI/ipmi_posix.h: Remove the posix_vlog garbage. + We still maintain backwards compatability, but this was a stupid + idea. + * unix/posix_os_hnd.c: ditto + * unix/posix_thread_os_hnd.c: ditto + + * unix/posix_os_hnd.c: Add in the set_log_handler os_handler + function. + * unix/posix_thread_os_hnd.c: ditto + * glib/glib_os_hnd.c, include/OpenIPMI/ipmi_glib.h: ditto + * cmdlang/os_debug.c: ditto + + * cmdlang/ipmish.c: Convert over to set_log_handler. + * sample/sample.c: ditto + + * sample/ipmicmd.c: Remove posix_vlog and use the default one. + * sample/sample2.c: ditto + * sample/sample3.c: ditto + + * configure.in: Move to version 2.0.2 + +2005-07-13 Corey Minyard + + * include/OpenIPMI/internal/ipmi_sensor.c, include/OpenIPMI/ipmiif.h.in: + Move ipmi_sensor_get_owner() to ipmiif.h for the CIM mapping. + + * everything: A massive update to improve const correcteness. + +2005-07-12 Corey Minyard + + * lib/fru.c: Fix a problem with uninitialized variable FRU string + data and another problem with encoding later fields after a + changed field. + + * cmdlang/cmd_fru.c: Must reference the FRU again before deleting; + the caller is holding their own reference and will dereference it + themselves. + + * lanserv/emu_cmd.c: Fixed a problem reading continued command + strings in the emulator. + + * lanserv/README.emulator: Fixed some documentation for FRU handling. + + * lib/sdr.c: When checking the length of SDR data, allow extra + data at the end. + +2005-07-06 Corey Minyard + + * swig/perl/test_fru: Added some more tests trying to reproduce + a user problem. + +2005-06-14 Forrest Zhao , Corey Minyard + + * include/OpenIPMI/ipmi_fru.h, include/OpenIPMI/internal/ipmi_oem.h + lib/fru.c, lib/oem_atca.c, ui/ui.c: Add support for OEM FRU + multirecord decode, providing a hierarchy interface for user to + get each field of decoded OEM FRU multirecord. + +2005-06-10 Corey Minyard + + * lib/sensor.c: Fix some english grammar problems in a pring. + + * swig/python/Makefile.am, OpenIPMI.spec.in: Fix so python + installs correctly. + + * configure.in: Move to version 2.0.1. + +2005-06-05 Corey Minyard + + * include/OpenIPMI/ipmi_fru.h: Add some docs explaining how the + type field works in multi-records. + + * lib/fru.c: Fix the definition of fru_area_info to be static + and not extern for the forward definition. + + * lib/fru.c: Call fru_write_handler, not fru_data_handler, on + a write retry. + +2005-06-02 Corey Minyard + + * lib/fru.c: Fix the byte ordering on reading FRU time. Make sure + the in_use field is reset if the FRU is written but there are no + changes. + +2005-05-19 Forrest Zhao + + * include/OpenIPMI/ipmiif.h, lib/domain.c, lib/oem_atca.c, + lib/sensor.c: Add callback for OEM-specific sensor types. + +2005-05-18 Corey Minyard + + * lanserv/lanserv_ipmi.c: Use K1 instead of SIK for the initial + key for hmac_sha1, per the IPMI 2.0 R2 errata. + + * lanserv/lanserv_ipmi.c: Adjust the range of allowed sequence + numbers for RMCP+, per the IPMI 2.0 R2 errata. + + * lib/ipmi_lan.c: Adjust the range of allowed sequence numbers for + RMCP+, per the IPMI 2.0 R2 errata. + + * lib/entity.c: Add presence bit sensors entries for drive slot + and memory sensor types, per the newly added bits in the IPMI 2.0 + R2 errata. + + * lib/strings.c: Add strings for sensor bit readings for memory + sensors, drive slot sensors, and cable sensors, per the IPMI 2.0 + R2 errata. + +2005-05-17 Corey Minyard + + * lib/mc.c, include/OpenIPMI/ipmi_mc.h, swig/OpenIPMI.i: Add the + (dangerous) ability to set the system event log enable for an MC. + * cmdlang/cmd_mc.c: ditto + + * lib/domain.c: Move adding the domain to the domain list to + right where the domain is created. That way it will be cleaned + up properly even if it never comes up. + +2005-05-10 Paul Drews + + * unix/posix_thread_os_hnd.c: Clear the internal_data structure + after allocating. + +2005-05-06 Paul Drews + + * unix/posix_thread_os_hnd.c: Initialize the mutex structure + after it is allocated. + +2005-04-27 Corey Minyard + + * include/OpenIPMI/ipmi_sdr.h, lib/sdr.c: Added the ability + to clear out and SDR like it has never been fetched. + + * include/OpenIPMI/internal/ipmi_event.h, lib/event.c, lib/sel.c: + Added setting if the event is old into the event itself. + + * lib/oem_atca.c, lib/oem_motorola_mxp.c, lib/domain.c: Use the + old event info in the event itself to reject old events. + + * lanserv/README.emulator: Added channel info fetching. + * lanserv/atca.emu: ditto + * lanserv/emu.c: ditto + * lanserv/emu.h: ditto + * lanserv/emu_cmd.c: ditto + * lanserv/lanserv_emu.c: ditto + + * lib/chassis.c: Tie into the MC going inactive to remove the + chassis controls. + + * lib/control.c: Fix handling of shutdown when destroyed to clear + out the waitq when the control does an opq done and the control is + destroyed. Also fix some refcount problems on some error + situations. + * lib/sensor.c: Ditto, but for sensors. + + * lib/mc.c: Make sure the clear out the SDR repository to an + intial state when the MC goes inactive. Also add some useful + error messages. + + * lib/oem_atca.c: Fix the detection of going to or from not + installed state to be correct. + + * lib/entity.c: Fixed a problem where if a presence sensor got an + error on a reading, it would not continue to try other presence + methods. + +2005-04-20 Corey Minyard + + * unix/posix_os_h.c, unix/posix_thread_os_hnd.c: Fix incorrect + return values from perform_one_op() in these os handlers. + + * sample/ipmicmd.c: When performoning a non-interactive operation, + make sure to not exit in the message handler, because that is done + with the LAN object still refcounted (so it won't shut down). + +2005-04-18 Corey Minyard + + * lib/sel.c: Fix a bug where deleting the last record of the SEL + cause the SEL fetch to not work any more on systems that support + individual deletes. + +2005-04-14 Corey Minyard + + * lib/ipmi_lan.c: Fix a bug with multiple IPMI connections on the + same FD. + +2005-04-13 Corey Minyard + + * lib/strings.c, lib/ipmi_sol.c, sample/solterm.c: Fix compile + problems with older compilers. + + * lib/oem_atca.c: Modify the ATCA detection to use a Get PICMG + Properties command instead of getting the shelf FRU info address, + since not all systems get the shelf FRU properly. + +2005-04-08 Corey Minyard + + * sample/ipmicmd.c: Make sure all error output goes to stderr and + only submit the command once in LAN mode. + +2005-04-07 Corey Minyard + + * OpenIPMI.spec.in: Added solterm, reorganized a little. + + * swig/OpenIPMI.h: Added domaim monitoring interfaces. + +2005-04-07 Darius Davis + + * sample/solterm.c, sample/Makefile.am: Added solterm sample program. + +2005-04-07 Darius Davis + + * include/OpenIPMI/ipmi_err.h: Added error codes and macros for Serial + over LAN support + + * include/OpenIPMI/ipmi_err.h: Added prototype for ipmi_get_error_string. + + * include/OpenIPMI/ipmi_lan.h: #defined IPMI_RMCPP_ADDR_SOL to provide + the RMCP+ address for the SoL payload. + + * include/OpenIPMI/ipmi_sol.h: New file: Serial over LAN (SoL) + interface. + + * lib/Makefile.am: Added ipmi_sol.c. + + * lib/ipmi_lan.c: Added support for Serial over LAN on an IPMI 1.5 + connection, using the most significant "reserved" bit in the AuthType + field. Even on an IPMI 1.5 connection, the outgoing and incoming + SoL packets are treated exactly the same as packets for the SoL RMCP+ + payload. + + * lib/ipmi_sol.c: New file: Serial over LAN (SoL) support. + + * lib/strings.c: Added descriptions for SoL and RMCP+ errors. + + * lib/strings.c: Added ipmi_get_error_string function to generate a + textual description from an error code regardless of the error class. + +2005-03-31 Corey Minyard + + * lib/ipmi_lan.c: Cleaned up some minor things. + +2005-03-30 Corey Minyard + + * lib/sel.c: Remove a bogus stat increment. + + * lib/ipmi_lan.c: Add a missing stat. + +2005-03-30 Corey Minyard + + * lib/ipmi_lan.c: Fix a problem with multiple connections to the + same address. These cannot share lan_fd entries because they + cannot be uniquely identified. + + * include/OpenIPMI/ipmi_conn.h: Rework the RMCP+ hacks to make + them more generic. + * cmdlang/cmd_domain.c: ditto + * lib/hmac.c: ditto + * lib/rakp.c: ditto + * lib/ipmi.c: ditto + * man/ipmi_cmdlang.7: ditto + + * all: Release version 2.0.0. + +2005-03-29 Corey Minyard + + * include/OpenIPMI/ipmi_conn.h: Added support for a + IPMI_CONN_HACK_BROKEN_INTEL_BMC for handling RMCP+ problems + on Intel BMCs. The Intel BMCs use the bottom 4 bits of the + ROLE(m) instead of the whole ROLE(m) byte. They also use K1 + instead of SIK to authenticate normal messages. Both of these are + problems with spec compliance. + * cmdlang/cmd_domain.c: ditto. + * lib/hmac.c: ditto + * lib/rakp.c: ditto + * lib/ipmi.c: ditto + * man/ipmi-cmdlang.7: ditto + + * lib/ipmi_lan.c: It seems the payload length does not include the + integrity padding, adjust for that. + + * lib/hmac.c: The integrity length for normal messages is 12 bytes + for SHA1-96, not 20 bytes. + + * lib/rakp.c: The integrity length for RAKP4 messages was 12 + bytes, not 20 bytes. + + * lanserv/lanserv_ipmi.c: It seems the payload length does not + include the integrity padding, adjust for that. The integrity + length for normal messages is 12 bytes for SHA1-96, not 20 bytes. + The integrity length for RAKP4 messages was 12 bytes, not 20 + bytes. + +2005-03-29 Darius Davis , Corey Minyard + + * configure.in: Add test for execinfo.h + + * utils/ipmi_malloc.c: #ifdef HAVE_EXECINFO_H around code dependent on + execinfo.h and the backtrace function. + +2005-03-24 Corey Minyard + + * cmdlang/cmdlang.c: Cast ipmi_time_t to long long when outputting + the data to avoid compiler warning. + + * lib/aes_cbc.c, lanserv/lanserv_ipmi.c: Don't use the padding + from openssl, as it is incorrect for IPMI. Add our own padding + and turn openssl padding off. + +2005-03-24 Darius Davis + + * lib/fru.c, include/OpenIPMI/ipmi_fru.h: Moved #include + to fru.h. + + * lib/ipmi_lan.c: #ifdef around more PF_INET6 dependent code. + + * lib/ipmi_lan.c: when reading AuthType field, only take low + nybble. + + * lib/ipmi_lan.c: raise a warning if the BMC reports that it + supports IPMI2 in extended capabilities, but doesn't say it + provides extended capabilities. + + * lib/ipmi_lan.c: move RMCP+ support detection from + auth_cap_done_p to auth_cap_done so we can give a warning for BMCs + that don't handle Get Channel Auth Conf properly. + + * lib/sensor.c: change log2 to c_log2 for platforms that define + log2 as a macro (Cygwin). + +2005-03-23 Corey Minyard + + * include/OpenIPMI/mxp.h: Fixed the license to be LGPL, as + intended. + + * configure.in: Added some target detection and some + target-specific defines. + + * lib/ipmi.c, lib/ipmi_smi.c: Made the init/shutdown of ipmi_smi + based upon target-specific defines. + +2005-03-22 Corey Minyard + + * lib/entity.c: Fix a bug in fru presence handling, addressing + beyond the end of the array. + + * lib/ipmi.c: Fixed a problem with handling of 1-byte full ASCII. + + * lib/ipmi_lan.c: Lots of little fixes. + + * include/OpenIPMI/ipmi_lan.h: Added a string for the IPMI LAN + standard port. + + * unix/posix_thread_os_hnd.c: Fix a possible double-free scenario. + + * glib/glib_os_hnd.c: Fix a possible use of free data scenario. + + * lanserv/lanserv_ipmi.c: in return_rmcpp_rsp, make the d[] array + be one longer to accomidate the checksum. + + * lanserv/lanserv.c: in handle_msg_ipmi_dev, make the data[] array + be one longer to accomidate the checksum. + + * sample/ipmicmd.c: Check to make sure the channel is present. + +2005-03-21 Corey Minyard + + * lib/domain.c: Added IPMI 2.0 as a supported version. + +2005-03-21 Darius Davis + + * lib/strings.c: Fix misnamed command string for payload activation. + +2005-03-17 Corey Minyard + + * lib/fru.c: Fixed an off-by-one problem when writing FRU data. + + * unix/posix_thread_os_hnd.c: ifdef some gdbm stuff that needed it. + + * include/OpenIPMI/internal/ipmi_utils.h, lib/fru.c: Add a + field to the notrack FRU to allow only specific areas to be + processed. + * lib/entity.c: ditto + * lib/oem_atca.c: ditto, only fetch multi-records. + +2005-03-16 Corey Minyard + + * lib/fru.c: Added IPMI_REQUEST_DATA_LENGTH_INVALID_CC to the + list of errors that means the FRU fetch was too big and we should + back off the fetch size. + +2005-03-12 Corey Minyard + + * lib/lanparm.c: Fix some minor problems with IPMI 2.0 parms. + +2005-03-03 Corey Minyard + + * sample/ipmicmd.c: Fixed some memory sloppiness that was causing + segvs with test_lat. + + * lib/ipmi_lan.c: Added a boatload of statistics to the LAN + interface. + + * lib/sel.c: Added statistics. + +2005-03-02 Corey Minyard + + * lib/domain.c, include/OpenIPMI/ipmiif.h.in: Added a + statistics interface. + + * include/OpenIPMI/ipmi_conn.h: Added a statistics interface for + connections. + + * lib/ipmi_lan.c: Started adding statistics. + + * cmdlang/cmd_domain.c: Added statistics dumping. + + * lib/ipmi_lan.c: Converted to socket to be non-blocking. + +2005-02-28 Corey Minyard + + * lib/ipmi_lan.c: Modified sending to sending to odd netfns will + result in immediate send without response. + + * lib/ipmi_lan.c, lib/ipmi_smi.c: Free the "name" attribute if it + is set. + + * lib/control.c, lib/sensor.c, lib/entity.c: Don't check for the + lock on opq_done() operations, since the lock may not be held due + to shutdown races. + + * lib/ipmi_lan.c: Removed an unecessary "retries" and "timer" + variables from the LAN structure. + + * lib/oem_atca.c: More hacks for broken hardware. + + * lib/sel.c: Hacks for broken hardware. + + * lib/mc: Added some information for changed MCs. + +2005-02-25 Corey Minyard + + * lib/oem_atca.c: Some more fixups for the Intel chassis. + +2005-02-24 Corey Minyard + + * lib/entity.c: Ignore controls and sensors for presence if they + are supposed to be ignored when the entity is not present. I + think I previously misunderstood this bit (not like it is well + explained, anyway). + + * lib/sensor.c, lib/control.c: Make oem sensors and controls not + ignored when the entity is not present. + * lib/oem_motorola_mxp.c: ditto + * lib/oem_test.c: ditto + * lib/oem_intel.c: ditto + + * lib/oem_atca.c: Set address controls to be ignored if the entity + is not present. + + * lib/sensor.c: Fix a problem with handling sensor state fetches + that didn't have optional bytes. + + * lib/oem_atca.c, lib/oem_atca_conn.c: Modify fetching the shelf + FRU to try the ECN 1.1 version first. Commented out some + Intel-specific hacks as the shelf gets better. + + * include/OpenIPMI/internal/locked_list.h, util/locked_list.c: + Added a way for the prefunc to tell it to skip an item. + + * include/OpenIPMI/ipmiif.h, lib/domain.c: Added support for + domain statistics. + + * include/OpenIPMI/ipmi_conn.h: Added a statistics interface. + +2005-02-23 Tariq Shureih , Corey Minyard + + * lib/entity.c: Added a physical slot number attribute for + entities, useful for ATCA, CTCA, PICMG2.6, etc. + * include/OpenIPMI/ipmiif.h.in: ditto + * include/OpenIPMI/internal/ipmi_entity.h: ditto + * cmdlang/cmd_entity.c, man/ipmi_cmdlang.7: ditto + * lib/oem_atca.c: ditto + * lib/oem_motorola_mxp.c: ditto + * swig/OpenIPMI.i: ditto + + * lib/entity.c: Fixed an ordering problem were if the FRU becomes + present before its entity data comes in, still fetch the FRU info. + +2005-02-18 Corey Minyard + + * cmdlang/cmd_entity.c: Add an "entity tree" command to dump + the list of entities in a tree structure. + + * lib/fru.c: Add a new error to handle auto-resizing of FRU + fetches with. + +2005-02-11 Corey Minyard + + * lib/ipmi_utils.c, include/OpenIPMI/ipmi_addr.h: Add an address + comparison that does not use the LUN as part of the comparison. + + * lib/domain.c: Modify finding MCs to not use the LUN, since there + may be multiple LUNs on an MC. + + * lib/oem_atca.c: In the Intel SDR fixups, added entity + containment records for all the entities found in the SDRs. + + * lib/sel.c: Fixed problems with timestamp handling. + + * lib/mc.c: Fixed an error/shutdown race with timer info. + +2005-02-08 Corey Minyard + + * lib/entity.c: Fixed some problems with the use of qsort and the + sorting and comparing of device locator records and entity + association records. + + * glib/Makefile.am: Changed the name of a field to be glib, not + posix. + + * glib/glib_os_hnd.c: Clear out the glib info so the gdbmf will be + NULL at startup. + + * lib/domain.c: Added a general domains_initialized function to + know if the domain lock is valid. This is because some things can + try to do a ipmi_domain_pointer_cb() after the domains have been + shut down. + + * lib/sdr.c: Only store the SDRs in the database if we have a + valid key for the MC. + + * swig/OpenIPMI.i: Initialize the glib OS handler in the right + order. + + * utils/ipmi_malloc.c: Don't free the memory in the alloced list + when shutting down. It may still be in use. + +2005-02-02 Corey Minyard + + * include/OpenIPMI/os_handler.h, lib/ipmi.c: Added an interface to + protect users that have created their own OS handler from + additions to the os handler data structure. + + * include/OpenIPMI/os_handler.h, lib/sdr.c: Added a non-blocking + mode to the database. + + * configure.in: Added gdbm tests. + + * cmdlang/os_debug.c, cmdlang/Makefile.am: Added gdbm support. + * glib/glib_os_hnd.c, glib/Makefile.am: ditto + * unix/posix_os_hnd.c, unix/posix_thread_os_hnd.cg, unix/Makefile.am: + ditto + +2005-02-01 Corey Minyard + + * lib/sdr.c: Add support for dynamically resizing SDR fetches if + the system cannot support the size required. This allowed an + increase in the starting size but can support smaller sizes than + were supported. + * lib/fru.c: Ditto, but for FRU data. + + * lib/domain.c: Fixed channel handling to not scan the IPMB if + there is not one from the channel info command. This may cause + some broken 1.5 systems (that do not implement the get channel + info command properly) to not work, but that's too bad, they are + broken. Systems without IPMB will work much better with this + change. + + * lib/oem_atca.c: Force instance to be 0x60 on all main units that + came in as entity id 7 or 0. + + * include/OpenIPMI/os_handler.h: Added a database interface. + NOTE: This change is not binary backwards compatible if you have + created your own OS handler. + + * lib/sdr.h: Added support for storing and retrieving SDR + data in the database for client-side caching. + +2005-01-30 Corey Minyard + + * lib/lanparm.c: Allow zero-length parm responses to represent + optional unsupported parms. + +2005-01-27 Corey Minyard + + * configure.in: Changes "==" to "=". + + * swig/perl/Makefile.am: Added PERLLIB to pull the modules from + the right place. + + * lib/ipmi_lan.c: Only use the get_msg_tag() method on payloads if + the session id is zero. + + * include/OpenIPMI/ipmi_lan.h: Improve payload docs. + +2005-01-25 Corey Minyard + + * lib/event.c: Fixed a problem with the data length when getting + data. + + * configure.in, lanserv/Makefile.am, sample/Makefile.am: Added + popt library detection and overriding. + +2005-01-23 Corey Minyard + + * lib/sel.c: Fixed a bug where the SEL lock was being held in + the SEL fetch done callback. + + * include/OpenIPMI/ipmi_mc.h, include/OpenIPMI/ipmiif.h.in: Added + routines to get the GUID for the system and for each MC. + * include/OpenIPMI/internal/ipmi_mc.h: ditto (added set routine) + * lib/mc.c: ditto + * lib/domain.c: ditto + * cmdlang/cmd_mc.c: ditto + * cmdlang/cmd_domain.c: ditto + * swig/OpenIPMI.i: ditto + * man/ipmi_cmdlang.7: ditto + + * lib/ipmi_lan.c, lib/rakp.c: Fixed some broken stuff caused by + the last changes to the LAN code. + +2005-01-21 Corey Minyard + + * include/OpenIPMI/ipmi_lan.h: Added a function to payloads to get + the message tag for a message, and added a message tag parm to + starting an authentication session. This is primarily to allow + the LAN code to set the message tags and get them. + * lib/rakp.c: ditto + * lib/ipmi_lan.c: ditto + + * lib/ipmi_lan.c: Modified the LAN code to allow the same socket + to be reused for multiple LAN connections. This should increase + scalability by a large amount. + + * lanserv/lanserv_emu.c: Added an option to override the port + number. + +2005-01-20 Corey Minyard + + * configure.in: Allow the SNMP and OpenSSL libraries and compile + flags to be hard-coded on the configure command line. + + * lib/domain.c: Fixed a problem with the type in a log. + + * lib/lanparm.c: Fixed some problem handling the newly added + parms not being there. + +2005-01-19 Corey Minyard + + * include/OpenIPMI/ipmi_lanparm.h: Added the RMCP+ and VLAN + lanparms. + * lib/lanparm.c: ditto + * cmdlang/cmd_lanparm.c: ditto + * swig/perl/test_lanparm: ditto + * include/OpenIPMI/lanserv.h: ditto + * lanserv/lanserv_ipmi.c: ditto + + * lanserv/lanserv_ipmi.c: Fix a bug where the dummy session wasn't + being zeroed when handling temporary session messages. + + * lib/ipmi_lan.c: Use the right size when comparing the bmc_key in + the options. Also remove some debugging cruft. + +2005-01-17 Corey Minyard + + * include/OpenIPMI/ipmi_mc.h, include/OpenIPMI/internal/ipmi_mc.h: + Moved ipmi_mc_get_address, ipmi_mc_get_channel, and + ipmi_mc_get_ipmi_address from the private to the public + interfaces. + + * lib/sel.c: Added a comment on why the SEL fetch is aborted after + so many reservation losses in the fetch. + +2005-01-14 Corey Minyard + + * lib/ipmi_lan.c: Fixed some race conditions between reuse of LAN + connections and destruction of LAN connections. + + * include/OpenIPMI/ipmi_conn.h: Reworked the registering for event + handlers to use a locked list interface. Great reduction in code + size and increase in reliability. + * lib/ipmi_lan.c: ditto + * lib/ipmi_smi.c: ditto + * lib/domain.c: ditto + * sample/ipmicmd.c: ditto + + * include/OpenIPMI/ipmiif.h.in: Added a domain option to not + activate the interfaces. + * include/OpenIPMI/internal/ipmi_domain.c: ditto + * lib/domain.c: ditto + * lib/ipmi.c: ditto + +2005-01-13 Corey Minyard + + * include/OpenIPMI/ipmiif.h, lib/entity.c: Undeprecated the + hot-swap requester and indicator command, since HPI provides them. + I still think it's a bad idea to use them, though. + + * include/OpenIPMI/ipmi_mc.h, include/OpenIPMI/internal/ipmi_mc.h: + Moved the ipmi_mc_del_event() function to the public interface. + + * lib/sel.c: Clear the SEL if the SEL is empty and the overflow + flag is set. This appears the clear the overflow flag (at least + on some systems) and is safe to do. + + * lib/sel.c: Fixed a bug where if the reservation was lost + fetching a SEL, it would not fetch anything from the SEL until a + new event was added. + + * lib/ipmi_lan.c: Modified the list of LAN addresses to be two + hash tables, one indexed by connection and one indexed by IP + address (all IP addresses go in). + + * include/OpenIPMI/ipmi_conn.h: Changed the connection and IPMB + reporting to use an add/remove instead of a set for the handler. + * lib/ipmi_smi.c: ditto + * lib/ipmi_lan.c: ditto + * lib/domain.c: ditto + + * lib/oem_motorola_mxp_intf.c, lib/ipmi.c: Removed old MXP + interface support (it shouldn't be needed any more and maintenance + was getting to be a pain). + + * lib/ipmi_lan.c: Added connection reuse. If a user makes a + connection to a system and the same connection already exists + (same parms) then it will reuse the old connection. + + * lib/entity.c: Found a problem with disconnect/reconnect; it was + claiming a lock recursively in once case. + +2005-01-12 Corey Minyard + + * configure.in: Add support for openssl. + * cmdlang/Makefile.am: ditto + * cmdlang/Makefile.am: ditto + * lib/Makefile.am: ditto + * sample/Makefile.am: ditto + + * cmdlang/cmd_domain.c: Added support for the new RMCP+ LAN parms. + + * doc/IPMI.ltx: Minor cleanups. + + * include/OpenIPMI/ipmi_addr.h: Added a concept of an RMCP+ + address. This allows payloads to be routed using the normal + addressing mechanisms. + + * include/OpenIPMI/ipmi_auth.h: Added RMCP+ auth and expanded the + user password to 20 bytes. + + * include/OpenIPMI/ipmi_conn.h: Modified ipmi_msgi_t so that it + can take external data as well as the internal data and knows how + to free it. + * lib/domain.c: ditto + * lib/ipmi.c: ditto + * lib/ipmi_lan.c: ditto + * lib/oem_atca_conn.c: ditto + * lib/oem_force_conn.c: ditto + * lib/oem_motorola_mxp.c: ditto + * lib/oem_motorola_mxp_intf.c: ditto + * sample/ipmicmd.c: ditto + + * lib/strings.c: Adde RMCP+ auth strings. + + * include/OpenIPMI/ipmi_conn.h: Added the concept of asynchronous + events so that payloads can report asyncronous data coming up. + * lib/ipmi_smi.c: ditto + + * include/OpenIPMI/ipmi_conn.h, lib/conn.c: Added connection + attributes so that payloads have a place to store data. + * lib/ipmi_lan.c: Ditto + * lib/ipmi_smi.c: Ditto + * lib/oem_motorola_mxp_intf.c: Ditto + + * include/OpenIPMI/ipmi_err.h: Added RMCP+ errors. + + * include/OpenIPMI/ipmi_lan.h: Added support for RMCP+ payloads, + authentication, integrity, and confidentiality handling. This + includes new options for lan connection and the ability to + register the various algorithms and payload types. + + * include/OpenIPMI/md5.h, utils/md5.c: Added a way to handle + multiple-length passwords with MD5. + + * lib/ipmi_payload.c: Moved IPMI LAN data formatting into a + separate file. + + * lib/Makefile.am, lib/ipmi.c: Added support for RMCP+ algorithms. + * lib/aes_cbc.c: ditto + * lib/hmac.c: ditto + * lib/md5.c: ditto + * lib/rakp.c: ditto + + * lib/ipmi.c: Add support for the new RMCP+ data options. + + * lib/ipmi_lan.c: Added RMCP+ support. + + * include/OpenIPMI/lanserv.h: Added support for RMCP+ data. + + * lanserv/Makefile.am: Added support for OpenSSL. + + * lanserv/lanserv.c: Fixed the random data routines to work right. + * lanserv/lanserv_emu.c: ditto. + + * lanserv/lanserv_config.c: Added support for some RMCP+ data. + + * lanserv/lanserv_ipmi.c: Added support for RMCP+. + + * man/ipmi_cmdlang.7: Added info about the RMCP+ LAN parms. + + * configure.in: Update to version 2.0.0. + +2005-01-11 Corey Minyard + + * include/OpenIPMI/internal/Makefile.am: Fixed so it installs in + the right place. + +2005-01-04 Corey Minyard + + * lib/entity.c: Added a warning log if the FRU fetch request + failed. + + * include/OpenIPMI/ipmi_users.h, lib/mc.c, swig/OpenIPMI.i: Added + the ability to get the other information from the get user access + command. + * swig/perl/test_chan: Adjusted for the previous changes. + * cmdlang/cmd_mc.c, man/ipmi_cmdlang.7: ditto + + * doc/IPMI.ltx: Added info for user and channel management. + +2005-01-03 Corey Minyard + + * Include/OpenIPMI/ipmi_pet.h, lib/pet.c: Added a refcount to the + PET external interface and fixed some problems with PET handling. + + * swig/OpenIPMI.i: Added PET support. + + * swig/perl/test_pet, swig/perl/Makefile.am: Added PET perl tests. + + * glib/glib_os_hnd.c: Fixed the perform_one_op function to + time (sort of) properly. + + * swig/perl/test_chan: Fix some problems with the tests. + + * lanserv/lanserv_ipmi.c: Fix bugs handling channel privilege + limits. + + * swig/perl/test_pef, swig/perl/test_lanparm: Minor perl cleanups. + + * ui/ui.c: Fixed a parm messed up by an interface change. + + * lib/entity.c: Fixed handling of FRU info from devices, we need + to look at the pending as well as the current info to know if an + entity already has a FRU device. + + * configure.in: Move to version 1.4.7. + +2005-01-01 Corey Minyard + + * swig/perl/test_pef: Add PEF tests. + + * lanserv/lanserv_ipmi.c: Fixed a few problems with PEF handling. + + * lib/pef.c: Fixed some problems with PEF handling. + +2004-12-31 Corey Minyard + + * include/OpenIPMI/lanserv.h, lanserv/lanserv_ipmi.c: Added PEF + config support. + + * cmdlang/cmd_pef.c: Fixed some printing problems. + + * lib/pef.c: Fixed a problem getting the last alert string and the + guid data and a few data format problems. + +2004-12-30 Corey Minyard + + * include/OpenIPMI/ipmi_strings.h: Converted return strings to + be const because the user can't change them. + * include/OpenIPMI/ipmiif.h.in: ditto + * include/OpenIPMI/ipmi_auth.h: ditto + * include/OpenIPMI/ipmi_bits.h: ditto + * include/OpenIPMI/ipmi_cmdlang.h: ditto + * include/OpenIPMI/internal/ipmi_sensor.h: ditto + * cmdlang/cmd_sensor.c: ditto + * cmdlang/cmdlang.c: ditto + * cmdlang/ipmish.c: ditto + * lib/control.c: ditto + * lib/entity.c: ditto + * lib/oem_motorola_mxp.c: ditto + * lib/sensor.c: ditto + * lib/strings.c: ditto + * sample/sample3.c: ditto + * swig/OpenIPMI.i: ditto + + * include/OpenIPMI/ipmi_lanparm.h, lib/lanparm.c: Added a way to + get a config parm type from the parm number and added refcount + stuff for perl. + + * swig/OpenIPMI.i: Finished adding lanparm stuff. + + * lib/lanparm.c: Changes to the last alert destintation can + be fetched. + + * swig/perl/test_lanparm: Added lanparm tests. + + * include/OpenIPMI/ipmi_pef.h, lib/pef.c: Added a way to get data + by parm number and added refcount stuff for perl. + + * swig/OpenIPMI.i: Added support for PEF. + +2004-12-29 Corey Minyard + + * ui/ui.c: Added printing of if the sensor/control should be + ignored if the entity is not present. + + * lib/control.c: Default nonstandard controls to be ignored if the + entity is not present. + + * lib/sensor.c: Default nonstandard sensors to be ignored if the + entity is not present. + + * lib/entity.c: Use controls for presence detection, and clean + up the presence code to properly handle presence sensor removal. + Also modify the presence detection to be 100% compliant with + the spec, including messaging FRU devices as the last step. + + * lib/chassis.c: Remove the dummy presence sensor since the + controls can be used for presence now. + + * lib/oem_motorola_mxp.c, lib/oem_atca.c: Cleanup up all the + ignore if no entity setup for all the sensors and controls. + + * lib/fru.c: Fix a problem with handling certain invalid + FRUs. + + * lib/entity.c: Use the proper function to destroy the + entity info. + + * swig/OpenIPMI.i: Fix a compile problem. + +2004-12-28 Corey Minyard + + * include/OpenIPMI/lanparm.h, lanparm/lanparm_ipmi.c: Added + support for lanparm configuration parameters. + + * lib/entity.c: Fixed presence detection to not use sensors for + entity presence that are there if the entity is not present. + + * swig/perl/test_atca_entities: Added a little test script for + ATCA entities. + + * swig/OpenIPMI.i: Added some missing deref callbacks. + + * swig/OpenIPMI.i: Added support for lanparm configuration. + +2004-12-26 Corey Minyard + + * lib/mc.c: Invert the values from get/set channel access so they + are logical for the user. + + * swig/OpenIPMI.i: Added user/channel access. + + * swig/perl/test_fru: Fixed a timing problem. + + * swig/perl/test_chan, swig/perl/Makefile.am: Added channel/user + testing. + + * swig/perl/OpenIPMI_perl.c: Added a way to pass an array of + objects. + + * lanserv/lanserv_ipmi.c: Fixed some minor bugs in channel + handling. + + * include/OpenIPMI/ipmi_lanparm.h, lib/lanparm.c: Added an + interface for getting general data values by index/name. + +2004-12-25 Corey Minyard + + * lib/mc.c: Fixed some minor bugs in user handling. + + * lib/cmd_mc.c: Fixed a missing put and some error strings. + + * include/OpenIPMI/lanserv.h, lanserv/lanserv_ipmi.c: Added + support for all the user bits in the set and get user access + commands. + +2004-12-23 Corey Minyard + + * sample/ipmicmd.c: Removed the ipmi_log() func, it was junk + and caused problems. + + * lib/mc.c, include/OpenIPMI/ipmi_user.h, cmdlang/cmd_mc.c: Fixed + some problems with the user stuff. Added a way to set the + enable/disable of a user (done through the set password command, + for some strange reason). + + * lib/sensor.c: Fix a missing sensor in a callback. + +2004-12-22 Corey Minyard + + * lib/mc.c, include/OpenIPMI/ipmi_mc.h, include/OpenIPMI/ipmi_user.h: + Added handling for users and channel information. + + * lib/cmd_mc.c: converted over to the standard user and channel + handling. + +2004-12-17 Corey Minyard + + * lib/lanparm.c, lib/pef.c, lib/pet.c: Fixed some locking and + refcount problems found with testing. + +2004-12-16 Corey Minyard + + * lib/fru.c: Fixed a problem with FRU area creation, where the + versions where not set properly. + + * lib/ipmi.c: Fixed some last bugs dealing with IPMI strings. + + * swig/OpenIPMI.i: Added handling for properly deleting FRU + information when we are done with it. + + * lib/fru.c: Fixed some race conditions with the new list stuff + and FRU destruction. + + * include/OpenIPMI/ipmi_fru.h, lib/fru.c: Added refcount functions + for keeping track of FRUs. + + * swig/perl/test_fru: Finished up FRU tests. + + * include/OpenIPMI/ipmi_fru.h, lib/fru.c: Added a FRU alloc + function that has the domain in the callback. Converted the + domain pointer in the FRU to a domain id and modified the + function to get the FRU's domain to return the domain id. + + * include/OpenIPMI/internal/ipmi_util.h, lib/fru.c: Modified the + notrack FRU allocater to take the domain pointer + * lib/entity.c: ditto + * lib/domain.c: ditto + + * swig/OpenIPMI.i: Fixed the FRU functions to call the FRU + destructor when the FRU was dereffed. Modified the FRU + alloc and write functions to also supply the domain as the + first parameter. Added debugging setup functions. + + * swig/perl/test_fru, swig/perl/sample: Adjusted for the + previous changes. + + * lib/domain.c: Pass in domain during shutdown clearing of + messages. + + * lib/mc.c: Fixed some problems where the refetch callbacks + were not always being called in certain error situations. + + * lib/domain.c, include/OpenIPMI/internal/ipmi_domain.c: + Modified the domain attributes to be refcount based, since + they could theoretically go away while still in use. + * lib/lanparm.c: ditto + * lib/pef.c: ditto + * lib/pet.c: ditto + * lib/fru.c: ditto + +2004-12-15 Corey Minyard + + * lib/fru.c, include/OpenIPMI/ipmi_fru.c: Fixe the name of the set + multi-record function function. + * cmdlang/cmd_fru.c: ditto + + * swig/OpenIPMI.i: Add functions to set FRU multi-records. + Properly handle undefined values in the other FRU set functions. + + * include/OpenIPMI/internal/ipmi_utils.h, lib/fru.c: Added + internal FRU destroy functions to keep users from destroying + internal FRUs. + * lib/entity.c: ditto + * lib/oem_atca.c: ditto + + * swig/perl/test_fru, swig/perl/Lanserv.pm: More work on tests. + + * lib/ipmi.c, lib/fru.c: Fixed some more string handling problems + that the new testing found. + + * lib/domain.c: Rework error return values to make them a + single consistent set. + * lib/fru.c: ditto + * lib/ipmi.c: ditto + * lib/ipmi_smi.c: ditto + * lib/lanparm.c: ditto + * lib/mc.c: ditto + * lib/oem_atca.c: ditto + * lib/oem_motorola_mxp.c: ditto + * lib/pef.c: ditto + * lib/sdr.c: ditto + * lib/sel.c: ditto + * lib/sensor.c: ditto + * lib/.c: ditto + + * swig/OpenIPMI.i: More work to fix some bugs and add the + error constants used by OpenIPMI. + +2004-12-14 Corey Minyard + + * lib/fru.c: Fixed some bugs with FRU handling. + + * include/OpenIPMI/internal/ipmi_int.h, lib/ipmi.c: FRU data + needed some more info for decoding, handle that. + * lib/fru.c: ditto + * lib/entity.c: ditto + * lib/sensor.c: ditto + * lib/oem_atca.c: ditto + + * include/OpenIPMI/ipmi_fru.h, lib/fru.c: Added functions to + convert between names and FRU field indexes. + + * lanserv/lanserv_emu.c: Added a noecho command to turn off echo. + + * lib/ipmi_smi.c: Return the entry when registering commands + to watch. + + * swig/OpenIPMI.i: Added support for getting multirecords from + the FRU. Fixed some other FRU-related problems. + + * swig/perl/test_fru, swig/perl/Lanserv.pm, swig/perl/Makefile.am: + Started working on some tests. + +2004-12-13 Corey Minyard + + * include/OpenIPMI/internal/locked_list.h, utils/locked_list.h: + Added the ability for the user to use their own lock with locked + lists. This avoids multiple locking in areas that already have + locks. + + * lib/entity.c: Converted over the entity, child, parent, sensor, + and control lists to use the main domain lock as their lock, since + that lock was always claimed anyway. + + * lib/lanparm.c: Fixed a race condition between lanparm iteration + and destruction using the new locked list stuff. + * lib/pet.c: ditto + * lib/pef.c: ditto + * lib/fru.c: ditto + + * lib/entity.c: Fixed some minor locking problems the previous + changed exposed. + + * swig/OpenIPMI.i: Add the FRU writing support to the Perl code. + + * doc/IPMI.ltx: Added documenation for FRU writing. + + * swig/perl/sample: Clean up Perl warnings. + + * include/OpenIPMI/internal/ipmi_entity.c, lib/entity.c: Added a + way for code to force entities to stay around. + + * lib/oem_atca.c: Force the shelf entity to stay around even if + there are no sub-entities. + + * cmdlang/fru_cmd.c: Added multi-record setting. + + * lib/fru.c: Fixed problems writing multi-records. + +2004-12-10 Corey Minyard + + * include/OpenIPMI/internal/ipmi_int.h, lib/ipmi.c: Fixes + to the IPMI string encoding/decoding routines. + * lib/fru.c: ditto + * lib/entity.c: ditto + * lib/oem_atca.c: ditto + * lib/sensor.c: ditto + + * include/OpenIPMI/ipmi_fru.h, lib/fru.c: Added the capability + to modify FRU info and write FRU data back to the FRU. + + * lib/fru.c: Added tracking of FRUs in the system. + + * include/OpenIPMI/internal/ipmi_utils.c, lib/fru.c: Added an + interface for FRUs so internal stuff can allocate untracked FRU + information. This way, user's can't delete internal FRU data. + * lib/entity.c: ditto + * lib/oem_atca.c: ditto + * lib/sensor.c: ditto + + * cmdlang/cmd_fru.c, cmdlang/cmdlang.c, cmdlang/Makefile: Added + FRU handling routines: + * include/OpenIPMI/ipmi_cmdlang.h: ditto + * man/ipmi_cmdlang.7: ditto + + * cmdlang/cmd_domain.c: Don't deleted FRUs after they are fetched. + + * cmdlang/ipmish.c: Fix unicode handling. + + * cmdlang/out_fru.c: Minor FRU data handling updates. + + * lib/domain.c: Minor fixes for attribute handling, make sure + things are cleared out correctly. + +2004-12-07 Corey Minyard + + * include/OpenIPMI/ipmiif.h.in, lib/mc.c, lib/domain.c, lib/ipmi.c: + Added an option to not set the SEL time. + + * include/OpenIPMI/ipmi_mc.h, include/OpenIPMI/internal/ipmi_mc.h: + Moved the ipmi_mc_set_current_sel_time() from the internal to + the user-visible interface. + + * cmd_entity.c, man/ipmi_cmdlang.7: Added the id and entity id + string to the entity info. + + * cmd_mc.c: Added a way to set the SEL time. + + * include/OpenIPMI/ipmiif.h.in: Added support for a managed + hot-swap call so the user can know if the entities hot-swap + states can be managed. + * include/OpenIPMI/internal/ipmi_entity.h: ditto + * lib/entity.c: ditto + * lib/oem_atca.c: ditto + * cmdlang/cmd_entity.c: ditto + * man/ipmi_cmdlang.7: ditto + +2004-12-03 Corey Minyard + + * lib/mc.c: Fixed a problem where the startup SEL time was not set + if the target time was ahead of the time on the system. This + would cause old events in the SEL to be reported as new events. + + * lib/oem_atca.c: Reworked the fixups for broken entity ids to + be more general. + +2004-12-02 Corey Minyard + + * lib/ipmi.c: fixed a problem with ipmi_parse_args mishandling + userids. + + * include/OpenIPMI/*.h: Added extern "C" to all the necessary + include files. + +2004-12-01 Corey Minyard + + * lib/entity.c: Ignore sensors for presence if they use the + generic reading type codes. + + * lib/chassis.c: Added a dummy presence sensor for the chassis + entity so it will be reported as present. + +2004-11-27 Corey Minyard + + * include/OpenIPMI/ipmi_lan.h, lib/ipmi_lan.c: Added a new, more + flexible interface for configuring a LAN connection. Hopefully + this is the last one we have to do here, this would be able + to handle anything (especially RMCP+). + + * lib/ipmi.c: Adjusted to use the new LAN connection method. + +2004-11-18 Corey Minyard + + * lib/ipmi_smi.c: Fix the unregister ioctl for the socket interface. + + * configure.in: Fix comments on perlinstall option. + + * configure.in: Allow perl, swig, and glib options to be overriden + to support cross-compilation. + + * configure.in: Move to version 1.4.6. + +2004-11-16 Corey Minyard + + * cmdlang/cmd_mc.c: Added support for the user information + viewing and modification. + + * man/ipmi_cmdlang.7: Added information about the channel + and user commands just added. + +2004-11-15 Corey Minyard + + * include/OpenIPMI/ipmi_auth.h, lib/ipmi_lan.c: Added the + ability to have a "default" auth type that will pick the + best authentication type available. + + * include/OpenIPMI/ipmi_auth.h, lib/strings.c: Added strings + for the auth and privilege values. + + * lib/ipmi.c: Added a new parameter parsing function that should + be easier to use. + + * cmdlang/cmd_domain.c: Added support for a "domain open" + command using the new parameter parsing. + + * cmdlang/cmd_mc.c: Added support for the channel info + and access control commands. + + * cmdlang/cmd_mc.c: Fixed a bug where the MC was not + printed when dumping SEL info. + + * include/OpenIPMI/ipmi_err.h: Fixed a bug in the IPMI_OS_ERR_VAL + macro. + + * lib/ipmi_lan.c: Fixed a bug where a timer might be freed + twice on an error. + +2004-11-10 Corey Minyard + + * cmdlang/ipmish.c: Fixes a problem with the --execute command + line option where only the first and last command would be + executed. + +2004-11-09 Corey Minyard + + * OpenIPMI.spec.in: Changes to compile on Redhat. + + * configure.in: Move to version 1.4.5. + +2004-11-09 Andrew Cress + + * lib/oem_intel.c: Minor fixups for the alarm control. + +2004-11-09 Kevin Gao + + * sample/ipmicmd.c: Don't segv when given bad parms. + +2004-11-05 Corey Minyard + + * configure.in: Another fix to the perl installation dir. + +2004-11-04 Corey Minyard + + * configure.in: Fix perlinstalldir to work. + + * doc/IPMI.ltx: Added some docs on the Perl interface. + + * lib/ipmi.c: Fixed optional SEL handling. + + * lib/ipmi_smi.c: Added missing close_connection_domain callback + initialization. + + * swig/OpenIPMI.i: Fixed initialization to work without glib. + +2004-11-01 Corey Minyard + + * FAQ: Added some useful information + + * OpenIPMI.spec.in: Cleaned up the spec file andmake it correct, + added the new stuff. + + * README: Added Perl info. + + * configure.in, swig/perl/Makefile.am: Improved the Perl detection + support, added handling for Perl module installation. + + * cmdlang/out_fru.c: Fix compiler warning. + + * lib/fru.c: Modified initialization to work with older C + compilers. + + * lib/mc.c, lib/entity.c: Fixed deadlocks. + + * swig/Makefile.am, swig/OpenIPMI.i: Minor build cleanups. + + * swig/OpenIPMI.i: Fixed some problems with handling FRU + data. + + * swig/perl/sample: Fixed some problems with events. + + * configure.in: Move to version 1.4.4 + +2004-10-29 Corey Minyard + + * include/OpenIPMI/ipmi_conn.h: Added another connection close + handler that has a callback. This way, the domain code can know + when the connection is really closed. There were race conditions + at shutdowns that this fixes. + * lib/ipmi_lan.c: ditto + * lib/ipmi_smi.c: ditto + * lib/oem_motorola_mxp_intf.c: ditto + * lib/domain.c: ditto + + * lib/control.c, lib/sensor.c: Fixed some shutdown ordering + problems. + + * lib/oem_atca.c: Don't clean up the MC if it has already been + destroyed. + + * swig/OpenIPMI.i, swig/perl/OpenIPMI.h, swig/perl/OpenIPMI_perl.c: + Added a perl interface for OpenIPMI. + * swig/perl/Makefile: ditto + * swig/perl/sample: ditto + * swig/perl/ipmi_powerctl: ditto + +2004-10-27 Corey Minyard + + * lib/ipmi_lan.c: Fixed race conditions handling sequence numbers + and connection handling. + + * include/OpenIPMI/ipmiif.h.in: Added a comment saying that a lock + is held in connection change delivery. + + * lib/domain.c: Added a comment saying that locks are not + necessary to sequence event delivery. + + * cmdlang/cmd_domain.c: Fix docs on "domain new". + + * lib/fru.c, include/OpenIPMI/ipmi_fru.h: Added an interface to + make it possible to get FRU data in a more generic way. + + * cmdlang/out_fru.c, man/ipmi_cmdlang.7: Converted over to the new + generic FRU interface and changed the output format some. + +2004-10-26 Corey Minyard + + * include/OpenIPMI/ipmiif.h.in, lib/sensor.c: Renamed + ipmi_discrete_event_readable to ipmi_sensor_discrete_event_readable. + * lib/entity.c: ditto + * cmdlang/cmd_sensor.c: ditto + +2004-10-24 Corey Minyard + + * include/OpenIPMI/ipmiif.h.in, lib/entity.c: Deprectated the + ability to directly handle the hot-swap indicators and requesters. + In hindsight, this seems like a bad idea. This should be under + the control of the hot-swap state machine. + +2004-10-22 Corey Minyard + + * lib/ipmi_lan.c: Fix problems with connection failure during + startup of the connection. This fixes problems with the + connections getting stuck and never coming up. + + * unix/posix_os_hnd.c: Fixed a problem with the return value of + getting the random data. + * unix/posix_thread_os_hnd.c: ditto + * glib/glib_os_hnd.c: ditto + * cmdlang/os_debug.c: ditto + * ui/ui_os.c: ditto + + * lib/ipmi_lan.c: Only report the connection whose state changed + on a connection up failure/success. + + * cmdlang/ipmi_sh.c, man/ipmish.1: Added the ability to turn off + the redisplay of the command line on incoming events. + +2004-10-20 Corey Minyard + + * Makefile.am: Added glib OS handler. + * configure.in: ditto + * glib/Makefile.am: ditto + * glib/glib_os_hnd.c: ditto + + * cmdlang/cmd_domain.c, include/OpenIPMI/ipmi_cmdlang.h: Remove + selector stuff from cmdlang. + * cmdlang/ipmish.c: ditto + + * cmdlang/os_debug.c: Removed rwlocks from OpenIPMI. + * include/OpenIPMI/ipmi_conn.h: ditto + * include/OpenIPMI/os_handler.h: ditto + * include/OpenIPMI/internal/ipmi_int.h: ditto + * lib/conn.c: ditto + * lib/ipmi.c: ditto + * lib/ipmi_lan.c: ditto + * lib/ipmi_smi.c: ditto + * lib/oem_motorola_mxp_intf.c: ditto + * lib/sdr.c: ditto + * unix/posix_thread_os_hnd.c: ditto + * include/OpenIPMI/ipmi_glib.h: ditto + + * ui/ui.c: Add internal MC include file. + + * cmdlang/Makefile.am: Work on adding glib support. + * glib/Makefile.am: ditto + * include/OpenIPMI/Makefile.am: ditto + * cmdlang/ipmish.c: ditto + + * cmdlang/os_debug.c: Rework locking to not allow recursive locks, + and fix tons of problems with the locking. + * glib/glib_os_hnd.c: ditto + * lib/domain.c: ditto + * lib/entity.c: ditto + * lib/lanparm.c: ditto + * lib/mc.c: ditto + * lib/pef.c: ditto + * lib/sdr.c: ditto + * lib/sel.c: ditto + * lib/sensor.c: ditto + +2004-10-19 Corey Minyard + + * cmdlang/cmd_conn.c: Renamed IPMI_MAX_DOMAIN_NAME_LEN to + IPMI_DOMAIN_NAME LEN to make it consistent with the other defines. + * cmdlang/cmd_domain.c: ditto + * cmdlang/cmd_entity.c: ditto + * cmdlang/cmd_lanparm.c: ditto + * cmdlang/cmd_mc.c: ditto + * cmdlang/cmd_pef.c: ditto + * cmdlang/cmd_pet.c: ditto + * cmdlang/cmd_sel.c: ditto + * cmdlang/cmdlang.c: ditto + * include/OpenIPMI/ipmi_mc.h: ditto + * include/OpenIPMI/ipmiif.h.in: ditto + * lib/domain.c: ditto + * lib/fru.c: ditto + * lib/ipmi.c: ditto + * lib/mc.c: ditto + * lib/sel.c: ditto + * ui/ui.c: ditto + + +2004-10-18 Corey Minyard + + * Practically_everything: More work on the include files, moved + the internal/OEM include files to an "internal" directory, more + restructure to make thing easier to use and make more clean + definitions of what is and is not supported. + + This means that if you were naughty and used internal interfaces, + you will have to change your code. + + * cmdlang/cmd_mc.c, cmdlang/cmd_domain.c, man/ipmi_cmdlang.7: + Added beter support for the SELs. + + * lib/mc.c: Don't set the SEL time if that would move the time + backwards. + +2004-10-14 Corey Minyard + + * Practically_everything: A restructure of the include files + so the ipmiif.h is really the only thing you need to include + to do pretty much everything (except for the helper things like + pefs, lanparm, pets, etc.). There should no longer be any need + for external user programs to use ipmi_domain.h, ipmi_mc.h, + or things like that. + +2004-10-14 Corey Minyard + + * include/OpenIPMI/ipmiif.h.in, lib/strings.c, lib/sensor.c: Added + sensor direction from the 2.0 spec. + + * cmdlang/cmd_sensor.c, man/ipmi_cmdlang.7: Added direction + output. + + * include/OpenIPMI/ipmi_bits.h, lib/strings.c: Added some more + entity IDs that are new in the 2.0 spec. + + * lib/sensor.c: Added type 3 (event only) sensor support. + + * include/OpenIPMI/ipmi_bits.h, lib/strings.c, lanserv/priv_table.c: + Added commands from the 2.0 spec. + + * include/OpenIPMI/ipmi_bits.h, lib/strings.c: The conversion code + for commands, netfns, and completion codes was using static + buffers. Convert to using passed-in buffers so it is reentrant. + * include/OpenIPMI/ipmi_err.h: ditto + * lib/ipmi_lan.c: ditto + * lib/ipmi_smi.c: ditto + + +2004-10-12 Corey Minyard + + * lib/entity.c: Fixed some race conditions with entity creation + and deletion. The changes make sure that if an entity is deleted + and re-added at about the same time, the operations occur in the + right order. + + * lib/entity.c: Modified the timers to handle destruction more + gracefully so the entity doesn't have to hang around until the + timers go off. + + * lib/sensor.c: Report bad SDRs by record id, not the internal + OpenIPMI index. + + * lib/sensor.c: Fix handling of duplicate SDR record detection + to take the MC into account, too. + +2004-10-11 Corey Minyard + + * include/OpenIPMI/ipmi_event.h, lib/event.c: Changed the type + for getting event data to an unsigned char. + + * cmdlang/cmd_mc.c, man/ipmi_cmdlang.7: Added active handler to + know when MCs go active/inactive. Added if the MC is active to + the MC info. + + * cmdlang/cmd_control.c: Fixed an output problem with the + control listing. + + * cmdlang/cmdlang.c: Fixed error output when no object was + selected to work in all cases. + + * cmdlang/ipmish.c: Added output for ipmish-specific commands. + + * lib/oem_intel.c: Attach the alarm control to MC 0x20 and scan + address 0xc0 when certain events are received. + + * cmdlang/cmd_lanparm.c: Fixed a problem with losing lanparm + configs. + + * cmdlang/cmd_pef.c: Fixed a problem with losing pef configs. + + * include/OpenIPMI/ipmi_conn.h: Added a con_type field to the + connection type for the connection code to use to identify itself. + Added a priv_level field so the privilege of the conneciton may be + reported. + + * lib/ipmi_lan.c, lib/ipmi_smi.c: Added the new items to the + connection type. + + * include/OpenIPMI/ipmi_domain.h, lib/domain.c: Added a way to + query the ports of a connection to see if they are up. + + * cmdlang/cmd_conn.c, man/ipmi_cmdlang.7: Added port information + reporting and reporting of if the connection is up. + + * lib/domain.c: Modified setting the "set event receiver" option + to depend on the privilege level, since it requires admin access + to run. + + * include/OpenIPMI/ipmi_int.h: Added a "msg err" debugging flag to + print out when errors occur in messaging. + + * cmdlang/ipmish.c, cmdlang/cmdlang.c, lib/ipmi_lan.c: Added + support for the msg err debugging flag. + +2004-10-10 Corey Minyard + + * man/ipmi_cmdlang.7: Finished this document. + + * cmdlang/cmdlang.c: Renamed the three-character short form + thresholds to be two characters to make them consistant. + + * configure.in: Move to version 1.4.3 + +2004-10-09 Corey Minyard + + * OpenIPMIcmdlang.pc.in, Makefile.am: Added file for the new + cmdlang library. + + * lib/strings.c, cmdlang/cmd_entity.c, cmd/cmdlang.c: Fixed some + minor formatting things. + + * cmdlang/cmd_sensor.c: Added number output for sensor types, + event readings, and units. + + * man/ipmi_cmdlang.7: Lots of work adding docs. More formatting + work still to do. + +2004-10-08 Corey Minyard + + * doc/IPMI.ltx: Documentation cleanup + + * doc/OpenIPMI.texi: Removed old docs. + + * doc/Makefile.am: Removed old docs and added generation of the + LaTeX documentation. + + * sample/sample.c: Cut the length of a line so it came out nicely + on the docs. + + * lib/domain.c: Cleaned up log output. + * lib/entity.c: ditto + * lib/ipmi.c: ditto + * lib/ipmi_lan.c: ditto + * lib/ipmi_smi.c: ditto + + * cmdlang/*, include/OpenIPMI/ipmi_cmdlang.h: Added the new and + improved command language. + + * lib/control.c: Removed lock check from ipmi_control_get_mc() + since it is needed to check the lock. + + * lib/domain.c: Fixed a lock problem in the attributes. + + * lib/entity.c: Make sure the MC is locked when iterating controls. + + * lib/lanparm.c: Fixed a lock problem. + + * lib/pef.c: Fixed a lock problem. + + * lib/sensor.c: Zero the data used when fetching event enables. + + * man/ipmish.1: Added man page. + + * man/ipmi_cmdlang.7: Started man page. + +2004-10-07 Corey Minyard + + * lib/domain.c: Fixes some problems found by a static analysis + tool. + * lib/mc.c: ditto + * lib/entity.c: ditto + * lib/control.c: ditto + * lib/sensor.c: ditto + * lib/oem_atca.c: ditto + * lib/lanparm.c: ditto + * lib/pef.c: ditto + * lib/pet.c: ditto + * lib/ipmi_utils.c: ditto + * lib/sdr.c: ditto + * lib/oem_motorola_mxp.c: ditto + * lib/strings.c: ditto + + * include/OpenIPMI/ipmi_pef.h, lib/pef.c: Added a consistent + presentation of the GUID. + + * include/OpenIPMI/ipmi_bits.h, lib/strings.c: Added fatal + error and gram unit types. + + * lib/sensor.c: Fixed sensor reporting order so locks are + properly held. + + * lib/oem_atca.c: Fixed some problems with holding the proper + refcounts on object during callbacks. + + * lib/oem_intel.c: Fixed some problems with holding the proper + refcounts on object during callbacks. + + * lib/entity.c: Fixed a race condition with the try count + for presence detection. + + * lib/domain.c: Fixed race conditions dealing with callbacks. + + * include/OpenIPMI/ipmi_sensor.h, lib/sensor.c: Added a way + to get a sensor's domain. + + * include/OpenIPMI/ipmiif.h.in: Added support to the open domain + call for detecting when the domain has finished all initial + operations. + * include/OpenIPMI/ipmi_domain.h: ditto + * lib/domain.c: ditto + * lib/entity.c: ditto + * lib/mc.c: ditto + + * ui/ui.c: Adjusted for the change to open domain. + * ui/basic_ui.c: ditto + * sample/sample.c: ditto + * sample/sample2.c: ditto + * sample/sample3.c: ditto + + * include/OpenIPMI/ipmiif.h.in, lib/domain.c: Deprecated + ipmi_close_connection() and added ipmi_domain_close() in its + place. + + * ui/ui.c: Adjusted for the change to ipmi_close_connection(). + * sample/sample.c: ditto + * sample/sample2.c: ditto + * sample/sample3.c: ditto + +2004-10-06 Corey Minyard + + * include/OpenIPMI/ipmi_domain.h, lib/domain.c: Added an anonymous + attribute that allows external code to tie data into the domain + without the domain having direct knowledge of them. + + * lib/pet.c: Converted the PET list to be per domain. + + * include/OpenIPMI/ipmi_lanparm.h, lib/lanparm.c: Rework of the + lanparm code to keep track of the lanparms that have been + allocated, be able to list them, etc. + + * include/OpenIPMI/ipmi_pef.h, lib/pef.c: Rework of the pef code + to keep track of the lanparms that have been allocated, be able to + list them, etc. + + * lib/pef.c, lib/lanparm.c: Fix locking behaviour to work. + +2004-10-05 Corey Minyard + + * include/OpenIPMI/ipmiif.h.in: Renamed a bunch of the sensor + functions and types to make their names more consistent I hope + this is the last big rename effort for 1.4. + * include/OpenIPMI/ipmi_sensor.h: ditto + * lib/entity.c: ditto + * lib/oem_atca.c: ditto + * lib/oem_motorola_mxp.c: ditto + * lib/sensor.c: ditto + * sample/sample3.c: ditto + * ui/ui.c: ditto + + * lanserv/emu.c, lanserv/emu.h, lanserv/emu_cmd.c: Fixed problems + with SEL handling. + + * lib/mc.c, lib/sel.c, lib/event.c: Fixed some problem with + handling errors from SEL deletes. + + * unix/posix_thread_os_hnd.c: Add a missing return. + +2004-10-04 Corey Minyard + + * include/OpenIPMI/ipmi_control.h, lib/control.c: Add the ability + to check the local control capability of an LED. + * include/OpenIPMI/ipmiif.h.in: ditto + * lib/oem_atca.c: ditto + + * lib/control.c: Add missing ipmi_control_get_id_type() function. + + * lib/oem_atca.c: Fixed color reporting to report black when + the on time is 0. + + * lib/domain.c: Minor changes to domain startup reporting so + things come in the right order. + + * lanserv/emu.c: Fixed local control support to use the right bit. + +2004-10-02 Corey Minyard + + * include/OpenIPMI/ipmiif.h.in, include/OpenIPMI/ipmi_domain.h: + Added support for some option for enabling/disabling various + automatic scanning and fetching operations. + * lib/domain.c: ditto + * lib/mc.c: ditto + * lib/entity.c: ditto + +2004-10-01 Corey Minyard + + * lib/domain.c, include/OpenIPMI/ipmiif.h.in: Add support for a + global domain change handler to report addition and removal of + domains. + + * lib/pet.c: Removed an extraneous mc put, cleaned up close + handling to be done in the proper order. + +2004-09-25 Chetan Hiremath + + * lib/ipmi_smi.c: Use the proper address on received commands and + async events. + +2004-09-23 Corey Minyard + + * include/OpenIPMI/ipmi_pet.h, lib/pet.c: Modified the PETs to be + refcount based, use locked lists, and have all the information + about them available. + +2004-09-17 Corey Minyard + + * include/OpenIPMI/ipmiif.h.in, lib/fru.c: Modified the FRU length + returned to include the NIL character for ASCII strings. + + * include/OpenIPMI/ipmiif.h.in, lib/fru.c: Added a way to get the + domain from the fru type. + +2004-09-13 Corey Minyard + + * FAQ: Added some information about the driver. + +2004-09-11 Corey Minyard + + * lib/domain, include/OpenIPMI/ipmiif.h.in: Added options + to the ipmi_open_domain call to allow things to be done in + the future (like turn off certain functions, etc.). + * ui/ui.c, ui/basic_ui.c: Adjust for previous change + * sample/sample.c, sample/sample2.s, sample/sample3.c: ditto + +2004-09-09 Corey Minyard + + * lib/mc.c: Return the proper callback data for the sel_reread + function. + +2004-09-08 Corey Minyard + + * utils/ipmi_malloc.c, include/OpenIPMI/ipmi_malloc.h: Added + an ipmi_strndup() function. + +2004-09-07 Corey Minyard + + * lib/domain.c, include/OpenIPMI/ipmiif.h.in: Added a list of + domains and a way to iterate them. + + * lib/domain.c, include/OpenIPMI/ipmiif.h.in: Reworked the + naming code to make thing a lot more sane and consistent. + * lib/mc.c, include/OpenIPMI/ipmi_mc.h: ditto + * lib/entity.c: ditto + * lib/sensor.c: ditto + * lib/control.c: ditto + + * sample/sample.c: Add domain name for above changes. + * sample/sample2.c: ditto + * sample/sample3.c: ditto + * ui/basic_ui.c, ui/ui.c: ditto + + * lib/ipmi.c: Added a prototype for ipmi_malloc_init(). + +2004-09-02 Corey Minyard + + * ui/ui.c: Print active information about MCs when reported. + + * utils/selector.c, utils/heap.c, utils/test_heap.c, utils/Makefile.am: + Moved the selector code into the unix directory, where it really + belonged. + * unix/selector.c, unix/heap.c, unix/test_heap.c, unix/Makefile.am: + New location + + * include/OpenIPMI/os_handler.h: Added memory allocation into + the os handlers. Lots of things had to change. + * utils/ipmi_mem_alloc.c: ditto. + * ui/os_hnd.c: ditto + * unix/posix_os_hnd.c: ditto + * unix/posix_thread_os_hnd.c: ditto + * lib/ipmi.c: Add mem alloc initialization + + * unix/selector.c: Converted over to using "malloc" instead of + ipmi_mem_alloc() to avoid startup race conditions. This code is + now unix-specific, so that should be fine. + + * unix/selector.c, include/OpenIPMI/ipmi_posix.h: Reworked the + selector code to directly use POSIX locks. + * unix/posix_os_hnd.c: ditto + * unix/posix_thread_os_hnd.c: ditto + + * ui/ui.c: Reworked initialization because of the mem alloc + changes. + + * ui/basic_ui.c, ui/Makefile.am: Have to link with + libOpenIPMIposix now to get the selector code. + + * utils/ipmi_mem_alloc.c: Fixed a bug handling the head and + tail elements of the debug malloc list. + + * sample/sample2.c, sample/sample3.c: Fixed a few small problems + in the examples. + + * configure.in: Move to version 1.4.2 + + * lib/ipmi_lan.c: Fixed a problem where the wrong LUN was being + looked at in LAN reponses. + +2004-09-01 Corey Minyard + + * lib/chassis.c: Fixed a problem where the wrong error was being + passed to a callback. + + * lib/mc.c: Cleaned up the logs. + * lib/sel.c: ditto + * lib/oem_force_conn.c: ditto + + * lib/opq.c: Initialize the opq data. + + * lib/oem_atca.c: Fixed problems due to the new refcount code. + Modify the address control numbers to just be assigned + sequentially; you cannot use the IPMB address since multiple + functions may be at the same IPMB. + + * lib/control.c: Fix problems with not unlocking locks in + certain situations. + + * lib/control.c: Add reporting of duplicate control numbers. + + * lib/domain.c: Don't clear the active call list when + reporting updates. + + * lib/domain.c: Remove a redundant set active for MCs. + + * lib/mc.c, include/OpenIPMI/ipmi_mc.h: Remove + _ipmi_mc_clear_active_call(). + + * lib/sensor.c: Fixed problems detecting duplicate sensor + numbers in an SDR array. The new code really works, verses + the old code which didn't work any more. + + * lib/mc.c: Apply pending updated to devid data before installing + a new MC. + +2004-08-23 Corey Minyard + + * lib/oem_motorola_mxp.c: Fixed a problem with SDR support. + +2004-08-20 Corey Minyard + + * lib/oem_intel.c: Fixed some problems with the alarm panel, + modified to add the controls and entities at the right time and + to handle removal of the MC properly. + + * lib/sensor.c, lib/control.c: Added an "add_pending" flag to + sensors and controls so that the sensor or control is not reported + until it has been "put" for the last time. This works like + entities and allows creators of non-standard controls and sensors + to report the entities when they want to report them. + + * lib/entity.c: Make sure the entity add handler is called before + calling the sensor update handlers. + + * lib/chassis.c: Reworked the getting and putting so the + controls are reported properly. + + * doc/IPMI.ltx: Added docs for the Intel alarm panel. + +2004-08-19 Andrew Cress + + * lib/oem_intel.c: Handle different bus ids for alarm panel. + +2004-08-19 Corey Minyard + + * doc/Makefile: Add new documentation. Note that this is LaTex + for now but will probably be switched to docbook. + * doc/IPMI.ltx: ditto + * doc/ipmi.bib: ditto + * BusSystem.dia: ditto + * ManagementController.dia: ditto + * SimpleHotSwap.dia: ditto + * ComplexHotSwap.dia: ditto + * MgmtIF.dia: ditto + * Thresh.dia: ditto + * Hyst.dia: ditto + * ServerSystem.dia: ditto + + * configure.in: Move to version 1.4.1 + +2004-08-16 Corey Minyard + + * include/OpenIPMI/ipmiif.h, include/OpenIPMI/ipmi_controls.c: + Renamed the "setting" part of a transition light to "value" to + avoid confusion with "setting" type lights. + * lib/control.c: ditto + * lib/oem_motorola_mxp.c: ditto + * lib/oem_test.c: ditto + +2004-08-11 Erwan Velu + + * lanserv/lanserv_config.c: Print the line number of errors. + +2004-08-10 Corey Minyard + + * ui/ui.c: Added support for displaying the one-shot reset and + output devices. + +2004-08-06 Corey Minyard + + * lanserv/emu.c: Fixed some problems with handling event + masks. + + * sample/sample3.c: Fixed some bugs so this works correctly. + + * lib/entity.c: Fixed the relative entity strings to subtract + off 0x60 from the instance (per the spec). + + * lib/oem_atca.c: Ignore the floating IPMB address (0x20) for ATCA + functions, since it's really not a physical device but a virtual + device. + + * include/OpenIPMI/ipmiif.h, include/OpenIPMI/ipmi_sensor.h: Move + some user-needed functions into ipmiif.h and do some minor + cleanups. + + * lib/entity.c, lib/control.c, lib/sensor.c: Don't allow + operations on destroyed objects. + +2004-08-04 Corey Minyard + + * include/OpenIPMI/ipmiif.h.in, lib/sensor.c: Added a way + to tell if the threshold is returned by the sensor when the + value is read. + + * include/OpenIPMI/ipmi_bits.h, include/OpenIPMI/ipmiif.h: + Made the various unit value into enums so it is easier to know + what returns what. + * lib/sensor.c: ditto + * lib/strings.c: ditto + +2004-08-03 Corey Minyard + + * include/OpenIPMI/ipmiif.h.in, lib/sensor.c: Added more + consistent functions for checking if threshold and discrete + events are supported. Deprecated old functions. + * lib/entity.c: adjust for above change + * ui/ui.c: ditto + + * sample/sample3.c, sample/Makefile.am: Added a new sample + file to show something about event settings. + +2004-08-02 Corey Minyard + + * include/OpenIPMI/ipmiif.h.in: Renamed some parameters to be more + clear, moved some things around that were in the wrong places. + * include/OpenIPMI/ipmi_sensor.h: ditto + + * lib/entity.c: Added the processor bit presence sensor, since + there is a presence bit for processor sensors. + + * lib/oem_atca.c: Fixed an error log. + +2004-07-29 Corey Minyard + + * lib/domain.c, include/OpenIPMI/domain.h: Added a way to fetch + the main SDRs from a domain. + +2004-07-13 Corey Minyard + + * include/OpenIPMI/ipmi_domain.h: Fixed a misnamed parm. + + * Makefile.am, configure.in, OpenIPMI.spec.in: Added support + for building RPMs for OpenIPMI. + + * bootstrap: Added a helper shell script for starting up a + raw CVS checkout. + + * lib/entity.c: Fix a problem with entity presence detection, + entities were not being detected not-present in some cases + when they went from non-present to present. + +2004-06-28 Corey Minyard + + * lib/domain.c: Fixed a theoretical race condition in fetching + the system SELs. + +2004-06-24 Corey Minyard + + * sample/sample.c: Added event handling for sensors to the sample. + +2004-06-23 Michael McMaster + + * lib/mc.c: Initialize info->err in ipmi_mc_reread_sel(). + +2004-06-23 Corey Minyard + + * include/OpenIPMI/os_handler.h: Add some user functions for + performing operations like freeing hte handler, and waiting for + events to occur. + + * include/OpenIPMI/ipmi_posix.h: Rework to use the standard + functions in the OS handler. + * unix/posix_os_hnd.c: ditto + * unix/posix_thread_os_hnd.c: ditto + * sample/sample.c: ditto + * sample/sample2.c: ditto + + * lib/entity.c: Fixed a problem with always fetching FRU data. + +2004-06-22 Corey Minyard + + * lib/oem_atca.c: Fix a race with deleting an MC. + +2004-06-18 Corey Minyard + + * include/OpenIPMI/ipmiif.h.in, include/OpenIPMI/ipmi_domain.h: + Added a ipmi_domain_get_type() function for determining the type + of domain. This is so things like ATCA domains can be detected. + * lib/domain.c: ditto + + * lib/oem_motorola_mxp.c, lib/oem_atca.c: Added domain type + setting for MXP and ATCA. + + * include/OpenIPMI/ipmiif.h.in, lib/strings.h: Added strings for + the domain type. + + * lib/oem_atca.c: Add setting the entity id string into the entity + fixup callback. + +2004-06-17 Philipp Matthias Hahn + + * man/ipmi_ui.1, man/ipmicmd.1, man/ipmilan.8: Cleanups for the + man pages. + +2004-06-17 Corey Minyard + + * lib/domain.c, lib/mc.c: Don't check the OEM handlers if the MC + is in used, wait until the MC is no longer in use and apply the + pending data update and check OEM handlers then. + + * lib/oem_atca.c: Added a control for getting the address + information of an ATCA FRU. + + * lib/oem_atca.c: Added entity id strings for all ATCA entities + that OpenIPMI deals with. + + * lib/entity.c: Defer reporting an entity add until the entity is + put, so that the entity can be modified by OEM handlers before + they are reported + +2004-06-15 Corey Minyard + + * lib/entity.c: Check for a null event in call_presence_handlers(). + + * unix/posix_os_hnd.c, unix/posix_thread_os_hnd.c: Fixed up some + problems with posix_vlog. + +2004-05-21 Corey Minyard + + * lib/entity.c: Add a callback for fetching FRU information even + if the FRU information is bad. + +2004-05-14 Louis Zhuang + + * lib/oem_intel.c: Added support for the alarm panel on an Intel + server box. + +2004-04-30 Corey Minyard + + * include/OpenIPMI/ipmi_posix.c: Reworked the POSIX os handler to + make it easier to use and add helper code for handling threaded + wakeups. + * unix/posix_os_hnd: ditto + * unix/posix_thread_os_hnd: ditto + + * sample/sample1.c: Reworked for the POSIX os handler changes. + + * sample/sample2.c: Reworked for the POSIX os handler changes, and + made it multi-threaded. + + * doc/OpenIPMI.texi: Reworked the docs on locking. + + * lib/sel.c, include/OpenIPMI/ipmi_sel.c: Added a way to get the + number of entries and free bytes in the SEL. + * lib/mc.c, include/OpenIPMI/ipmi_mc.c: ditto + + * lib/domain.c, lib/mc.c, lib/entities.c: More work on locking, + making sure locks are held in the proper places. + + * lib/domain.c, lib/mc.c, include/OpenIPMI/ipmi_int.h: Rework the + locking on MCs so that the device id data and the active + indications are not changed until no one is using the MC. + + * lib/entity.c: Rework the locking on entities so that the DLR + data does not change until no one is using the entity, and the + changed indications are not reported until the entity is not in + use. Presence is also change to work this way, but it may need + some more thinking. + +2004-04-29 Corey Minyard + + * everything: A massive rework of the internals. Basically, + locking was reworked completely. Now locks are *not* held in user + callbacks. Instead, items in callbacks are usecounted and will + not be destroyed until the usecount goes to zero. All the same + rules apply, there are just no locks held. This should avoid + problems with deadlocks. + + * lib/domain.c, lib/entity.c: Worked on marking deprecated + functions using GCC-specific attributes. + * include/OpenIPMI/ipmi_types.h: ditto + * include/OpenIPMI/ipmi_entity.h: ditto + * include/OpenIPMI/ipmi_domain.h: ditto + + * lib/sel.c: Fixed a bug in the sel get where the info allocated + can go away before the operation returns, but the info is used + after the operation returns. + + * lib/sensor.c: Fix the hysteresis setting to send a message that + is the right size. + +2004-04-15 Corey Minyard + + * lib/oem_intel.c: More work on getting the various Intel servers + supported better. + + * include/OpenIPMI/ipmiif.h.in: Modified the hot-swap state + machine slightly to support the ability to move to activation + requested state from inactive state. + + * include/OpenIPMI/ipmi_entity.h, lib/entity.c: Added the calls + for ipmi_entity_set_activation_requested() to the hot-swap + variables. The normal state machine will not support it. + + * lib/oem_atca.c: Added support for setting the FRU activation + policy with ipmi_entity_set_activation_requested(). + + * configure.in: Move to version 1.3.5 + + * include/OpenIPMI/ipmi_mc.h, lib/mc.c: Added callbacks for + knowing when the MC has finished reading its SDRs and reading the + SEL for the first time. + +2004-04-14 Corey Minyard + + * lib/entity.c: Scan MCs from MCDLRs even if the information is + not used for anything else. + + * doc/OpenIPMI.texi: Add information about callbacks. + + * lib/oem_intel.c, lib/ipmi.c, lib/Makefile.am: Added an Intel + server-specific file for handling special things about Intel's + servers. + + * configure.in: Move to version 1.3.4. + +2004-04-13 Corey Minyard + + * lib/entity.c: Prefer to keep the MCDLR information for an entity + that has FRU information, and don't try any FRU detection work if + the MCDLR has FRU turned off. + + * lib/oem_atca.c: Turn off setting the event reciever for the ATCA + chassis (for now), since it seems to cause all kinds of bad things + to happen. + + * lib/entity.c, lib/sensor.c: Some minor changes to entity + presence detection. + +2004-04-12 Corey Minyard + + * lib/control.c, lib/sensor.c, lib/entity.c: Reworked the internal + naming of these to make them consistent. + + * lib/domain.c: Fixed a nasty bug about MC deletion, basically + don't delete MCs from the domain list while processing, because + they can be the "next" item in the list and corrupt the list + traversal. Add a delayed delete operation. + + * lib/domain.c: Do the OEM startup check after fetching the MC + information for the connection. + + * lib/oem_atca.c: Fix a bunch of problems, add hacks for broken + hardware. + + * lib/sensor.c: Destroy the handler list of a sensor on a + duplicate sensor entry. + + * include/OpenIPMI/ipmi_conn.h: Added hacks to some of the + interfaces to support wierd things. + * lib/domain.c: ditto + * lib/ipmi_lan.c: ditto + * lib/ipmi_smi.c: ditto + * lib/oem_atca.c: ditto + * lib/oem_force_conn.c: ditto + * lib/oem_motorola_mxp.c: ditto + * lib/oem_motorola_mxp_intf.c: ditto + + * lib/domain.c: Added sending message straight to an interface if + it matches the address of an interface. + + * lib/ipmi_lan.c: Added support for a wierd hack where the first + IPMI address in a LAN message is 0x20, and the other one is the + internal address. + + * lib/oem_atca_conn.c, lib/oem_atca.c: Added some hacks for the + current bugs in the Intel ATCA box. + + * lib/oem_atca.c: Reworked the handling of MCs and entity addition + to happen after the user is informed of the domain. + + * include/OpenIPMI/ipmi_domain.h, lib/domain.c: Added a way for OEM + code to call the MC scan done handler. + + * lib/oem_atca.c: Fixed some SEL handling and report MC scan done + when it is done. + + * lib/oem_atca.c: Added hacks for broken SDRs. + + * configure.in: Move to version 1.3.3. + +2004-04-09 Corey Minyard + + * lanserv/emu.c, lanserv/emu.h, lanserv/emu_cmd.c: Added + capabilities to disable, enable, and remove MCs, also added a + sleep command. + + * lanserv/lanserv_emu.c: Added support for the sleep command. + +2004-04-08 Corey Minyard + + * lib/ipmi_smi.c, lib/ipmi_lan.c, lib/domain.c: Remove the broken + broadcast handling from the domain code and put it into the + lower-level code, so the lower level code knows how to time it + better. + + * lib/domain.c: Add a scan of IPMB 0x20 as the first thing. + + * lib/domain.c: Destroy locks last in a domain. + + * lib/mc.c, lib/entity.c, include/OpenIPMI/ipmi_mc.h: Rework the + active_handlers dependency between entitys and MCs by using a + refcount instead of seeing if something is in the active handlers + list. Using the list didn't work because external (user) entities + in the list would keep the MC from being destroyed. + + * lib/oem_atca.c: Added a check_hot_swap_state handler. Fixed + some problems with getting the hot-swap state. + + * lib/domain.c, include/OpenIPMI/ipmi_domain.h: Added a callback + to be called when a domain starts shutting down. + + * lanserv/atca.emu: Added a new board. + + * lanserv/emu.c: Fixed problems with event timestamps. + + * lib/domain.c, lib/entity.c, lib/mc.c, lib/oem_atca.c: Fixed a + host of problems with shutdown order. It still needs some work + because of the backwards dependency from entities to MCs created + by the requirement for active MCs to contribute to entity + presence. + + * lib/oem_atca.c: Create the entities for the items in the shelf + address table at startup and keep them around. + +2004-04-07 Corey Minyard + + * ui/ui.c: Added an MC active callback to the UI. + + * configure.in: Move to version 1.3.2. + + * lib/oem_motorola_mxp.c: Added a slot GA sensor to the AMC. + +2004-04-02 Corey Minyard + + * lib/sensor.c, lib/control.c: Make sure that calls that send + messages cannot be done on destroyed sensors. + +2004-04-02 Corey Minyard + + * lib/entity.c, lib/sensor.c, lib/control.c: Fixed a rather nasty + race condition. Sensors and control may go away after the MC goes + away underneath them if the sensor or control has an operation + pending. The entity routine to remove the sensor and control + calls ipmi_xxx_convert_to_id(), which requires the MC to exist. + These were converted to use the pointer itself. + +2004-04-02 Corey Minyard + + * lanserv/emu.c, lanserv/emu_cmd.c, lanserv/emu.h: Reworked LED + support to better handle ATCA. Added hot-swap support. + + * lanserv/README.emulator: Added. + + * lanserv/atca.emu: Added. + + * lib/oem_atca.c: Worked on hot-swap support. + + * configure.in: Move to version 1.3.1. + + * doc/OpenIPMI.texi: Added some docs on ATCA. + + * lib/entity.c: Added a check for duplicate FRU entries in the SDR + DLRs, in case there is one. + + * lib/mc.c: Fixed connection up info to be freed for MCs that + never go active. + + * lib/entity.c, include/OpenIPMI/ipmi_entity.c: Added support for + checking the current hot-swap state (as in an audit). + + * include/OpenIPMI/ipmiif.h.in: Added functions for the above + call. + + * lib/domain.c: Fix the ordering of OEM handling and reporting + things so the MC is ready for commands at that time. + + * lib/entity.c: Add checking of hot-swap state along with + presence. + + * lib/oem_motorola_mxp.c: Added an event for the power control. + + * lib/control.c, include/OpenIPMI/ipmi_control.h: Added a way to + do noseq callbacks to controls. + +2004-04-01 Corey Minyard + + * lanserv/emu.c, lanserv/emu_cmd.c, lanserv/emu.h: Added a start + at ATCA support. + + * lanserv/atca.emu: Emulator file for ATCA support started. + + * lib/mc.c, include/OpenIPMI/ipmi_mc.h: Added support for watching + when an MC goes active or inactive. + + * lib/entity.c: For entities with FRU data, use the fru device + (whether the MC is active or not)) to know if the entity is + present. + + * include/OpenIPMI/ipmi_msgbits.h: Add some netfns for the group + extensions. + + * lanserv/ipmi_checksum.c, lanserv/Makefile.am: Added a small + program for calculating checksums, useful when working with + emulator files and FRU info. + + * lib/domain.c: Moved the OEM domain info destroyer callback to + the end of the domain destruction so that the OEM data is + available through the destructino process. + + * lib/mc.c, lib/domain.c: Newly created MCs come up inactive by + default and are set active. + + * lib/oem_atca.c: Lots of little bug fixes, finally getting to + test it. + + * ui/ui.c: Added multi-record dumping for FRU info. + + * ui/ui.c: Added support for settings-based lights. + + * lib/entity.c: A rework of the entity handling so that entities + cannot be destroyed while callback handlers are using them. + + * lanserv/emu_cmd.c, lanserv/emu.h: Made command reading halt + on the first error. + +2004-03-31 Corey Minyard + + * lanserv/emu.c, lanserv/emu_cmd.c: Added power control, fixed + some problems with getting the event state. + + * lanserv/emu.c: Added the hot-swap LED control. + + * lib/oem_test.c, lib/ipmi.c: Added some test code for testing + things inside OpenIPMI. + + * lib/chassis.c: Added tests to make sure the response is + long enough in power controls. + + * lib/entity.c: More work on the hot-swap state machine. + + * lib/sdr.c: Fix a memory leak when the SDRs are replaced. + +2004-03-30 Corey Minyard + + * lib/sensor.c: Fix a problem checking the event capabilities + on setting the event enables. + + * lanserv/emu.c, lanserv/emu.h, lanserv/emu_cmd.c: Started + actually working on a useful simulator. Added SDR, FRU data, and + sensor support. + +2004-03-26 Corey Minyard + + * lib/entity.c: Added calling the entity update handler when the + hot-swap capabilities change. + + * lib/strings.c, include/OpenIPMI/ipmiif.h: Added strings for the + hot-swap states. + + * ui/ui.c: Added hot-swap support. + + * ui/ui.c: Turn off nonblocking mode on the write fd. + + * lib/entity.c: Some hot-swap fixes. + + * lib/oem_motorola_mxp.c: Turned on the hot-swap indicator and + hot-swap requester. + + * lib/sensor.c: Alloc a handler_list for each sensor for type 2 + sensors records. + + * lib/entity.c: Added a slot sensor as one that has a bit presence + detector. + + * lib/entity.c: Don't require event support for a presence sensor. + + * lib/entity.c: Don't fetch FRU information for an entity until + it is present. + +2004-03-25 Corey Minyard + + * lib/entity.c: Always rescan FRU info on an entity presence change + for an entity that has FRU info. + +2004-03-23 Corey Minyard + + * lib/entity.c: Call _ipmi_find_or_create_mc_by_slave_addr() on new + mcdlrs. + + * lib/domain.c: Scan MCs that are added from SDR sources. + + * lib/oem_atca.c: Turn off SEL support for everything but the BMC. + + * lib/oem_atca.c: Rework the handling of new MCs and entities to handle + things added before the FRU information is read. + + * lib/entity.c: Use certain sensors that have presence bits as + presence sensors. + +2004-03-20 Corey Minyard + + * everything: Massive rework of the code structure. + +2004-03-19 Corey Minyard + + * configure.in, include/OpenIPMI/ipmiif.h.in: Completele rework + the version handling so that major, minor, release, and extra + version information are separately available for #ifdeff-ing. + + * lib/ipmi.c, ui/ui.c: Use OPENIPMI_VERSION for the version + string. + + * Makefile.am, configure.in, OpenIPMI.pc.in, OpenIPMIui.pc.in: + Added pkg-config info for OpenIPMI libraries. + + * lib/posix_thread_os_hnd.c, lib/Makefile.am: Add a first shot + at a threaded POSIX OS handler, libOpenIPMIpthread. + * OpenIPMIpthread.pc.in, Makefile.am, configure.in: ditto + +2004-03-15 Corey Minyard + + * include/OpenIPMI/selector.h, lib/selector.c: Unfortunately, + there were some race conditions in the freeing up of file + descriptors. Cleanups were done for this. + + * include/OpenIPMI/os_handler.h: Unfortunately, there were some + race conditions in the freeing up of file descriptors. Cleanups + were done for this. + + * ui/ui_os.c: Adjusted for the selector and os_handler changes. + * lib/ipmi_smi.c: ditto + * lib/ipmi_lan.c: ditto + * lib/oem_motorola_mxp_intf.c: ditto + +2004-03-11 Corey Minyard + + * lib/mc.c: Fix the set_time routine to pass in the info to the + message send. + +2004-03-09 Corey Minyard + + * lib/oem_motorola_mxp.c: Don't create the "healthy" sensor for + AMC boards. + + * lib/oem_motorola_mxp.c: Clear our the right variable after the + allocation of info->con_ch_info. + +2004-03-04 Corey Minyard + + * include/OpenIPMI/ipmi_int.h, lib/sel.c, lib/mc.c: Fix broken + time calculations for events. + * lib/ipmi_lan.c: ditto + * lib/ipmi_smi.c: ditto + + * include/OpenIPMI/ipmiif.h.in, lib/event.c, lib/domain.c: Created + a new event delete function that does not take a domain. + + * doc/OpenIPMI.texi: Added some more documentation and cleaned + things up a little. + +2004-03-02 Corey Minyard + + * lib/ipmi_lan.c: Fixed a bug where incoming SNMP traps were + compared against the wrong IP address. + + * lib/oem_atca.c: Added the cold reset control. + + * lib/sensor.c: Fixed the range check in ipmi_sensor_pointer_cb(). + + * lib/control.c: Fixed the range check in ipmi_control_pointer_cb(). + +2004-03-01 Corey Minyard + + * lib/oem_atca_conn.c: Set broadcast_broken all the time. + + * lib/ipmi.c: Added raw debug tracing for incoming SNMP traps. + + * include/OpenIPMI/ipmi_conn.h, lib/ipmi.c, ui/basic_ui.c: Added + a source address length to the SNMP trap reporting handler. + +2004-02-26 Corey Minyard + + * lib/mc.c, include/OpenIPMI/ipmi_mc.h: Added a way to check if an + ID is invalid. + * include/OpenIPMI/ipmiif.h.in: ditto for domains, sensors, + controls, and entities. + * lib/domain.c: ditto + * lib/sensor.c: ditto + * lib/control.c: ditto + * lib/entity.c: ditto + + * lib/entity.c: Do a changed callback on the parent and child when + a parent-child relationshi

+ + * lib/domain.c: Fixed a few problems were callbacks can receive + NULL values that were not being handled. + + * configure.in: Move to version 1.2.16. + + * lib/oem_motorola_mxp.c: Added zeroing all data structures after + they are allocated. + + * lib/entity.c, include/OpenIPMI/ipmiif.h: Added a way to have + multiple callback handlers on control, sensor, and fru updates. + + * ui/ui.c: Converted over to the multi-callback handlers. + +2004-02-24 Corey Minyard + + * lib/control.c: Added an option for light controls to be able to + set their color, on, and off times directly. + * include/OpenIPMI/ipmiif.h: ditto + * include/OpenIPMI/ipmi_control.h: ditto + + * include/OpenIPMI/ipmi_bits.h, lib/strings.h: Added an "orange" + light color. + + * lib/oem_atca.c: Started serious work into handling for ATCA + LEDs. + + * lib/oem_motorola_mxp.c: Added handling for newer Zynx switch + boards. + + * utils/Makefile.am: Removed the md2 and md5 tests since they + contain marginally free code. + + * lib/mc.c, include/OpenIPMI/ipmi_mc.h: Added a way to enable and + disable the event generation on an MC. + + * ui.c, man/ipmi_ui.1: Added commands for mc event enable + settings. + + * lib/entity.c, include/OpenIPMI/ipmi_entity.h: Added a way to + have multiple callback handlers called when an entity is added to + a domain. + * lib/domain.c, include/OpenIPMI/ipmiif.h: ditto + + * lib/domain.c: Modified finding the event reciever to use the + event receiver bit (not the SEL bit) and to ignore BMC channels, + since their addresses would be bogus. + + * lib/ipmi_lan.c: Removed scanning the system address for general + LAN connections. It will do wierd things, and is only necessary + if specific support is required. + + * lib/oem_motorola_mxp.c: Re-added scanning the system address + for MXP chassis. + + * lib/domain.c, include/OpenIPMI/ipmi_domain.c, lib/sensor.c: + Changed _ipmi_find_or_create_mc_by_slave_addr() to take a channel + as part of the address. + +2004-02-23 Corey Minyard + + * lib/mc.c: Fixed a race condition dealing with an MC going away + while the SDRs were being fetched. I wasn't following my own + rules about pointers and callbacks. + + * lib/oem_motorola_mxp.c: Added a read handler for the I2C Isolate + control. + + * lib/oem_motorola_mxp.c: Used the minor firmware version, not the + major version,to tell if an MXP board has SDRs on-board. + + * configure.in: Move to version 1.2.15. + + * lib/domain.c, lib/mc.c, lib/oem_motorola_mxp.c: Fix some + problems handling things being destroyed at startup. + + * lib/oem_motorola_mxp.c: Changed the number of boards on the + half-pint chassis to 9. Fixed the detection of board versions. + +2004-02-22 Corey Minyard + + * lib/oem_motorola_mxp.c: Added reading the reset control for + boards. Don't create the I2C Isolate controls on the half-pint + chassis. + + * man/ipmi_ui.1: Fixed the explanation of connecting using + multiple connections and LAN addresses. + + * configure.in: Move to version 1.2.14. + + * sensor.c: Added a missing command length setting. + +2004-02-20 Corey Minyard + + * lib/fru.c, include/OpenIPMI/ipmi_fru.h: Added multi-record + FRU handling. + + * lib/entity.c, include/OpenIPMI/ipmiif.h: Added multi-record + FRU handling. + + * lib/domain.c, include/OpenIPMI/ipmi_domain.h: Added OEM + information for a domain. + + * lib/oem_atca.c: More ATCA work. + +2004-02-19 Corey Minyard + + * lib/lanparm.c: Initialize the callback data when cleaning + the lan parm lock. + + * man/ipmicmd.1, man/ipmi_ui.1: Update to make current. + + * include/OpenIPMI/ipmiif.h, lib/entity.c: Added an entity id + comparison function. + + * include/OpenIPMI/ipmiif.h, include/OpenIPMI/ipmi_types.h: Added + invalid id's for all the various object id's. + * include/OpenIPMI/ipmi_mc.h: ditto + * lib/entity.c: ditto + * lib/mc.c: ditto + * lib/sensor.c: ditto + * lib/control.c: ditto + * lib/domain.c: ditto + + * doc/OpenIPMI.texi: Added some more information about locking. + + * lib/oem_atca.c, lib/ipmi.c: Started work on the ATCA code. + +2004-02-18 Corey Minyard + + * configure.in: Reworked SNMP library configuration to check + for the include files first, then the libraries. + + * README: Improved quite a bit. + + * lib/oem_motorola_mxp.c: Modified the power supply sensor to only + set the power feed failure bits on DC power supplies. + + * doc/OpenIPMI.texi: Revised the Motorola MXP documentation. + + * lib/oem_motorola_mxp.c: Discovered that the "power good" bit in + the power supply status event is really a "power fail" bit. + + * configure.in: Move to version 1.2.12. + + * lib/oem_motorola_mxp.c: Renumbered the sensors so that five + power supplies and fans could fit. Also split out the fan info + from the power supply info to allow different counts of fans and + power supplies. Fixed the fan IPMB for half-pint to be 0x30-0x34. + + * lib/entity.c, include/OpenIPMI/ipmiif.h: Added the ability to + get the channel and address for a device-relative entity. + + * configure.in: Move to version 1.2.13. + + * lib/oem_motorola_mxp.c: Add fan speed raw/cooked conversion + function. + + * lib/domain.c: Fixed a problem with handling old messages + on a failover. Changed so that old messages will certainly + be ignored. + +2004-02-17 Corey Minyard + + * include/OpenIPMI/ipmi_conn.h: Added a "broadcast broken" flag + to the interface data. + + * include/OpenIPMI/ipmi_domain.h, lib/domain.c: Removed the ability + to set broadcast broken directly for the domain, instead we get + it from the interface data. + + * lib/oem_motorola_mxp.c: Add setting broadcast broken on the + interface to an MXP, removed the domain setting of the same. + + * configure.in: Move to version 1.2.11. + +2004-02-12 Corey Minyard + + * include/OpenIPMI/ipmiif.h, lib/entity.c: Added entity-id based + versions of some hot-swap functions and the function to get the + current entity presence. + + * include/OpenIPMI/ipmiif.h, doc/OpenIMPI.texi: Added some text + about how the object pointer callbacks are always called + immediately. + + * lib/sel.c: Initialize the return value in + ipmi_sel_add_event_to_sel(). + + * lib/sel.c, ui/ui.c: Fix some problem with adding events to the + SEL. + + * configure.in: Move to version 1.2.10. + + * lib/OpenIPMI/ipmi_addr.h, lib/ipmi_utils.c: Added a privilege + field to the IPMI LAN address. + +2004-02-11 Corey Minyard + + * lib/sensor.c: Reworked sensor naming to include the entity + id and instance. + + * lib/oem_atca_conn.c: Made ATCA connections always active. + + * lib/entity.c, include/OpenIPMI/ipmi_entity.h: Revised the + entity addition function to take the mc channel and address, not + an MC pointer, since the MC pointer is not always available. + * lib/oem_motorola_mxp.c: adjusted for the previous change + * lib/chassis.c: adjusted for the previous change + * lib/sensor.c: adjusted for the previous change + + * lib/control.c, lib/sensor.c: Fixed some problems dealing with + non-standard device-relative entities that are actually not on the + device we are dealing with. + + * lib/oem_motorola_mxp.c: Added a CPCI board healthy sensor. + + * ui/basic_ui: Added a '-drawmsg' parameter to start raw message + tracing at startup. + + * include/OpenIPMI/ipmi_addr.h: Added updates to the lan address + stuff. + * ui/ipmicmd.c: ditto + + * lib/ipmi_utils.c: Added handling of the LAN address type. + + * lib/oem_motorola_mxp.c: Removed the ability to set the chassis + type control, as it is really not settable. + + * configure.in: Move to version 1.2.9. + +2004-02-10 Corey Minyard + + * include/OpenIPMI/ipmi_mc.h, lib/mc.c: Added a way to send events + to the SEL of an MC. + * include/OpenIPMI/ipmi_sel.h, lib/sel.c: ditto + + * ui/ui.c: Added a way to add events using the above calls. + + * lib/oem_motorola_mxp.c: Make the entities for boards on the MXP + V2 chassis device-relative. + +2004-02-09 Corey Minyard + + * configure.in: Move to version 1.2.7. + + * lib/oem_motorola_mxp.c: Add support for MXP half-pint chassis. + + * include/OpenIPMI/ipmiif.h: removed + * include/OpenIPMI/ipmiif.h.in: added, with version info + * configure.in: Added setting the version info of ipmiif.h + + * include/OpenIPMI/ipmiif.h.in, lib/ipmi.c: Added a version + function. + + * include/OpenIPMI/ipmi_addr.h: Added a LAN address type. + + * lib/domain.c: Modified the bus scanning to put a second delay + between attempts when checking for an MC that has been removed, + just in case of a transitional failure. + + * sample/ipmicmd.c: Added support for LAN addresses. + + * configure.in: Move to version 1.2.8. + +2004-02-08 Corey Minyard + + * lib/entity.c: Don't subtract 0x60 from device-relative entity + instances in the id, just leave it. + + * lib/entity.c: Fix some bugs extracting DLRs from the SDRs. + + * ui/ui.c: Subtract 0x60 from device-relative entity instances on + display/input. + +2004-02-02 Corey Minyard + + * configure.in: Move to version 1.2.6. + + * everything: Massive rework of the logging to get more + information in there so the logs can be correlated to specific + domains, sensors, MCs, etc. + +2004-01-31 Corey Minyard + + * domain.c: Cleaned up logs, made them include the file and + function name. + * ipmi_lan.c: Ditto + + * ipmi_lan.c: Modified message logging to separate the raw + and normla message logging. + +2004-01-29 Corey Minyard + + * lib/oem_motorola_mxp.c: Move the AMC chassis id and temp cool + LED to the main chassis entity, since only the active AMC handles + it. + +2004-01-28 Corey Minyard + + * configure.in: Move to version 1.2.5. + + * lib/oem_motorola_mxp.c: Removed the hot-swap status from the + blue leds and ejector switches, until I figure out a good way to + handle the power. + + * lib/entity.c: Fixed an extraneous unlock in the hot swap code. + + * lib/domain.c: Only scan the IPMB on an address change if not in + startup mode to avoid scanning an MC before the user is informed + of the domain being up. + +2004-01-27 Corey Minyard + + * lib/entity.c: Finished implementing the hot-swap state machine. + +2004-01-26 Corey Minyard + + * include/OpenIPMI/ipmiif.h, lib/sensor.c, lib/control.c, + lib/entity.c: Added some routines for dealing more directly with + ids. + + * configure.in: Move to version 1.2.4. + + * lib/domain.c, lib/sensor.c, lib/mc.c: Fixed some domain shutdown + problems. + + * lib/oem_motorola_mxp.c: Reworked the control and sensor creation + so the object is fully correct and available when reported. + +2004-01-25 Corey Minyard + + * lib/sensor.c: Lots of cleanups and error handling consolidation. + +2004-01-24 Corey Minyard + + * lib/sensor.c, include/OpenIPMI/ipmi_sensor.c: Reworked the + default threshold handling, I misread the spec on this. These are + only valid for setting the threshold at init time. + + * lib/oem_motorola_mxp.c: Removed all the SDR hacks, since it is + now all correct in the SDRs. + + * configure.in: Move to version 1.2.3. + +2004-01-23 Corey Minyard + + * lib/ilist.c, include/OpenIPMI/ilist.h: Added a + ilist_twoitem_destroy() call. + + * include/OpenIPMI/ipmi_control.h, lib/control.c: Allow controls + to generate update events. + + * lib/conn.c: Fixed some memory leaks. + + * include/OpenIPMI/ipmi_bits.h: Added a return value for the event + handlers to tell if the handler will manage the event or if it + should be passed on. + * include/OpenIPMI/ipmi_control.h, lib/control.c: ditto + * include/OpenIPMI/ipmi_sensor.h, lib/sensor.c: ditto + + * include/OpenIPMI/ipmi_control.h, lib/control.c: Added lots of + info to the hot-swap indicator. + + * include/OpenIPMI/entity.h: Added lots of info to the hot-swap + state machine description. + + * include/OpenIPMI/ipmiif.h, lib/entity.c: Started work on the + hot-swap state machine. + + * lib/oem_motorola_mxp.c: Went back to the old presence state + machine, except the healthy and reset events cause a presence + check, they don't directly drive the state machine, since then are + not 100% dependable. + + * lib/oem_motorola_mxp.c: Modified the code to register all + product ids from 0x01 to 0x40 as MXP products. + +2004-01-22 Corey Minyard + + * include/OpenIPMI/ipmiif.h, include/OpenIPMI/ipmi_control.h: + Added a way for standard value controls to generate events. + * lib/control.c: ditto + +2004-01-21 Corey Minyard + + * include/OpenIPMI/ipmiif.h, lib/sensor.c: Added a way to register + multiple handlers on a sensor event. + +2004-01-20 Corey Minyard + + * include/OpenIPMI/ipmiif.h: Added hot-swap state machine and + function definitions. + + * include/OpenIPMI/ipmi_entity.h, lib/entity.c: Added hot-swap + polymorphic routines. + + * include/OpenIPMI/ilist.h, lib/ilist.c: Added two item list code, + primarily for handling callback lists. + + * lib/conn.c: Converted OEM connection callback list to the + two item list, and call all the OEM connection callbacks at once. + +2004-01-19 Corey Minyard + + * lib/conn.c, include/OpenIPMI/ipmi_conn.h: Added a connection + handler for testing new connections types (primiarily for ATCA). + + * lib/oem_atca_conn.c, lib/ipmi.c: Added, new code for ATCA + connection handler, for getting the IPMB address. + + * lib/domain.c: Fixed a problem in domain OEM callbacks; the + iterator used may become invalid during the process of handling + the OEM callbacks. + + * lib/ipmi_lan.c: Return NULL for the IPMI in a handler when the + connection is shut down. + + * lib/ipmi_lan.c, lib/ipmi_smi.c: Added calls to the OEM + connection handler code. + + * lib/ipmi_smi.c: Have the shutdown code call the handler on all + outstanding messages. + +2004-01-14 Corey Minyard + + * configure.in, ui/basic_ui.c: Added support for net snmp. + + * configure.in: Move to version 1.2.2 + + * ui/ui.c: Added handling for controls going away when displayed. + + * README.MotorolaMXP: Added. + + * lib/oem_motorola_mxp.c: Modified the handling for custom AMC + sensors to only be created if it's an old AMC. Also added support + for handling the sensors from the AMC properly, setting the entity + ID properly. + + * lib/domain.c: Have the domain code call the OEM handler for the + SI MC. + + * lib/mc.c: Added a way to have an MC's main device repository + treated as a device SDR repository. + + * lib/oem_motorola_mxp.c, doc/OpenIPMI.texi: Removed the fan speed + control (it no longer works) and added the fan speed reading. + +2004-01-14 Corey Minyard + + * doc/OpenIPMI.texi: Added some MXP-specific information. + + * lib/oem_motorola_mxp.c: Fixed a few problems, the Chassis ID + sensor was on the wrong entity, some boards were missing, and a + few other little glitches. + + * lib/domain.c: Added scanning the system interface when a + connection goes up or down. + +2004-01-13 Corey Minyard + + * configure.in: Move to version 1.2.1 + + * configure.in, ui/Makefile.am, ui/basic_ui.c: Make the SNMP stack + optional. + + * man/ipmi_ui.1: Add docs for the -snmp option + + * doc/OpenIPMI.texi: Added docs for the SNMP trap handling. + + * include/OpenIPMI/ipmi_conn.h, lib/ipmi.c: Added an external SNMP + trap handler. + + * include/OpenIPMI/ipmi_lan.h, lib/ipmi_lan.c: Added an external + trap handler. + + * include/OpenIPMI/ipmi_mc.h, lib/mc.c: Added a return code from + adding an event to know if the event was a duplicate. + * include/OpenIPMI/ipmi_sel.h, lib/sel.c: Ditto + + * lib/domain.c: Modified the incoming event handler so that if it + gets a NUL event message, to rescan the SEL from the source MC. + + * lib/ipmi_lan.c: Modified the sequence number handling to not use + a zero sequence number, and to ignore zero sequence numbers. This + allows things to send messages with ignored responses by setting + the sequence to zero. + + * ui/basic_ui.c: Added support for SNMP traps. + +2004-01-12 Corey Minyard + + * lib/pet.c, include/OpenIPMI/ipmi_pet.h: Modified the PET code to + only handle a single channel, and to specify the channel and + connection explicitly. It's really impossible for this code to + know automatically what channels to configure and what IP + addresses to use for each. + + * configure.in: Update version to 1.2.0. + + * lib/mc.c, include/OpenIPMI/ipmi_mc.h, include/OpenIPMI/ipm_oem.h: + Added a mechanisms to fixup a sensor before anything is done with + it (to fix broken values). + + * lib/oem_motorola_mxp.c: Added a fixup handler for AMC sensors to + set the entity instance properly. + + * lib/oem_motorola_mxp.c: Converted over handling of semi-standard + sensors to use the standard sensor fetch mechanism, if possible. + Also added the AMC temperature sensor. + + * doc/OpenIPMI.texi - Added a bunch of info on the new MXP + version. + + * lib/oem_motorola_mxp_intf.c: Modified to startup up a standard + LAN connection if on a newer AMC. + + * lib/sensor.c, include/OpenIPMI/ipmi_sensor.c: Added a send_lun + to the OEM sensors so they can use the normal sensor code for + things that are standard. + +2004-01-09 Corey Minyard + * include/OpenIPMI/ipmi_bits.h, ui/ui.c, lib/strings.c: Added + one-shot reset, general output, and one-shot ouput controls. + + * lib/oem_motorola_mxp.c: Added a bunch of controls for various + things in the chassis and boards. + + * lib/ipmi_lan.c: Fixed a problem when receiving messages, need to + compare the netfn as well as the command when looking for sendmsg + and event msg buffer commands. + + * lib/oem_motorola_mxp.c: Modified the presence sensor for normal + boards to use the CPCI healthy signal instead of the wierd thing + it was doing. + + * lib/mc.c: Don't delete the MC removed handlers unless the MC is + really deleted. + +2004-01-08 Corey Minyard + + * lib/fru.c: Added error info logs to tell why a FRU was bad. + + * doc/OpenIPMI.texi: Added documenataion for the new PEF, PET, and + LAN configuration items. + + * lib/domain.c, include/OpenIPMI/ipmi_domain.h: Added code to + check if a specific connection is active and to activate a + connection explicitly. + + * ui/ui.c: Added support for the connection activation. + + * lib/mc.c, include/OpenIPMI/ipmi_mc.h: Added a mc reset command + for sending MC cold and warm resets. + + * lib/chassis.c: Added a one-shot reset control. + + * lib/oem_motorola_mxp.c: Added controls for the version AMC + version. + +2003-01-08 Jeff Zheng + + * lib/pef.c: Various fixes for PEF handling. + +2004-01-07 Corey Minyard + + * ui/ui.c: Added LAN and PEF lock clearing. + + * lib/pet.c, include/OpenIPMI/ipmi_pet.h: Reworked the PET to + support proper locking and to support the proper setup of the + policy number. + + * ui/ui.c: Added support for the PET. + + * lib/domain.c, include/OpenIPMI/ipmi_domain.h: Added a "broadcast + broken" field so systems that have non-working broadcasting can + set this. Then bus scanning wll use normal messages, not + broadcasts. + + * lib/oem_motorola_mxp.c: Set the broadcast broken flag. + +2004-01-06 Corey Minyard + + * lib/pef.c, include/OpenIPMI/ipmi_pef.h: Reworked this to handle + locking properly, the lock is claimed on a PEF config read and the + lock is cleared on a write. Also added a specific clear lock + operation. + + * lib/lanparm.c, include/OpenIPMI/ipmi_lanparm.h: Reworked this to + handle locking properly, the lock is claimed on a LAN config read + and the lock is cleared on a write. Also added a specific clear + lock operation. + +2004-01-05 Corey Minyard + + * ui/ui.c, ui/basic_ui.c: Added a way to free things allocated in + the main routine. + + * lib/ipmi.c, include/OpenIPMI/ipmi_int.h: Added an IPMI rwlock. + + * lib/pet.c: Converted the main pet lock to a rwlock. + + * ui/ui.c: Consolidate MC reading. + + * lib/domain.c: Fixed the system interface address handling to be + correct for the individual interfaces. + + * lib/ipmi_lan.c: Removed the bind code, as if you don't bind an + address one will be auto-assigned. + + * ui/ui.c: Added the ability to set the LAN and PEF parameters. + +2004-01-05 Corey Minyard + + * include/OpenIPMI/ipmi_int.h, lib/ipmi.c: Added a way for + internal code to fetch the global OS handler. + + * lib/pef.c, include/OpenIPMI/ipmi_pef.h: Added a way to get the + MC for a PEF. + + * lib/impi_lan.c: Added system address scanning for all LAN + connections. + + * lib/ipmi.c: Added PET init and shutdown functions. + + * lib/ipmi.c, include/OpenIPMI/ipmi_int.h: Added a method to get + the main OS handler. + + * include/OpenIPMI/ipmi_addr.h: Added a define for the "self" + channel. + + * lib/pet.c, include/OpenIPMI/ipmi_pet.c, lib/Makefile.am: Added a + way to easily set up the platform event trap stuff for just + getting all events. + + * ui/ui.c: Added support for the LAN parameter display. + +2004-01-02 Corey Minyard + + * include/OpenIPMI/ipmi_int.h: Added ipmi_strdup for use by + everyone. + + * include/OpenIPMI/ipmi_pef.h, lib/pef.c: Added and mostly rewrote + some PEF code from Jeff Zheng. Still not quite done. + + * include/OpenIPMI/ipmi_lanparm.h, lib/lanparm.h: Added code for + handling LAN configuration parameters. + + * ui/ui.c: Added some code for fetching and writing PEFs. + +2003-12-26 Corey Minyard + + * configure.in: Move to version 1.1.8 + +2003-12-26 Corey Minyard + + * include/OpenIPMI/ipmi_domain.h, lib/domain.c: Added a domain OEM + handler for detecting and setting up special types of domains, + mainly in preparation for ATCA. + + * lib/ipmi_lan.c: IPMIv1_5_rev1_1_0926 markup, section 6.12.4, + didn't clear things up at all. Some manufacturers have + interpreted a certain way that this added code handles, but IMHO + it is incorrect. + +2003-12-09 Louis Zhuang + + * lib/ilist.c: Fix a bug in the routine to go to the previous + item. + +2003-12-05 Corey Minyard + + * lanserv/emu.c: Work on SDR emulation. + +2003-12-04 Louis Zhuang + + * include/OpenIPMI/ipmi_mc.h, lib/mc.h: Add a new function + 'ipmi_mc_sel_get_last_addition_timestamp' for OpenHPI to use. + + * include/OpenIPMI/ipmi_sel.h, lib/sel.h: Add a new function + 'ipmi_sel_get_last_addition_timestamp'. + +2003-12-04 Jeff Zheng , Corey Minyard + + * sample/ipmicmd.c: Actually close the IPMI connection at quit. + +2003-12-04 Corey Minyard + + * include/OpenIPMI/ipmiif.h: Use "const" properly to get rid of + warnings. + * lib/ipmi.c: ditto + * sample/ipmicmd.c: ditto + * sample/sample.c: ditto + * ui/basic_ui.c: ditto + +2003-12-03 Corey Minyard + + * lib/sensor.c: Allow settable hysteresis values to be read, too. + + * include/OpenIPMI/ipmi_bits.h: Added some docs on the confusing + names of the hysteresis values. + +2003-12-03 Corey Minyard + + * configure.in: Move to version 1.1.7 + + * lib/ipmi_lan.c: Updated the response format where the send + message is include with the response to include the destination + IPMB as part of the header. + + * lanserv/emu.c lanserv/lanserv.c lanserv/lanserv_emu.c: Adjustments + for the previous change. + + * utils/md5.c: Fixed this to work on big and little endian without + special defines. + +2003-12-02 Corey Minyard + + * lanserv/emu_cmd.c, lanserv/Makefile.am, lanserv/lanserv_emu.c: + Added a command processor for handling control commands to the + emulator. + + * lanserv/emu.c, lanserv/emu.h, lanserv/lanser_emu.c: Massive + restructure to clean this up and support various commands and get + IPMB working. + + * lanserv/lanserv.c: Check for proper message length in broadcasts. + +2003-12-02 Louis Zhuang + + * include/OpenIPMI/ipmi_mc.h, lib/mc.h: Add a new function + 'ipmi_mc_event_by_recid' for OpenHPI to use. + + * include/OpenIPMI/ipmi_sel.h, lib/sel.h: Add a new function + 'ipmi_sel_get_event_by_recid'. + +2003-12-01 Corey Minyard + + * include/OpenIPMI/ipmi_mc.h, lib/mc.c: Renamed some functions to + remove the leading "_". This opens them up for OpenHPI to use. + + * lib/domain.c: Updates for the above changes. + * lib/sel.c: ditto + * lib/sdr.c: ditto + * lib/sensor.c: ditto + * lib/control.c: ditto + * lib/oem_motorola_mxp.c: ditto + * ui/ui.c: ditto + +2003-11-30 Corey Minyard + + * include/OpenIPMI/ipmi_control.h, lib/control.c: Added a way to + get the source MC for the control. + + * include/OpenIPMI/ipmi_sensor.h, lib/sensor.c: Added a way to + get the source MC for the sensor. + + * lib/chassis.c, lib/mxp_oem_motorola_mxp.c: Side effects from the + above changes. + + * include/ipmi_domain.h, lib/domain.c: Reworked the MC update + handler to be more standard. + + * ui/ui.c, ui/basic_ui.c: Fix problems with the reconnect code. + + * ui/ui.c: Added MC update handler registration so new MCs are + reported. + +2003-11-28 Corey Minyard + + * include/OpenIPMI/ipmiif.h, lib/ipmi.h: Added parameter parsing + code for parsing the various types of connections from argv-type + strings (really taken from ui/basic_ui.c). + + * ui/basic_ui.c, sample/sample.c, sample/ipmicmd.c: Converted over + to use the new parameter parsing code. + +2003-11-21 Louis Zhuang + + * lib/domain.c, include/OpenIPMI/ipmi_domain.h: Add function + 'ipmi_domain_set_bus_scan_handler' to indicate bus scan + is done + * sample/sample.c: Add some code to demostrate usage of + 'ipmi_domain_set_bus_scan_handler' + +2003-11-21 Louis Zhuang + + * lib/domain.c: Fix a bug in ipmi_domain_reread_sels + +2003-11-17 Corey Minyard + + * lib/mc.c, lib/domain.c: Added support for detection old and + newer IPMI versions and issuing appropriate logs. + +2003-11-11 Corey Minyard + + * configure.in: Move to version 1.1.6. + +2003-11-11 Jeff Zheng + + * configure.in: Add checking for getaddrinfo(). + + * include/OpenIPMI/ipmi_lan.h, lib/ipmi_lan.c: Added support for a + IPv6 capable interface. + + * lanserv/lanserv.c, lanserv/lanserv_config.c, lanserv.h: Add + support for IPv6 addresses. + + * sample/sample.c, ui/basic_ui.c, sample/ipmicmd.c: Reworked to + use the new IPv6 capable interfaces. + +2003-11-10 Corey Minyard + + * lib/domain.c: Fixed MC scanning to handle a single address + properly and fixed some error handling cases. + +2003-10-30 Corey Minyard + + * lib/domain.c: Fixed MC scanning to skip addresses properly at + the beginning of a scan. + + * lib/domain.c, include/OpenIPMI/ipmi_domain.h: Modified the MC + scanning ignoring to use ranges. + + * lib/domain.c: The previous fix to handle an MC-less case by just + allowing scanning the BMC at 0x20, not scanning the sysaddr. The + sysaddr stuff was just too tied to the redundant BMC case. + + * lib/ipmi_smi.c: Send messages with the proper size. + +2003-10-31 Louis Zhuang + + * lib/mc.c, include/OpenIPMI/ipmi_mc.h: Add const qualifier into function + +2003-10-30 Corey Minyard + + * lib/ipmi_smi.c: Handle data portion of a socket message correctly. + + * sample/ipmicmd.c: Fix error handling. + +2003-10-30 Louis Zhuang , Corey Minyard + + * lib/mc.c, include/OpenIPMI/ipmi_mc.h: Add a function to set the + SEL time for an MC. + +2003-10-30 Corey Minyard + + * lib/selector.c: Allow a NULL send_sig handler. + +2003-10-30 Jarrod Johnson + + * sample/ipmicmd.c: Close the connection when done. + +2003-10-29 Corey Minyard + + * lib/mc.c, include/OpenIPMI/ipmi_mc.h: Added a way to force + rereading the SEL. + + * lib/domain.c, include/OpenIPMI/ipmiif.h: Added a way to force + rereading all the SELs in a domain. + +2003-10-23 Corey Minyard + + * lib/sdr.c: Fixed a bug in the random backof of SDR reading. On + a random backoff, it would also start one immediately, too. This + was bad because it didn't avoid the contention and it was possible + to have two SDR readings going on at the same time in the same SDR + structure. + +2003-10-23 Corey Minyard + + * lib/domain.c: If a BMC reports through its channels that is does + not have an IPMB bus, then force scanning the system address so we + will find something useful. + +2003-10-20 Corey Minyard + + * ui/ui.c: Added some code to print the number of SEL entries on + an mc (when dumping the MC) and the total number of SEL entries + when listing the SEL. + + * lanserv/lanserv.c, lanserv/lanserv_config.c: Restructured the + LAN code to make it more flexible and split out more generic + functions. + * lanserver/lanserv_emu.c, lanserv/emu.c, lanserv/emu.h: Ditto + * include/OpenIPMI/lanserv.h: Ditto + +2003-10-17 Tony Griffiths + + * lib/ipmi_smi.c: Added some enhanced debugging info. + +2003-10-17 Corey Minyard + + * configure.in: Move to version 1.1.5. + +2003-10-16 Corey Minyard + + * include/OpenIPMI/ipmi_mc.h, lib/mc.c: Added a way to get the + current SEL time. + +2003-10-16 Louis Zhuang + + * include/OpenIPMI/ipmi_mc.h, lib/mc.c: add a bundle of mc wapper + functions for SEL operation + +2003-10-15 Corey Minyard + + * ipmi_lan: Fix the send to the system address to be correct, + and handle incoming messages properly. + + * lib/sdr.c: Null a message data (to keep valgrind happy). + + * ui/ui_os.c: Fixed a problem valgrind found, timer data may be + freed in the user's handler, but we still used it in the timer + handler after the call to the user's handler. + +2003-10-15 Jeff Zheng + + * lib/mc.c: Null out some values on removal. + + * lib/fru.c: Calculate the end of the FRU data correctly. + +2003-10-09 Thomas Kanngieser + + * lanserv/lanserv_asf.c: Send the right data for an RMCP ping. + +2003-10-09 Corey Minyard + + * configure.in: Move to version 1.1.4. + + * lanserv/priv_table.c: Fixed the permissions checking code, ADMIN + privilege was specified incorrectly for unknown messages and magic + numbers were replaced with defined names. + +2003-10-08 Livio Pugliese + + * lib/sensor.c: Added the missing log2() conversion function to + the array of conversion values. + +2003-10-07 Tony Griffiths + + * lib/domain.c: Fix getting the vendor id from the channel info + response. + +2003-10-02 Corey Minyard + + * lib/ipmi_lan.c: Changed the max outstanding message default + to two. + + * lib/mc.c: Removed setting the event receiver for SEL devices + that are not event generators. + + * ui/ui.c: Fixed problems printing entities. + +2003-10-07 Tony Griffiths + + * lib/domain.c: Fixed channel scanning to go on if it gets an + error from the channel. That way if channels are not present, it + will still find channels beyond the errored channel. + + * lib/strings.c, include/OpenIPMI/ipmi_msgbits.h: Add strings for + the netfns, commands, and errors. + * include/OpenIPMI/ipmi_err.h: ditto + + * lib/ipmi_lan.c: Convert debugging to clean up the formatting and + use the new strings. + +2003-10-05 Thomas Kanngieser + + * lib/sensor.c: The binary search converting from float to raw + values had the compare backwards. + +2003-10-02 Corey Minyard + + * ui/entity.c: Fixed the custom info get function names. + + * ui/ui.c: Fixed a few FRU output problems. + + * sample/sample.c: Fixed the FRU output. + + * ui/entity.c, ui/fru.c: Added board manufacture time function. + * include/OpenIPMI/ipmi_fru.h: ditto + * include/OpenIPMI/ipmiif.h: ditto + + * ui/ui.c: Converted over all display of entities to do the + relative and absolute entity names. + + * lib/sdr.c: The Get Device SDR command stupidly only returns the + number of sensors, not the number of SDR entries. For device + SDRs, the SDR array will expand up to 512 entries if it runs + out of SDR entries. 256 is the max number of sensors, so this + should be safe. + +2003-10-02 Thomas Kanngieser + + * lib/sensor.c: The bit shifts for getting the hysteresis and + threshold support from the SDR were incorrect. + +2003-10-01 Corey Minyard + + * configure.in: Move to version 1.1.3 + + * lib/ui.c: Added support for device-relative entities. + + * include/OpenIPMI/ipmi_types.h: The bit assigns for + entity_instance and channel were switched in the entity id type. + + * include/OpenIPMI/ipmi_control.h: Added an include for + ipmi_addr.h since it is used in this include file. + + * include/OpenIPMI/ipmi_oem.h, lib/mc.c: Allow multiple OEM removal + handlers to be registered against an MC. + + * include/OpenIPMI/ipmi_mc.h, lib/Makefile.am, lib/mc.c, lib/chassis.c: + Added converting chassis control commands to a power control. + +2003-09-30 Corey Minyard + + * lib/sdr.c: Don't refetch SDRs if the population is not dynamic. + + * lib/mc.c, lib/domain.c, include/OpenIPMI/ipmi_mc.h: Added an + audit to check the SDRs for an MC and for the main SDR repository. + + * lib/mc.c: Was reading the device SDRs twice. That's why it was + so slow at startup. + + * lib/domain.c: Call the connection change function as soon + as the connection is up, don't wait to read the SDRs, etc. + + * ui/ui.c, include/OpenIPMI/ipmi_ui.h: Add a function to set + the domain at startup. + + * lib/entity.c: Make sure to free the entity SDR info when it is + destroyed. + + * lib/domain.c: Initialize the running field of the + activate_timer_info data. + + * ui/ui.c: Added TCSADRAIN to the tcsetattr() calls so that the + output wouldn't get chopped off on shutdown of the program. Also + properly restored the flags for the output terminal. + + * ui/ui.c: Fixed a possible overrun in normal_char, it was using + strcpy but the string wasn't necessarily nil terminated. Change + to use memcpy with a length. + +2003-09-29 Corey Minyard + + * lib/ipmi.c: The length bits of an IPMI string are the bottom 6 + bits, no the bottom 5 bits. + +2003-09-28 Corey Minyard + + * configure.in: Move to version 1.1.2. + + * lib/domain.c: Added handling of system ids in events. + + * lib/domain.c: Don't allow messages to be sent on a shutdown + domain. This avoids an infinite loop in some cases. + + * lib/domain.c: In cleanup_domain(), pass the error response in + as the response, not the original message. + + * lib/entity.c, include/OpenIPMI/ipmiif.h: Added entity functions + to get FRU information so the user doesn't have to deal directly + with the FRU type. + + * include/OpenIPMI/ipmiif.h, include/OpenIPMI/ipmi_fru.h: + Moved all the FRU functions and types into ipmi_fru.h. + + * include/OpenIPMI/ipmi_fru.h, include/OpenIPMI/ipmi_bits.h: Moved + the chassis types into the public bits. + +2003-09-26 Corey Minyard + + * configure.in: Move to version 1.1.1. + + * Lib/ipmi_malloc.c: Fill debug malloced memory with junk to help + catch usage before initialization. Also cleaned up some error + messages. + + * lib/entity.c: Fixed a problem where some data was being used + before initialization. + +2003-09-25 Corey Minyard + + * configure.in: Move to version 1.1.0. + + * doc/OpenIPMI.texi: Added a little information about FRUs. + + * include/OpenIPMI/ipmiif.h, include/OpenIPMI/ipmi_entity: Moved + entity type definitions to the public part and renamed them, and + allow getting and setting the type + * lib/entity.c: ditto + + * include/OpenIPMI/entity.h, lib/entity.c: Reworked the FRU + handling to be more flexible. + + * include/OpenIPMI/ipmiif.h: Reworked the entity information to + make it more understandable. + + * lib/entity.c: Lots of little cleanups for FRU handling and + handling of SDR records. + + * lib/fru.c: Fixed handling of some data type to find some types + of errors. + + * lib/ipmi_lan.c: Modified the handling of tunnelling IPMB over + LAN to work with Intel boxes. It seems their interpretation of + the spec is different than mine, but the code should now work with + both interpretations. + + * lib/ipmi_malloc.c: Don't print some data that we don't have. + + * lib/oem_motorola_mxp.c: Updated for FRU handling. + + * ui/ui.c: Added better entity output and FRU change handling. + +2003-09-24 Corey Minyard + + * ui/ui.c: Added some FRU handling commands. + + * lib/mc.c: Added entity scanning to device SDRs. + + * lib/entity.c: Reworked the entity SDR handling code so that it + tracks the old values, detects when values change, and does the + appropriate thing. + + * lib/fru.c, include/OpenIPMI/ipmi_fru.h: Added FRU handling code. + * include/OpenIPMI/ipmiif.h: ditto + * lib/Makefile.am, include/OpenIPMI/Makefile.am: ditto + * lib/entity.c: ditto + + * lib/mc.c, include/OpenIPMI/ipmi_mc.c: Allow the entity code to + store MC-specific SDR information in the MC. + + * lib/domain.c, include/OpenIPMI/ipmi_domain.c: ditto, but for the + main SDR repository. + + * include/OpenIPMI/ipmi_bits.h: Added unicode support. + * include/OpenIPMI/ipmi_control.h: ditto + * include/OpenIPMI/ipmi_entity.h: ditto + * include/OpenIPMI/ipmi_int.h: ditto + * include/OpenIPMI/ipmi_sensor.h: ditto + * include/OpenIPMI/ipmiif.h: ditto + * lib/control.c: ditto + * lib/entity.c: ditto + * lib/ipmi.c: ditto + * lib/oem_motorola_mxp.c: ditto + * lib/sensor.c: ditto + + * include/OpenIPMI/ipmi_sensor.h, include/OpenIPMI/ipmi_mc.h: + Moved the sdr fetching code to the MC code where it belonged, but + had to export the sensors waitq to do this. + * lib/mc.c, lib/sensor.c: ditto + + * include/OpenIPMI/ipmiif.h, include/OpenIPMI/ipmi_int.h: Moved + the string decoding and data decoding functions into the internal + functions. + + +2003-09-24 Corey Minyard + + * configure.in: Move to version 1.0.4. + + * lib/selector.c: Allow the selector code to be called from + multiple threads, and fix a race condition on waking up waiting + selectors. + +2003-09-23 Corey Minyard + + * lib/sel.c, lib/sdr.c: Fixed setting the minor version, thanks + Livio Pugliese for pointing this out. + +2003-09-19 Corey Minyard + + * lib/selector.c, include/OpenIPMI/selector.h: Change + sel_select_loop() to return an error if select fails(), instead of + calling exit(). + +2003-09-02 Corey Minyard + + * lib/oem_motorola_mxp_intf.c: Changed the timer for MXP messages + to 20ms and added a 20ms delay between checking for the message + lock. Added a 20ms delay after sending 8 messages to let other + boxes have access. + + * lib/oem_motorola_mxp.c: Fixed the -12V voltage sensor on the + 5365 card to be 10% tolerance. + + * lib/mc.c: Fixed process to continue when the SDR fetch + fails. + + * lib/entity.c, include/OpenIPMI/ipmiif.h: Added a way to force + entity presence detection. + +2003-08-27 Corey Minyard + + * lib/ipmi_lan.c: Fixed reconnection problems. + + * lib/oem_motorola_mxp_intf: Removed connection loss detection from + the MXP-specific queue fetch, because it is unreliable. Just use + the main LAN connection for failure detection. + + * lib/mc.c: Don't cleanup the MC if the SDR read fails. + +2003-08-13 Corey Minyard + + * configure.in: Move to version 1.0.3. + + * doc/OpenIPMI.texi: Minor doc updates. + + * lib/domain.c, include/OpenIPIM/ipmiif.h: Added a way for the + user to know when all the main SDRs have been read. + +2003-08-13 Louis Zhuang + + * lib/selector.c: Fixed a trivial bug in process_timers + +2003-08-12 Corey Minyard + + * lib/sdr.c: Added code to the SDR so that it will wait until + everything outstanding is clear before restarting the fetch + operation. Also added a random timer to restart SDR operations + when the reservation was lost. + + * lib/domain.c: Reworked the code to not start the connection up + process on an inactive connection. + +2003-08-11 Corey Minyard + + * lib/sdr.c: Fixed a locking bug in the SDR code. + + * lib/domain.c: Modified the set timer code that processes a new + working connection to wait a while until activating the + connection. This allows other connections that may already be + active to come up. + +2003-08-01 Corey Minyard + + * configure.in: Move to version 1.0.2. + + * lib/sensor.c, lib/control.c: Handle NULL controls and sensors in + opq done. If a sensor is destroyed during an operation, this can + be called with NULL. + + * lib/oem_motorola_mxp.c: Removed some debugging cruft. + + * lib/oem_motorola_mxp_intf.c: Cleaned up the debug dump output. + +2003-07-31 Corey Minyard + + * lib/domain.c, include/OpenIPMI/ipmi_domain.h: Added a way to + monitor management controllers as they are added and deleted. + + * lib/domain.c: Minor cleanups for handling the new MXP style of + addressing. + + * lib/oem_motorola_mxp.c: Added monitoring for the AMC card. + + * lib/oem_motorola_mxp.c: Split the AMC card handling up to + completely rework the way the AMCs are handled. The 0x20 address + points to the current AMC. Addresses (f 0) and (f 1) point to the + individual AMCs. + * lib/oem_motorola_mxp_intf.c: ditto + + * lib/oem_motorola_mxp.c: Made the board entity instances + one-based instead of zero based. + +2003-07-30 Corey Minyard + + * lib/oem_motorola_mxp.c: Made entity instances start at one + for all entities instead of the random smattering that was there. + + * lib/oem_motorola_mxp.c: Fixed power supply events to not use the + slave address of the power supply when translating events. + + * lib/ipmi_lan.c, lib/oem_motorola_mxp_intf.c: Modified the lan + connections to make a connection for each IP address instead of + sharing a connection between IP addresses. Not all boxes support + sharing a connection between IP addresses. + + * lib/domain.c: Fixed a problem handling + + * lib/ipmi_lan.c, lib/oem_motorola_mxp_intf.c: Fixed a problem + where the connection state wouldn't change if only the active + value changed and not the IPMB address. + +2003-07-29 Corey Minyard + + * lib/oem_motorola_mxp.c: Fixed a few little things required + for the new firmware. + + * lib/oem_motorola_mxp_intf.c: Modified messages directly to the + system interface to use the sequence number queue from the + standard IPMI LAN code. You couldn't use the standard message + queue because those are one-at-a-time and the messages get gummed + up in there. + +2003-07-25 Corey Minyard + + * doc/OpenIPMI.texi: Minor doc updates about authentication. + +2003-07-24 Corey Minyard + + * lib/mc.c: Delayed the start of fetching events for an MC's SEL + until the domain connection is up. + +2003-07-23 Corey Minyard + + * lib/entity.c: Fixed searching for the next presence sensor when + one is deleted. + + * lib/entity.c: Don't set the device num for an entity if the + instance is not device-relative. Also, don't add an mcdlr if no + entity id is specified. + + * lib/entity.c: Fix removal of controls from entities to compare + properly. + + * lib/ipmi_oem_force_conn.c, lib/oem_force_conn.c: Renamed this + file to make it more consistent. + * lib/Makefile.am: ditto + + * lib/oem_motorola_mxp.c, lib.oem_motorola_mxp_intf.c: Added + support for the Motorola MXP chassis. + * include/OpenIPMI/mxp.h: ditto + * lib/Makefile.am: ditto + * lib/ipmi.c: ditto + * ui/basic_ui.c: ditto + +2003-07-22 Corey Minyard + + * configure.in: Moved to version 1.0.1. + + * utils/test_md5.c, utils/test_md2.c: Make the tests run + standalone. + + * lanserv/Makefile.am: Make dependencies for libraries be in + the build directory, not the source directory. This way it will + build in a separate object directory. + * lib/Makefile.am: ditto + * sample/Makefile.am: ditto + * ui/Makefile.am: ditto + + * configure.in: Moved to version 1.0.0. + + * everything: Restructured the entire tree and split up everyting + into subdirectories. Hopefully the code is much better structured + now. + +2003-07-21 Corey Minyard + + * ipmi_smi.c: Added socket interface handling for the SMI + connection. + +2003-07-16 Corey Minyard + + * OpenIPMI.texi, sensors.c, include/OpenIPMI/ipmiif.h: Added + support for just enabling or disabling sensor event (instead of + directly setting them), added a bunch of error checking to the + enabling and disabling of sensors to make sure the sensor supports + the requested capability. + * include/OpenIPMI/ipmi_sensor.c: ditto + + * entity.c: Reworked the presence sensor code to take into account + the sensor capabilities. + +2003-07-11 Louis Zhuang + + * ipmi_lan.c, lanserv_asf.c, lanserv_ipmi.c: Cleanups to + remove some warnings. + +2003-07-03 Corey Minyard + + * sdr.c: When handling SDR data, be sure to check that the MC is + valid in responses, so that this properly handles MCs going away. + +2003-06-11 Corey Minyard + + * configure.in: Move to version 0.4.3 + + * include/net/af_ipmi.h: Added include file for IPMI socket. + * Makefile.am: ditto + * configure.in: ditto + * include/net/Makefile.am: ditto + + * lanserv.c: Modified to use IPMI socket if available. + +2003-06-07 Corey Minyard + + * Makefile.am: Clean up so that every '.c' is only listed once. + When used in multiple programs, create a '.o' in all but one + instance. Still need to figure out how to correctly refer to + .a libraries created by a '.la'. + + * all: License updates. + +2003-06-06 Corey Minyard + + * sel.c: Modified to not use the state to tell if something is + going on, but to use the opq. Deletes don't modify the state, but + they may still be in process at deletion. + + * mc.c: Fixed a memory leak. + +2003-06-05 Corey Minyard + + * sel.c: Fixed a SEL destruction race condition. + +2003-06-04 Corey Minyard + + * OpenIPMI.tex, README.Force: Minor updates to make some things + clearer. + + * basic_ui.c: Fixed a problem with SMI connections. + + * ilist.c, ilist.h: Added some helper functions. + + * ui_os.c: Switch from /dev/random to /dev/urandom to avoid + blocking for lack of entropy. + + * ui.c: Added a total bytes in SDR count. + + * sdr.c: Added a pipeline to the SDR fetch, to speed it up for + high-latency links. + +2003-06-03 Corey Minyard + + * ipmicmd.c: Added the latency testing code back in. + +2003-06-02 Corey Minyard + + * configure.in: Move to version 0.4.2. + + * sensor.c: Moved the removal of the sensor from the entity to the + place of its final destruction, so the entity will exist during + callbacks related to destruction of the sensor. + + * ipmi_lan.c: Send a close session command when the connection is + closed. + +2003-05-30 Corey Minyard + + * OpenIPMI.texi: Updated docs for handling multiple MCs. + + * domain.c: Add a timer to wait for a while after detecting that + everyone is inactive before acting. This should solve race + conditions where something deactivates one and activates another, + to avoid an activation war between software devices. + + * domain.c: Reworked some timers so that the handle shutdowns + correctly. + + * ipmi_lan.c: Changed the failure timeout to 3 seconds. + + * lanserv.c: Send all output to stdout in non-daemon mode. + +2003-05-29 Corey Minyard + + * domain.c: More fixes for supporting multiple connections. + + * entity.c: Fixed the presence handling to use an entity id + instead of an entity pointer since the entity can go away. + + * ipmi_lan.c: Modified broadcasts to not retry. + + * ipmi_lan.c: Added timer frees in a few places that needed them. + + * ipmi_oem_force_conn.c: Changed the broadcast of the deactivate + to a normal message so it gets retried. + + * include/linux/ipmi.h: Added changes for setting the timing + parameters. + + * lanserv.c: Added changes for setting the timing parameters. + + * sdr.c: Fetch sdr 0 to verify the reservation, not the current + record. Also fixed some completion stuff. + + * sensor.c: Fixed a shutdown case. + +2003-05-28 Corey Minyard + + * sel.c: Fixed a shutdown double-free. + + * sdr.c: Fixed some shutdown free problems. + + * mc.c: Fixed some MC shutdown problems. + + * ilist.c, ilist.h: Set the malloced variable for the supplied + entry automatically. + + * sdr.c: Removed some bogus frees. + + * mc.c: Set the MC active when it is handled as a new MC. + + * ipmiif.h: Removed ipmi_domain_get_user_data, since it doesn't + make sense any more. + + * domain.c: Added support for multiple connections to a single + IPMB box. + + * ipmi_oem_force_conn.c: Added handling for active and inactive + connections. + +2003-05-26 Corey Minyard + + * lanserv.c: Fixed the address reading code to increment the + address count when it sees an address in the configuration file. + +2003-05-19 Corey Minyard + + * mc.c: Modified the event receiver setting code to not modify the + event receiver unless it is pointing to a nonexistant MC or an MC + that does not have an event receiver. + +2003-05-16 Corey Minyard + + * configure.in: Move to version 0.4.1 + + * lanserv_oem_force.c, ipmi_oem_force.c: The permission from + Force Computers(tm) came much faster than I expected. This + included some OEM handling for the various Force cards, for + switching the cards to/from BMC mode and for fetching the IPMB + address. Thanks to Force for their help. + + * ipmi.c, lanserv.c, ipmicmd.c: Added calls to initialize the + Force OEM code. + +2003-05-15 Corey Minyard + + * lanserv.h: Moved to include/OpenIPMI + + * lanserv.c: Handled move of lanserv.h + * lanserv_asf.c: ditto + * lanserv_ipmi.c: ditto + * lanserv_emu.c: ditto + + * configure.in: Move to version 0.4.0 + + * ipmicmd.c: Changed the order of the lun and netfn to make it + consistent with ipmi_ui. + + * ipmicmd.1: Wrote some docs for ipmicmd. + + * include/OpenIPMI/ipmi_conn.h: Reworked the connection reporting, + changed "fail" to "change" everywhere to make it more accurate, + and report all connection changes through the same interface. + * domain.c: ditto + * ipmi_lan.c: ditto + * ipmi_smi.c: ditto + * ipmicmd.c: ditto + * sample.c: ditto + * ui.c: ditto + * include/OpenIPMI/ipmi_lan.h: ditto + * include/OpenIPMI/ipmi_ui.h: ditto + * include/OpenIPMI/ipmiif.h: ditto + + * include/OpenIPMI/ipmiif.h, domain.c: Modified the domain + interface to support more than one connection (although the code + still only supports one). + +2003-05-14 Corey Minyard + + * ipmi.c, conn.c: Moved some connection handling stuff into a + new file. + * include/OpenIPMI/ipmi_int.h: ditto + * include/OpenIPMI/ipmi_conn.h: ditto + + * include/OpenIPMI/ipmi_conn.h: Added a lot of connection handling + changes for handling different and dynamic IPMB addresses, and for + supporting the concept of a connection being "active". + * ipmi.c: ditto + * ipmi_lan.c: ditto + * ipmicmd.c: ditto + * ipmi_smi.c: ditto + * domain.c: ditto + * ipmi.c: ditto + * ipmi.c: ditto + + * lanserv.h, lanserv.c, lanserv_ipmi.c: Added a lot of OEM + handling. + + * sensor.c: Fixed a missing return. + +2003-05-13 Corey Minyard + + * ipmi.c, ipmi_lan.c, ipmi_smi.c: Added infrastructure so that + OEMs can see connections by device id when the connection is + first established. + * include/OpenIPMI/ipmi_oem.h: ditto + * include/OpenIPMI/ipmi_int.h: ditto + + * ipmicmd.c: Reworked this so it sits on top of an IPMI + connection. This means you can make LAN connection now. + + * ipmi_utils.c: Split out some generic IPMI things that don't + depend on anything else. + + * everything: Added the concept of an IPMI domain, and replaced + the "BMC" with the "domain". This was not a huge change from a + usage point of view, but was a big restructure internally. This + way, we can support multiple BMC connections into a domain. + +2003-05-05 Corey Minyard + + * ui.c: Added connection retrying. + +2003-05-04 Corey Minyard + + * ipmi_lan.c: Got IPMI LAN stuff working again. + + * ui.c: Updates for the new id handling. + +2003-05-02 Corey Minyard + + * lanserv_emu.c: Added an emulator for testing. + + * include/OpenIPMI/ipmi_conn.h: Added a way for the interface code + to provide the IPMB address. + * mc.c, ipmi_lan.c, ipmi_smi.c: ditto + + * mc.c: Added a valid field to the MC, right now just for BMCs, to + handle shutdown races. + +2003-05-01 Corey Minyard + + * include/OpenIPMI/ipmi_types.h: A restructure of the id's was + done to remove the MC validation calls from the rest of the code + and use the standard MC callbacks. It also added sequence + numbers to MCs and MC ids so that if an MC is freed and the same + memory is re-allocated, the MC still won't compare with an old + id. + * include/OpenIPMI/ipmi_mc.h: ditto + * include/OpenIPMI/ipmi_sensor.h: ditto + * control.c: ditto + * entity.c: ditto + * sensor.c: ditto + * mc.c: ditto + * sdr.c: ditto + * sel.c: ditto + + * include/OpenIPMI/ipmi_int.h, ipmi.c: Added a sequence number + allocator. + +2003-04-30 Corey Minyard + + * lanserv.c: Modified the server to support two LAN connections + specified in the config file, and modified it to always return the + message from the file descriptor that received the message. + + * mc.c: Modified the SEL time code to set the time on the SEL, + not get the time, so the SEL time will be correct. + +2003-04-29 Corey Minyard + + * ipmi_lan.c, include/OpenIPMI/ipmi_lan.h: Added multiple IP + addresses for a BMC. + + * include/OpenIPMI/ipmi_conn.h: Started restructuring the + connection code so that the user allocates the connection and + passed it into the main IPMI code. This decouples the main IPMI + code from the connection code, and readies support for having more + than one BMC connection into a box. + * include/OpenIPMI/ipmi_lan.h: ditto + * include/OpenIPMI/ipmi_smi.h: ditto + * include/OpenIPMI/ipmi_ui.h: ditto + * include/OpenIPMI/ipmiif.h: ditto + * mc.c: ditto + * ipmi_lan.c: ditto + * ipmi_smi.c: ditto + * basic_ui.c: ditto + * sample.c: ditto + * ui.c: ditto + + * include/OpenIPMI/ipmi_types.h: Moved ipmi_con_t as an opaque + type into here, so the user can access it. + +2003-04-28 Corey Minyard + + * lanserv.c, lanserv.h, lanserv_ipmi.c: Added logs for error and + notification handling. + + * lanserv.c, lanserv.h, lanserv_ipmi.c: Added an OEM message + handler. + +2003-04-27 Corey Minyard + + * lanserv.c, lanserv.h, lanserv_ipmi.c: Added timeout handling + for sessions. + +2003-04-26 Corey Minyard + + * lanserv_ipmi.c: Added incoming session sequence number + checking. + +2003-04-25 Corey Minyard + + * lanserv.c, lanserv_ipmi.c, lanserv_asf.c, lanserv.h: Added a LAN + to SI interface. + + * include/OpenIPMI/ipmi_auth.h: Abstracted the memory allocation + so the auth routines don't depend on OpenIPMI. + * ipmi_lan.c: ditto + * ipmi_auth.c: ditto + * md2.c, md2.h: ditto + * md5.c, md5.h: ditto + * ipmi_lan.c: ditto + + * ipmi_malloc.c, include/OpenIPMI/ipmi_int.h: Made ipmi_mem_alloc + take an int size, not a size_t size. + +2003-04-24 Corey Minyard + + * strings.c: Fixed a bug in getting the sensor reading name. + + * priv_table.c, include/OpenIPMI/ipmi_auth.h: Added a table and + handling for figuring out if a message is permitted for a certain + priviledge level. + + * include/OpenIPMI/ipmi_msgbits.h: Added all the message ids from + table G-1 from the IPMI 1.5 spec. + +2003-04-23 Corey Minyard + + * ipmi.c, ipmi_auth.c: Created ipmi_auth.c from some stuff in + ipmi.c + + * include/OpenIPMI/ipmi_msgbits.h: Added a bunch of message ids. + +2003-04-22 Corey Minyard + + * ipmicmd.c, include/linux/ipmi.h: Added a debug interface to + ipmicmd. + + * ui.c: Added a way to dump all an mc's information. + +2003-04-17 Corey Minyard + + * ui.c: Fixed a double free on set_control error conditions. + + * mc.c: Added set functions for all the specific MC capabilities. + + * configure.in: Move to version 0.3.1. + + * mc.c: Added a mechanism to ignore IPMB addresses. + + * configure.in: Move to version 0.3.0b. + + * ui.c: Ignore control values when an error is reported from + reading a control. + +2003-04-16 Corey Minyard + + * configure.in: Move to version 0.3.0. + + * mc.c: During shutdown, delete entities after sensors and + controls because sensors and controls may refer to entities. + +2003-04-15 Corey Minyard + + * ipmi_lan.c: Implemented a max outstanding message count to + avoid killing a LAN BMC, and implemented a queue to hold extra + messages. + +2003-04-15 Duncan Laurie + + * ipmi_lan.c: Fix a couple of bits when the Send Message variant + in lan_send is used. Fix a double-unlock condition that + happens with LAN response timeouts. + + * ipmi_lan.c: add a Set Session Privilege Level command to the end + of the session setup sequence. It is required because despite + what you use the in the "privilege level" field in Activate + Session command it opens in User level. + +2003-04-15 Corey Minyard + + * configure.in: Move to version 0.2.7. + + * include/OpenIPMI/ipmi_mc.h, OpenIPMI.texi: Change the name + of ipmi_bmc_get_startup_SEL_time() to ipmi_mc_get_startup_SEL_time(), + in the docs and includes, since it had already changed in the code. + +2003-04-14 Corey Minyard + + * configure.in: Move to version 0.2.6. + +2003-04-10 Louis Zhuang , Corey Minyard + + * include/OpenIPMI/selector.h: Added sel_select() to the include + file. + + * sample.c: Added an example of using sel_select(). + + * selector.c: Some cleanups. + +2003-04-03 Duncan Laurie + + * ipmi_lan.c: Fixups trying to the the lan code working. + +2003-04-01 Corey Minyard + + * mc.c: Changed the event receiver setting so that it is always + done for new MCs, and it is done after the SDRs are read. That + way, any pending conditions for a new MC will be generated + immediately with a valid sensor to handle it. + + * mc.c: Modified event handling so that events from the BMC get + delivered properly. It was not converting events from the system + interface properly. + +2003-03-31 Corey Minyard + + * all: Really release verion 0.2.5. + + * ui.c: Reset the termios on an error exit, too. + + * sdr.c: Fixed the SDR fetch to only fetch the exact amount of + data left, instead of trying to get as much as possible, when at + the end of the SDR. Apparently some hardware doesn't handle this + properly. + +2003-03-27 Corey Minyard + + * ipmi_smi.c: Removed the timing of commands, because the + low-level driver does it, and it introduced some race conditions. + Specifically, if OpenIPMI timed out the command and the memory + address got reused before the message came back in, then the + message would be delivered to the wrong place. It generally only + happened when sitting for a long time in the debugger (so a whole + slew of things happened at once). + + * example_oem.c, Makefile.am, OpenIPMI.texi: Added an example OEM + plugin file for others to use to build their plugins. + +2003-03-26 Corey Minyard + + * mc.c: Fixed some problems with non-BMC SELs. + + * ui.c: Added a log at startup to tell you to wait until startup + is complete. + + * ui.c: Added a quit command. + +2003-03-25 Corey Minyard + + * ui.c: The UI will no longer attempt to read unreadable + controls. + +2003-03-19 Corey Minyard + + * sdr.c: Modified the reservation support handling for device + SDRs. Start out assuming that it is supported, and if it returns + an invalid command then assume it is not supported. There is no + clear way to determine if reservation is supported on device SDRs. + + * sdr.c: Check the proper MC flag if it is a sensor SDR to see if + it supports device SDRs. + + * configure.in: Updated version to 0.2.5. + +2003-03-14 Corey Minyard + + * sensor.c: Yet one more cleanup for compact sensor records, + increment the source index properly. + + * sensor.c: Removed handle_deleted_sensor() and always use + ipmi_sensor_destroy() to clean up a sensor. + + * control.c, include/OpenIPMI/ipmi_control.h: Added a count + for the number of controls in a control repository. + + * sensor.c, include/OpenIPMI/ipmi_sensor.h: Added a count + for the number of sensors in a sensor repository. + + * mc.c, include/OpenIPMI/ipmi_mc.h: Added the concept of an + MC being active or inactive. Active MCs are present in the + system. Inactive MCs are not present but referenced by SDRs, so + they cannot be deleted. + +2003-03-13 Jeff Zheng + + * sample.c: Added a simple sample application. + +2003-03-12 Corey Minyard + + * mc.c: Fixed a cleanup case in the routine that finds or creates + an MC. + + * sensor.c: Minor sensor cleanup additions. + + * sensor.c: Fixed compact sensor records to copy the data contents + instead of the pointer. + +2003-03-06 Corey Minyard + + * configure.in: Move to version 0.2.4. + + * mc.c: Cleaned up some naming (use bmc when it is a bmc). + + * ui.c, basic_ui.c: Added a "reconnect" command to disconnect and + reconnect to the BMC. + + * configure.in: Move to version 0.2.3. + + * mc.c: Added rescanning the entities when a connection comes + back. + +2003-03-05 Corey Minyard + + * include/OpenIPMI/ipmiif.h: Fixed the description of the + ipmi_bmc_add_con_fail_handler() call to be accurate and complete. + + * mc.c: Added starting a rescan of the IPMB bus when a connection + comes back. + +2003-02-27 Corey Minyard + + * configure.in: Move to version 0.2.2. + + * entity.c: Cleaned up entity presence detection so it works + properly with an entity presence sensor. + + * sdr.c: Fixed a bug where the SDR fetch would go into an infinite + loop if the last SDR was not a sensor. + + * ui.c: Fixed things so the "-c" option (not full screen) works + ok. + +2003-02-26 Corey Minyard + + * include/OpenIPMI/os_handler.h: Added thread functions and moved + all the function OpenIPMI does not use to the end. + +2003-02-25 Corey Minyard + + * configure.in: Move to version 0.2.1. + +2003-02-25 Todd David + + * ipmi.c: Added a check for the lock actually being allocated in + ipmi_check_lock(). + +2003-02-24 Corey Minyard + + * test1.c, Makefile.am: Removed this bogus file. + + * sensor.c: Handle the same sensor received multiple times from + the same SDR. This actually moves the sdr_sensors source array + into the sensor itself so it can be deleted regardless of where it + came from. + + * sdr.c: The Get Device SDR Info command is optional (even if the + device has device SDRs, for some strange reason), so default the + information if it's not implemented but the device supports device + SDRs. + + * mc.c: Ignore device SDRs if we get an error back from querying + them. + +2003-02-21 Corey Minyard + + * configure.in: Moved to version 0.2.0. + + * include/OpenIPMI/ipmiif.h, include/OpenIPMI/ipmi_sensor.h + Added rearm support for sensors. + * sensor.c: ditto + * ui.c: ditto + + * include/OpenIPMI/ipmiif.h: The spec was very confusing in + section 29.11 and 29.14 (1.5 spec) about the event messages and + scanning enable/disable. After studying the spec more, I'm pretty + sure that 1 means enabled and 0 means disabled. I think the spec + is saying that 0 means disabled in the way it presents this. + * include/OpenIPMI/ipmi_int.h: ditto + * sensor.c: ditto + * entity.c: ditto + * ipmi.c: ditto + * mc.c: ditto + * ui.c: ditto + + * mc.c: Changed setting the event receiver for an MC to only do it + if the event receiver was set incorrectly. + + * sel.c: Fixed a missing unlock. + + * sel.c: Modified the way individual record deletes occur and + fetches occur to use an opq. This way, reservations won't get + mixed up. Also modified individual deletes to check the value of + the event before they actually delete it, to make 100% sure they + are deleting the right event. + + * include/linux/ipmi.h, include/linux/ipmi_msgdefs.h: Converted to + the new versions of the kernel headers. + * include/OpenIPMI/ipmi_addr.h: ditto + * include/OpenIPMI/ipmi_types.h: ditto + * ipmi_smi.c: ditto + + * ipmicmd.c, Makefile.am: Added ipmicmd to this code. + +2003-02-20 Corey Minyard + + * ui.c: Fixed a memory leak with controls. + + * sel.c: Make sure to report that a sel delete completed, even if + we can only clear the whole SEL when all are done. + + * include/OpenIPMI/ipmi_msgbits.h: Added event receiver commands. + + * mc.c: Fixed a memory leak deleting logs. + + * ui.c: Added a command to scan an IPMB address. + + * mc.c: Added code to set the event receiver for MCs to whatever + the current event receiver device is. + + * ipmi.c, include/OpenIPMI/ipmi_addr.h: Added a way to get the + slave address for an address. + + * mc.c: Since the OEM code can change the values from get device + id, the comparison code (to tell if an MC has changed) was changed + to used a real copy of the values from the get device id, instead + of the used values. + + * Makefile.am, ipmi.c, ipmi_malloc.c: Split off the memory + debugging stuff into a separate file. + + * Makefile.am: Added heap.h to the file. + + * mc.c, include/OpenIPMI/ipmi_oem.h: Changed the name of the + MC removal callback to reflect it's function better (since it's + not BMC-related). + + * entity.c: Fixed a memory leak with presence sensors. + +2003-02-19 Corey Minyard + + * mc.c, include/OpenIPMI/ipmi_conn.h: Modified the ipmi_init_con() + call to take the slave address. + + * ipmi_lan.c, ipmi_smi.c: Now pass in the slave address to + ipmi_init_con(). + + * OpenIPMI.texi: Updated docs for changes. + + * ui.c: Various cleanups for the SMI address and the new SEL + setup. + + * ilist.c, ilist.h: Added a way to traverse the list backwards. + + * ipmi_smi.c: Converted the BMC to use an SMI address. + + * mc.c, include/OpenIPMI/ipmi_mc.h: Added a way for the OEM code + to add a way to fetch the SMI slave address. + + * mc.c, include/OpenIPMI/ipmiif.h, include/OpenIPMI/ipmi_mc.h, sel.c: + Changed SEL support to be per-MC (as it should be) and not on the + BMC. This will allow support for SELs not on the MC, and for + multiple SEL devices in a system. It required the removal of + ipmi_bmc_del_event_by_recid(), and a modification to the event + structure, since the system now has to know what MC the event came + from. + + * include/OpenIPMI/ipmi_types.h: Added an MC to the event so we + know which MC it came from. + +2003-02-18 Corey Minyard + + * ui.c: Added a way to set the event enables. + + * sdr.c: Made some of the err info logs unique. + + * mc.c, entity.c: memory leak removals + + * ilist.c, ilist.h, ipmi.c: Added separate allocation routines + for the ilist code. + + * mc.c, include/OpenIPMI/ipmi_oem.h: Added a shutdown callback to + the OEM registeration. + + * mc.c, include/OpenIPMI/ipmi_mc.h: Added global shutdown code for + the mc. + + * ipmi.c, include/OpenIPMI/ipmiif.h: Added global shutdown code. + + * ipmi.c, include/OpenIPMI/ipmi_int.h: Added memory debugging + code. + + * basic_ui.c: Converted over to the new memory debugging code. + * control.c: ditto + * entity.c: ditto + * ipmi.c: ditto + * ipmi_lan.c: ditto + * ipmi_smi.c: ditto + * mc.c: ditto + * md2.c: ditto + * md5.c: ditto + * opq.c: ditto + * sdr.c: ditto + * sel.c: ditto + * selector.c: ditto + * sensor.c: ditto + * ui.c: ditto + * ui_command.c: ditto + * ui_keypad.c: ditto + * ui_os.c: ditto + + * selector.c, heap.h: Split out the heap code into a generic. + + * test_btree.c: Added a test for the heap code. + +2003-02-13 Corey Minyard + + * configure.in: Moved to version 0.1.4. + +2003-02-12 Corey Minyard + + * mc.c, sdr.c, sel.c: Changed all 1-bit integers to unsigned so + that comparisons work properly. + +2003-02-09 Corey Minyard + + * configure.in: Moved to version 0.1.3. + + * Makefile.am: Fixed include of "include" dir to be based on + srcdir, removed -Werror. + + * src.c, selector.c, sel.c, ui.c: Fixed some deprecated + operations to avoid warnings in gcc3.x. + +2003-02-03 Corey Minyard + + * mc.c, include/OpenIPMI/ipmiif.h, sel.c, include/OpenIPMI/ipmi_sel.h: + Modified the previous change to report the number of entries in + the SEL, since the number of total entries available in the SEL + may not be available. + + * mc.c, include/OpenIPMI/ipmiif.h, sel.c, include/OpenIPMI/ipmi_sel.h: + Added a way to get the estimated number of entries left for new + events in the SEL. + +2003-01-30 Corey Minyard + + * configure.in: Move to version 0.1.2. + + * include/OpenIPMI/ipmi_msgbits.h: Added the master read/write + command. + +2003-01-29 Corey Minyard + + * mc.c, include/OpenIPMI/ipmiif.h: Added a mechanism for changing + the SEL rescan timers and the bus rescan timers. + +2003-01-28 Corey Minyard + + * ui.c: Fixed problems with the previous va_arg problem. + +2003-01-27 Corey Minyard + + * entity.c: Lots of little cleanup for parent-child relationships + and shutdown. + + * sensor.c: Lots of little cleanups for handling new SDRs. + + * ui.c: Fixed some problems with threshold display, and added + the current value of the threshold (out of range). + + * ui.c: Fixes some va_arg problems. + + * sensor.c: Fixed problems with sensor allocation. + +2003-01-24 Corey Minyard + + * ui.c: Changed shutdown code to close the connection first. + + * mc.c: Modified the close connection code to avoid locking + problems. + + * include/OpenIPMI/ipmiif.h: Changed the format of the close done + callback to remove the BMC (since it will be gone). + + * selector.c, include/OpenIPMI/selector.h: Modified the selector + code to be reentrant + + * ipmi.c, include/OpenIPMI/ipmi_int.h: Added a way to allocate a + lock using the global IPMI selector. + + * basic_ui.c, test1.c: Changed to account for the selector + changes. + +2003-01-22 Corey Minyard + + * basic_ui.c, ui.c, include/OpenIPMI/ipmi_ui.h: Start working on a + command-line only version of the ui. + + * ui.c: Rework to abstract the output, getting ready for doing + command-line only. + + * mc.c, include/OpenIPMI/ipmi_mc.h: Added support for setting more + device support bits. + + * ui.c: Added a command to dump the SDRs. + + * sdr.c: Reworked the fetching of SDRs to get the SDR info first, + then to do the reservation if it is required. + + * sensor.c: Fixed the sensor calculation values to be the right + signedness. + + * mc.c: Modified SEL fetch to restart the timer after the previous + SEL fetch completes. + +2003-01-21 Corey Minyard + + * configure.in: Went to version 0.1.1 + +2003-01-20 Corey Minyard + + * ui.c: Added a list_sel command. + + * ui.c: Modified the clear sel command to go through all the + events and delete them, instead of clearing the SEL with a + command. + + * sel.c: Fixed the next, previous, first, last, and get all + operations to take into account deleted events. Also fixed a bug + where re-adding an event that was deleted would cause the count to + be wrong. + +2003-01-17 Corey Minyard + + * ui.c, include/OpenIPMI/ipmi_int.h: Added a debug flag to disable + LAN connections. + +2003-01-16 Corey Minyard + + * mc.c, include/OpenIPMI/ipmiif.h, include/OpenIPMI/ipmi_conn.h: + Added a mechanism to report failures of the lower-level + connection, and added code to ignore periodic events (bus scan, + SEL scan) while the connection is down. + * ipmi_lan.c: ditto + * ipmi_smi.c: ditto + + * OpenIPMI.texi: Documented the changes to the SEL code. + + * mc.c, include/OpenIPMI/ipmi_oem.h: Added an OEM callback for MC + removal. + + * mc.c: Added detection of when an MC goes away or changes. + + * mc.c: Cleaned up the MC cleanup code to consolidate it. + + * entity.c: Modified entity sensor/control deletion so that if all + the entities and sensors are gone, and the entity was + auto-created, that the entity itself would be destroyed. + + * sel.c: Reworked the event deletion code so that it works even + without the ability to delete individual entries. If all the + entries in the local database are deleted, it will clear out the + database (if the reservation hasn't been lost). + +2003-01-15 Corey Minyard + + * sel.c: Fixed a locking problem with SEL operations. + + * mc.c, include/OpenIPMI/ipmi_mc.h: Added a hook for event + deletion handling, so OEM code can do its own event deletion. + + * mc.c, include/OpenIPMI/ipmi_mc.h: Added handling for ignoring + events (only sending to the unhandled interface) for events that + were already in the SEL at startup. + +2003-01-14 Corey Minyard + + * ui.c: Added a fix for handling local interface BMCs. + +2003-01-13 Corey Minyard + + * configure.in: Move version to 0.1.0. + + * OpenIPMI.texi: More work on docs. + + * sel.c, mc.c: Minor cleanups. + + * ipmi_smi.c: Modified the timeout to be a much larger value. + The device drivers have their own timers, we just need to make + sure something doesn't go wrong here. + +2003-01-09 Corey Minyard + + * mc.c: Added a periodic rescan of the presence sensors + periodically (with the bus scan). + + * ui.c: Added rescanning of entities when displaying them. + + * mc.c, include/OpenIPMI/mc.h, entity.c: Added support for + handling unhandled (not delivered to the user) events, so the user + can delete them if they like. + + * ui.c: The info wasn't being passed into the id-to-pointer + converted for the mccmd command. + + * OpenIPMI.texi: More work on docs. + + * control.c: Fixed the calculation size for the non-standard entry + array size. + +2003-01-09 Corey Minyard + + * OpenIPMI.texi: More work on docs. + * include/OpenIPMI/ipmi_control.h: ditto + * include/OpenIPMI/ipmi_sensor.h: ditto + + * include/OpenIPMI/ipmi_control.h, control.c: Added a missing + ipmi_control_send_command_addr() function. + + * include/OpenIPMI/ipmi_control.h, control.c: Added a cleanup + handler for the OEM info. + * include/OpenIPMI/ipmi_sensor.h, sensor.c: ditto + + * entity.c, mc.c: Added an entity-specific lock, and used it where + entities were specifically being locked. + + * ipmi_sensor.c, sensor.c: Made the sensor callbacks const. + + +2003-01-08 Corey Minyard + + * OpenIPMI.texi: More work on docs. + + * include/OpenIPMI/ipmi_int.h, mc.c, ui.c: Added an event debug + level. + +2003-01-07 Corey Minyard + + * OpenIPMI.texi: More work on docs. + + * Makefile.am: Turned on lock checking code generation. + + * include/OpenIPMI/ipmi_int.h: Cleaned up the debugging flags. + + * include/OpenIPMI/ipmi_sel.h: Changed the name "log" to "event". + * include/OpenIPMI/ipmi_oem.h: ditto + * include/OpenIPMI/ipmi_sensor.h: ditto + * include/OpenIPMI/ipmi_types.h: ditto + * include/OpenIPMI/ipmiif.h: ditto + * entity.c: ditto + * ipmi.c: ditto + * mc.c: ditto + * sel.c: ditto + * sensor.c: ditto + * test1.c: ditto + * ui.c: ditto + + * sel.c: Cleaned up the rather broken locking. + + * sdr.c, include/OpenIPMI/ipmi_sdr.h: Cleaned up the names and + cleaned up the rather broken locking. + + * control.c: Added IPMI logging information. + * sdr.c: ditto + * sel.c: ditto + * sensor.c: ditto + + * configure.in: Changed to version 0.0.3. + + * include/OpenIPMI/log.h: Reworked log handling to add a log type. + * include/OpenIPMI/os_handler.h: ditto + * ipmi.c: ditto + * ipmi_lan.c: ditto + * ipmi_smi.c: ditto + * mc.c: ditto + * sel.c: ditto + * ui.c: ditto + * ui_os.c: ditto + + * include/OpenIPMI/log.h, include/OpenIPMI/ipmiif.h: moved log + information from ipmiif.h to log.h. + +2003-01-06 Corey Minyard + + * ui.c: Converted the bmc pointer to a bmc id. + + * ipmi_smi.c: Fixed a double unlock. + + * ipmi.c, include/OpenIPMI/ipmi_int.h, ui_os.c: Added code for + checking for locking errors, fixed locking errors + * control.c: ditto + * entity.c: ditto + * mc.c: ditto + * sensor.c: ditto + + * include/OpenIPMI/os_handler.h: Added callbacks for telling + if a lock is held. + * entity.c, include/OpenIPMI/ipmiif.h, ui.c: Added IPMI_ in front + of some enumeration values. + +2003-01-03 Corey Minyard + + * sensor.c: Modified the way the reporting of the hot-swap sensor + is done, so it can support being a single offset in a sensor (like + a slot sensor). + * include/OpenIPMI/ipmi_sensor.h: ditto + * include/OpenIPMI/ipmiif.h: ditto + + * ipmi_lan.c: Modified the timers to be alloc/free/start/stop, so + they can be allocated and reused at will. + * ipmi_smi.c: ditto + * mc.c: ditto + * test1.c: ditto + * ui_os.c: ditto + * include/OpenIPMI/os_handler.h: ditto + +2002-12-18 Corey Minyard + + * Release of the 0.0.2 version diff --git a/FAQ b/FAQ new file mode 100644 index 0000000..519ae12 --- /dev/null +++ b/FAQ @@ -0,0 +1,331 @@ + +1) Questions about the driver + + 1.1) I'm trying to do a send message command, but it fails. Why + can't I do this? + + You know too much about IPMI :-). OpenIPMI does all this work + for you. To send a message out on IPMB, you set up an IPMB + address and send the message to that address (without all that + nasty send message stuff). It's much easier. Try it, you'll + like it. + + 1.2) I *really* want to do a send message command. How do I do it? + + Sorry, you can't. It's not that I have it out for you, it has to + do with the technical details of IPMI. If you have multiple + users of an IPMI system, you have to have a central mechanism to + manage information. You have sequence numbers that have to be + assigned and managed; if the same applications used the same + sequence numbers then chaos would ensue. Since the OpenIPMI + driver allows multiple users (and has users both inside and + outside the kernel) it can't allow users to directly do send + message commands. + + +2) Questions about the library. + + 2.1) Why is ipmi_ui so ugly? + + Well, ipmi_ui is a test program that I wrote for my own purposes. + I'll try to clean it up in the future and make it into something + useful, and it's certainly ugly, but it's primarily for my + testing. + + In general, it has been replace with the ipmish command, which + provides a much more consistent interface to the system. It is + much more consistent and is well documented. It is perhaps not + quite as nice for interactive use. + + + 2.2) What if I just want to send some IPMI commands. + + Then "ipmicmd" is the tools for you. It can connect to a system + interface or to a LAN connection and let you directly enter + commands. + + + 2.3) I'm trying to write a little program that comes up and queries a + few things. Can I use the OpenIPMI library to do that? + + Yes, you can. In the ipmi_open_domain() command, you can turn on + and off the things you want, so you can trim down the startup + process to speed it up. + + + 2.4) Why can't I just perform an operation and immediately get the + results? Why all these callbacks? + + Read the documenation for details. The OpenHPI interface + (http://openhpi.sourceforce.net) is expected to sit on top of the + OpenIPMI library and provide an interface more like that. Plus, + you can write your own wrappers to do it. It's not possible to + write event-driven wrappers on top of a non-event-driven + interface. + + + 2.5) Can I have multiple OpenIPMI session from different programs to + the same interface? + + Certainly. I do it all the time :-) + + The main problem is the System Event Log (SEL). Somebody has to + delete items from the SEL. You have a couple of options... + + If you don't care about the SEL, then set the SEL rescan time to + zero with ipmi_domain_set_sel_rescan_time() or disable it with + the startup options. This will turn off the SEL completely. + + If you do care about SELs on multiple programs, you will have to + develop a protocol between all the users. You have to have a way + to let all the listeners get all the SELs, but still delete items + from the SEL in a timely manner. I recommend that you set the + SEL rescan time to a value, and for every event receive wait + double that value before deleting it. OpenIPMI will correctly + handle multiple things deleting items from the SEL. + + + 2.6) Can you open more than one IPMI session from OpenIPMI? + + Certainly. You can create as many connections and domains as you + like, the library has no limitiation. + + + 2.7) I have an xyz computer, does OpenIPMI support it? + + That depends on a lot of things. Does the box have IPMI? Most + systems do not, it's currently mostly on high-end system. If the + system does have IPMI, OpenIPMI will probably support it. It may + not support the full function of your system though. Output + devices are not defined by the IPMI spec, so they are all OEM and + require custom code to control them. Sensors that do not appear + in an SDR repository will not be supported without custom code. + Any things custom to the system will probably not be supported. + + + 2.8) What interfaces does OpenIPMI support? + + OpenIPMI currently supports system interfaces through the + OpenIPMI device driver and LAN interfaces. It does not support + serial interfaces or any type of callback devices. + + + 2.9) Does OpenIPMI support ICMB? + + Not currently, although it shouldn't be hard to add. + + + 2.10) How do I learn more about IPMI? + + Not much information currently exists. The OpenIPMI web site has + a pointer to the specs and the documentation that comes with + IPMI, but the spec is very hard to read and the documentation is + really more marketing level. The documentation that comes with + OpenIPMI provides a more gentle introduction to IPMI (you should + certainly read it before you read the spec) but it's more focused + on OpenIPMI, not IPMI proper. + + Someone needs to write a book (and it's not going to be me). + + + 2.11) What does OpenIPMI do? + + OpenIPMI attempts to handle a lot of the difficult parts of IPMI + for the user; as much as it can without making too many policy + decisions for the user. For instance, it: + * Fetches all the SDRs and translates them into sensors and + entity information. + * Manages access to the SEL. + * Handles the interface, which is especially hard for LAN + connections. + * Handles fetching FRU information for entities. + * Lets you deal directly with sensors and entities. + * Periodically scans all the information it manages to see if + it has changed. + * Decodes incoming events, correlates them with sensors, + translates raw values into useful values, and delivers them + with the sensor object. + * Allows OEM code to plug in to fix up things and present + non-standard devices through standard interfaces. + Basically, the user just has to start up the connection and wait + for things to happen. As OpenIPMI finds things, it will report + them and the user can take action. It is designed to remove the + low-level details from the user's concern and only present the + things the user is really interested in handling. + + + 2.12) I don't like the way OpenIPMI does x. + + You may disagree with implementation decisions I have made and + that's fine. You can make suggestions, submit patches, and work + with me on this. Or you may write your own IPMI library. Or you + may pillage OpenIPMI to get what you want. Like Linus holds + final say on what goes into his distribution of Linux, I hold + final say on what goes into my distribution of OpenIPMI. But + that doesn't mean you can't do your own work on it. + + + 2.13) Why did you write OpenIPMI? + + OpenIPMI was originally written to support a customer who needed + an interface for their IPMI platform. It was also designed with + HPI in mind, for something to implement as the base to an HPI + library. + + + 2.14) I just want to use pieces of OpenIPMI, can I? + + Well, it's open source. But unfortunately, OpenIPMI is not + terribly modular as a whole. Certain parts (the interface code, + for instance) can be used stand-alone. But SDRs, MC, SELs, + domains, sensors, etc. all know about each other. It's somewhat + inescapable, really, the concepts are intertwined. It would be + fairly easy to take any individual piece of the code (the sdr.c + code, for instance) and change it to work in a different system, + but you would have to change the code to do that. + + + 2.15) Why is the OpenIPMI interface the way it is (bad, good, ugly, + elegent, simple, obtuse, etc)? + + My basic philosophy of API design is: + + 1) Users should only have to deal with the objects they really + care about. You should distill the interface down to what the + user really cares about. Think about it from the user's point + of view and implement what they want. + + 2) Users (especially me) have a hard time dealing with large + numbers of types. Distill the types down to the essentials. + Don't overload types with information that doesn't belong in + them, either. Essentials are essentials; don't go beyond + them, though. + + 3) Interfaces should be designed with extensibility in mind. All + types should be opaque pointers so that the internal + representation and implementation can change without the + binary or logical interface changing. If you make an + exception on this, it better be for a really good reason. + + 4) Use the basic types of the language as much as possible. It's + better to have more functions than types. + + I'm very picky about this. I have seen too many bad APIs; ones + based on the implementation, not the needs of the user. + + + 2.16) My IPMI system has some broken information in it. Can I fix it + in OpenIPMI? + + Sure. You can write OEM code that ties in to when objects are + added to the system and fix them up as necessary. The details + of this are beyond the scope of the FAQ, but you can look in + lib/oem_*.c for examples. + + + 2.17) It takes a long time to find all the information about a system + on IPMB. What's the deal? + + Unfortunately, the base library can't really know what exists or + where it should exist, so it has to scan everything on the bus. + You can write an OEM plugin or scan the addresses you are + interested in by hand. + + If you don't care about the information, as of version 1.4.4 you + can skip those steps via options to the ipmi_open_domain() + function or the startup parms to ipmish or the Perl interface. + + + 2.18) I want to know when OpenIPMI is done finding everything in the + system. + + Unfortunately, there is no concept of "done" in IPMI. IPMI + allows a dynamic environment with elements of the system coming + and going. You need to re-think your philosophy here and design + software that can dynamically manage elements of the system + coming and going. OpenIPMI will tell you when it finds things, + and then you can manage them. + + But bowing to popular demand, though, the 1.4 version of OpenIPMI + adds a "done" callback to the ipmi_open_domain function that lets + you know when OpenIPMI has finished the first pass of everything + (SDRs, SELs, FRUs, IPMB scan). There is no guarantee that it + found everything in the first pass, and you should handle + dynamically adding things later. + + + 2.19) How do I build the Perl interface? + + The Perl interface uses swig 1.3.22 or later, which is available + from http://www.swig.org. That must be installed and in your + path to build the Perl interface. You must also have the + development libraries for Perl installed, of course. + + + 2.20) How do I catch SNMP traps with OpenIPMI? + + Although OpenIPMI has infrastructure to handle traps, it does not + catch them for you. You have to provide the software to catch + the traps and then you can tell OpenIPMI about them. The + ui/basic_ui.c code has some example SNMP trap code using the + netsmp and ucsdsnmp libraries. + + 2.21) Why does it take a long time to get events from OpenIPMI? + + The standard interface to the event log is polled, and the polling + time is 5 seconds by default. You can change the polling time if + you don't care about the additional load. + + A system interface (SMI) does have an immediate event receive + capability; when an event comes in it goes into the system log and + into a queue. OpenIPMI does nt enable tis by default, you must + enable it yourself with a "Set BMC Global Enables Command". + + LAN interfaces may be capable of sending SNMP traps when an event + comes in. This is through the Platform Event Traps and is fairly + complicated. OpenIPMI provides a way to configure this more + easily, but you still have to know what you are doing. See + question 2.20 for how to handle these traps. + + 2.22) What crypto does OpenIPMI implement/use? + + OpenIPMI implements MD2 and MD5. It's questionable whether those + are crypto algorithms or not, but I'm including them just to be + sure. + + For the IPMI 2.0 RMCP+ algorithms, OpenIPMI requires the OpenSSL + package. OpenIPMI will work without OpenSSL, but then it will not + be able to use the advanced encryption algorithms. The algorithms + used by OpenIPMI are: HMAC-SHA1 (96 bit) and HMAC-MD5 (128 bit) for + authentication and integrity. AES-CBC (128 bit) is the only option + for encryption. In the future, RC4 (40 bit and 128 bit) may be + implemented per the spec. + + The OpenIPMI authentication/encryption framework is pluggable and + users could write their own algorithms if they wish. + +2.23) How do I interpret the OpenIPMI numeric error values? + + Nothing should really be printing these values except for logs and + tracing. However, a lot of these come out from sample + applications. However, I'll go over a little to make tracing and the + like easier. + + The top 8 bits of an error are the error type (basically where the + error came from). The rest of the value is the error itself; make + sure to use the proper IPMI_xxx_ERR_VAL() to extract it. The + error types are: + + * 00 - An OS error or an error from OpenIPMI itself. These are + standard errno values and can be decoded with strerror() + and friends. + * 01 - An error from the remote management controller (An IPMI error). + You can look these up in the IPMI manual. + * 02 - RMCP+ error. These are in the IPMI LAN section of the IPMI + manual. + * 03 - SoL (Serial Over LAN) errors. These are in the SoL section + of the IPMI manual. + + You can convert any of these errors to a human-readable (currently + English only) string using ipmi_err_get_string(). See + include/OpenIPMI/ipmi_err.h for more details on these things. diff --git a/INSTALL b/INSTALL new file mode 100644 index 0000000..23e5f25 --- /dev/null +++ b/INSTALL @@ -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. + diff --git a/Makefile.am b/Makefile.am new file mode 100644 index 0000000..cd597d5 --- /dev/null +++ b/Makefile.am @@ -0,0 +1,39 @@ +RPM = rpmbuild +RPMFLAGS = -ta + +SUBDIRS = include utils lib unix $(GLIB_DIR) $(TCL_DIR) cmdlang \ + ui lanserv sample doc man $(SWIG_DIR) + +DIST_SUBDIRS = include utils lib unix glib tcl cmdlang \ + ui lanserv sample doc man swig + +EXTRA_DIST = FAQ TODO README.Force README.MotorolaMXP OpenIPMI.spec.in \ + OpenIPMI.spec ipmi.init ipmi.sysconf COPYING.BSD \ + CONFIGURING_FOR_LAN + +PKGCONFIGS = OpenIPMIutils.pc OpenIPMI.pc OpenIPMIui.pc OpenIPMIposix.pc \ + OpenIPMIpthread.pc OpenIPMIcmdlang.pc $(GLIB_PKGCONF) \ + $(GLIB12_PKGCONF) $(TCL_PKGCONF) + +ACLOCAL_AMFLAGS = -I m4 + +install-data-local: $(PKGCONFIGS) + $(mkinstalldirs) $(DESTDIR)$(libdir)/pkgconfig + $(INSTALL_DATA) $(PKGCONFIGS) $(DESTDIR)$(libdir)/pkgconfig + +uninstall-local: + for i in $(PKGCONFIGS); do \ + rm -f $(DESTDIR)$(libdir)/pkgconfig/$$i; \ + done + +rpm: dist + $(RPM) $(RPMFLAGS) $(distdir).tar.gz < /dev/null + +PYPATH=$(top_builddir)/swig/python:$(top_builddir)/swig/python/.libs + +rungui: + LD_LIBRARY_PATH=$(top_builddir)/glib/.libs LD_PRELOAD=$(OPENIPMI_SWIG_SO):$(top_builddir)/swig/python/.libs/_OpenIPMI.so PYTHONPATH=$(PYPATH) $(PYTHON) $(top_srcdir)/swig/python/openipmigui.py + +DISTCLEANFILES=OpenIPMI.spec OpenIPMIcmdlang.pc OpenIPMI.pc OpenIPMItcl.pc \ + OpenIPMIglib12.pc OpenIPMIposix.pc OpenIPMIui.pc OpenIPMIglib.pc \ + OpenIPMIpthread.pc OpenIPMIutils.pc diff --git a/Makefile.in b/Makefile.in new file mode 100644 index 0000000..85796b8 --- /dev/null +++ b/Makefile.in @@ -0,0 +1,945 @@ +# Makefile.in generated by automake 1.15.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2017 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = . +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compare_version.m4 \ + $(top_srcdir)/m4/ax_config_feature.m4 \ + $(top_srcdir)/m4/ax_have_epoll.m4 \ + $(top_srcdir)/m4/ax_pkg_swig.m4 \ + $(top_srcdir)/m4/ax_prog_python_version.m4 \ + $(top_srcdir)/m4/ax_python_devel.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ + $(am__configure_deps) $(am__DIST_COMMON) +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno config.status.lineno +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = config.h +CONFIG_CLEAN_FILES = OpenIPMI.spec OpenIPMIutils.pc OpenIPMI.pc \ + OpenIPMIpthread.pc OpenIPMIposix.pc OpenIPMIglib.pc \ + OpenIPMItcl.pc OpenIPMIcmdlang.pc OpenIPMIui.pc +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + cscope distdir dist dist-all distcheck +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \ + $(LISP)config.h.in +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +CSCOPE = cscope +am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/OpenIPMI.pc.in \ + $(srcdir)/OpenIPMI.spec.in $(srcdir)/OpenIPMIcmdlang.pc.in \ + $(srcdir)/OpenIPMIglib.pc.in $(srcdir)/OpenIPMIposix.pc.in \ + $(srcdir)/OpenIPMIpthread.pc.in $(srcdir)/OpenIPMItcl.pc.in \ + $(srcdir)/OpenIPMIui.pc.in $(srcdir)/OpenIPMIutils.pc.in \ + $(srcdir)/config.h.in AUTHORS COPYING COPYING.LIB ChangeLog \ + INSTALL NEWS README TODO ar-lib compile config.guess \ + config.sub depcomp install-sh ltmain.sh missing +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) +am__remove_distdir = \ + if test -d "$(distdir)"; then \ + find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -rf "$(distdir)" \ + || { sleep 5 && rm -rf "$(distdir)"; }; \ + else :; fi +am__post_remove_distdir = $(am__remove_distdir) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +DIST_ARCHIVES = $(distdir).tar.gz +GZIP_ENV = --best +DIST_TARGETS = dist-gzip +distuninstallcheck_listfiles = find . -type f -print +am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ + | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' +distcleancheck_listfiles = find . -type f -print +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BIBTEX = @BIBTEX@ +BUILD_CC = @BUILD_CC@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIA = @DIA@ +DIA_FILTER_NAME = @DIA_FILTER_NAME@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +DVIPDF = @DVIPDF@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GDBM_LIB = @GDBM_LIB@ +GLIB_CFLAGS = @GLIB_CFLAGS@ +GLIB_DIR = @GLIB_DIR@ +GLIB_LIB = @GLIB_LIB@ +GLIB_LIBS = @GLIB_LIBS@ +GLIB_PKGCONF = @GLIB_PKGCONF@ +GLIB_SO = @GLIB_SO@ +GLIB_TARGET = @GLIB_TARGET@ +GLIB_VERSION = @GLIB_VERSION@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LATEX = @LATEX@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MARVELL_BMC_DIR = @MARVELL_BMC_DIR@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OPENIPMI_SWIG_LIBS = @OPENIPMI_SWIG_LIBS@ +OPENIPMI_SWIG_SO = @OPENIPMI_SWIG_SO@ +OPENIPMI_VERSION_EXTRA = @OPENIPMI_VERSION_EXTRA@ +OPENIPMI_VERSION_MAJOR = @OPENIPMI_VERSION_MAJOR@ +OPENIPMI_VERSION_MINOR = @OPENIPMI_VERSION_MINOR@ +OPENIPMI_VERSION_RELEASE = @OPENIPMI_VERSION_RELEASE@ +OPENSSLINCS = @OPENSSLINCS@ +OPENSSLLIBS = @OPENSSLLIBS@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL_CFLAGS = @PERL_CFLAGS@ +PERL_DIR = @PERL_DIR@ +PERL_HAS_POSIX_THREADS = @PERL_HAS_POSIX_THREADS@ +PERL_INSTALL_DIR = @PERL_INSTALL_DIR@ +PERL_POSIX_LIB = @PERL_POSIX_LIB@ +PERL_POSIX_SO = @PERL_POSIX_SO@ +POPTLIBS = @POPTLIBS@ +PYTHON = @PYTHON@ +PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ +PYTHON_DIR = @PYTHON_DIR@ +PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ +PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ +PYTHON_GUI_DIR = @PYTHON_GUI_DIR@ +PYTHON_HAS_POSIX_THREADS = @PYTHON_HAS_POSIX_THREADS@ +PYTHON_INSTALL_DIR = @PYTHON_INSTALL_DIR@ +PYTHON_INSTALL_LIB_DIR = @PYTHON_INSTALL_LIB_DIR@ +PYTHON_LIBS = @PYTHON_LIBS@ +PYTHON_POSIX_LIB = @PYTHON_POSIX_LIB@ +PYTHON_POSIX_SO = @PYTHON_POSIX_SO@ +PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ +PYTHON_SWIG_FLAGS = @PYTHON_SWIG_FLAGS@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +RT_LIB = @RT_LIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SNMPLIBS = @SNMPLIBS@ +SOCKETLIB = @SOCKETLIB@ +STRIP = @STRIP@ +SWIG = @SWIG@ +SWIG_DIR = @SWIG_DIR@ +SWIG_LIB = @SWIG_LIB@ +TCL_CFLAGS = @TCL_CFLAGS@ +TCL_DIR = @TCL_DIR@ +TCL_LIB = @TCL_LIB@ +TCL_LIBS = @TCL_LIBS@ +TCL_PKGCONF = @TCL_PKGCONF@ +TCL_SO = @TCL_SO@ +TCL_TARGET = @TCL_TARGET@ +TERM_LIBS = @TERM_LIBS@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +diaprog = @diaprog@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +perlprog = @perlprog@ +pkgprog = @pkgprog@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +RPM = rpmbuild +RPMFLAGS = -ta +SUBDIRS = include utils lib unix $(GLIB_DIR) $(TCL_DIR) cmdlang \ + ui lanserv sample doc man $(SWIG_DIR) + +DIST_SUBDIRS = include utils lib unix glib tcl cmdlang \ + ui lanserv sample doc man swig + +EXTRA_DIST = FAQ TODO README.Force README.MotorolaMXP OpenIPMI.spec.in \ + OpenIPMI.spec ipmi.init ipmi.sysconf COPYING.BSD \ + CONFIGURING_FOR_LAN + +PKGCONFIGS = OpenIPMIutils.pc OpenIPMI.pc OpenIPMIui.pc OpenIPMIposix.pc \ + OpenIPMIpthread.pc OpenIPMIcmdlang.pc $(GLIB_PKGCONF) \ + $(GLIB12_PKGCONF) $(TCL_PKGCONF) + +ACLOCAL_AMFLAGS = -I m4 +PYPATH = $(top_builddir)/swig/python:$(top_builddir)/swig/python/.libs +DISTCLEANFILES = OpenIPMI.spec OpenIPMIcmdlang.pc OpenIPMI.pc OpenIPMItcl.pc \ + OpenIPMIglib12.pc OpenIPMIposix.pc OpenIPMIui.pc OpenIPMIglib.pc \ + OpenIPMIpthread.pc OpenIPMIutils.pc + +all: config.h + $(MAKE) $(AM_MAKEFLAGS) all-recursive + +.SUFFIXES: +am--refresh: Makefile + @: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \ + $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + echo ' $(SHELL) ./config.status'; \ + $(SHELL) ./config.status;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck + +$(top_srcdir)/configure: $(am__configure_deps) + $(am__cd) $(srcdir) && $(AUTOCONF) +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) +$(am__aclocal_m4_deps): + +config.h: stamp-h1 + @test -f $@ || rm -f stamp-h1 + @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1 + +stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status + @rm -f stamp-h1 + cd $(top_builddir) && $(SHELL) ./config.status config.h +$(srcdir)/config.h.in: $(am__configure_deps) + ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) + rm -f stamp-h1 + touch $@ + +distclean-hdr: + -rm -f config.h stamp-h1 +OpenIPMI.spec: $(top_builddir)/config.status $(srcdir)/OpenIPMI.spec.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +OpenIPMIutils.pc: $(top_builddir)/config.status $(srcdir)/OpenIPMIutils.pc.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +OpenIPMI.pc: $(top_builddir)/config.status $(srcdir)/OpenIPMI.pc.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +OpenIPMIpthread.pc: $(top_builddir)/config.status $(srcdir)/OpenIPMIpthread.pc.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +OpenIPMIposix.pc: $(top_builddir)/config.status $(srcdir)/OpenIPMIposix.pc.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +OpenIPMIglib.pc: $(top_builddir)/config.status $(srcdir)/OpenIPMIglib.pc.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +OpenIPMItcl.pc: $(top_builddir)/config.status $(srcdir)/OpenIPMItcl.pc.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +OpenIPMIcmdlang.pc: $(top_builddir)/config.status $(srcdir)/OpenIPMIcmdlang.pc.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +OpenIPMIui.pc: $(top_builddir)/config.status $(srcdir)/OpenIPMIui.pc.in + cd $(top_builddir) && $(SHELL) ./config.status $@ + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool config.lt + +# This directory's subdirectories are mostly independent; you can cd +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscope: cscope.files + test ! -s cscope.files \ + || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) +clean-cscope: + -rm -f cscope.files +cscope.files: clean-cscope cscopelist +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + -rm -f cscope.out cscope.in.out cscope.po.out cscope.files + +distdir: $(DISTFILES) + $(am__remove_distdir) + test -d "$(distdir)" || mkdir "$(distdir)" + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done + -test -n "$(am__skip_mode_fix)" \ + || find "$(distdir)" -type d ! -perm -755 \ + -exec chmod u+rwx,go+rx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r "$(distdir)" +dist-gzip: distdir + tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz + $(am__post_remove_distdir) + +dist-bzip2: distdir + tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 + $(am__post_remove_distdir) + +dist-lzip: distdir + tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz + $(am__post_remove_distdir) + +dist-xz: distdir + tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz + $(am__post_remove_distdir) + +dist-tarZ: distdir + @echo WARNING: "Support for distribution archives compressed with" \ + "legacy program 'compress' is deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 + tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z + $(am__post_remove_distdir) + +dist-shar: distdir + @echo WARNING: "Support for shar distribution archives is" \ + "deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 + shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz + $(am__post_remove_distdir) + +dist-zip: distdir + -rm -f $(distdir).zip + zip -rq $(distdir).zip $(distdir) + $(am__post_remove_distdir) + +dist dist-all: + $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' + $(am__post_remove_distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + case '$(DIST_ARCHIVES)' in \ + *.tar.gz*) \ + eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\ + *.tar.bz2*) \ + bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ + *.tar.lz*) \ + lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ + *.tar.xz*) \ + xz -dc $(distdir).tar.xz | $(am__untar) ;;\ + *.tar.Z*) \ + uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ + *.shar.gz*) \ + eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\ + *.zip*) \ + unzip $(distdir).zip ;;\ + esac + chmod -R a-w $(distdir) + chmod u+w $(distdir) + mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst + chmod a-w $(distdir) + test -d $(distdir)/_build || exit 0; \ + dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && am__cwd=`pwd` \ + && $(am__cd) $(distdir)/_build/sub \ + && ../../configure \ + $(AM_DISTCHECK_CONFIGURE_FLAGS) \ + $(DISTCHECK_CONFIGURE_FLAGS) \ + --srcdir=../.. --prefix="$$dc_install_base" \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ + distuninstallcheck \ + && chmod -R a-w "$$dc_install_base" \ + && ({ \ + (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ + distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ + } || { rm -rf "$$dc_destdir"; exit 1; }) \ + && rm -rf "$$dc_destdir" \ + && $(MAKE) $(AM_MAKEFLAGS) dist \ + && rm -rf $(DIST_ARCHIVES) \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ + && cd "$$am__cwd" \ + || exit 1 + $(am__post_remove_distdir) + @(echo "$(distdir) archives ready for distribution: "; \ + list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ + sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' +distuninstallcheck: + @test -n '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: trying to run $@ with an empty' \ + '$$(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + $(am__cd) '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left after uninstall:" ; \ + if test -n "$(DESTDIR)"; then \ + echo " (check DESTDIR support)"; \ + fi ; \ + $(distuninstallcheck_listfiles) ; \ + exit 1; } >&2 +distcleancheck: distclean + @if test '$(srcdir)' = . ; then \ + echo "ERROR: distcleancheck can only run from a VPATH build" ; \ + exit 1 ; \ + fi + @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left in build directory after distclean:" ; \ + $(distcleancheck_listfiles) ; \ + exit 1; } >&2 +check-am: all-am +check: check-recursive +all-am: Makefile config.h +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-hdr \ + distclean-libtool distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: install-data-local + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(top_srcdir)/autom4te.cache + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-local + +.MAKE: $(am__recursive_targets) all install-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ + am--refresh check check-am clean clean-cscope clean-generic \ + clean-libtool cscope cscopelist-am ctags ctags-am dist \ + dist-all dist-bzip2 dist-gzip dist-lzip dist-shar dist-tarZ \ + dist-xz dist-zip distcheck distclean distclean-generic \ + distclean-hdr distclean-libtool distclean-tags distcleancheck \ + distdir distuninstallcheck dvi dvi-am html html-am info \ + info-am install install-am install-data install-data-am \ + install-data-local install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ + uninstall-am uninstall-local + +.PRECIOUS: Makefile + + +install-data-local: $(PKGCONFIGS) + $(mkinstalldirs) $(DESTDIR)$(libdir)/pkgconfig + $(INSTALL_DATA) $(PKGCONFIGS) $(DESTDIR)$(libdir)/pkgconfig + +uninstall-local: + for i in $(PKGCONFIGS); do \ + rm -f $(DESTDIR)$(libdir)/pkgconfig/$$i; \ + done + +rpm: dist + $(RPM) $(RPMFLAGS) $(distdir).tar.gz < /dev/null + +rungui: + LD_LIBRARY_PATH=$(top_builddir)/glib/.libs LD_PRELOAD=$(OPENIPMI_SWIG_SO):$(top_builddir)/swig/python/.libs/_OpenIPMI.so PYTHONPATH=$(PYPATH) $(PYTHON) $(top_srcdir)/swig/python/openipmigui.py + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/NEWS b/NEWS new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/NEWS diff --git a/OpenIPMI.pc.in b/OpenIPMI.pc.in new file mode 100644 index 0000000..d425eb6 --- /dev/null +++ b/OpenIPMI.pc.in @@ -0,0 +1,11 @@ +prefix=@prefix@ +exec_prefix=@prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: OpenIPMI +Description: Library to make using IPMI easier +Version: @VERSION@ +Requires: +Libs: -L${libdir} -lOpenIPMIutils -lOpenIPMI +Cflags: -I${includedir} diff --git a/OpenIPMI.spec b/OpenIPMI.spec new file mode 100644 index 0000000..6349ee3 --- /dev/null +++ b/OpenIPMI.spec @@ -0,0 +1,202 @@ +# For common adjustments that are needed for this file, search for +# "USERFIX" + +Name: OpenIPMI +Summary: %{name} - Library interface to IPMI +Version: 2.0.27 +Release: 2 +License: LGPL +URL: http://openipmi.sourceforge.net +Group: Utilities +Vendor: OpenIPMI Project +Packager: Tariq Shureih +Source: %{name}-2.0.27.tar.gz +Buildroot: /var/tmp/%{name}-root +BuildRequires: pkgconfig, perl >= 5, swig >= 1.3 +Summary: IPMI Library +Group: Utilities + +# Figure out if glib12 is installed +%define glib12 %(if ls -l /usr/lib/libglib-1.2* >/dev/null 2>&1; then echo yes; else echo no; fi) + +%description +This package contains a shared library implementation of IPMI and the +basic tools used with OpenIPMI. + +%package devel +Summary: Development files for OpenIPMI +Group: Utilities +Requires: OpenIPMI = %{version}, pkgconfig + +%description devel +Contains additional files need for a developer to create applications +and/or middleware that depends on libOpenIPMI + +%package perl +Summary: Perl interface for OpenIPMI +Group: Utilities +Requires: OpenIPMI = %{version}, perl >= 5 + +%description perl +A Perl interface for OpenIPMI. + +%package python +Summary: Python interface for OpenIPMI +Group: Utilities +Requires: OpenIPMI = %{version}, python + +%description python +A Python interface for OpenIPMI. + +%package gui +Summary: GUI (in python) for OpenIPMI +Group: Utilities +Requires: OpenIPMI-python = %{version}, tkinter + +%description gui +A GUI interface for OpenIPMI. Written in python an requiring wxWidgets. + +%package ui +Summary: User Interface (ui) +Group: Utilities +Requires: OpenIPMI = %{version} + +%description ui +This package contains a user interface + +%package lanserv +Summary: Emulates an IPMI network listener +Group: Utilities +Requires: OpenIPMI = %{version} + +%description lanserv +This package contains a network IPMI listener. + +################################################### +%prep +################################################### +%setup + +################################################### +%build +################################################### +# USERFIX: Things you might have to add to configure: +# --with-tclcflags='-I /usr/include/tclN.M' --with-tcllibs=-ltclN.M +# Obviously, replace N.M with the version of tcl on your system. +%configure +make + +################################################### +%install +################################################### +rm -rf %{buildroot} +make DESTDIR=%{buildroot} install +install -d %{buildroot}/etc/init.d +install -d %{buildroot}/etc/sysconfig +install ipmi.init %{buildroot}/etc/init.d/ipmi +install ipmi.sysconf %{buildroot}/etc/sysconfig/ipmi + +################################################### +%post +################################################### +chkconfig --add ipmi + +################################################### +%preun +################################################### +if [ $1 = 0 ]; then + /etc/init.d/ipmi stop >/dev/null 2>&1 + /sbin/chkconfig --del ipmi +fi + +################################################### +%postun +################################################### +if [ "$1" -ge "1" ]; then + /etc/init.d/ipmi condrestart >/dev/null 2>&1 || : +fi + +################################################### +%files +################################################### +%defattr(-,root,root) +%{_libdir}/libOpenIPMIcmdlang.so.* +%{_libdir}/libOpenIPMIglib.so.* +# USERFIX: You might need to modify the following if glib12 is not +# handled properly by the autodetection +%if %{glib12} != "no" + %{_libdir}/libOpenIPMIglib12.so.* +%endif +%{_libdir}/libOpenIPMItcl.so.* +%{_libdir}/libOpenIPMIposix.so.* +%{_libdir}/libOpenIPMIpthread.so.* +%{_libdir}/libOpenIPMI.so.* +%{_libdir}/libOpenIPMIutils.so.* +%doc COPYING COPYING.LIB FAQ INSTALL README README.Force +%doc README.MotorolaMXP CONFIGURING_FOR_LAN COPYING.BSD +/etc/init.d/ipmi +/etc/sysconfig/ipmi + + +################################################### +%files perl +################################################### +%defattr(-,root,root) +%{perl_vendorarch} +%doc swig/OpenIPMI.i swig/perl/sample swig/perl/ipmi_powerctl + +################################################### +%files python +################################################### +%defattr(-,root,root) +%{_libdir}/python*/site-packages/*OpenIPMI.* +%doc swig/OpenIPMI.i + +################################################### +%files gui +################################################### +%defattr(-,root,root) +%dir %{_libdir}/python*/site-packages/openipmigui +%{_libdir}/python*/site-packages/openipmigui/* +%{_bindir}/openipmigui + +################################################### +%files devel +################################################### +%defattr(-,root,root) +%{_includedir}/OpenIPMI +%{_libdir}/*.a +%{_libdir}/*.la +%{_libdir}/*.so +%{_libdir}/pkgconfig +%doc doc/IPMI.pdf + +################################################### +%files ui +################################################### +%defattr(-,root,root) +%{_bindir}/ipmi_ui +%{_bindir}/ipmicmd +%{_bindir}/openipmicmd +%{_bindir}/ipmish +%{_bindir}/openipmish +%{_bindir}/solterm +%{_bindir}/rmcp_ping +%{_libdir}/libOpenIPMIui.so.* +%doc %{_mandir}/man1/ipmi_ui.1* +%doc %{_mandir}/man1/openipmicmd.1* +%doc %{_mandir}/man1/openipmish.1* +%doc %{_mandir}/man1/openipmigui.1* +%doc %{_mandir}/man1/solterm.1* +%doc %{_mandir}/man1/rmcp_ping.1* +%doc %{_mandir}/man7/ipmi_cmdlang.7* +%doc %{_mandir}/man7/openipmi_conparms.7* + +################################################### +%files lanserv +################################################### +%defattr(-,root,root) +%{_bindir}/ipmilan +%{_libdir}/libIPMIlanserv.so.* +%doc %{_mandir}/man8/ipmilan.8* + diff --git a/OpenIPMI.spec.in b/OpenIPMI.spec.in new file mode 100644 index 0000000..4adc278 --- /dev/null +++ b/OpenIPMI.spec.in @@ -0,0 +1,202 @@ +# For common adjustments that are needed for this file, search for +# "USERFIX" + +Name: OpenIPMI +Summary: %{name} - Library interface to IPMI +Version: @OPENIPMI_VERSION_MAJOR@.@OPENIPMI_VERSION_MINOR@.@OPENIPMI_VERSION_RELEASE@ +Release: 2 +License: LGPL +URL: http://openipmi.sourceforge.net +Group: Utilities +Vendor: OpenIPMI Project +Packager: Tariq Shureih +Source: %{name}-@VERSION@.tar.gz +Buildroot: /var/tmp/%{name}-root +BuildRequires: pkgconfig, perl >= 5, swig >= 1.3 +Summary: IPMI Library +Group: Utilities + +# Figure out if glib12 is installed +%define glib12 %(if ls -l /usr/lib/libglib-1.2* >/dev/null 2>&1; then echo yes; else echo no; fi) + +%description +This package contains a shared library implementation of IPMI and the +basic tools used with OpenIPMI. + +%package devel +Summary: Development files for OpenIPMI +Group: Utilities +Requires: OpenIPMI = %{version}, pkgconfig + +%description devel +Contains additional files need for a developer to create applications +and/or middleware that depends on libOpenIPMI + +%package perl +Summary: Perl interface for OpenIPMI +Group: Utilities +Requires: OpenIPMI = %{version}, perl >= 5 + +%description perl +A Perl interface for OpenIPMI. + +%package python +Summary: Python interface for OpenIPMI +Group: Utilities +Requires: OpenIPMI = %{version}, python + +%description python +A Python interface for OpenIPMI. + +%package gui +Summary: GUI (in python) for OpenIPMI +Group: Utilities +Requires: OpenIPMI-python = %{version}, tkinter + +%description gui +A GUI interface for OpenIPMI. Written in python an requiring wxWidgets. + +%package ui +Summary: User Interface (ui) +Group: Utilities +Requires: OpenIPMI = %{version} + +%description ui +This package contains a user interface + +%package lanserv +Summary: Emulates an IPMI network listener +Group: Utilities +Requires: OpenIPMI = %{version} + +%description lanserv +This package contains a network IPMI listener. + +################################################### +%prep +################################################### +%setup + +################################################### +%build +################################################### +# USERFIX: Things you might have to add to configure: +# --with-tclcflags='-I /usr/include/tclN.M' --with-tcllibs=-ltclN.M +# Obviously, replace N.M with the version of tcl on your system. +%configure +make + +################################################### +%install +################################################### +rm -rf %{buildroot} +make DESTDIR=%{buildroot} install +install -d %{buildroot}/etc/init.d +install -d %{buildroot}/etc/sysconfig +install ipmi.init %{buildroot}/etc/init.d/ipmi +install ipmi.sysconf %{buildroot}/etc/sysconfig/ipmi + +################################################### +%post +################################################### +chkconfig --add ipmi + +################################################### +%preun +################################################### +if [ $1 = 0 ]; then + /etc/init.d/ipmi stop >/dev/null 2>&1 + /sbin/chkconfig --del ipmi +fi + +################################################### +%postun +################################################### +if [ "$1" -ge "1" ]; then + /etc/init.d/ipmi condrestart >/dev/null 2>&1 || : +fi + +################################################### +%files +################################################### +%defattr(-,root,root) +%{_libdir}/libOpenIPMIcmdlang.so.* +%{_libdir}/libOpenIPMIglib.so.* +# USERFIX: You might need to modify the following if glib12 is not +# handled properly by the autodetection +%if %{glib12} != "no" + %{_libdir}/libOpenIPMIglib12.so.* +%endif +%{_libdir}/libOpenIPMItcl.so.* +%{_libdir}/libOpenIPMIposix.so.* +%{_libdir}/libOpenIPMIpthread.so.* +%{_libdir}/libOpenIPMI.so.* +%{_libdir}/libOpenIPMIutils.so.* +%doc COPYING COPYING.LIB FAQ INSTALL README README.Force +%doc README.MotorolaMXP CONFIGURING_FOR_LAN COPYING.BSD +/etc/init.d/ipmi +/etc/sysconfig/ipmi + + +################################################### +%files perl +################################################### +%defattr(-,root,root) +%{perl_vendorarch} +%doc swig/OpenIPMI.i swig/perl/sample swig/perl/ipmi_powerctl + +################################################### +%files python +################################################### +%defattr(-,root,root) +%{_libdir}/python*/site-packages/*OpenIPMI.* +%doc swig/OpenIPMI.i + +################################################### +%files gui +################################################### +%defattr(-,root,root) +%dir %{_libdir}/python*/site-packages/openipmigui +%{_libdir}/python*/site-packages/openipmigui/* +%{_bindir}/openipmigui + +################################################### +%files devel +################################################### +%defattr(-,root,root) +%{_includedir}/OpenIPMI +%{_libdir}/*.a +%{_libdir}/*.la +%{_libdir}/*.so +%{_libdir}/pkgconfig +%doc doc/IPMI.pdf + +################################################### +%files ui +################################################### +%defattr(-,root,root) +%{_bindir}/ipmi_ui +%{_bindir}/ipmicmd +%{_bindir}/openipmicmd +%{_bindir}/ipmish +%{_bindir}/openipmish +%{_bindir}/solterm +%{_bindir}/rmcp_ping +%{_libdir}/libOpenIPMIui.so.* +%doc %{_mandir}/man1/ipmi_ui.1* +%doc %{_mandir}/man1/openipmicmd.1* +%doc %{_mandir}/man1/openipmish.1* +%doc %{_mandir}/man1/openipmigui.1* +%doc %{_mandir}/man1/solterm.1* +%doc %{_mandir}/man1/rmcp_ping.1* +%doc %{_mandir}/man7/ipmi_cmdlang.7* +%doc %{_mandir}/man7/openipmi_conparms.7* + +################################################### +%files lanserv +################################################### +%defattr(-,root,root) +%{_bindir}/ipmilan +%{_libdir}/libIPMIlanserv.so.* +%doc %{_mandir}/man8/ipmilan.8* + diff --git a/OpenIPMIcmdlang.pc.in b/OpenIPMIcmdlang.pc.in new file mode 100644 index 0000000..46d7a03 --- /dev/null +++ b/OpenIPMIcmdlang.pc.in @@ -0,0 +1,11 @@ +prefix=@prefix@ +exec_prefix=@prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: OpenIPMIcmdlang +Description: Command language for OpenIPMI +Version: @VERSION@ +Requires: OpenIPMIutils OpenIPMI +Libs: -L${libdir} -lOpenIPMIutils -lOpenIPMI -lOpenIPMIcmdlang +Cflags: -I${includedir} diff --git a/OpenIPMIglib.pc.in b/OpenIPMIglib.pc.in new file mode 100644 index 0000000..79cf010 --- /dev/null +++ b/OpenIPMIglib.pc.in @@ -0,0 +1,11 @@ +prefix=@prefix@ +exec_prefix=@prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: OpenIPMIglib +Description: GLIB threaded OS handler for OpenIPMI +Version: @VERSION@ +Requires: +Libs: -L${libdir} -lOpenIPMIutils -lOpenIPMIglib +Cflags: -I${includedir} diff --git a/OpenIPMIposix.pc.in b/OpenIPMIposix.pc.in new file mode 100644 index 0000000..528f2ec --- /dev/null +++ b/OpenIPMIposix.pc.in @@ -0,0 +1,11 @@ +prefix=@prefix@ +exec_prefix=@prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: OpenIPMIposix +Description: POSIX unthreaded OS handler for OpenIPMI +Version: @VERSION@ +Requires: OpenIPMIutils +Libs: -L${libdir} -lOpenIPMIutils -lOpenIPMIposix +Cflags: -I${includedir} diff --git a/OpenIPMIpthread.pc.in b/OpenIPMIpthread.pc.in new file mode 100644 index 0000000..fffa0d0 --- /dev/null +++ b/OpenIPMIpthread.pc.in @@ -0,0 +1,11 @@ +prefix=@prefix@ +exec_prefix=@prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: OpenIPMIpthread +Description: Pthread OS handler for OpenIPMI +Version: @VERSION@ +Requires: OpenIPMI +Libs: -L${libdir} -lOpenIPMIutils -lOpenIPMIpthread +Cflags: -I${includedir} -pthread diff --git a/OpenIPMItcl.pc.in b/OpenIPMItcl.pc.in new file mode 100644 index 0000000..3aaac2e --- /dev/null +++ b/OpenIPMItcl.pc.in @@ -0,0 +1,11 @@ +prefix=@prefix@ +exec_prefix=@prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: OpenIPMItcl +Description: TCL threaded OS handler for OpenIPMI +Version: @VERSION@ +Requires: +Libs: -L${libdir} -lOpenIPMIutils -lOpenIPMItcl +Cflags: -I${includedir} diff --git a/OpenIPMIui.pc.in b/OpenIPMIui.pc.in new file mode 100644 index 0000000..55fd66a --- /dev/null +++ b/OpenIPMIui.pc.in @@ -0,0 +1,11 @@ +prefix=@prefix@ +exec_prefix=@prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: OpenIPMIui +Description: UI front-end for OpenIPMI +Version: @VERSION@ +Requires: OpenIPMI ncurses +Libs: -L${libdir} -lOpenIPMIutils -lOpenIPMIui -lOpenIPMI -lncurses +Cflags: -I${includedir} diff --git a/OpenIPMIutils.pc.in b/OpenIPMIutils.pc.in new file mode 100644 index 0000000..84810ea --- /dev/null +++ b/OpenIPMIutils.pc.in @@ -0,0 +1,11 @@ +prefix=@prefix@ +exec_prefix=@prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: OpenIPMIutils +Description: Utilities used by the OpenIPMI library. +Version: @VERSION@ +Requires: +Libs: -L${libdir} -lOpenIPMIutils +Cflags: -I${includedir} diff --git a/README b/README new file mode 100644 index 0000000..3c1d5e2 --- /dev/null +++ b/README @@ -0,0 +1,347 @@ + +This is the OpenIPMI library, a library that makes simplifies building +complex IPMI management software. + +What is IPMI? +============= + +IPMI is a specification detailing how to detect and manage sensors in +a system. It also specifies some chassis-level thing like power control, +reset, FRU (Field Replaceable Unit) information, and watchdogs. + +However, IPMI has become much more than that. Vendors have added +extensions to IPMI for doing many thing, including controlling LEDs, +relays, character displays, and managing hot-swapping components. In +general, it has become the "standard" way to handle hardware +maintenance in a system. + +IPMI specifies a set of interconnected intelligent Management +Controllers (MCs). Each MC is a small CPU that manages a set of +sensors and/or output devices. The "main" MC is called the Baseboard +Management Controller (BMC); it provides the external interfaces into +the system. + +Each MC may have a set of Sensor Data Records (SDRs). An SDR details +information about a sensor. Some SDR records also have information +about entities, such as their name, the FRU information, and what +other entities they are contained in. + +Entities are the physical objects in the system (boards, CPUs, fans, +power supplies, etc.) A sensor is attached to the entity it monitors; +the SDR record tell what entity a sensor monitors. + +IPMI specifies several external interfaces to the BMC. One set is +local interfaces directly to a CPU, a local CPU connections is called +a system interface. The other is external interfaces through a LAN, +serial port, or modem. The external interfaces allow a system to be +managed even when it is turned off, since the BMC is always powered +when the system is plugged in. + +IPMI has a strong bent toward complete "chassis" systems, basically a +box with one main board with CPUs; a BMC, and perhaps a few satellite +MCs in things like power supplies. It is being rapidly adopted in +"shelf" systems, which has a set of slots where you can plug in +complete single-board computers. In shelf systems, the BMC becomes a +central shelf manager that manages all the boards in the shelf. +Although IPMI was not designed for this, it does a pretty good job of +extending into this architecture. + + +What is OpenIPMI? +================= + +Notice that in the description above, OpenIPMI was designed to aid +building "complex IPMI management software". That's a carefully +chosen description. + +Most of the OpenIPMI library was designed for building complicated +systems that continuously monitor IPMI hardware. It's not for little +things that simply want to get some information, do something, and +leave (unless that information is elaborate information). + +OpenIPMI will connect with an IPMI controller, detect any management +controllers on the bus, get their SDRs, manage all the entities in the +system, manage the event log, and a host of other things. As you +might imagine, that is a fairly lengthy process on a complex system. + +OpenIPMI is also dynamic and event-driven. It will come up and start +discovering things in the managed system. As it discovers things, it +will report them to the software using it (assuming the software has +asked for this reporting). This process of discovery is never done +from OpenIPMI's point of view; things can come and go in the system +and it will report these changes as it detects them. This can be a +little confusing to people who want a static view of their system. +OpenIPMI has no static view (though it does have a current view). +When you make a connection, it will report when the connection is up; +but the system will be "empty". You have to wait for OpenIPMI to +report the things it finds. + +It is possible to use OpenIPMI's low-level connection code if you want +to do a direct connection to a BMC (through the LAN or system +interface). You can see the code in sample/ipmicmd.c for an example +of how to do this. Most of the other pieces of OpenIPMI are not +useful by themselves, though, because they are intrinsically tied +together. + + +Building and Configuring OpenIPMI +================================= + +OpenIPMI is built with standard autoconf/automake. + +You must configure OpenIPMI before you compile it. To do this, change +to the main OpenIPMI directory and execute "./configure". The +configure script will detect what is available in the system and +configure itself accordingly. + +By default, the configure script will cause OpenIPMI to be installed +in the "/usr/local" prefix. This means that the include files go into +/usr/local/include/OpenIPMI, the libraries go into /usr/local/lib, the +executables go into /usr/local/bin, etc. If you want to change the +prefix, use the "--prefix=" option to configure. For +instance, to install in /opt/OpenIPMI, you would do: + ./configure --prefix=/opt/OpenIPMI + +Note that OpenIPMI will attempt to detect and use either the NET SNMP +or UCD SNMP libraries. Note that if your NET SNMP or UCD SNMP library +is in a non-standard location, you will need to use the +'--with-ucdsnmp=' option with configure to specify the actual +path to your library. You also *must* have the development system for +your SNMP library installed. If you don't have the development system +installed, just the runtime libraries, OpenIPMI will not detect or use +the SNMP libraries. If you do not want to use the SNMP libraries even +if they are installed, you can specify '--with-ucdsnmp=no' as a +configure option. + +After you have configured OpenIPMI, type "make" to build it. To +install it in the prefix you defined, do "make install". + +OpenIPMI requires the following packages: + + * popt + * curses, ncurses or termcap + +OpenIPMI can use, but does not require, the following packages: + + * netsnmp or ucdsnmp - netsnmp is the preferred SNMP package, but + it will use either of these. Without this, the sample programs + will not be able to receive SNMP traps, but there is no functional + change to the library. + * openssl - This is required for IPMI 2.0 RMCP+ encryption and + authentication support. See FAQ item 2.22 for details. + * glib (along with pkgconfig) - glib 2.0 is preferred, but glib 1.2 + will be used if 2.0 is not available. This is simply an OS handler + for glib and it not used for anything else in OpenIPMI itself, but + is useful for users using glib. Note that OpenIPMI will be able to + use both glib 1.2 an glib 2.0 at the same time, but this is difficult + and not recommended. + * swig 1.3.21 or later - This is required for perl and python language + support. Without it, perl, python, and the GUI will not work. + * perl - Support for writing scripts in the perl language that use + the OpenIPMI library. + * python - Support for writing scripts in the python language that use + the OpenIPMI library. + * Tcl/Tk - There is no Tcl language support (someone may contribute + that, though). However, A Tcl OS handler is provided so that + Perl and Python may use the Tk widgets. Without this, the GUI will + not work. Note that getting Tcl/Tk to work right can be difficult, + see below for more details. + * Tkinter/Tix - Python GUI libraries. Required for the GUI to work. + * gdbm - This is used on *nix for local SDR caching. This is not + required, but it *really* speeds up startup. + +Note you need to install the development packages (generally ending in +-dev) of most of these for OpenIPMI to pick it up. You can examine +the output of configure to make sure they are properly discovered. + + +Getting Tcl/Tk to work +====================== + +Tcl is installed in various places, and the configure script probably +won't find it. If it doesn't, you must specify the install location +for Tcl by adding: + --with-tclcflags=flags --with-tcllibs=lib +For instance, on my Debian Linux system, I have to specify: + ./configure --with-tclcflags="-I /usr/include/tcl8.4" --with-tcllibs=-ltcl8.4 +to make it work right. + +If you don't get this right, you don't get a GUI! + + +Using ipmish +============ + +ipmish is a command interpreter that lets you execute IPMI operations, +get the results, etc. It gives you the full power of OpenIPMI. It +can easily be driven with a TCL script or the like. See the man page +for more details. + + +The OpenIPMI GUI +================ + +The GUI is cleverly named openipmigui and provides a GUI interface to +most of OpenIPMI. It also has the standard command language (like +ipmish) available in a window, so it has all the power of ipmish. + +To use the GUI, you have to have the following optional packages: + * swig 1.3.21 or later + * python + * Tcl/Tk + * Tkinter/Tix + +The GUI is documented in the openipmigui man page. + + +Using ipmi_ui +============= + +ipmi_ui is a cheesy little tool that runs on top of the OpenIPMI +library. It provides a command line and text-window based view into +an IPMI system. A man page is included for it, if you want to know +more. + +Note that ipmi_ui was written primarily for testing. It does things +that users generally shouldn't do. You can use it for examples, but +it touches things that are considered OpenIPMI internal, so be careful +what you use. ipmish and the sample code is a much better example. + + +Perl/Python and OpenIPMI +======================== + +OpenIPMI has perl and python bindings using swig. The public +interface of OpenIPMI is available, but the private interfaces are not +(and a few other things like SNMP trap support). It is fully +function. + +I was hoping that swig would generate documentation from the comments, +but it turns out that it does not do that. You can look at +swig/OpenIPMI.i for the documentation on all the interfaces, and +swig/perl/sample and the gui in swig/python/openipmigui.py for a piece +of sample code that uses most of the interfaces. + +The interface is object-oriented, so you have to know how to do OO +Perl or Pythong to use this. It is like this because that is the most +natural way to use SWIG (and it makes more OO languages like python +easier). + + +OpenIPMI and SNMP +================= + +The OpenIPMI ipmi_ui command has an optional trap handler. It will +use incoming traps as an indication that something is waiting in the +SEL for it to fetch and immediately start a fetch. You have to have +the UCD snmp library (or something compatible) installed for this to +work, and you have to start ipmi_ui with the '-snmp' option. You must +do this as root, as the SNMP Trap port is 162. + +You may ask why the trap is not directly used, why does it just +trigger an SEL fetch? Well, that's because the IPMI trap does not +have enough information to determine the correct sensor (it's missing +the channel and LUN) and it does not have enough information to +correlate the SEL entries with the trap (It doesn't have the record ID +or necessarily the proper timestamp). + +Also, OpenIPMI does not directly handle the traps. Instead, it has an +interface to report a trap when it has been received. OpenIPMI does +not want to assume the SNMP library being used; instead it lets the +user pick that library. If you want an example of how to use the UCD +SNMP or NET SNMP libraries and hook them into OpenIPMI, the +ui/basic_ui.c file has an example of this. + + +What Else Comes with OpenIPMI? +============================== + +It does include the utility "ipmicmd" which lets you do direct IPMI +commands to a connection. ipmicmd can connect using the OpenIPMI +driver or via IPMI LAN. + +OpenIPMI also includes a LAN to system interface converter, it can sit +on top of an OpenIPMI driver and supply a LAN connection to the BMC. +Note that to work the best, the LAN converter needs at least the v22 +version of the OpenIPMI driver to support setting retries and timeouts +for messages. + +Other sample code for using OpenIPMI is in the "samples" directory. + + +IPMI Documentation +================== + +OpenIPMI includes a texinfo document in the "doc" directory. It talks +a little about IPMI, must mostly about OpenIPMI. It is required +reading for using OpenIPMI. Read it carefully. + +Unfortunately, the IPMI spec is also currently required reading for +using OpenIPMI. Fortunately, you do not need to read the whole spec. +If you read the OpenIPMI document first, you can probably get by with +reading the following sections in the 1.5 spec: + * 1.6 (overview) + * 5.2 (for the error completion codes) + * 33-36 (talking about sensors and entities) + * 37.1 (talking about the main sensor SDR, mostly for learning about + sensor capabilities). +OpenIPMI should hide the rest from you. + +The OpenIPMI document is currently just an overview. It should point +you in all the right directions, but it does not contain the actual +details of most OpenIPMI functions. Those are currently documented in +the include files, so you will have to look through the include files +for how to use the functions. + + +OpenIPMI Source Structure +========================= + +Note that parts of OpenIPMI could be used inside other systems. +However, the LGPL license may be a restriction. If you are interested +in re-licensing parts of OpenIPMI, contact MontaVista software. + +The source tree here consists of the following directories: + ++---cmdlang - A command-line interpreter that gives access to the +| OpenIPMI library. Includes a user interface named +| openipmish that demonstrates how to use it. +| ++--- doc - The main documentation for OpenIPMI +| ++---glib - A glib OS handler. +| ++---include +| +---linux - linux-specific include files +| \---OpenIPMI - User-visible include files for OpenIPMI +| \---internal - Internal include files, only for plugins +| ++---lanserv - Code to provide a LAN interface to an IPMI device and +| to provide an IPMI simulator +| ++---lib - The man OpenIPMI code. This is where all the logic for the +| handling of IPMI messages is. +| ++---man - The man pages for the +| ++---sample - Sample code and utilities that use the OpenIPMI library. +| ++---swig - The main interpreter interface. swig is a program that +| | takes a general description of a C/C++ interface and +| | provides the equivalent interface in various interpreters. +| +---perl - Perl-specific code for swig, including sample code and +| | tests. +| \---python - Python-specific code for swig. +| \---openipmigui - A GUI for OpenIPMI, written in Python. +| ++---tcl - A TCL OS handler +| ++---ui - A depracated UI for OpenIPMI. +| ++---unix - A POSIX OS handler, one for threaded and one for +| non-threaded applications/ +| +\---utils - General utility code used by both the OpenIPMI library + and by the lanserv code. + + diff --git a/README.Force b/README.Force new file mode 100644 index 0000000..c5b31ac --- /dev/null +++ b/README.Force @@ -0,0 +1,43 @@ + +This package includes preliminary OEM support for Force Computers (TM) +cards. This is still somewhat experimental. Note that you NEED the +v22 version of the OpenIPMI driver to use the dual MC handling code +for Force, it solves some race conditions between the separate +interfaces. + +This driver includes OEM handling for connections to Force CPCI +systems. It will automatically handle setting up the connections for +you, you do not need to set up a card as the BMC any more. + +I have done most of my testing with the LAN server running on Force +card over ethernet to my host machine, hooking to two card running the +LAN server. + +The Force handling of BMCs is different than other systems. You can +set the MC on a Force card to be a BMC at address 0x20 or a "normal" +MC. The capabilities of the MC change depending on if it is a BMC or +not. Only the BMC can be an event receiver or SDR repository, for +instance. Any you can only have on BMC in a system at a time. + +OpenIPMI can automatically manage setting one of the Force cards to a +BMC (OpenIPMI calls that "activating" the connection) upon connection, +and when the "active" connection fails. However, this means that the +addresses changes from the PICMG specified address to the BMC address +(and the card that becomes inactive will be set from the BMC address +back to the PICMG address, if it is still active), and the +capabilities will change, so the OpenIPMI MC will be destroyed and +re-created (along with all the sensors and entities) for both the old +and the new active connections. + +If Force ever allows a non-BMC device to be an event receiver and SDR +repository, I'll change it to be an active-active connection, since +the current kind of connection is difficult for OpenIPMI to handle +properly. I haven't thought of a nice "smooth" way to handle this +type of interface. + +If you have a single connection to a Force system, it's not big deal, +of course. Your connection will be set to the BMC and everything will +be happy. This only affects dual connections. Of course, if you +connect two different OpenIPMI-enabled programs to two different cards, +they will get into a war about who's connection is active, so you +shouldn't do this. diff --git a/README.MotorolaMXP b/README.MotorolaMXP new file mode 100644 index 0000000..0b5a9c7 --- /dev/null +++ b/README.MotorolaMXP @@ -0,0 +1,16 @@ +The Motorola MXP chassis is fully supported by OpenIPMI, it handles +AMC redundancy properly and has (just about) every sensor and control +device available. Thanks to Motorola for all their help getting this +working. + +The MXP cards from Motorola have a standard protocol for controlling +things not standardized by IPMI, like the blue light on the card, back +end power, and on-card reset. For non-MXP cards, the standard CPCI +board select and PCI Reset signals are available. + +All current MXP boards from Motorola, and any future boards, should be +automatically supported by OpenIPMI. + +Extensive documentation is available in the OpenIPMI manual about +what sensors and controls are available on the MXP chassis. See the +section labelled "Motorola MXP". \ No newline at end of file diff --git a/TODO b/TODO new file mode 100644 index 0000000..f9eb9ac --- /dev/null +++ b/TODO @@ -0,0 +1,50 @@ +Add domain statistics to the GUI. + +Look at integrating ASF info OpenIPMI. + +Add handling of event data for sensors that have defined event data +information specific to that sensor type. + +Add a way to be notified if children or parents are added to an +entity. + +Add sensor SDRs back into the main SDR repository (if they can from +there). + +Add controls for the GUIDs (system and device) and for the various +chassis-related commands. + +Add the ability to add/remove connections in domains and IP addresses +for LAN connections. + +Firmware firewall configuration + +xRC4 support + +Serial port support + +Various chassis controls (identify, front panel enables, power restore +policy, power cycle interval, restart cause) + +Boot option configuration + +Implement set channel security keys command + +Implement a way to get the channel cipher suites for an MC + +Implement direct serial port interface, including the ability to have +disconnected operation. + +Implement payload control + +Dynamic address setting for IPMI LAN + +Settable sensor support (errata E372) + +Channel forwarding (errata E379) + +System Info support (errata E381) + +Suspend BMC ARPs command handling + +Get IP/UDP/RMCP statistics diff --git a/acinclude.m4 b/acinclude.m4 new file mode 100644 index 0000000..faf705f --- /dev/null +++ b/acinclude.m4 @@ -0,0 +1,67 @@ + +dnl +dnl read lib version from file (and trim trailing newline) +dnl +define([EL_RELEASE], [patsubst(esyscmd([. src/shlib_version; echo $major.$minor]), [ +])]) + +dnl +dnl read cvsexport timestamp from file (and trim trailing newline) +dnl +dnl define([EL_TIMESTAMP_CVSEXPORT], [patsubst(esyscmd([cat patches/timestamp.cvsexport]), [ +define([EL_TIMESTAMP_CVSEXPORT], [patsubst(esyscmd([date +"%Y%m%d"]), [ +])]) + + +dnl +dnl NetBSD use the -mdoc macro package for manpages, but e.g. +dnl AIX and Solaris only support the -man package. +dnl +AC_DEFUN([EL_MANTYPE], +[ + MANTYPE= + TestPath="/usr/bin${PATH_SEPARATOR}/usr/ucb" + AC_PATH_PROGS(NROFF, nroff awf, /bin/false, $TestPath) + if ${NROFF} -mdoc ${srcdir}/doc/editrc.5.roff >/dev/null 2>&1; then + MANTYPE=mdoc + fi + AC_SUBST(MANTYPE) +]) + + +dnl +dnl Check if getpwnam_r and getpwuid_r are POSIX.1 compatible +dnl POSIX draft version returns 'struct passwd *' (used on Solaris) +dnl NOTE: getpwent_r is not POSIX so we always use getpwent +dnl +AC_DEFUN([EL_GETPW_R_POSIX], +[ + AC_MSG_CHECKING([whether getpwnam_r and getpwuid_r are posix like]) + # The prototype for the POSIX version is: + # int getpwnam_r(char *, struct passwd *, char *, size_t, struct passwd **) + # int getpwuid_r(uid_t, struct passwd *, char *, size_t, struct passwd **); + AC_TRY_LINK([#include + #include + #include ], + [getpwnam_r(NULL, NULL, NULL, (size_t)0, NULL); + getpwuid_r((uid_t)0, NULL, NULL, (size_t)0, NULL);], + [AC_DEFINE([HAVE_GETPW_R_POSIX], 1, [Define to 1 if you have getpwnam_r and getpwuid_r that are POSIX.1 compatible.]) + AC_MSG_RESULT(yes)], + [AC_MSG_RESULT(no)]) +]) + +AC_DEFUN([EL_GETPW_R_DRAFT], +[ + AC_MSG_CHECKING([whether getpwnam_r and getpwuid_r are posix _draft_ like]) + # The prototype for the POSIX draft version is: + # struct passwd *getpwuid_r(uid_t, struct passwd *, char *, int); + # struct passwd *getpwnam_r(char *, struct passwd *, char *, int); + AC_TRY_LINK([#include + #include + #include ], + [getpwnam_r(NULL, NULL, NULL, (size_t)0); + getpwuid_r((uid_t)0, NULL, NULL, (size_t)0);], + [AC_DEFINE([HAVE_GETPW_R_DRAFT], 1, [Define to 1 if you have getpwnam_r and getpwuid_r that are draft POSIX.1 versions.]) + AC_MSG_RESULT(yes)], + [AC_MSG_RESULT(no)]) +]) diff --git a/aclocal.m4 b/aclocal.m4 new file mode 100644 index 0000000..621a9eb --- /dev/null +++ b/aclocal.m4 @@ -0,0 +1,1224 @@ +# generated automatically by aclocal 1.15.1 -*- Autoconf -*- + +# Copyright (C) 1996-2017 Free Software Foundation, Inc. + +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, +[m4_warning([this file was generated for autoconf 2.69. +You have another version of autoconf. It may work, but is not guaranteed to. +If you have problems, you may need to regenerate the build system entirely. +To do so, use the procedure documented by the package, typically 'autoreconf'.])]) + +# Copyright (C) 2002-2017 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_AUTOMAKE_VERSION(VERSION) +# ---------------------------- +# Automake X.Y traces this macro to ensure aclocal.m4 has been +# generated from the m4 files accompanying Automake X.Y. +# (This private macro should not be called outside this file.) +AC_DEFUN([AM_AUTOMAKE_VERSION], +[am__api_version='1.15' +dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to +dnl require some minimum version. Point them to the right macro. +m4_if([$1], [1.15.1], [], + [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl +]) + +# _AM_AUTOCONF_VERSION(VERSION) +# ----------------------------- +# aclocal traces this macro to find the Autoconf version. +# This is a private macro too. Using m4_define simplifies +# the logic in aclocal, which can simply ignore this definition. +m4_define([_AM_AUTOCONF_VERSION], []) + +# AM_SET_CURRENT_AUTOMAKE_VERSION +# ------------------------------- +# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. +# This function is AC_REQUIREd by AM_INIT_AUTOMAKE. +AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], +[AM_AUTOMAKE_VERSION([1.15.1])dnl +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) + +# Copyright (C) 2011-2017 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_AR([ACT-IF-FAIL]) +# ------------------------- +# Try to determine the archiver interface, and trigger the ar-lib wrapper +# if it is needed. If the detection of archiver interface fails, run +# ACT-IF-FAIL (default is to abort configure with a proper error message). +AC_DEFUN([AM_PROG_AR], +[AC_BEFORE([$0], [LT_INIT])dnl +AC_BEFORE([$0], [AC_PROG_LIBTOOL])dnl +AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([ar-lib])dnl +AC_CHECK_TOOLS([AR], [ar lib "link -lib"], [false]) +: ${AR=ar} + +AC_CACHE_CHECK([the archiver ($AR) interface], [am_cv_ar_interface], + [AC_LANG_PUSH([C]) + am_cv_ar_interface=ar + AC_COMPILE_IFELSE([AC_LANG_SOURCE([[int some_variable = 0;]])], + [am_ar_try='$AR cru libconftest.a conftest.$ac_objext >&AS_MESSAGE_LOG_FD' + AC_TRY_EVAL([am_ar_try]) + if test "$ac_status" -eq 0; then + am_cv_ar_interface=ar + else + am_ar_try='$AR -NOLOGO -OUT:conftest.lib conftest.$ac_objext >&AS_MESSAGE_LOG_FD' + AC_TRY_EVAL([am_ar_try]) + if test "$ac_status" -eq 0; then + am_cv_ar_interface=lib + else + am_cv_ar_interface=unknown + fi + fi + rm -f conftest.lib libconftest.a + ]) + AC_LANG_POP([C])]) + +case $am_cv_ar_interface in +ar) + ;; +lib) + # Microsoft lib, so override with the ar-lib wrapper script. + # FIXME: It is wrong to rewrite AR. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__AR in this case, + # and then we could set am__AR="$am_aux_dir/ar-lib \$(AR)" or something + # similar. + AR="$am_aux_dir/ar-lib $AR" + ;; +unknown) + m4_default([$1], + [AC_MSG_ERROR([could not determine $AR interface])]) + ;; +esac +AC_SUBST([AR])dnl +]) + +# AM_AUX_DIR_EXPAND -*- Autoconf -*- + +# Copyright (C) 2001-2017 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets +# $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to +# '$srcdir', '$srcdir/..', or '$srcdir/../..'. +# +# Of course, Automake must honor this variable whenever it calls a +# tool from the auxiliary directory. The problem is that $srcdir (and +# therefore $ac_aux_dir as well) can be either absolute or relative, +# depending on how configure is run. This is pretty annoying, since +# it makes $ac_aux_dir quite unusable in subdirectories: in the top +# source directory, any form will work fine, but in subdirectories a +# relative path needs to be adjusted first. +# +# $ac_aux_dir/missing +# fails when called from a subdirectory if $ac_aux_dir is relative +# $top_srcdir/$ac_aux_dir/missing +# fails if $ac_aux_dir is absolute, +# fails when called from a subdirectory in a VPATH build with +# a relative $ac_aux_dir +# +# The reason of the latter failure is that $top_srcdir and $ac_aux_dir +# are both prefixed by $srcdir. In an in-source build this is usually +# harmless because $srcdir is '.', but things will broke when you +# start a VPATH build or use an absolute $srcdir. +# +# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, +# iff we strip the leading $srcdir from $ac_aux_dir. That would be: +# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` +# and then we would define $MISSING as +# MISSING="\${SHELL} $am_aux_dir/missing" +# This will work as long as MISSING is not called from configure, because +# unfortunately $(top_srcdir) has no meaning in configure. +# However there are other variables, like CC, which are often used in +# configure, and could therefore not use this "fixed" $ac_aux_dir. +# +# Another solution, used here, is to always expand $ac_aux_dir to an +# absolute PATH. The drawback is that using absolute paths prevent a +# configured tree to be moved without reconfiguration. + +AC_DEFUN([AM_AUX_DIR_EXPAND], +[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd` +]) + +# AM_CONDITIONAL -*- Autoconf -*- + +# Copyright (C) 1997-2017 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_CONDITIONAL(NAME, SHELL-CONDITION) +# ------------------------------------- +# Define a conditional. +AC_DEFUN([AM_CONDITIONAL], +[AC_PREREQ([2.52])dnl + m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +AC_SUBST([$1_TRUE])dnl +AC_SUBST([$1_FALSE])dnl +_AM_SUBST_NOTMAKE([$1_TRUE])dnl +_AM_SUBST_NOTMAKE([$1_FALSE])dnl +m4_define([_AM_COND_VALUE_$1], [$2])dnl +if $2; then + $1_TRUE= + $1_FALSE='#' +else + $1_TRUE='#' + $1_FALSE= +fi +AC_CONFIG_COMMANDS_PRE( +[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then + AC_MSG_ERROR([[conditional "$1" was never defined. +Usually this means the macro was only invoked conditionally.]]) +fi])]) + +# Copyright (C) 1999-2017 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + + +# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be +# written in clear, in which case automake, when reading aclocal.m4, +# will think it sees a *use*, and therefore will trigger all it's +# C support machinery. Also note that it means that autoscan, seeing +# CC etc. in the Makefile, will ask for an AC_PROG_CC use... + + +# _AM_DEPENDENCIES(NAME) +# ---------------------- +# See how the compiler implements dependency checking. +# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". +# We try a few techniques and use that to set a single cache variable. +# +# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was +# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular +# dependency, and given that the user is not expected to run this macro, +# just rely on AC_PROG_CC. +AC_DEFUN([_AM_DEPENDENCIES], +[AC_REQUIRE([AM_SET_DEPDIR])dnl +AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl +AC_REQUIRE([AM_MAKE_INCLUDE])dnl +AC_REQUIRE([AM_DEP_TRACK])dnl + +m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], + [$1], [CXX], [depcc="$CXX" am_compiler_list=], + [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], + [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], + [$1], [UPC], [depcc="$UPC" am_compiler_list=], + [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], + [depcc="$$1" am_compiler_list=]) + +AC_CACHE_CHECK([dependency style of $depcc], + [am_cv_$1_dependencies_compiler_type], +[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_$1_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` + fi + am__universal=false + m4_case([$1], [CC], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac], + [CXX], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac]) + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_$1_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_$1_dependencies_compiler_type=none +fi +]) +AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) +AM_CONDITIONAL([am__fastdep$1], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) +]) + + +# AM_SET_DEPDIR +# ------------- +# Choose a directory name for dependency files. +# This macro is AC_REQUIREd in _AM_DEPENDENCIES. +AC_DEFUN([AM_SET_DEPDIR], +[AC_REQUIRE([AM_SET_LEADING_DOT])dnl +AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl +]) + + +# AM_DEP_TRACK +# ------------ +AC_DEFUN([AM_DEP_TRACK], +[AC_ARG_ENABLE([dependency-tracking], [dnl +AS_HELP_STRING( + [--enable-dependency-tracking], + [do not reject slow dependency extractors]) +AS_HELP_STRING( + [--disable-dependency-tracking], + [speeds up one-time build])]) +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' + am__nodep='_no' +fi +AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +AC_SUBST([AMDEPBACKSLASH])dnl +_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl +AC_SUBST([am__nodep])dnl +_AM_SUBST_NOTMAKE([am__nodep])dnl +]) + +# Generate code to set up dependency tracking. -*- Autoconf -*- + +# Copyright (C) 1999-2017 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + + +# _AM_OUTPUT_DEPENDENCY_COMMANDS +# ------------------------------ +AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], +[{ + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + case $CONFIG_FILES in + *\'*) eval set x "$CONFIG_FILES" ;; + *) set x $CONFIG_FILES ;; + esac + shift + for mf + do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named 'Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then + dirpart=`AS_DIRNAME("$mf")` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running 'make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "$am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`AS_DIRNAME(["$file"])` + AS_MKDIR_P([$dirpart/$fdir]) + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done + done +} +])# _AM_OUTPUT_DEPENDENCY_COMMANDS + + +# AM_OUTPUT_DEPENDENCY_COMMANDS +# ----------------------------- +# This macro should only be invoked once -- use via AC_REQUIRE. +# +# This code is only required when automatic dependency tracking +# is enabled. FIXME. This creates each '.P' file that we will +# need in order to bootstrap the dependency handling code. +AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], +[AC_CONFIG_COMMANDS([depfiles], + [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], + [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) +]) + +# Do all the work for Automake. -*- Autoconf -*- + +# Copyright (C) 1996-2017 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This macro actually does too much. Some checks are only needed if +# your package does certain things. But this isn't really a big deal. + +dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. +m4_define([AC_PROG_CC], +m4_defn([AC_PROG_CC]) +[_AM_PROG_CC_C_O +]) + +# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) +# AM_INIT_AUTOMAKE([OPTIONS]) +# ----------------------------------------------- +# The call with PACKAGE and VERSION arguments is the old style +# call (pre autoconf-2.50), which is being phased out. PACKAGE +# and VERSION should now be passed to AC_INIT and removed from +# the call to AM_INIT_AUTOMAKE. +# We support both call styles for the transition. After +# the next Automake release, Autoconf can make the AC_INIT +# arguments mandatory, and then we can depend on a new Autoconf +# release and drop the old call support. +AC_DEFUN([AM_INIT_AUTOMAKE], +[AC_PREREQ([2.65])dnl +dnl Autoconf wants to disallow AM_ names. We explicitly allow +dnl the ones we care about. +m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl +AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl +AC_REQUIRE([AC_PROG_INSTALL])dnl +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi +AC_SUBST([CYGPATH_W]) + +# Define the identity of the package. +dnl Distinguish between old-style and new-style calls. +m4_ifval([$2], +[AC_DIAGNOSE([obsolete], + [$0: two- and three-arguments forms are deprecated.]) +m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl + AC_SUBST([PACKAGE], [$1])dnl + AC_SUBST([VERSION], [$2])], +[_AM_SET_OPTIONS([$1])dnl +dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. +m4_if( + m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), + [ok:ok],, + [m4_fatal([AC_INIT should be called with package and version arguments])])dnl + AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl + AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl + +_AM_IF_OPTION([no-define],, +[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) + AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl + +# Some tools Automake needs. +AC_REQUIRE([AM_SANITY_CHECK])dnl +AC_REQUIRE([AC_ARG_PROGRAM])dnl +AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) +AM_MISSING_PROG([AUTOCONF], [autoconf]) +AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) +AM_MISSING_PROG([AUTOHEADER], [autoheader]) +AM_MISSING_PROG([MAKEINFO], [makeinfo]) +AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl +AC_REQUIRE([AC_PROG_MKDIR_P])dnl +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +AC_SUBST([mkdir_p], ['$(MKDIR_P)']) +# We need awk for the "check" target (and possibly the TAP driver). The +# system "awk" is bad on some platforms. +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([AC_PROG_MAKE_SET])dnl +AC_REQUIRE([AM_SET_LEADING_DOT])dnl +_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], + [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], + [_AM_PROG_TAR([v7])])]) +_AM_IF_OPTION([no-dependencies],, +[AC_PROVIDE_IFELSE([AC_PROG_CC], + [_AM_DEPENDENCIES([CC])], + [m4_define([AC_PROG_CC], + m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_CXX], + [_AM_DEPENDENCIES([CXX])], + [m4_define([AC_PROG_CXX], + m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJC], + [_AM_DEPENDENCIES([OBJC])], + [m4_define([AC_PROG_OBJC], + m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], + [_AM_DEPENDENCIES([OBJCXX])], + [m4_define([AC_PROG_OBJCXX], + m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl +]) +AC_REQUIRE([AM_SILENT_RULES])dnl +dnl The testsuite driver may need to know about EXEEXT, so add the +dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This +dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. +AC_CONFIG_COMMANDS_PRE(dnl +[m4_provide_if([_AM_COMPILER_EXEEXT], + [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl + +# POSIX will say in a future version that running "rm -f" with no argument +# is OK; and we want to be able to make that assumption in our Makefile +# recipes. So use an aggressive probe to check that the usage we want is +# actually supported "in the wild" to an acceptable degree. +# See automake bug#10828. +# To make any issue more visible, cause the running configure to be aborted +# by default if the 'rm' program in use doesn't match our expectations; the +# user can still override this though. +if rm -f && rm -fr && rm -rf; then : OK; else + cat >&2 <<'END' +Oops! + +Your 'rm' program seems unable to run without file operands specified +on the command line, even when the '-f' option is present. This is contrary +to the behaviour of most rm programs out there, and not conforming with +the upcoming POSIX standard: + +Please tell bug-automake@gnu.org about your system, including the value +of your $PATH and any error possibly output before this message. This +can help us improve future automake versions. + +END + if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then + echo 'Configuration will proceed anyway, since you have set the' >&2 + echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 + echo >&2 + else + cat >&2 <<'END' +Aborting the configuration process, to ensure you take notice of the issue. + +You can download and install GNU coreutils to get an 'rm' implementation +that behaves properly: . + +If you want to complete the configuration process using your problematic +'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM +to "yes", and re-run configure. + +END + AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) + fi +fi +dnl The trailing newline in this macro's definition is deliberate, for +dnl backward compatibility and to allow trailing 'dnl'-style comments +dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. +]) + +dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not +dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further +dnl mangled by Autoconf and run in a shell conditional statement. +m4_define([_AC_COMPILER_EXEEXT], +m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) + +# When config.status generates a header, we must update the stamp-h file. +# This file resides in the same directory as the config header +# that is generated. The stamp files are numbered to have different names. + +# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the +# loop where config.status creates the headers, so we can generate +# our stamp files there. +AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], +[# Compute $1's index in $config_headers. +_am_arg=$1 +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) + +# Copyright (C) 2001-2017 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_SH +# ------------------ +# Define $install_sh. +AC_DEFUN([AM_PROG_INSTALL_SH], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +if test x"${install_sh+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi +AC_SUBST([install_sh])]) + +# Copyright (C) 2003-2017 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# Check whether the underlying file-system supports filenames +# with a leading dot. For instance MS-DOS doesn't. +AC_DEFUN([AM_SET_LEADING_DOT], +[rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null +AC_SUBST([am__leading_dot])]) + +# Check to see how 'make' treats includes. -*- Autoconf -*- + +# Copyright (C) 2001-2017 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_MAKE_INCLUDE() +# ----------------- +# Check to see how make treats includes. +AC_DEFUN([AM_MAKE_INCLUDE], +[am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo this is the am__doit target +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +AC_MSG_CHECKING([for style of include used by $am_make]) +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# Ignore all kinds of additional output from 'make'. +case `$am_make -s -f confmf 2> /dev/null` in #( +*the\ am__doit\ target*) + am__include=include + am__quote= + _am_result=GNU + ;; +esac +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + case `$am_make -s -f confmf 2> /dev/null` in #( + *the\ am__doit\ target*) + am__include=.include + am__quote="\"" + _am_result=BSD + ;; + esac +fi +AC_SUBST([am__include]) +AC_SUBST([am__quote]) +AC_MSG_RESULT([$_am_result]) +rm -f confinc confmf +]) + +# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- + +# Copyright (C) 1997-2017 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_MISSING_PROG(NAME, PROGRAM) +# ------------------------------ +AC_DEFUN([AM_MISSING_PROG], +[AC_REQUIRE([AM_MISSING_HAS_RUN]) +$1=${$1-"${am_missing_run}$2"} +AC_SUBST($1)]) + +# AM_MISSING_HAS_RUN +# ------------------ +# Define MISSING if not defined so far and test if it is modern enough. +# If it is, set am_missing_run to use it, otherwise, to nothing. +AC_DEFUN([AM_MISSING_HAS_RUN], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([missing])dnl +if test x"${MISSING+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; + *) + MISSING="\${SHELL} $am_aux_dir/missing" ;; + esac +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + AC_MSG_WARN(['missing' script is too old or missing]) +fi +]) + +# Helper functions for option handling. -*- Autoconf -*- + +# Copyright (C) 2001-2017 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_MANGLE_OPTION(NAME) +# ----------------------- +AC_DEFUN([_AM_MANGLE_OPTION], +[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) + +# _AM_SET_OPTION(NAME) +# -------------------- +# Set option NAME. Presently that only means defining a flag for this option. +AC_DEFUN([_AM_SET_OPTION], +[m4_define(_AM_MANGLE_OPTION([$1]), [1])]) + +# _AM_SET_OPTIONS(OPTIONS) +# ------------------------ +# OPTIONS is a space-separated list of Automake options. +AC_DEFUN([_AM_SET_OPTIONS], +[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) + +# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) +# ------------------------------------------- +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +AC_DEFUN([_AM_IF_OPTION], +[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) + +# Copyright (C) 1999-2017 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_PROG_CC_C_O +# --------------- +# Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC +# to automatically call this. +AC_DEFUN([_AM_PROG_CC_C_O], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([compile])dnl +AC_LANG_PUSH([C])dnl +AC_CACHE_CHECK( + [whether $CC understands -c and -o together], + [am_cv_prog_cc_c_o], + [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i]) +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +AC_LANG_POP([C])]) + +# For backward compatibility. +AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) + +# Copyright (C) 2001-2017 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_RUN_LOG(COMMAND) +# ------------------- +# Run COMMAND, save the exit status in ac_status, and log it. +# (This has been adapted from Autoconf's _AC_RUN_LOG macro.) +AC_DEFUN([AM_RUN_LOG], +[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD + ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + (exit $ac_status); }]) + +# Check to make sure that the build environment is sane. -*- Autoconf -*- + +# Copyright (C) 1996-2017 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_SANITY_CHECK +# --------------- +AC_DEFUN([AM_SANITY_CHECK], +[AC_MSG_CHECKING([whether build environment is sane]) +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[[\\\"\#\$\&\'\`$am_lf]]*) + AC_MSG_ERROR([unsafe absolute working directory name]);; +esac +case $srcdir in + *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) + AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; +esac + +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + am_has_slept=no + for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$[*]" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + if test "$[*]" != "X $srcdir/configure conftest.file" \ + && test "$[*]" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken + alias in your environment]) + fi + if test "$[2]" = conftest.file || test $am_try -eq 2; then + break + fi + # Just in case. + sleep 1 + am_has_slept=yes + done + test "$[2]" = conftest.file + ) +then + # Ok. + : +else + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi +AC_MSG_RESULT([yes]) +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if grep 'slept: no' conftest.file >/dev/null 2>&1; then + ( sleep 1 ) & + am_sleep_pid=$! +fi +AC_CONFIG_COMMANDS_PRE( + [AC_MSG_CHECKING([that generated files are newer than configure]) + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + AC_MSG_RESULT([done])]) +rm -f conftest.file +]) + +# Copyright (C) 2009-2017 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_SILENT_RULES([DEFAULT]) +# -------------------------- +# Enable less verbose build rules; with the default set to DEFAULT +# ("yes" being less verbose, "no" or empty being verbose). +AC_DEFUN([AM_SILENT_RULES], +[AC_ARG_ENABLE([silent-rules], [dnl +AS_HELP_STRING( + [--enable-silent-rules], + [less verbose build output (undo: "make V=1")]) +AS_HELP_STRING( + [--disable-silent-rules], + [verbose build output (undo: "make V=0")])dnl +]) +case $enable_silent_rules in @%:@ ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; +esac +dnl +dnl A few 'make' implementations (e.g., NonStop OS and NextStep) +dnl do not support nested variable expansions. +dnl See automake bug#9928 and bug#10237. +am_make=${MAKE-make} +AC_CACHE_CHECK([whether $am_make supports nested variables], + [am_cv_make_support_nested_variables], + [if AS_ECHO([['TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi]) +if test $am_cv_make_support_nested_variables = yes; then + dnl Using '$V' instead of '$(V)' breaks IRIX make. + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AC_SUBST([AM_V])dnl +AM_SUBST_NOTMAKE([AM_V])dnl +AC_SUBST([AM_DEFAULT_V])dnl +AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl +AC_SUBST([AM_DEFAULT_VERBOSITY])dnl +AM_BACKSLASH='\' +AC_SUBST([AM_BACKSLASH])dnl +_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl +]) + +# Copyright (C) 2001-2017 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_STRIP +# --------------------- +# One issue with vendor 'install' (even GNU) is that you can't +# specify the program used to strip binaries. This is especially +# annoying in cross-compiling environments, where the build's strip +# is unlikely to handle the host's binaries. +# Fortunately install-sh will honor a STRIPPROG variable, so we +# always use install-sh in "make install-strip", and initialize +# STRIPPROG with the value of the STRIP variable (set by the user). +AC_DEFUN([AM_PROG_INSTALL_STRIP], +[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. +if test "$cross_compiling" != no; then + AC_CHECK_TOOL([STRIP], [strip], :) +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" +AC_SUBST([INSTALL_STRIP_PROGRAM])]) + +# Copyright (C) 2006-2017 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_SUBST_NOTMAKE(VARIABLE) +# --------------------------- +# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. +# This macro is traced by Automake. +AC_DEFUN([_AM_SUBST_NOTMAKE]) + +# AM_SUBST_NOTMAKE(VARIABLE) +# -------------------------- +# Public sister of _AM_SUBST_NOTMAKE. +AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) + +# Check how to create a tarball. -*- Autoconf -*- + +# Copyright (C) 2004-2017 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_PROG_TAR(FORMAT) +# -------------------- +# Check how to create a tarball in format FORMAT. +# FORMAT should be one of 'v7', 'ustar', or 'pax'. +# +# Substitute a variable $(am__tar) that is a command +# writing to stdout a FORMAT-tarball containing the directory +# $tardir. +# tardir=directory && $(am__tar) > result.tar +# +# Substitute a variable $(am__untar) that extract such +# a tarball read from stdin. +# $(am__untar) < result.tar +# +AC_DEFUN([_AM_PROG_TAR], +[# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AC_SUBST([AMTAR], ['$${TAR-tar}']) + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' + +m4_if([$1], [v7], + [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], + + [m4_case([$1], + [ustar], + [# The POSIX 1988 'ustar' format is defined with fixed-size fields. + # There is notably a 21 bits limit for the UID and the GID. In fact, + # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 + # and bug#13588). + am_max_uid=2097151 # 2^21 - 1 + am_max_gid=$am_max_uid + # The $UID and $GID variables are not portable, so we need to resort + # to the POSIX-mandated id(1) utility. Errors in the 'id' calls + # below are definitely unexpected, so allow the users to see them + # (that is, avoid stderr redirection). + am_uid=`id -u || echo unknown` + am_gid=`id -g || echo unknown` + AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) + if test $am_uid -le $am_max_uid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi + AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) + if test $am_gid -le $am_max_gid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi], + + [pax], + [], + + [m4_fatal([Unknown tar format])]) + + AC_MSG_CHECKING([how to create a $1 tar archive]) + + # Go ahead even if we have the value already cached. We do so because we + # need to set the values for the 'am__tar' and 'am__untar' variables. + _am_tools=${am_cv_prog_tar_$1-$_am_tools} + + for _am_tool in $_am_tools; do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; do + AM_RUN_LOG([$_am_tar --version]) && break + done + am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x $1 -w "$$tardir"' + am__tar_='pax -L -x $1 -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H $1 -L' + am__tar_='find "$tardir" -print | cpio -o -H $1 -L' + am__untar='cpio -i -H $1 -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_$1}" && break + + # tar/untar a dummy directory, and stop if the command works. + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) + rm -rf conftest.dir + if test -s conftest.tar; then + AM_RUN_LOG([$am__untar /dev/null 2>&1 && break + fi + done + rm -rf conftest.dir + + AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) + AC_MSG_RESULT([$am_cv_prog_tar_$1])]) + +AC_SUBST([am__tar]) +AC_SUBST([am__untar]) +]) # _AM_PROG_TAR + +m4_include([m4/ax_compare_version.m4]) +m4_include([m4/ax_config_feature.m4]) +m4_include([m4/ax_have_epoll.m4]) +m4_include([m4/ax_pkg_swig.m4]) +m4_include([m4/ax_prog_python_version.m4]) +m4_include([m4/ax_python_devel.m4]) +m4_include([m4/libtool.m4]) +m4_include([m4/ltoptions.m4]) +m4_include([m4/ltsugar.m4]) +m4_include([m4/ltversion.m4]) +m4_include([m4/lt~obsolete.m4]) +m4_include([acinclude.m4]) diff --git a/ar-lib b/ar-lib new file mode 100755 index 0000000..05094d3 --- /dev/null +++ b/ar-lib @@ -0,0 +1,270 @@ +#! /bin/sh +# Wrapper for Microsoft lib.exe + +me=ar-lib +scriptversion=2012-03-01.08; # UTC + +# Copyright (C) 2010-2017 Free Software Foundation, Inc. +# Written by Peter Rosin . +# +# 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 2, 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 . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# This file is maintained in Automake, please report +# bugs to or send patches to +# . + + +# func_error message +func_error () +{ + echo "$me: $1" 1>&2 + exit 1 +} + +file_conv= + +# func_file_conv build_file +# Convert a $build file to $host form and store it in $file +# Currently only supports Windows hosts. +func_file_conv () +{ + file=$1 + case $file in + / | /[!/]*) # absolute file, and not a UNC file + if test -z "$file_conv"; then + # lazily determine how to convert abs files + case `uname -s` in + MINGW*) + file_conv=mingw + ;; + CYGWIN*) + file_conv=cygwin + ;; + *) + file_conv=wine + ;; + esac + fi + case $file_conv in + mingw) + file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` + ;; + cygwin) + file=`cygpath -m "$file" || echo "$file"` + ;; + wine) + file=`winepath -w "$file" || echo "$file"` + ;; + esac + ;; + esac +} + +# func_at_file at_file operation archive +# Iterate over all members in AT_FILE performing OPERATION on ARCHIVE +# for each of them. +# When interpreting the content of the @FILE, do NOT use func_file_conv, +# since the user would need to supply preconverted file names to +# binutils ar, at least for MinGW. +func_at_file () +{ + operation=$2 + archive=$3 + at_file_contents=`cat "$1"` + eval set x "$at_file_contents" + shift + + for member + do + $AR -NOLOGO $operation:"$member" "$archive" || exit $? + done +} + +case $1 in + '') + func_error "no command. Try '$0 --help' for more information." + ;; + -h | --h*) + cat <&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +bin_PROGRAMS = openipmish$(EXEEXT) +subdir = cmdlang +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compare_version.m4 \ + $(top_srcdir)/m4/ax_config_feature.m4 \ + $(top_srcdir)/m4/ax_have_epoll.m4 \ + $(top_srcdir)/m4/ax_pkg_swig.m4 \ + $(top_srcdir)/m4/ax_prog_python_version.m4 \ + $(top_srcdir)/m4/ax_python_devel.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" +LTLIBRARIES = $(lib_LTLIBRARIES) +libOpenIPMIcmdlang_la_DEPENDENCIES = \ + $(top_builddir)/utils/libOpenIPMIutils.la \ + $(top_builddir)/lib/libOpenIPMI.la +am_libOpenIPMIcmdlang_la_OBJECTS = cmdlang.lo cmd_domain.lo \ + cmd_entity.lo cmd_mc.lo cmd_pet.lo cmd_sensor.lo \ + cmd_control.lo cmd_sel.lo cmd_lanparm.lo cmd_pef.lo \ + cmd_conn.lo cmd_fru.lo out_fru.lo cmd_solparm.lo +libOpenIPMIcmdlang_la_OBJECTS = $(am_libOpenIPMIcmdlang_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +libOpenIPMIcmdlang_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ + $(AM_CFLAGS) $(CFLAGS) $(libOpenIPMIcmdlang_la_LDFLAGS) \ + $(LDFLAGS) -o $@ +PROGRAMS = $(bin_PROGRAMS) +am_openipmish_OBJECTS = ipmish.$(OBJEXT) os_debug.$(OBJEXT) +openipmish_OBJECTS = $(am_openipmish_OBJECTS) +am__DEPENDENCIES_1 = +openipmish_DEPENDENCIES = libOpenIPMIcmdlang.la \ + $(top_builddir)/utils/libOpenIPMIutils.la \ + $(top_builddir)/lib/libOpenIPMI.la \ + $(top_builddir)/unix/libOpenIPMIposix.la $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libOpenIPMIcmdlang_la_SOURCES) $(openipmish_SOURCES) +DIST_SOURCES = $(libOpenIPMIcmdlang_la_SOURCES) $(openipmish_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp README +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BIBTEX = @BIBTEX@ +BUILD_CC = @BUILD_CC@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIA = @DIA@ +DIA_FILTER_NAME = @DIA_FILTER_NAME@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +DVIPDF = @DVIPDF@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GDBM_LIB = @GDBM_LIB@ +GLIB_CFLAGS = @GLIB_CFLAGS@ +GLIB_DIR = @GLIB_DIR@ +GLIB_LIB = @GLIB_LIB@ +GLIB_LIBS = @GLIB_LIBS@ +GLIB_PKGCONF = @GLIB_PKGCONF@ +GLIB_SO = @GLIB_SO@ +GLIB_TARGET = @GLIB_TARGET@ +GLIB_VERSION = @GLIB_VERSION@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LATEX = @LATEX@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MARVELL_BMC_DIR = @MARVELL_BMC_DIR@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OPENIPMI_SWIG_LIBS = @OPENIPMI_SWIG_LIBS@ +OPENIPMI_SWIG_SO = @OPENIPMI_SWIG_SO@ +OPENIPMI_VERSION_EXTRA = @OPENIPMI_VERSION_EXTRA@ +OPENIPMI_VERSION_MAJOR = @OPENIPMI_VERSION_MAJOR@ +OPENIPMI_VERSION_MINOR = @OPENIPMI_VERSION_MINOR@ +OPENIPMI_VERSION_RELEASE = @OPENIPMI_VERSION_RELEASE@ +OPENSSLINCS = @OPENSSLINCS@ +OPENSSLLIBS = @OPENSSLLIBS@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL_CFLAGS = @PERL_CFLAGS@ +PERL_DIR = @PERL_DIR@ +PERL_HAS_POSIX_THREADS = @PERL_HAS_POSIX_THREADS@ +PERL_INSTALL_DIR = @PERL_INSTALL_DIR@ +PERL_POSIX_LIB = @PERL_POSIX_LIB@ +PERL_POSIX_SO = @PERL_POSIX_SO@ +POPTLIBS = @POPTLIBS@ +PYTHON = @PYTHON@ +PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ +PYTHON_DIR = @PYTHON_DIR@ +PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ +PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ +PYTHON_GUI_DIR = @PYTHON_GUI_DIR@ +PYTHON_HAS_POSIX_THREADS = @PYTHON_HAS_POSIX_THREADS@ +PYTHON_INSTALL_DIR = @PYTHON_INSTALL_DIR@ +PYTHON_INSTALL_LIB_DIR = @PYTHON_INSTALL_LIB_DIR@ +PYTHON_LIBS = @PYTHON_LIBS@ +PYTHON_POSIX_LIB = @PYTHON_POSIX_LIB@ +PYTHON_POSIX_SO = @PYTHON_POSIX_SO@ +PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ +PYTHON_SWIG_FLAGS = @PYTHON_SWIG_FLAGS@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +RT_LIB = @RT_LIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SNMPLIBS = @SNMPLIBS@ +SOCKETLIB = @SOCKETLIB@ +STRIP = @STRIP@ +SWIG = @SWIG@ +SWIG_DIR = @SWIG_DIR@ +SWIG_LIB = @SWIG_LIB@ +TCL_CFLAGS = @TCL_CFLAGS@ +TCL_DIR = @TCL_DIR@ +TCL_LIB = @TCL_LIB@ +TCL_LIBS = @TCL_LIBS@ +TCL_PKGCONF = @TCL_PKGCONF@ +TCL_SO = @TCL_SO@ +TCL_TARGET = @TCL_TARGET@ +TERM_LIBS = @TERM_LIBS@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +diaprog = @diaprog@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +perlprog = @perlprog@ +pkgprog = @pkgprog@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +LIB_VERSION = 0.0.5 +LD_VERSION = 0:5:0 +AM_CFLAGS = -Wall -Wsign-compare -I$(top_builddir)/include \ + -I$(top_srcdir)/include \ + -DIPMI_CHECK_LOCKS $(GLIB_CFLAGS) \ + $(TCL_CFLAGS) + +lib_LTLIBRARIES = libOpenIPMIcmdlang.la +libOpenIPMIcmdlang_la_SOURCES = cmdlang.c cmd_domain.c cmd_entity.c cmd_mc.c \ + cmd_pet.c cmd_sensor.c cmd_control.c cmd_sel.c cmd_lanparm.c \ + cmd_pef.c cmd_conn.c cmd_fru.c out_fru.c cmd_solparm.c + +libOpenIPMIcmdlang_la_LIBADD = -lm \ + $(top_builddir)/utils/libOpenIPMIutils.la \ + $(top_builddir)/lib/libOpenIPMI.la + +libOpenIPMIcmdlang_la_LDFLAGS = -rdynamic -version-info $(LD_VERSION) \ + -L$(libdir) + +openipmish_SOURCES = ipmish.c os_debug.c +openipmish_LDADD = libOpenIPMIcmdlang.la \ + $(top_builddir)/utils/libOpenIPMIutils.la \ + $(top_builddir)/lib/libOpenIPMI.la \ + $(top_builddir)/unix/libOpenIPMIposix.la \ + -lreadline \ + $(TERM_LIBS) \ + $(SNMPLIBS) $(GLIB_LIB) $(GLIB_LIBS) \ + $(TCL_LIB) $(TCL_LIBS) \ + $(OPENSSLLIBS) $(GDBM_LIB) $(RT_LIB) + +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu cmdlang/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu cmdlang/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +install-libLTLIBRARIES: $(lib_LTLIBRARIES) + @$(NORMAL_INSTALL) + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + list2=; for p in $$list; do \ + if test -f $$p; then \ + list2="$$list2 $$p"; \ + else :; fi; \ + done; \ + test -z "$$list2" || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ + } + +uninstall-libLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ + done + +clean-libLTLIBRARIES: + -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) + @list='$(lib_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libOpenIPMIcmdlang.la: $(libOpenIPMIcmdlang_la_OBJECTS) $(libOpenIPMIcmdlang_la_DEPENDENCIES) $(EXTRA_libOpenIPMIcmdlang_la_DEPENDENCIES) + $(AM_V_CCLD)$(libOpenIPMIcmdlang_la_LINK) -rpath $(libdir) $(libOpenIPMIcmdlang_la_OBJECTS) $(libOpenIPMIcmdlang_la_LIBADD) $(LIBS) +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ + fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p \ + || test -f $$p1 \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' \ + `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(bindir)" && rm -f $$files + +clean-binPROGRAMS: + @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +openipmish$(EXEEXT): $(openipmish_OBJECTS) $(openipmish_DEPENDENCIES) $(EXTRA_openipmish_DEPENDENCIES) + @rm -f openipmish$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(openipmish_OBJECTS) $(openipmish_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmd_conn.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmd_control.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmd_domain.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmd_entity.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmd_fru.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmd_lanparm.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmd_mc.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmd_pef.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmd_pet.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmd_sel.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmd_sensor.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmd_solparm.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmdlang.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ipmish.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/os_debug.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/out_fru.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) +install-binPROGRAMS: install-libLTLIBRARIES + +installdirs: + for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-binPROGRAMS clean-generic clean-libLTLIBRARIES \ + clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-data-local + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-binPROGRAMS install-libLTLIBRARIES + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-binPROGRAMS uninstall-libLTLIBRARIES \ + uninstall-local + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \ + clean-binPROGRAMS clean-generic clean-libLTLIBRARIES \ + clean-libtool cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-binPROGRAMS install-data \ + install-data-am install-data-local install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-libLTLIBRARIES \ + install-man install-pdf install-pdf-am install-ps \ + install-ps-am install-strip installcheck installcheck-am \ + installdirs maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ + uninstall-am uninstall-binPROGRAMS uninstall-libLTLIBRARIES \ + uninstall-local + +.PRECIOUS: Makefile + + +# We need to make a link from ipmish to openipmish for backwards +# compatability. +install-data-local: + rm -f $(DESTDIR)$(bindir)/ipmish + $(LN_S) openipmish $(DESTDIR)$(bindir)/ipmish + +uninstall-local: + rm -f $(DESTDIR)$(bindir)/ipmish + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/cmdlang/README b/cmdlang/README new file mode 100644 index 0000000..7e03817 --- /dev/null +++ b/cmdlang/README @@ -0,0 +1,1382 @@ +This is the OpenIPMI command language, which allows each access to +pretty much everything about OpenIPMI. It can be used to add an +OpenIPMI command shell into an application to give the user full +access into everything OpenIPMI can do. + +The interface is very simple. You call the command interpreter with a +string. You pass in two functions, an output handler and a "done" +functions. If an error occurs, the command interpreter generates some +output and returns an error code. Otherwise, it will generate output +and call the done function when it is complete. + +The command language is hierarchical. There are several top-level +commands, each of these has sub-commands, and those may have +sub-commands, and so on. + +The commands may take parameters. Some general ones are: + +* - A name of a domain. Each registered domain in a system + has a name. +* - Entity names are in the form: [[(entity spec)]] + Notice that the entity spec is optional. If it is not listed, then + the operation is done on all entities in the domain. The whole + thing is optional, too, if nothing is given then the operation is + done on every entity in every domain. + The entity spec is either: + . + for system-reltive entities, or: + r... + for device-relative entities. +* - These come in the form [[.name]] If no name is + given, the operation is performed on all sensors in the entity. + If the entity is just a domain, then all sensors in the domain, and + if the whole thing is empty, then all sensors on all domains. +* - These come in the form [[.name]] If no name is + given, the operation is performed on all controls in the entity. + If the entity is just a domain, then all controls in the domain, and + if the whole thing is empty, then all controls on all domains. +* - A management controller. These come in the form + [[(.)]]. As usual, the optional parts will + cause defaulting to all things. +* - A connection number, in the form: . +* - A platform event trap id, in the form [][.] +* - A LAN parameter id, in the form [][.] +* - A PEF id, in the form [][.] +* - a 16-byte globally unique ID, all globbed together in + one big hexidecimal thing. + +Note that the domain name and sensor/control name may have spaces in +them; the names may be bracketed by quotes (' or "). A backslash (\) +may be used to add a quote character (or a backslash) into a string. +An empty parameters should be specified as "", although if nothing +comes after the parameter it may just be left empty. + + + +The command hierarchy is: + +* help - get general help. Type the specific command after help to + get info for that command. + +* domain + + * list - List all domains + Response is: + Domains + Name: + Name: + . + . + + * info - List information about the given domain + Response is: + Domain + Name: + **DOMAIN INFO** + + * new - Open a connection to a new domain + Parms are either: + lan " + or + smi + is the authentication type, either "md5", "md2", "straight", + or "none". is the authentication level, either "admin", + "operator", or "user". The is generally 623. + The is the driver number, generally 0. + Options enable and disable various automitic processing and are: + -[no]all - all automatic handling + -[no]sdrs - sdr fetching + -[no]frus - FRU fetching + -[no]sel - SEL fetching," + -[no]ipmbscan - IPMB bus scanning + -[no]oeminit - special OEM processing (like ATCA) + -[no]seteventrcvr - setting event receivers + -wait_til_up - wait until the domain is up before returning + Note that if you specify this and the domain never comes up, + you will never get a prompt. + + Note that setting event receivers it not affected by the -all + option. By default -all -seteventrcvr is true, which turns + everything on. + Response is: + Domain Created: + + * fru + - dump a fru given all it's insundry information. + Response is: + Domain + Name: + FRU + **FRU INFO** + + * msg [data...] - Send + a command to the given IPMB address on the given channel and display the + response. Note that this does not require the existance of an + MC in OpenIPMI. The response is: + Response + Domain: + channel: + ipmb: + LUN: + NetFN: + command: + Data: + + * scan [ipmb addr] - scan an IPMB to add or remove it. + If a range is given, then scan all IPMBs in the range. + Response is: + Scan done: + + * presence - Check the presence of entities. + Response is: + Presence check started: + + * close - close the given domain. + Response is: + Domain closed: + + * sel_rescan_time

- list the SDRs for the mc. Either gets + the main SDR repository or the sensor SDR repository. + Response is: + MC + Name: + SDR + Record ID: + Type: + Version: . + Data: + SDR + Record ID: + Type: + Version: . + Data: + . + . + + * get_sel_time - Get the time in the SEL for the given MC + MC + Name: + SEL Time: + + * sel_info - Dump information about the MC's SEL. + Response is: + SEL Count: + SEL Slots Used: + +* sel + + * list - list the local copy of the system event log + Response is: + Domain + Name: + Entries: + Slots in use: + Event + **EVENT INFO** + . + . + + * delete - Delete the given event number from the + SEL + Response is: + Event deleted + MC: + Record: + + * add <13 bytes of data> - Add the + event data to the SEL. + Response is: + MC + Name: + Record ID: + + * clear - clear the system event log + +* con + * list - List all the connections in the domain. + Response is: + Domain + Name: + Connections + Name: + Name: + . + . + + * info + Response is: + Connection + Name: + Active: true | false + + * activate - Activate the given connection + Response is: + Connection activated: + +* pet + + * list - List all the pets in the domain. + Response is: + Name: + Name: + . + . + + * info - Dump information about a pet. + Response is: + PET + MC: + Channel: + IP Address: + MAC Address: + EFT Selector: + Policy Number: + APT Selector: + LAN Dest Selector: + + * new + + - Set up the domain to send PET traps from the given connection + to the given IP/MAC address over the given channel. + Response is: + PET Created: + + * mcnew + + - Set up the domain to send PET traps from the given connection + to the given IP/MAC address over the given channel. This takes + an MC instead of a connection. + Response is: + PET Created: + + * close - Close the pet. + PET destroyed: + +* pef - commands dealing with platform even filters. These are + basically connections to the PEF configuration parameters in an MC. + You use a pef to fetch a pef config, which you can then modify and + write back to the MC. Note that when you get a pef config, you + claim a lock on the MC that must be unlocked. + + * list - List all the pefs that currently exist in the + domain. + Response is: + Name: + Name: + . + . + + * info - Dump info about the pef. + Response is: + PEF + Name: + MC: + + * new - Create a pef for the given MC. + Response is: + PEF: + + * unlock_mc - Unlock the PEF lock on the given MC. + Response is: + PEF unlocked: + + * close - Free the given pef + PEF destroyed: + + * config - commands dealing with PEF configurations. These + are the actual PEF data items. + + * list - list all the PEF configs + Response is: + PEFs + Name: + Name: + . + . + + * info - Dump information about the pef config. + Response is: + PEF Config + Name: + ** PEF CONFIG ** + + * get - Fetch the pef data items from the pef + and create a pef config. + Response is: + PEF Config + Name: + ** PEF CONFIG ** + + * update [selector] - Set the given parameter + in the pef config to the given value. If the parameter has + a selector of some type, the selector must be given, otherwise + no selector should be given. + Response is: + PEF config updated: + + * set - Write the pef data back + to the pef. Note that this must be the same pef used + to create the config. + Response is: + PEF config set: + + * unlock - Unlock the lock in the + MC and mark the pef config as unlocked. + Response is: + PEF config unlocked: + + * close - Free the pef config. + PEF config destroyed: + +* lanparm - commands dealing with lanparms. These are basically + connections to the LAN configuration parameters in an MC. You + use a lanparm to fetch a lanparm config, which you can then + modify and write back to the MC. Note that when you get a + lanparm config, you claim a lock on the MC that must be + unlocked. + + * list - List all the lanparms that currently exist in the + domain. + Response is: + Domain + Name: + LANPARMs + Name: + Name: + . + . + + * info - Dump info about the lanparm. + Response is: + LANPARM + Name: + MC: + Channel: + + * new - Create a lanparm for the given MC and + channel. + Response is: + LANPARM: + + * unlock_mc - Unlock the lanparm lock on the given + MC and channel. + Response is: + LANPARM unlocked: + + * close - Free the given lanparm + Response is: + LANPARM destroyed: + + * config - commands dealing with lanparm configurations. These + are the actual lanparm data items. + + * list - list all the lanparm configs + Response is: + LANPARMS + Name: + Name: + . + . + + * info - Dump information about the lanparm config. + Response is: + LANPARM Config + Name: + ** LANPARM CONFIG ** + + * get - Fetch the lanparm data items from the lanparm + and create a lanparm config. + Response is: + LANPARM Config + Name: + ** LANPARM CONFIG ** + + * set - Write the lanparm data back + to the lanparm. Note that this must be the same lanparm used + to create the config. + Response is: + LANPARM config set: + + * unlock - Unlock the lock in the + MC and mark the lanparm config as unlocked. + Response is: + LANPARM config unlocked: + + * close - Free the lanparm config. + Response is: + LANPARM config destroyed: + +* general + * evinfo true | false - Turn on or off dumping object information + when an event comes in. This is false by default. + + * debug on|off - Turn the given debugging type on or off + + +EVENTS +====== + +The command language will output events to the console when they +happen. Events all occur in the format: + Event + **EVENT INFO** + +The event info varies on the type of events. The defined events are +listed. + +The following event is output when the domain is completely up and +operational and finished all it SDR, FRU, and bus scans: + EVENT + Object Type: Domain + Name: + Operation: Domain fully up + Connection Number: + Port Number: + Any Connection Up: true | false + Error: + +The following comes out when domain connection infomration changes: + EVENT + Object Type: Domain + Name: + Operation: Connection Change + +The following comes out when domains are added: + EVENT + Object Type: Domain + Name: + Operation: Add + %**DOMAIN INFO** + +The following comes out when domains are destroyed: + EVENT + Object Type: Domain + Name: + Operation: Delete + +The following comes out when the domain gets an event that does not +have a handler: + EVENT + Object Type: Event + **EVENT INFO** + +The following comes out when an entity is added: + EVENT + Object Type: Entity + Name: + Operation: Add + %**ENTITY INFO** + +The following comes out when an entity is deleted: + EVENT + Object Type: Entity + Name: + Operation: Delete + +The following comes out when an entity is changed: + EVENT + Object Type: Entity + Name: + Operation: Change + %**ENTITY INFO** + +The following comes out when an entity's FRU is added: + EVENT + Object Type: Entity FRU + Name: + Operation: Add + %**FRU INFO** + +The following comes out when an entity's FRU is deleted: + EVENT + Object Type: Entity FRU + Name: + Operation: Delete + +The following comes out when an entity's FRU is changed: + EVENT + Object Type: Entity FRU + Name: + Operation: Change + %**FRU INFO** + +The following comes out when an entity's presence changes: + EVENT + Object Type: Entity + Name: + Operation: Presence Change + Present: true | false + %Event + **EVENT INFO** + +The following comes out when an entity's hot-swap state changes: + EVENT + Object Type: Entity + Name: + Operation: Hot-Swap Change + Last State: not_present | inactive | activation_requested | + activation_in_progress | active | deactivation_requested | + deactivation_in_progress | out_of_con + State: not_present | inactive | activation_requested | + activation_in_progress | active | deactivation_requested | + deactivation_in_progress | out_of_con + %Event + **EVENT INFO** + +The following comes out when a discrete sensor gets an event: + EVENT + Object Type: Sensor + Name: + Operation: Event + Offset: + Direction: assertion | deassertion + Severity: + Previous Severity: + %Event + **EVENT INFO** + +The following comes out when a threshold sensor gets an event: + EVENT + Object Type: Sensor + Name: + Operation: Event + Threshold: lower non critical | lower critical | lower non recoverable + | upper non critical | upper critical | upper non recoverable + High/Low: going high | going low + Direction: assertion | deassertion + %Value: + %Raw Value: + %Event + **EVENT INFO** + +The following comes out when a sensor is added: + EVENT + Object Type: Sensor + Name: + Operation: Add + %**SENSOR INFO** + +The following comes out when a sensor is deleted: + EVENT + Object Type: Sensor + Name: + Operation: Delete + +The following comes out when a sensor is changed: + EVENT + Object Type: Sensor + Name: + Operation: Change + %**SENSOR INFO** + +The following comes out when a control gets an event: + EVENT + Object Type: Control + Name: + Operation: Event + Value + Number: + Value: + %Event + **EVENT INFO** + +The following comes out when a control is added: + EVENT + Object Type: Control + Name: + Operation: Add + %**CONTROL INFO** + +The following comes out when a control is deleted: + EVENT + Object Type: Control + Name: + Operation: Delete + +The following comes out when a control is changed: + EVENT + Object Type: Control + Name: + Operation: Change + %**CONTROL INFO** + + +OBJECT INFO +=========== + +**EVENT INFO** + MC: + Record ID: + Event type: + Timestamp: + Data: + + +**DOMAIN INFO** + Type: + SEL Rescan Time: