Changelog for vnumlparser 1.6.4-1 (18/04/2006)
----------------------------------------------

Changes since 1.6.3-1:

  + Changes in docs:
    - User Manual: new method for installing software (chroot), thanks to Vicent Cridlig
    - Tutorial: added a "Configuring NAT" section (contribution by Carlos Santmartn)
  + a random string is appended to files generated to -x, in order to avoid
    collision among several users (fix bug #1444746)
  + fixes in vnet_ifs function
  + gw attribute in <physicalif> is now truly #IMPLIED (DTD in pass versions
    uses #IMPLIED, but CheckSemantics doesn's allow empty gw). The behaviour
    now is: if gw is provided, it is used for configuring the default gateway,
    if not, no default gateway is used (as side effect, this allow to use
    several <physicalif> without conflicting gw).

Changes since 1.6.2-1

  + replaced fuser with lsof because fuser is not working
  + appended standard binary paths to PATH at parser start
  + added a few minor checks to avoid errors when shutting down (related to kill and lsof)
  + fixed the following minor bug: if "Retry" was used after unsuccessful UML boot 
    attempt, then additional '#' was appended to $curr_uml. Then when trying to 
    kill that UML, it was not found (because there were more '#' symbols after the 
    name).

Changes since 1.6.1-1:

  + two networks can not use the same external physical interface (sufixed
    by the vlan number, in the case it would be used): now this is 
    explitely checked (thanks to Tim Keupen, who discovered the issue)
    See details at: https://lists.dit.upm.es/pipermail/vnuml-users/2005-October/000218.html
  + xterm= UML kernel switch modification in order to allow change the
    name in the xterm window ('gnome-terminal,-t node1,-x', for example)
  + '-o /dev/stdout' included as possiblity for -o switch. Now '-o /dev/stdout'
    is the default (previous version uses '-o /dev/null' as default)
  + Bugfix: program aborts when <vm_mgmt> was omitted, due to undefined variable 
    $vmmgmt_hostmap_list (CheckSemantics.pm). Now the variable is checked with defined()
  + Required modules list in install/index.html has been rewritten, based in
    the output of the ./configure script
  + Included entry in the intall/index.html throubleshooting section,
    recommending log out and log in again to avoid user permission problems
    (inspired in https://lists.dit.upm.es/pipermail/vnuml-devel/2005-July/000227.html)
  + Modified the xauth command to use -s rather than -p
  + Only check for xauth executable if xterm is used
  + Added aditional checkings:
    - The ~/.vnuml directory is checked to make sure it is readable
	- The "direct" type filesystem is checked for write privileges (should
      eliminate the need for the warning in the doc--the user will be informed
      by vnumlparser.pl if the privileges are not correct)
    - When permissions errors are found in check_doc, it displays the
      effective uid username, so the user knows what user the vnumlparser.pl
      is talking about.
    - Added more detail about some errors.  The error will not only display
      the name of the file/directory/etc. that has a permission problem, but
      where it can be found in the XML description file (e.g., ssh_key).
    - The xterm binaries ('xterm' itself or other, if <xterm> tag is being used)
      are checked before starting password operation (thanks to the add_additional_xterm_binaries
      and check_binaries_xterm new methods in the BinariesData class), when used
  + Fixed some bugs in checking permissions on vnuml_dir and tmp_dir
  + Documentation:
    - clarification note in Tutorial 3.1 section, regarding user bauer should start
      a new shell after a group membership change
    - some comments added to Reference 4.4.2, regarding new functionality for
      xterm titles.

Changes since 1.6.0-1:

  + Fixed some issues in debug mode. Commands that should not be executed 
    in this mode were being executed. This has been fixed.
  + Added comment to section 4.1 in order to clarify a permission issue
    on the filesystem file when <filesystem type="direct"> is used 
    (clossing BUG #1283075)

Changes since 1.5.0-1:

- Enhanced non-root features, including privilege separation changes. New -u command line switch:
  + If the effective uid is not root, then nothing is changed from old behavior
  + If the effective uid is root, then the user for UML and uml_switch processes will be vnuml,
    if default configuration is used.  Otherwise the default can be changed using the 
    --with-vnuml_user option to configure.  Also, the -u option can be used on the command 
    line to specify a user.
  + As part of the check_doc subroutine, temporarily changed the effective uid ($>) to the 
    effective uid that was established in the previous step to make sure that the respective 
    user has sufficient access when it runs the uml_switch and linux process.
  + The ~root/.vnuml/ directory and all files and directories below it are owned by the 
    non-privileged user that owns the processes.
- Virtual machine management re-designed. The <vm_mgmt> tag has been introduced to specify
  the management mode through the "type" atrribute: private (former procedure: using virtual
  bridged point-to-point UML-host networks, for root user only), net or none. The net type
  uses a uml_switched network, specified throught hte <mgmt_net> tag. The <ip_offset> tag
  has been removed: now the address range for management is specified using the "network",
  "mask" and "offset" attributes in <vm_mgmt>. The <host_mapping> tag, formerly global, is
  now child of <vm_mgmt>. See User Manual and Reference documents for details.    
- Booting stability has been improved using UML sequential booting. UMLs are booted in sequence,
  checking the starting of INIT process in each virtual machine before continuing with next 
  one. The semantics for -w switch has been changed: now it specifies a booting timeout 
  (default is 30 seconds). If the timeout is reached, the user is prompted in order to abort, 
  continue or retry.
- Working directory re-designed (now ~/.vnuml is used in a per-user basic). Please, see
  User Manual document for a detailed description.  
- Signal handling. The parser tries to clean up before exiting when it receives a termination 
  signal (INT and TERM)
- Changes in -d mode (not forced): instead of using SSH to halt machines, now a CAD 
  (control-alt-delete) signal is sent through uml_mconsole. The /etc/inittab of each virtual 
  machine is changed accordly to get this behaviour at pre-boot time.
- UML pids storing. This pid list is used to wait virtual machine extinction during -d modde 
  and/or to kill the UML properly in -P mode (solving BUG #1103806)  
- Installer improvements:
  + New configure options:
     --with-tun_group
     --with-vnuml_group
     --with-vnuml_user
  + Changed default values in configure options
     --with-libxml=yes -> 'no'
     --with-expat=yes  -> 'no'
     --with-linux -> '2_6_2_12'
     --with-rootfs -> '0_3_2'
     --with-build_modules -> 'no'
  + Added root_fs_tutorial-0.3.2 and linux-2.6.12.2-1m to getlib.conf  
- Added initrd support. New "initrd" attribute in the <kernel> and <default_kernel> tags 
  will go on the UML command line for a particular UML kernel (RFE #1249031).
- User management in virtual machines through <user> tag (RFE #1205606)
- Multiple <ssh_key> are allowed, globaly for root and in a per-user basic (RFE #1205606)
- New global tag <ssh_version> (replaces "version" attribute in <ssh_key>)
- Added a check and timeout to make sure that the uml_switch processes start correctly.  If any 
  switch does not start correctly with the timeout (currently 5 seconds) then vnumlparser.pl 
  cleans up and exits. This saves some troubleshooting down the road if a network mysteriously 
  doesn't work.
- Enhancements in daemonization procedure
- Use fuser to find pids of uml_switch processes for extinction, rather than
  using the ps/grep/awk combination.
- Using ISO images for auxiliar filesystem (opt_fs). Switch -m no longer supporter
- Using /mnt/vnuml for auxiliry filesystem mounting, instead of /opt (closer to FHS)
- Tilde (~) expansion allowed in XML and command line
- Relative paths allowed in command line for working and temp directories
- Bugfixes in install-doc Makefile target (BUG #1173956)
- Fixed hyphened command sequence bug (BUG #1168246)
- Improved Installation manual documentation (BUG #1173967)
- FAQ included in documentation
- Old 1.5.0 vnumlparser.pl code re-written: new design using OOP. Global variables, 
  to the minium (using a 'main' subroutine). The old code in vnumlparser.pl has 
  been restructured in several modules, as follows (new functions, added since 1.5.0, are
  not detailed here):
  + Arguments.pm: (class)   
  + BinariesData.pm (class):
    * check_binaries
  + CheckSemantics.pm:
    * check_semantics (as check_doc)   
  +`DataHandler.pm (class):
    * make_vm_hash (as get_vm_to_use)
    * make_vm_ordered (as get_vm_ordered)
    * netconfig  
  + DocumentChecks.pm:
    * vm_has_tag
    * mng_if_value
    * at_least_one_vm_without_mng_if
    * at_least_one_vm_with_mng_if   
  + Execution.pm (class):
    * execute
    * execute_linux
    * daemonize
    * pulse_a_key
    * smartdie
  + FileChecks.pm:
    * valid_absolute_directory_name   
  + IPChecks.pm:
    * valid_ipv4
    * valid_ipv4_with_mask
    * valid_mask
    * valid_ipv6
    * valid_ipv6_with_mask   
  + NetChecks.pm:
    * tundevice_needed
    * check_net_host_conn
  + TextManipulation.pm:
    * dec2bin
    * bin2dec
    * clean_line
    * text_tag
    * chompslash
    * remove_heading_slash

Changes since version 1.4.0-1:

 - changes in text_tag function in order to fix <ip_offset> bug (BUG #1164627)
 - mconsole checking before using uml_mconsole for halting purposes (BUG #1164630)
 - new attribute mode in <net> tag, with part of the meaning of the former
   type: (virtual_bridge|uml_switch). Attribute type remains for (lan|ppp) distintion
 - <exec> and -x mode implemented (RFE #1086996)
 - <net type="ppp"> implemented (RFE #1104742)
 - <bw> implemented (RFE #1104742)
 - <xterm> implemented (RFE #1096533)
 - new ./configure options: --with-linux-sv
 - getlib.conf bugfixes
 - old commented code cleanup
 - documentation errata correction
 - Code changes not affecting functionality:
       + New functions:
          get_net
          check_deprecated
          check_net_by_mode
       + Renamed functions:
          mode_sp -> mode_x (more appropiated name)
          check_net -> check_net_by_type (more appropiated name)          
       + Removed functions:
          check_net_sw (replaced with get_net)
          check_net_br (replaced with get_net)

Changes since version 1.3.2:

 - new packaging:
	+ we can now install vnuml with ./configure, make, make install
 	+ file installation layout now conforms to Linux Standard Base(LSB)1.3,
          and FHS 2.3 which LSB follows.
	+ both UML kernel and a filesystem image (Debian) can be now downloaded
	  and installed in right places during the installation process:
	  "--with-linux=2_4_22 --with-rootfs=0_1". To resize the filesystem to
	  2Gb during the installtion, we can use: --with-rootfs-size=2000.
 - <net type="uml_swith"> implementing uml_switch based virtual networks,
   that can be used in combination with the usual <net> bridge based
   networks. Attributes "external" and "vlan" need to be evaluated in
   <net_sw> context and, therefore, are not implemented in this version. 
   uml_switch socket are created in $vnuml_dir in order to allow corrurent 
   simulations with uml_switched networks
 - hostfs implemented (RFE #1024444)
 - <default_kernel> tag (RFE #1021714)
 - <default_filesystem> tag (RFE #1021714)
 - <basedir> implemented (RFE #1048877), $basedir global variable
 - Implemented virtual machine hostname patching in /etc/hosts (RFE #1021745)
 - tun_device checkings implemented (RFE #1021757)
 - added <physicalif> treatment for IPv6 network family (RFE #1021749)
 - prefix attribute in <ip_offset> implemented (RFE #1053412), $ip_offset_prefix 
   global variable
 - "order" atribute in <vm>, for *inteligent* ssh comunications
   (throught mng_if or throught a virtual interface, depending on
   <mng_if>)
 - uml_switch sockets use uses file counter (as for external
   phycical interface use)
 - file counters uses extension .cter
 - "version" attribute in <ssh_key> to specify SSH protocol version (1 or 2)
 - New pseudomode implemented: -H
 - <mng_if> tag, to disable management interface in virtual machines
 - Makefile.in adapted to patch vnumlparser.pl in SuSE installation: eth0
   -> ethX (thanks to Javier Bermejo)
 - Bug fixed #1060184
 - Bug fixed #1059751 (new function added: clean_line)
 - sleep(1s) before network bridge set up (due to fails in SuSE 8.2)
 - fixed <ipv6> processing bug (BUG #1048370)
 - hostname.x using /tmp as working directory (BUG #1025036)
 - Code changes not affecting functionality:
      + check_semantic is performed after global data capture
      + -f switch in several "rm" executions
      + removed obsolete comments (most related with old net_sw code)
      + change !eq -> ne in serveral logic condicionts
      + New functions:
         at_least_oner_vm_with_mng_if 
         check_user
         get_ip_hostname
         remove_heading_slash
         tundevice_needed
         vnet_exists_br
         vnet_exists_sw
      + Functions renamed:
         dec_if -> dec_cter
         inc_if -> inc_cter
         get_if -> get_cter
         tun_create -> configure_bridged_networks
         tun_create_switched -> configure_switched_networks
         valid_directoryname -> valid_absolute_directoryname
         valid_filename -> valid_absolute_filename
      + Functions removed:
         create_bridges (hold functionality in configure_bridge_networks)
         vnet_exists (splited in vnet_exists_br + vnet_exists_sw)
	
Changes since version 1.3.1:

 - *great* stability improvement in virtual machines booting (execute_linux function)
 - improved /etc/hosts processing when <host_mapping> enabled: each simulation information is maintained during -t and
   -d modes with no duplication; 'mv' added to binary mandatory files
 - improved -s, -p, -r modes to launch starting/stopping only in the virtual machines with <start>, <stop> or <filtree>
   tags defined
 - dupplication problem at 16th host solved get_admin_address: now the limit is 64 (thanks to Ron Young)
 - only check target UMLs alives of selected targets (-M switch) in -s, -p and -r modes
 - fixed "empty killing" in purge mode
 - cheking that only root user can runs vnumlparser.pl in no debug modes
 - switch -k is no longer implemented
 - minor bugfixes

Changes since version 1.3.0:

 - new required Perl modules: Net::IPv6Addr (may be needed Net::IPv4Addr, Math::Base85)
 - check_binaries function, to check availability of binaries needed
   for VNUML operation. Binaries path unhardwired.
 - <tun_device> tag processing (/tun/device unharwired)
 - wait time information accuracy improved
 - sleep intervals with builtin Perl function
 - improvements in check_semantics:
      + to check filenames, file existence and file executability (when required)
      + syntaxis check for <ipv4> and <route> and "ip" attribute of 
        <physicalif> addresses (implemented in function valid_ipv4 and valid_ipv4_with_mask)
      + syntaxis check for <ipv6> and <route> addresses (implemented in function valid_ipv6 and 
        valid_ipv6_with_mask)
      + syntaxis check for mask (IPv4) attribute of <ipv4> and <physicalif> (implemented in 
        function valid_mask)
 - screen configuration file for pts devices through -e optional switch in -t mode
 - purge mode (-P) 
 - check if DTD file exists
 - 'root=/dev/ubd/0' added to UML boot_line (needed in RedHat?)
 - '-o /dev/null' gives redirection of UML kernel booting output to null device
 - execution time measurement 
 - bugfixes

Changes since version 1.2.1:

 - added -S, -B and -w optional switches to -t mode
 - changed ps filter "-aux" to "axw". Removed 'cut -c 1-100'
 - UML_ready can work in two modes: old ps filter style 
   with '-S 1' and socket style with '-S 0' (by default). SKAS
   is not compatible with '-S 1'
 - blocking mode implemented
 - <kernel> tag processing
 - <boot> tag processing
 - <con0> tag processing
 - delay between UML booting with -w switch
 - fixed error managing IPv6 routes (remove -net option)

Changes since version 1.2.0:

 - english translation of source code and comments
 - obsolete debug code cleaned out
 - only two first mayor number of version number (1.2, for example)
   are checked in <version> tag
 - route -net problem fixed
 - weird mconsole directory (with name '?') fixed

Note: due to the fact that 1.2.1 is the first public release of vnumlparser.pl,
the changelog for versions previous to 1.2.0 is not included.
