2006-08-16 Jim Garlick <garlick@llnl.gov>

    * test/vicebox.[ch], test/svicebox.c, etc/vicebox.dev: Removed.

    * scripts/*.sh: Removed (vicebox stuff).

    * Makefile, src/Makefile: Cleanup.

    * src/parse.y, src/device_tcp.c: Support 'quiet' TCP device option
    which suppresses connect/disconnect/telnet log messages.
    Undocumented for now (for Douglas Clay at Sandia CA).

    * src/device_tcp.c: Respond WONT to TELOPT_BINARY sent by Cyclades.

    * : tag powerman-1.0.25

2006-08-01 Jim Garlick <garlick@llnl.gov>

    * src/device_tcp.c: _telnet_recvopt(): Respond WONT to
    TELOPT_ECHO and TELOPT_LFLOW sent by newer baytechs.

2006-07-12 Jim Garlick <garlick@llnl.gov>

    * etc/baytech-rpc3-nc.dev: slight mods to support newer firmware.

2006-06-20 Jim Garlick <garlick@llnl.gov>

    * etc/icebox4.dev: New (from Jarod Wilson).

2006-05-30 Jim Garlick <garlick@llnl.gov>

    * : tag powerman-1.0.24

    * powerman.spec: fixed typo in %defattr

    * : tag powerman-1.0.24-2

2006-05-25 Jim Garlick <garlick@llnl.gov>

    * src/hostlist.[ch]: update to the latest from lsd-tools to
    fix case where powerman would not expand [00-26]p.

2006-05-24 Jim Garlick <garlick@llnl.gov>

    * src/device_tcp.c: _telnet_recvopt(): log any ignored option 
    negotiation requests.  Respond WONT to TELOPT_NEW_ENVIRON, 
    TELOPT_XDISPLOC, TELOPT_TSPEED to make Digi terminal server in
    telnet mode happy (gnat powerman/634).

    * powerman.spec: Include examples directory in RPM.

    * etc/cyclades-pm10.dev: New [Trent D'Hooge].

2006-04-26 Jim Garlick <garlick@llnl.gov>

    * src/hostlist.c: hostlist_next(): call out_of_memory() on malloc 
    failure [coverity].

    * src/client.c: always free hostlist_next() result if non-null [coverity].

    * src/device_serial.c: document valid return for sscanf() with an 
    assert() [coverity].

    * src/client.c: _client_query_status_reply_nointerp(): ensure 
    hostlist_destroy() is called on all function exit paths [coverity].

2006-03-27 Jim Garlick <garlick@llnl.gov>

    * etc/powerman.spec: Rework %files section per
    https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=180747

2006-03-27 Jim Garlick <garlick@llnl.gov>

    * man/powerman.dev.5: New.

    * man/powerman.conf.5: Tidy up.

    * etc/ibmbladecenter.dev: Tidy up.

2006-03-26 Jim Garlick <garlick@llnl.gov>

    * src/device_serial.c: support baud rates up to B460800 if system does.

    * etc/phantom4.dev: fix for early v4.0 firmware with broken P0|P1.

    * etc/cb-7050.dev: New, experimental.
    
    * etc/README: Removed.

2006-03-13 Jim Garlick <garlick@llnl.gov>

    * etc/ibmbladecenter.dev: New, experimental.

2006-02-16 Jim Garlick <garlick@llnl.gov>

    * test/vpcd.c: handle undefined PTHREAD_THREADS_MAX on FC4.

    * Makefile, src/Makefile: take release number out of version string.

    * powerman.spec: spec file changes for Fedora submission [Ben Woodard]

    * : tag powerman-1.0.23

2005-10-12 Jim Garlick <garlick@llnl.gov>

    * Makefile, Make-rpm.mk, META: Update for Chris's build script.

    * : tag powerman-1.0.22

2005-09-22 Jim Garlick <garlick@llnl.gov>

    * etc/apcpdu.dev: fixed script after debug on Gauss cluster.

2005-07-09 Jim Garlick <garlick@llnl.gov>

    * src/hprintf.c: fixed improper va_list handling (originally reported
    by Thayne Harbaugh at LNXI) that was causing powermand to segfault when
    the client used -T on a nakoma 64 bit system.

    * etc/apcpdu.dev: New (from Makia Minich)

    * Makefile: Added apcpdu.dev to install target.

    * etc/*, test/*.pl, test/*.c: Remove RCS Source keyword and fix some 
    instances of Id that got mangled somewhere along the way.

    * contributed/pullizi.tgz: This tarball was corrupt.  Removed for now.

2005-07-08 Jim Garlick <garlick@llnl.gov>

    * : Chris converted from CVS to subversion.  Roughly here are his comments:
    I did not disable cvs2svn's keyword expansion.  On the plus side, 
    cvs2svn automatically sets the svn:keywords property on most files,
    which is the behavior you pro'ly want.  On the down side, tagged releases 
    are no longer byte-compatible with their former cvs counterparts since 
    keyword expansion differs slightly under svn; the dollar-Id-dollar 
    metadata is the same, just in a slightly different format.  I've added 
    our default hook scripts which requires you enter a commit message, 
    allows you to modify the svn:log revision property, and prevents you from 
    modifying anything under a /tags/ dir.

2005-03-22 Albert Chu <chu11@llnl.gov>

    * META: Updated for new release.

    * : tag powerman-1-0-21

2005-03-09 Jim Garlick <garlick@llnl.gov>

    * src/device.c: fixed memory leak dbg_actions (gnat powerman/233).

    * src/list.c: turn on MYALLOC.

2005-02-25 Jim Garlick <garlick@llnl.gov>

    * test/Makefile: run64vg and run2048vg targets added for valgrind.

    * src/list.[ch]: updated to latest from lsd-tools project.
    There appears to be a memory leak fix in here.

    * src/hash.c: fixed memory leak in hash_destroy(), also fixed in
    latest from lsd-tools.  Didn't update because latest requires thread.h
    stuff and didn't want to hassle.

    * src/hostlist.c: updated to latest from lsd-tools project.
    Added "MYALLOC" define to allow local memory allocator to be turned
    on and off when debugging with valgrind.

    * src/arglist.c: fixed two memory leaks 
    strings returned by hostlist_next() must be freed

    * src/client.c: fixed two memory leaks
    strings returned by hostlist_next() must be freed

    * src/parse_util.c: fixed three memory leaks
    strings returned by hostlist_next() must be freed

    * src/pluglist.c: fixed four memory leaks
    strings returned by hostlist_next() must be freed

    * src/device.c: fixed memory leak in dev_destroy().

    * src/parse.y: add a missing 'break' after default case stmt.

2004-09-21 Albert Chu <chu11@llnl.gov>

    * ChangeLog: Fixed dates in ChangeLog.  It's 2004 not 2003.

    * examples/powerman.conf-thundered: Fix typo in example and added a
      few notes.

2004-05-28 Jim Garlick <garlick@llnl.gov>

    * examples: added a few example powerman.conf files per Robin's request.

2004-03-19 Jim Garlick <garlick@llnl.gov>
   
    * etc/apc.dev, etc/apcnew.dev: changed comments about firmware revs
    supported by each APC script variant per report by Zach Brown
    <zab@clusterfs.com>.

    * : tag powerman-1-0-20
    
2004-03-17 Albert Chu <chu11@llnl.gov>
    
    * etc/ipmipower.dev: Updated regex with new possible output and
    fixed regex bug.
	
2004-02-24 Jim Garlick <garlick@llnl.gov>

    * powerman.spec: fixed default attrs for %doc files.

2004-02-19 Jim Garlick <garlick@llnl.gov>

    * src/pluglist.[ch]: new PlugList abstraction for lists of Plugs.

    * src/device.c, src/parse.y, src/client.c: use new PlugList code.

    * test/tpl.c: test driver for pluglist code.

2004-02-09 Jim Garlick <garlick@llnl.gov>

    * src/parse.lex: fixed for gnat 323: powerman core dumps on incorrect 
    config file.

2004-01-12 Jim Garlick <garlick@llnl.gov>

    * src/arglist.[ch], src/device.c: further cleanup of ArgList abstraction

2004-01-12 Albert Chu <chu11@llnl.gov>

    * etc/ipmipower.dev: Fixed regex typo, it should now compile.

2004-01-10 Jim Garlick <garlick@llnl.gov>

    * src/parse.y: allow hostlists in the 'plug name' field of a node
    specification, e.g. this now works:
      node "thunder[0-63]" "i0" "pthunder[0-63]"

    * etc/ipmipower.dev: Last regex didn't compile - try this one?

    * powerman.spec: fix test in %post scriptlet

2004-01-09 Albert Chu <chu11@llnl.gov>

    * etc/ipmipower.dev: Added additional expressions that result
    in powerman returning an unknown state.
	
2003-12-22 Jim Garlick <garlick@llnl.gov>

    * etc/ibmh8.dev: Fixed regular expression bug in status_all script.

2003-12-22 Albert Chu <chu11@llnl.gov>

    * etc/ipmipower.dev: Removed "not discovered" as acceptable message to 
    indicate power is off.  Power status should be unknown.  Fixed regular 
    expression bug in status_all script.
	
2003-12-22 Jim Garlick <garlick@llnl.gov>

    * src/arglist.[ch]: Fixed thinko in arglist_get prototype.

2003-12-21 Jim Garlick <garlick@llnl.gov>

    * src/arglist.[ch]: New.  Pulled content from device.c and tried to
    abstract more effectively.  Make it possible to preserve order of
    ArgList despite the use of a hash table for efficiency.

    * src/device.c, src/client.c: use new arglist interfaces.

    * : tag powerman-1-0-19-argval

2003-12-19 Jim Garlick <garlick@llnl.gov>

    * Makefile, powerman.spec, man/powerman.1: remove 'on' and 'off' sym links.

    * etc/README: added statement description.

    * powerman.spec: post scriptlet stops and restarts powerman, if it was
    running.
   
    * etc/powerman.dev: New.

2003-12-17 Jim Garlick <garlick@llnl.gov>

    * src/device.c: remove _verify_plugassign (hold over from when we had
    setplugname commands in scripts).

    * src/device_pipe.c: assert no string overflow from forkpty().

2003-12-08 Jim Garlick <garlick@llnl.gov>

    * etc/vpc.dev: implement status_all, on_all, off_all, and cycle_all
    for efficiency.

    * src/device.c, src/powermand.c, src/wrappers.c: introduce poll debugging
    code and fix bug where poll loop would spin when poll returned errors
    on devices.

    * src/device.c: rewrite dev_post_poll() for clarity.

    * src/device_pipe.c, Makefile: use openpty() from -lutil instead of local
    pty_open.  This gets pty allocation right once and for all.

    * src/pty.[ch]: removed.

    * src/hash.[ch]: new from lsd-tools (courtesy Chris Dunlap)

    * src/device.[ch], src/client.c: changed ArgList to use hash_t instead of
    List since gprof showed list searching was the bottleneck in big configs.
    Caveat: unsorted output (-x, temperature) is no longer returned in config 
    file order. 

    * : tag powerman-1-0-19

2003-12-04 Jim Garlick <garlick@llnl.gov>

    * etc/cyclades-pm8.dev: fixed status script to not fail intermittently
    depending on breakdown of partial reads.

    * etc/cyclades-pm8.dev: device has a non-configurable inactivity
    timeout so log on and off for each command.

    * etc/baytech-rpc28-nc.dev: device has a non-configurable inactivity
    timeout so repeat login sequence before each command (it works whether
    logged in or not).
    
    * powerman.spec: add %dir entries for directories that may be inadvertantly
    created with too restrictive permissions like /usr/man/man7.

2003-12-03 Albert Chu <chu11@llnl.gov>

    * /etc/ipmipower.dev: Removed "timed out" as acceptable message to
    indicate power is off.  Power status should be unknown when there
    is a timeout.
 
2003-12-02 Jim Garlick <garlick@llnl.gov>

    * man/powerman-devices.7: Added.

2003-12-02 Albert Chu <chu11@llnl.gov>

    * etc/ipmipower.dev: Replaced "failed to connect" with "timed out" 
    and "not discovered".

2003-11-30 Jim Garlick <garlick@llnl.gov>

    * src/wrappers.[ch], src/device.[ch], src/client.[ch], powermand.c:
    Add logic to use poll() if available, or select() if not.  This gets
    around the fixed 1024 bit size of FD_SETS used with select under Linux,
    which effectively limited the maximum number of devices to under 1024.

2003-11-30 Jim Garlick <garlick@llnl.gov>

    * src/powerman.c: handle partial reads on powermand socket.
    Fixes the very occasional 'unexpected response from server' errors.

    * src/powerman.c: don't initiate connect to server until options
    have been validated (avoids 'client read returned EOF' messages
    from server when someone mistypes a command).

    * src/client_proto.h, src/client.c: add connect_state to device query
    output.

    * test/vpcd.c, test/mkconf.pl, etc/vpc.dev: change vpcd plugs from 8 to 16.

    * src/pty.c: fixed _ptym_open to work beyond 176 ptys on Linux (up to 256).

    * test/Makefile: targets for testing scalability

    * test/testing.txt: added.

    * src/Makefile, src/debug.h: make dbg() macro a noop out if NDEBUG defined.

    * : tag powerman-1-0-18-prepoll

2003-11-28 Jim Garlick <garlick@llnl.gov>

    * src/wrappers.c, src/powerman.c, src/device_tcp.c: make Connect()
    non-fatal on ECONNREFUSED.

    * src/powermand.c: make daemonization happen after cli_listen() so
    errors about binding to the powermand port are reported on stderr.

    * src/pty.c: rework error handling.

2003-11-24 Jim Garlick <garlick@llnl.gov>

    * src/parse.y: add ability to put hostlists in 'node' line.
    If hardwired plug names, plug names are assigned in order.
    If not, plug names are set equal to node names.
    This should substantially reduce the size of powerman.conf files on 
    large clusters.

    * test/vpcd.c: add --foreground option for running on a pty.

    * test/TESTRIG: removed

    * test/mkconf.pl: added

2003-10-29 Albert Chu <chu11@llnl.gov>

    * etc/ipmipower.dev: Added "failed to connect" to query checks.

2003-10-17 Albert Chu <chu11@llnl.gov>
	
    * etc/ipmipower.dev: New File

    * man/powerman.1: 
    Added info about HOST RANGES under tcsh.	
    Fixed typo in powerman examples.

    * Makefile: Install new ipmipower.dev file.	
	
2003-10-16 Jim Garlick <garlick@llnl.gov>

    * src/device_pipe.c: after closing one side of the pty, send a SIGTERM to 
    child processes before attempting to reap them.  This solves a powerman 
    deadlock observed with h8power on ALC.

2003-10-03 Jim Garlick <garlick@llnl.gov>

    * src/hostlist.[ch], src/config.h: updated to latest hostlist package
    from lsd-tools.

2003-09-26 Jim Garlick <garlick@llnl.gov>

    * etc/phantom-llnl.dev: remove this config file for LLNL-specific 
    phantom3 functionality which was never deployed in production.

    * etc/phantom4.dev: New.

2003-09-18 Jim Garlick <garlick@llnl.gov>

    * src/device.c, src/parse.y, etc/ibmh8.dev: removed support for setplugname
    statement.  Now if the 'plug name' line is omittted from the device.dev 
    file, any plug name can be specified in the config file.  Also, if the
    plug name is omitted in the config file, the node name is used.
      
    * NEWS: updated for 1.0.19 release.  Include as news everything since
    1.0.16 since 17 and 18 were not widely distributed.

2003-09-17 Jim Garlick <garlick@llnl.gov>

    * src/hprintf.[ch], src/argv.[ch], src/wrappers.[ch]: import stuff
    from h8power project.

    * src/device_serial.c: lockf serial devices, close fd on error path.

2003-09-03 Jim Garlick <garlick@llnl.gov>

    * etc/ibmrsa.dev, etc/ibmrsa-smc.dev: Removed support for IBM RSA adapter
    per request of IBM.

    * : tag powerman-1-0-18

2003-08-17 Jim Garlick <garlick@llnl.gov>

    * etc/ibmh8.dev: Added and got working with 'h8power' utility.

2003-08-06 Jim Garlick <garlick@llnl.gov>

    * etc/cyclades-pm8.dev: got working with PM8i over serial.

    * man/powerman.conf.5: document the three forms of device specification.

    * : tag powerman-1-0-17

2003-08-04 Jim Garlick <garlick@llnl.gov>

    * src/client.c: clean up disconnect logic.

    * etc/ipmi.dev: got working with Intel SE7501WV1 motherboard.

    * etc/baytech-rpc3-nc.dev: minor tweak to get working again on ILX cluster.

    * powerman.spec: don't start/stop daemon on install per Trent's request.

2003-08-03 Jim Garlick <garlick@llnl.gov>

    * src/device*.c: move all retry logic to device.c and enforce backoff on
    all reconnects whether they be due to inability to establish a connection
    or a script timeout.  The only thing that resets the reconnect backoff
    count is a client request.

2003-08-02 Jim Garlick <garlick@llnl.gov>

    * src/device.c: print useful error message in process_setplugname if
    node does not exist.

    * src/client.c: pm --device output now lists nodes only if they
    have been mapped to plug names.

    * src/client.c: sort the list of nodes returned by pm --list.

    * src/device.c: emit warning if node does not have plug name assigned
    after login script completes (successfully or with timeout).

    * src/device.h: increase max buffer size from 8K to 64K as we were seeing
    the occasional ENOSPC error.

2003-08-01 Jim Garlick <garlick@llnl.gov>

    * src/device.h: decrease max buffer size from 1M to 8K.

    * src/client.c: sort the list of nodes returned by pm --device

2003-07-29 Jim Garlick <garlick@llnl.gov>

    * etc/phantom-llnl.dev,etc/phantom.dev: reduced timeout 20s->5s.

    * Makefile: distribute phantom-llnl.dev.

2003-07-23 Jim Garlick <garlick@llnl.gov>

    * etc/ibmrsa.dev: Tweaked for new firmware release.

    * etc/ibmrsa-smc.dev: New.  Config for RSA connected to main board via
    system management connector.

    * etc/baytech-rpc3-nc.dev: Make it look more like the rpc28 config.

2003-07-21 Jim Garlick <garlick@llnl.gov>

    * : minor code cleanup

2003-07-16 Jim Garlick <garlick@llnl.gov>

    * etc/ipmi.dev: New.

2003-07-15 Jim Garlick <garlick@llnl.gov>

    * etc/baytech-rpc28-nc.dev, etc/baytech-rpc3-nc.dev: minor fine tuning
    based on IGS cluster experience with rpc28's.

    * src/device_pipe.[ch], src/pty.[ch]: New.

    * src/parse.y: Support for "pipe device".

    * etc/phantom-llnl.dev: New - phantom firmware with llnl mods.

2003-07-09 Jim Garlick <garlick@llnl.gov>

    * etc/baytech-rpc28-nc.dev, etc/baytech-rpc3-nc.dev, etc/baytech.dev:
    Make prompt recognition less restrictive.

2003-07-01 Jim Garlick <garlick@llnl.gov>

    * etc/phantom.dev: Reflect changes in 3.0.4b firmware.

2003-06-23 Jim Garlick <garlick@llnl.gov>

    * etc/baytech-rpc3-nc.dev: New for ilx RPC3 "NC" model with new/different 
    firmware than expected in baytech.dev.

    * etc/baytech-rpc28-nc.dev: Renamed from baytech-rpc28.dev to reflect
    that this is the same "NC" firmware as above (but with 28 ports).

    * README, Makefile, powerman.spec: Cleanup.

2003-06-06 Jim Garlick <garlick@llnl.gov>

    * etc/README: New doc for specification syntax.

    * etc/parse.lex, etc/parse.y: Removed some unused tokens.

2003-06-04 Jim Garlick <garlick@llnl.gov>

    * etc/apcnew.dev: New device type for newer firmware APC masterswitches.

2003-05-20 Jim Garlick <garlick@llnl.gov>

    * etc/baytech-rpc28.dev: New

2003-05-06 Jim Garlick <garlick@llnl.gov>

    * src/{device*,parse.y}: abstract tcp- or serial-specific data in
    device_serial.c and device_tcp.c.

2003-05-05 Jim Garlick <garlick@llnl.gov>

    * src/{device.[ch],device_tcp.c,device_serial.c}: renamed 
    dev->connect_status to dev->connect_state and fixed a couple of places 
    where it was being treated as a bitmask instead of an enum.

    * src/device.[ch]: replaced dev->script_status with dev->logged_in flag
    and ExecCtx 'processing' flag.

    * src/device*: replaced conditional calls to tcp/serial connect/disconnect
    functions with function pointers.  Moved device_telnet.c into device_tcp.c.

    * src/parse.y: cleaned up host/flags parsing.

    * src/powermand.c: ignore SIGPIPE.
    
2003-05-01 Jim Garlick <garlick@llnl.gov>

    * src/parse.y: destroyStmt was trying to destroy NULL setplugstate.interps
    list.

    * src/*: Eliminate device types.  Deduce whether TCP or serial from
    presence of leading '/' in hostname.  Change powerman.conf syntax to
    want hostname:port in the hostname field, reserving last position for
    flags (future use).  Enable telnet option processing always.

    * etc/powerman.conf.vicebox: Removed.

    * etc/powerman.conf.vpc : Removed.

2003-05-01 Jim Garlick <garlick@llnl.gov>
   
    * etc/phantom.dev: got working with the actual hardware (all but temp)

2003-04-23 Jim Garlick <garlick@llnl.gov>

    * src/*: rename "setstatus" to "setplugstate".

    * etc/ibmrsa.dev: fix reversed regex parameters to setplugname command.

2003-04-21 Jim Garlick <garlick@llnl.gov>

    * src/{parse.y,parse.lex,device.c}: Add "ifon" and "ifoff" conditionals.

    * src/wrappers.c: workaround for RH9 getaddrinfo core dumps.

    * Makefile,powerman.spec: install phantom.dev.

    * test/vpcd.c,etc/vpc.dev: add toggle command to test ifoff/ifon 
    functionality.

    * etc/phantom.dev: fix ifoff syntax and add cycle script.

2003-04-18 Jim Garlick <garlick@llnl.gov>

    * src/{parse.y,parse.lex,device.c}: Get rid of "onstring" and "offstring" 
    and add optional on="regex" off="regex" parameters to setstatus stmt.

    * etc/phantom.dev: Beginnings of phantom device support.

2003-04-17 Jim Garlick <garlick@llnl.gov>

    * src/{parse.y,parse.lex,device.c}: Implement "foreachnode" and 
    "foreachplug" constructs which will execute an inner block of statements 
    N times, where N is the number of configured nodes on this device, or 
    the number of plugs respectively.  In the inner block, "%s" will iterate 
    through the list of plugs (or plugs corresponding to configured nodes).

2003-04-16 Jim Garlick <garlick@llnl.gov>

    * src/parse.y:  Remove ordering dependency of device config directives.  
    Specify device name in front of spec open brace instead of "name" line.  
    Plug names are now handled as single directive with a list of strings 
    rather than individual plug name directives.  Make device types known to 
    the scanner and remove quotes around them.  Move all "spec" handling to 
    parse.y.  Do away with maxplugcount directive.

2003-04-15 Jim Garlick <garlick@llnl.gov>

    * src/parse.y: Cleanup to prepare for nested blocks of script code.

    * src/{parse.y,parse.lex,device.c}: Add 'foreachplug' and 'foreachnode' 
    script constructs to allow repeated execution of a subblock of statements.
    The number of iterations is the number of plugs configured or the number 
    of nodes. (not yet tested)

2003-04-14 Jim Garlick <garlick@llnl.gov>

    * src/parse.lex: Renamed "plugcount" to "maxplugcount" in device conf.
    Renamed "map" to "setstatus".

    * src/{device.h,device.c}: Moved regex subexpression match buffer to the 
    device structure.  There will be a persistant copy per device so $N can 
    reference the most recent expect results from a seperate statement.

    * src/{device.c,parse.lex,parse.y}: Make "setstatus" its own statement and 
    change to work as follows - "setstatus [plugname] status", where status is 
    a regex match, and name can be a regex match or a literal plug name in 
    quotes.  If omitted, the plug name defaults to the current target.

    * src/{device.c,parse.lex,parse.y}: Add "setplugname" statement, 
    "setplugname nodename plugname", where both args are regex matches.  
    Rework plug/node logic so plug names must either be defined in 
    powerman.conf so that they match the plug names in the device config, 
    or they are omitted along with the device config plug names.  In the 
    latter case, the plug names must come from a setplugname statement in a 
    device script.

2003-04-13 Jim Garlick <garlick@llnl.gov>

    * README: began update for 1.0.17 release.

2003-04-12 Jim Garlick <garlick@llnl.gov>

    * src/{device.c,parse.y}: If no plugs defined in device config, allow 
    the plug names to come from the node config lines.

    * src/{device_telnet.c,device.c}, etc/*: Implement TELNET_DEV and remove 
    all the telnet escapes from device configurations.

    * src/{device.c,device_tcp.c,device_serial.c}: Split tcp, serial, and 
    telnet device types off to seperate files.

2003-04-10 Jim Garlick <garlick@llnl.gov>

    * etc/ibmasm.dev: renamed to ibmrsa.dev and implemented first cut on RSA 
    telnet protocol.

2003-03-31 Jim Garlick <garlick@llnl.gov>

    * etc/*: Adjust power cycle for all devices to wait at least 2 sec between 
    off/on.  Was 0.7sec on icebox and this seemed to cause initialization 
    problems with SuperMicro P4DPR motherboards running LinuxBIOS.

2002-01-20 Jim Garlick <garlick@llnl.gov>

    * src/device.c: Make serial connections non-blocking.

    * ChangeLog: begin using more accepted format.

2002-01-20 garlick  
    * Back out beacon change that requires B70 of ice box v3 firmware.
      Now we will work with all versions.
    * Check aliases for bogus nodes
    * Tagged powerman-1-0-16

2002-01-19 garlick
    * Add alias capability in powerman.conf.

2002-01-17 garlick
    * Map plug names to node names on the fly at each subexpression
      interpretation instead of caching mappings in the Interp struct.
    * Major Changes to device specifications (old style no longer supported)
      - "all string" deprecated (use _ALL script variant)
      - various strings shortened
      - begin/end changed to C-style braces
      - query scripts are now named with _all suffixes ("all" semantics were
        previously assumed).
      - new, single-plug (non "all") query scripts added
      - second argument of 'map' can be "%s" to support single-plug query
    * Minor changes to config file (old style causes warnings but still parsed)
      - "tcpwrappers" takes an on|off argument
      - "client listener port" shortened to "port"
      - "begin_nodes", "end_nodes", "begin global", "end_global" statements
        deprecated
    * Support wti-rps10.
    * Added support for setting serial parameters, e.g. "9600,8n1"

2002-01-16 garlick
    * Add SERIAL_DEV device type
    * Begin support for wti-rps10 device (serial)

2002-01-13 garlick
    * Update icebox3 beacon script for B70 of the ice box firmware.

2002-12-30 garlick
    * More refinement of device error handling.
    * Strip out unused DBG_* flags and redundant DBG_SCRIPT printfs.

2002-12-27 garlick
    * Clean up passing of errors to client action completion callback.
    * Make all informational message names CP_INFO_*.  Delete some unused
      protocol responses.
    * Disable calling of err() function in hostlist.c.

2002-12-26 garlick
    * Beginnings of redundant power supply support.
    * Increase CP_LINEMAX to accomodate longer lines returned by --telemetry
    * Return powerman version in banner string and warn if version mismatch
      between server and client.
    * Add --exprange option to select one-line-per-node query responses
    * Added README

2002-12-25 garlick
    * Baytech cycle script based on 'reboot' is a no-op if plug is off.  
      Do an explicit off then on instead.  Reduce timeout from 20 to 10s.

2002-12-24 garlick
    * Fix POWERMAN_VERSION string to include %{release} when building
      with make rpm tag=HEAD.
    * Added --telemetry option for device telemetry

2002-12-23 garlick
    * Added -D,--device [targets] command for getting status of RPC
      controlling [targets]. 
    * Suppress 'Query complete' message in client.
    * Sort hostlists before returning to client.

2002-12-22 garlick
    * Updated list.[ch] and cbuf.[ch] to latest lsd-tools versions.

2002-12-20 garlick
    * Added powerman/powermand --version option.

2002-11-21 garlick
    * Fixed etc/icebox3.dev to handle flashing multiple beacons.

2002-11-12 garlick
    * Added etc/apc.dev for APC MasterSwitch

2002-11-09 garlick
    * Updated list.[ch], hostlist.[ch], and cbuf.[ch] from lsd-tools.
    * Renamed config.[ch] to parse_util.[ch] and created config.h.
    * Tagged powerman-1-0-15

2002-11-04 garlick
    * Switched over to Chris Dunlap's circular buffer module.
    * Update list.[ch] and cbuf.[ch] from lsd-tools.

2002-10-28 garlick
    * Minor cosmetic cleanup of data structures

2002-10-27 garlick
    * Added client options -d host[:port] (use alt server/port), 
      -L (display license).  
    * Cleaned up server options.
    * Updated man pages.
    * Tagged powerman-1-0-14

2002-10-26 garlick
    * Fix bug where inappropriate match ($N) values caused a runtime assert.
    * Attempting to initiate a command to a device now short circuits
      exponential reconnect backoff.
    * Implemented --beacon, --flash, --unflash, --temp, and --node in client.
    * Fix bug where actions never make it to the head of the device queue
      to time out when the device is hung trying to login (e.g. 
      vpcd --hung_rpc).  Now all actions queued up behind a timing out action
      on a device are also timed out.

2002-10-24 garlick
    * Changed magic vim comment at bottom of each file for tab expansion.
    * Tagged before-2nd-indent
    * Ran indent --no-tabs -kr *.[ch] on everything in src except 
      hostlist.[ch] and list.[ch] 
    * Tagged after-2nd-indent
    * Removed /etc/powerman/powerman.conf from RPM so powermand won't start
      unless it has been properly configured.

2002-10-22 garlick
    * Fixed bug where buf_readline() would occasionally assert on the 
      size of destination buffer on client read (gnat powerman/123)

2002-10-21 garlick
    * Added "devices" query to get mapping of devices to nodes and
      per-device statistics (reconnects, successful actions).
    * Renamed "TCP wrappers" to "tcpwrappers", added to etc/powerman.conf.
    * Fixed bug where tcp wrappers denial would kill powermand.
    * Tagged powerman-1-0-13

2002-10-21 grondo
    * hostlist.c : fixed bug where test matches testN

2002-10-20 garlick
    * Added temperature support for icebox.dev.
    * Added temperature and beacon support for icebox3.dev.

2002-10-19 garlick
    * Fixded bug in _update_timeout where usecs were not checked for zero
      when testing if timer is set.
    * Tagged powerman-1-0-12

2002-10-18 garlick
    * Added several new script types and factored code for building scripts
      in parse.y (now there is one function - makeScriptSec()).
    * Implemented "ping period N" directive in device scripts which
      enables PING_SCRIPT to run every N seconds.  This works around
      broken TCP implementations in RPC's (such as Baytech's) which don't
      send a FIN when they tear down a connection (which would unblock
      powerman's select call and cause a reconnect).  Configured
      90 second ping period for Baytech.
    * Changed logic for "all" plug processing.  If _ALL version of
      script is defined, use that.  If all string "*" is defined, use
      that.  If neither is defined, use one command per plug.

2002-10-16 garlick
    * Make Action struct private to device.c
    * Move script names to config.h.
    * Merged _match_regex into _match_subexpression.  Removed intermediate
      regex match data from Interpretation struct (now temporary in 
      _match_subexpression).
    * Fixed bug where query for N-1 plugs on an N-plug device resulted
      in N-1 separate queries, each acquiring state for the whole device.
    * Fixed bug where read returned EOF occasionally.  This was a read
      attempt on a zero length buffer.  It turns out the read buffer was
      huge and never was compacted.  Reduced buffer size from 64K to 8K.
    * Tagged powerman-1-0-11.

 2002-10-14 garlick
    * Remove RESET_SCRIPT definitions in wti and baytech device files.
    * Got rid of Cluster and Node data structures.
    * Plug state is no longer global - seperate copy for each client cmd.
    * Fixed memory leaks in _create_client/_destroy_client.
    * Trimmed TODO file.
    * Fixed bug where actions could not make progress torward timeout
      while device is in unconnected state.

2002-10-11 garlick
    * Fix bug in vpcd where empty line would look like EOF on socket.

2002-10-08 garlick
    * Fixed bug where Action "found" client by client struct address, but
      if client had died, address could still be valid.  Now we use a 
      unique integer identifier to find client.
    * Made device read/write error handling a little cleaner.
    * Don't set plug state to unknown before querying status to avoid
      triggering race described in FIXME comment in client.c _parse_input()
    * Tagged powerman-1-0-10.

2002-10-06 garlick
    * More man page edits.

2002-10-06 garlick
    * Updated hostlist.[ch] to latest from the pdsh sources.
    * Tagged powerman-1-0-9.

2002-10-06 garlick
    * _process_send can now time out.
    * Clean up device.c select handling a bit to make it clear why actions
      will not time out if device is not connected. 
    * _handle_write now handles errors from buf_write.
    * Client now returns error on unimplemented commands.
    * Changed powerman "-z --report" option to "-q --query"
    * Added soft power status support to vpc, fixed login logic in vpc,
      Added --soft-off test.
    * Don't clear wset bit after finish_connect unless fd != -1.
    * Tagged powerman-1-0-8.

2002-10-05 garlick
    * More man page updates
    * Updated TODO, moved README to doc/Overview.txt, removed Retagging.
    * Removed various outdated scripts in scripts subdir.
    * Added --off_rpc and --hung_rpc options to vpcd for testing.
    * Updated timeouts from 0.3 to 0.5 in icebox3.dev (determined to be
      safe on MCR).

2002-10-04 garlick
    * Client now performs on and off command if executable is 
      linked to "on" and "off".  Install links "on", "off", and "pm"
      in spec file.
    * Set all plug/node state to ST_UNKNOWN prior to status query command.
    * Updated client man page.

2002-10-04 garlick
    * Now properly handles the case of one ice box hanging.
      (tested with vpcd --bad_response)
    * Don't call action callback from within dev_enqueue_actions
      (triggers act->cmd != NULL assertion in _act_finish).
      Error handling was inappropriate anyway - try silently ignoring
      unimplemented commands, and queuing actions for un-logged-in devices.
    * Client works again (though still minimal)
    * Tagged powerman-1-0-7.

2002-10-02 garlick
    * Created Command data structure to represent what was called
      a "server action" and moved device action functions to device.c 
      and got rid of action.[ch]
    * Device actions now execute a callback to the client code rather
      than call exported functions.
    * Made the status command's hostlist argument optional.

2002-10-02 behlendo
    * Fixed memory leak in config parsing.  Memory was being malloc'ed
      for each line in the config file as it was parsed; pointers to this
      memory were not preserved and the memory was never free'd.  These
      pointers are now tracked and free'd after scanning completes.

2002-10-02 garlick
    * Changed protocol so query-status is now status and requires an
      argument, and query-nodes is now nodes.
    * No more server action queue.
    * Device actions notify client when they complete.  A count of 
      outstanding actions in the client structure is decremented as 
      each completes and when zero, returns success or failure depending
      on wether any of the actions failed.
    * Device actions now have an error flag.  If set, when the action
      completes, an error flag is set in the client.
    * More than one client may initiate actions in parallel across the
      cluster.  This works as each device has a queue.

2002-09-30 garlick
    * Added debug.[ch] and changed --telemetry to --debug mask
    * Fixed bug where _reconnect did not update the file descriptor
      in the underlying buffer.

2002-09-29 garlick
    * Tagged powerman-1-0-6.

2002-09-25 garlick
    * Reimplement _process_delay() so it uses the select loop to time out.
    * Incomplete work on _process_expect() so it uses the select loop
      to time out.
    * Added separate ice box v3 config - i think the timeouts/delays
      are going to be subtly different but worth caring about at MCR scale.

2002-09-25 garlick
    * Removed inter-dev delay (behlendo)
    * Removed timeout interval and update interval.
    * Disabled automatic status queries.
    * Tagged powerman-1-0-5.

2002-09-23 garlick
    * Create per-device reconnect state (count and time stamp)
    * Removed seperate soft power monitoring device from Plug.
    * Remove periodic status query.
    * Implement a sane reconnect algorithm.
    * Handle 'quit' command immediately (don't queue it).

2002-09-22 garlick
    * Improve handling of numeric values in config files.  They are no 
      longer specified in quotes.  Floats are parsed by strtod; integers
      are parsed by strtol.
    * Regex match positions in "map" lines are now specified as $N
      rathern than "N".
    * Changed "size" to "plug count" in device configuration.
    * Defined fatal out_of_memory function in powermand.c for list.[ch].
    * Removed PM_CHECK_LOGIN script.
    * Renamed script names in config files (e.g. PM_LOG_IN -> LOGIN_SCRIPT).
    * Removed PM_NAMES and PM_ERROR action types.

2002-09-21 garlick
    * Got rid of unimplemented device types (SNMP, TTY, TELNET) and PMD 
      device type.  Deleted 'string interpretation mode' and associated 
      code/data structures used for PMD device type.
    * Fixed lexer/parser to report correct file and line number when
      errors occur (works with include files).  Reworded many parsing 
      error messages.

2002-09-20 garlick
    * Moved vicebox stuff to test subdir and got rid of redundant
      exit_error.c and wrappers.c.  Added virtual power controller vpcd.c.
    * Brian updated the TODO file.
    * Cleanup of functions in client.c, util.c.
    * Tagged powerman-1-0-4.

2002-09-18 garlick
    * Client protocol now in client_proto.h
    * Numbered response codes
    * Cleanup of control flow in client.c
    * Bad nodes in on/off/reset.. etc cause the whole command to abort
    * query-status command response is three hostlists rather than bitmap
    * soft power status deprecated in protocl (consider generating 
      warnings when nodes are accessed which have soft != hard) 

2002-09-18 behlendorf
    * Added some basic memory accounting functionality
    * Fixed several memory leaks
    * Removed string.[ch] and replaced all String structures and functions
      with equivilant char * replacements.  
    * Parsed hostlists now stored in the action structure and free'd
      when the action is completed.
    * Badly formated hostlists no longer crash the daemon.
    * Fixed segfault related to quit command, client connections are
      now properly cleaned up on the daemon side.

2002-09-18 behlendorf
    * Fixed coalescing of actions to the devices.

2002-09-17 behlendorf
    * Reworked the powerman client/server protocol (highlights follow)
    * Removed send/expect parsing, replaced with a simple switch.
    * Host lists have replaced regexs in the protocol.
    * Powerman authentication step removed.
    * Check login command removed.

2002-09-17 garlick
    * Reformatting, cleanup, doc of data structures
    * Made device list static in device.c
    * Use static array allocation for scripts[]

2002-09-17 garlick
    * Fix bug introduced in cleanup where actions were initiated but
      not completed.  Select loop should only set status to STAT_OCCUPIED
      if action was one requiring completion.
    * Tagged powerman-1-0-3.

2002-09-16 garlick
    * Got rid of remnants of second "completion" expect script 
    * Got rid of cheat->g global structure.
    * Reduced interdependencies between modules.
    * Tagged powerman-1-0-2.

2002-09-14 garlick
    * Renamed functions to use lower case module prefix.
    * Renamed client.[ch] -> server.[ch].
    * Renamed pm_string.[ch] -> string.[ch]
    * Renamed exit_error.[ch] -> error.[ch]
    * Indented inline comments.
    * Made some globals local to powermand.c

2002-09-13 garlick
    * Ran indent -kr *.[ch] on everything in src except hostlist.[ch], list.[ch]
    * Tagged src with after-indent.
    * Got rid of NDUMP code (deprecated debugging stuff).
    * Added "vi:softtabstop=4" to *.c

2002-09-12 garlick
    * Brian documented some problems in the top of TODO.
    * Chris cleaned up some type casting.
    * Chris fixed icebox.dev to add delay after cmds to prevent 
      icebox "ERROR 5" (resource is busy).  This was causing "bulk" 
        commands to fail on MCR
    * Tagged powerman-1-0-1.

2002-09-06 dun
    * Fixed bug where downed network device would cause select to spin.

2002-08-16 auselton
    * Chris tells me he updated the date format in the "make rpm"
      target stuff.
    * icebox.dev's script for PM_UPDATE_NODES now allows for a node
      status of "2" (== "unavailable") in its expect.  This is in 
      keeping with the change to the protocol in V3.0 of the icebox
      firmware.
    * device.c (do_target_some) had a bug similar to that addressed 
      by Gregg Hommes above.  If a plug does not have a node plugged
      into it then a) it should be skipped when trying to determine
      the targets for a device, and b) that is a sufficient condition 
      for not using the "all" target on the device.

2002-08-14 garlick
    * Split baytech.dev into baytechF500.dev and baytechF501.dev.
       Our test baytech has the f/w rev F 5.00, and pengra baytechs have
      rev F 5.01.  The latter prompts (Y/N)> after every power action.
    * Put back baytech.dev, documenting that prompting is configurable.

2002-08-10 hommes
    * Modify do_PMD_semantics() in device.c to set plug->node->p_state
      and plug->node->n_state only if the plug is associated with node.
      (previous behavior was assertion failure)
    * Modify loops in do_Device_semantics() in device.c to skip iteration
      if variable interp->node is NULL. (previous behavior was assertion
      failure)
    * Fix dump_Plug() function in device.c to print node name only if
      variable plug->node is not NULL.
    * The match_Regex() function in device.c had duplicate tests for
      "pmatch[0].rm_so == -1". Changed second one to "pmatch[0].rm_se == -1"
    * Removed local variable <dev_com> which was set but never used in
      do_Action() in action.c.  

2002-08-09 garlick
    * Sort hostlists before display in powerman.c
    * Comment out baytech password expect/send in baytech.dev.
      Pengra doesn't use passwords.

2002-08-08 garlick
    * Make some char *'s into unsigned char *'s that are carrying
      non-printable values such as \376 (baytech telnet handshake).
    * Redo telemetry logging to support callback at the Buffer level.
    * Fixed a memory leak where buffers were reallocated on a device
      reconnect but old ones weren't freed.
    * Telemetry logging on server now shows when expect or delay
      commands are being processed.
    * Updated baytech and icebox configs to use 10 sec timeout.
      Baytech at least seems to require > 2sec to respond sometimes.
      Fixed a thinko I introduced to the config file earlier.
    * Instead of stripping NULL's out of buffers when creating strings,
      convert them to \377.
    * Fix get_String_from_Buffer() to only consume buffer up to and
      including regex match - not whole buffer (Gregg H.)
    * Server telemetry now shows the buffer contents when reporting
      no match.

2002-08-07 garlick
    * Did away with Log - just use syslog.  Removed log from configuration 
      syntax.
    * Added delay back into default powerman.conf.
    * Added "\nnn" (octal byte) support to config file for expect/send 
      sequences.

2002-08-06 garlick
    * Added --telemetry option to server.

2002-08-05 garlick
    * Moved string stuff out of buffer.c into util.c and refactored.
    * Found problem with short reads, process_script() would delete
      actions if they didn't match the partial buffer.
    * Config file cleanup (removed second expect "completion" regex,
      cluster name).
    * Took vicebox.dev out of spec file install.
    * Made a general helper function for wrapped regcomp special
      character expansion.

2002-08-02 garlick
    * A bit more cleanup in pm_string.c.
    * ON, OFF changed to ST_ON, ST_OFF
    * Transferred all remaining inline review comments.
    * Reworked log.c.
    * Fixed all [v]snprintf's to check for both result == -1 
        (glibc <= 2.0.6) and result > len (glibc >= 2.1, C99 standard).

2002-08-01 garlick
    * Do not use ${srcbin} for products.  Clean up other Makefile targets.
    * Added --telemetry to client to allow us to watch protocol happen.
    * Change client to not request list of nodes from daemon unless
      requesting status.
    * Convert completely over to hostlist.c routines in client.
    * Remove --soft option and always warn if plug=on and node=off.
    * Removed duplicate hostlist handling from pm_string.c.
    * Added powerman init script

2002-07-29 dun
    * Fixed parms to gethostbyaddr().

2002-07-29 garlick
    * Make --queryon, --queryoff work with or without targets on cmd line.

2002-07-28 garlick
    * Fixed bug where log fd was always being checked for writeability
      in main select loop, chewing 100% of a CPU.
    * Commenting out the "log file" config line now disables logging.
    * Made wrapper Malloc/Free more robust (embed size/magic cookie in
      each buffer allocated).  Size is no longer a parameter to Free.

2002-07-27 garlick
    * Renamed main.[ch] to powermand.[ch]; renamed client.c to powerman.c.
    * Moved set_tv() from powermand.c to config.c.
    * Moved overdue() from powermand.c to device.c.
    * Moved read_Config_file() from config.c to powermand.c and exported
      init_Client_protocol() from config.c.
    * Created get_String_from_Buffer() buffer in util.[ch] to eliminate
      dependence of buffer.h pm_string.h.
    * Fixed Delay to account for select EINTR.
    * Created gettimeofday wrapper.
    * Fixed Read/Write to retry on EINTR and handle other errors gracefully
    * Have Free() wrapper clear memory to zero magic cookies, etc..
    * Made Buffer an opaque type with magic cookie.
    * Made String an opaque type with magic cookie.
    * Give appropriate errors when powermand config file is not set or 
      set improperly, and start with a default config file.
    * Powermand options changed per code review.
    * Moved system includes out of powerman.h.
    * Merged general code review suggestions in to TODO file
      (but not the specific yet)
    * Added support for quadrics style host ranges in powerman client.
    * Move powermand from bin to sbin.
    * Use standard assert instead of powerman.h one so we get killed
      with a SIGABORT and get debugger stack traces.
    * Added some list_iterator_destroy's to match list_iterator_create's
      in powerman.c
    * Pid file stuff moved to pidlock.c and disabled for the moment.

2002-07-26 garlick
    * Reformatted ChangeLog
    * Added 'make depend' target to address missing dependencies.
      Added .c.o production and removed some redundant targets.
      Modified powerman, powermand targets to match products to address
      extraneous relinks (src/Makefile).
    * Moved check for root to after process_command_line() so root 
      privilege is not required to get --help (src/client.c)
    * Moved Report_Memory() to wrappers.c and made allocated_memory static
      (src/exit_error.c)
    * Added init_error()  and exit_msg() functions to exit_error.
      The exit_error() function now uses strerror() and does not close
      file descriptors, flush stderr, or close log before exit.  Added 
      syslog_on_error() accessor function for syslog_on (src/exit_error.c)
    * Client now uses exit_error.c (src/client.c)
    * Rename some client options per code review.  Reduced verbosity
      of usage() output. (src/client.c)
    * Config->com is now an enum and command format strings are 
      individually #defined and end in _FMT (src/client.c)
    * Made all functions in client static and discovered duplicate 
      functions defined in config.[ch].  Prepended 'x' to client versions
      for now (factor later) (src/client.h)
    * Added accessor functions and made 'log' private to log module 
      (src/log.[ch])
    * Made clean target clean up after default target, remove no-op cd
         commands, employ make -C where appropriate, do not build vicebox 
      by default (Makefile)
    * Fixed compilation errors if NDUMP is not defined; added exit callback
      to init_error() (null in client, set in server if NDUMP defined).
    * Updated powerman.1 to match option changes.
    * bzero->memset
    * Took local includes out of powerman.h (still need to do sys includes)

2002-07-25 uselton
    * With the release of version 1.0.0 the code has been
      entirely rewritten.  ChangeLog truncated.
    * Tagged powerman-1-0-0.

#  vi:tabstop=4 shiftwidth=4 expandtab
