
		XORP RELEASE NOTES

This file contains XORP release notes (most recent releases first).

Release 1.8.6

   *  Improve handling of interfaces that appear and dissappear in
      IGMP, MFEA and PIM.

   *  Add support for static MCAST routes.

   *  Routing table (RIB) performance improvements and bug fixes.

   *  OSPF v6 route cost fix.

   *  Policy fixes related to protocol death and route distribution.

   *  XRL bug fixes, support for int64 types.

   *  Some BSD fixes, but still issues on at least some versions.

   *  Remove auto-generated lex/yacc files, and instead build them
      at compile-time.


Release 1.8.5

   *  Fix bad OSPF bug that made neighbours very slow to go to Full
      state in large and/or lossy OSPF router configurations.  Thanks
      to Iqor for access to test systems and for funding this effort.

   *  Compile in build-information to better track versions in logs and
      bug reports.

   *  Optimize logging to check the log level before doing the work to
      create the logging messages.  Simplify a lot of the related code.
      Runtime should be faster, but executable size is slightly larger.

   *  netbsd:  Fix compile on netbsd, properly detect IPv6 Multicast
      routing support, fix a few bugs related to multicast.  It *might*
      work now, but seeing spurious failures when trying the MRT6_ADD_MIF
      call.  Thanks to Uwe <6bone@6bone.informatik.uni-leipzig.de> for
      access to netbsd boxes and testing work.

   *  Fix multicast over GRE tunnels.  Anything else over GRE also has
      a chance to work now.  Thanks to J G Miller for bug reporting and
      testing.

   *  ARM:  Fix raw-sockets on some ARM platforms.  The scons checks
      were lame at best.  They are still suspect, but now unknown will
      be treated as supporting IPV4 raw input/output.  If we find other
      systems that do NOT support this (freebsd, netbsd??), we can update
      the scons accordingly and/or find a way to do the detection more
      proper.  Thanks to J G Miller for doing tests on his ARM box.

   *  Fix compile on Ubuntu 11.10 (and perhaps other recent systems).

   git shortlog since 1.8.4:
    Ben Greear (55):
      Update html, release-process notes.
      Add some notes in the rpm building script.
      Update version to 1.8.5-WIP
      ospf:  Log peer state changes.
      fea:  Re-arrange netlink parsing logic.
      fea:  Fix GRE tunnel IP addresses on Linux.
      multicast:  Don't crash if interface configured for mcast doesn't have MULTICAST flag.
      Add copyright header to bug_cather.hh
      build-info:  Support auto-generated build information.
      build-info:  Defaults to enabled.
      build-info:  Add xorp version string to xorpsh.
      build:  Always add bigoflag unless using override.
      compile:  Use 'full' optimization by default: -O2
      mii:  Fix strict-aliasing warnings when compilign with -O2
      olsr:  Fix un-used variable warnings.
      buildinfo:  Make script deal better with missing perl & git.
      netbsd:  Fix sockutil.cc build on netbsd.
      netbsd:  Fix click mount command for netbsd.
      netbsd:  Fix compile problem in ifconfig_get_ioctl.
      xlog: Simplify xlog framework.
      ospf:  Remove some overly verbose trace debugging.
      ospf:  Set trace logging verbosity to high.
      ospf:  Fix bad lsa retransmit timer bug.
      ospf:  Improve some debugging messages.
      Update release notes for OSPF bug, logging changes.
      ospf:  Add some debugging for routing-table warnings.
      netbsd: Fix compile on netbsd.
      Merge branch 'master' of github.com:greearb/xorp.ct
      buildinfo:  Use sed instead of perl, should still handle "'s
      click:  Enable building click.
      fea:  Add comment to explain strange mii code.
      fea:  Remove dead code, small tweaks.
      buildinfo:  Fix missing \ in sed logic.
      buildinfo:  Fix escaping single backslash     Signed-off-by: Ben Greear <greearb@candelatech.com>
      Merge branch 'master' of github.com:greearb/xorp.ct
      fea:  Fix crash when mcast_protocol_fd_in returns NULL.
      fea: Auto-create mcast socket if none exist.
      bsd/mcast: Properly detect support for IPv6 multicast routing.
      bsd: Fix assert when using ipv6 mcast routing.
      bsd/fea: Add some debugging for ipv6 mcast socket failures.
      rls-notes:  Note limited netbsd support for ipv6 mcast.     Signed-off-by: Ben Greear <greearb@candelat
      fea/vlans:  Don't delete vlans unless xorp created them.
      mfea:  pim_register interfaces are always mcast capable.
      fea:  Add some extra debugging for errors seen on ARM.
      install:  Fix install script warnings on Fedora.
      raw-sockets:  Assume platforms support raw socket input/output.
      rls-notes:  Add credits, update for GRE tunnels & ARM
      freebsd: Fix IPv6 address handling.
      Merge branch 'master' of github.com:greearb/xorp.ct
      Update LANforge version to 5.2.2 in deb packaging Makefile.
      Remove the FORTIFY_SOURCE hack.  Breaks Ubuntu 11.10 build.
      Fix compile on ubuntu 11.10 (check return values of some library calls).
      Update version to 1.8.5
      Update copyrights for files changed in the 1.8.5 rls period.
      Update HTML for rls 1.8.5

    Igor Maravic (4):
      xorp_install:  Use --system and --no-create-home if supported.
      Sconstruct:  Remove un-needed semicolons.
      SConstruct:  Support debug_xrldb=True option.
      rtrmgr:  Support compiling with debug_xrldb=True option.

Release 1.8.4 (September 20, 2011)

   *  Add async-XRL support, from Steven Simpson

   *  Fix bug in deleting non-VLAN interface.  Commit would fail
      because the code would attempt to remove the interface from
      the kernel and fail.

   *  Fix BSD related crash when adding interface with same ifindex
      as a previous interface.  OpenBSD has the nasty habit of re-using
      the ifindex when creating/deleting virtual interfaces.

   *  Fix multicast bug that totally breaks XORP multicast on recent
      Linux kernels.  The problem is that I chose the wrong default
      multicast routing table (254, instead of 253 as it should be).
      So, if users don't specify a routing table, it pokes routes into
      the wrong table.  This wasn't caught in my testing because I always
      explicitly set the routing table ID.

   *  Add some env variable controlled debugging to the libxorp and libxipc
      logic for better debugging of xrls and the event loop.

   git shortlog since 1.8.3:
    Ben Greear (57):
      www:  Update downloads & release links on web page.
      vlans:  Don't try to delete interfaces that are not VLANs.
      Merge ../xorp.ct.dev
      ospf:  Add debug info around assert in peer.
      ospf:  Deal better with reloading ospf config files.
      BSD:  Fix bug with adding new virtual interface.
      Merge branch 'master' of github.com:greearb/xorp.ct
      multicast:  Fix critical bug with mcast routing tables in Linux.
      olsr:  Fix xrl_port pending logic.
      Fix compile warnings on Ubuntu 11.
      fea:  All platforms we care about support strerror.
      libxorp/fea:  Add XSTRERROR macro to provide cross-platform strerror
      Merge ../xorp.ct.github
      xrl:  Only warn if trying to register duplicate class-watch.
      scons: Fix suggested install commands for Ubuntu 11.04
      scons/firewall:  Fix up kernel header modification msg.
      fea:  Use XSTRERROR instead of strerror(errno).
      olsr:  Fix topology search.
      olsr:  Fix code relating to RFC section 9.5
      Merge branch 'master' of github.com:greearb/xorp.ct
      Fix build on windows.
      fea:  Whitespace cleanup.
      bgp:  Compile fixes for gcc 4.6
      cli:  Compile fixes for gcc 4.6
      olsr:  Compile fixes for gcc 4.6
      ospf:  Compile fixes for gcc 4.6
      pim:  Compile fixes for gcc 4.6
      rib:  Compile fixes for 4.6
      Update win32_pkg script to build as well.
      xorpsh manpage typo fixes
      Fix un-initialized variable in win32 specific code.
      fea:  Make io_ip_sockets non-blocking by default.
      fea:  Add logging for register/unregister protocol handlers.
      Make package script smarter.
      xrl:  Allow meaningful name to identify xrl senders.
      fea:  Add some debugging for windows adapters.
      xrl/fea:  Add some debugging logic.
      xrl:  Read up to 100 at a time instead of two.
      xrl:  Remove dead code, some windows xmit, xrl batching.
      xrl:  Remove more dead code.
      xrl:  Propagate socket write failures on windows.
      xrl: Add some debugging for stcp logic.
      asyncio:  Add some debugging logic for asyncio.
      time:  Support higher-resolution time-stamps on windows.
      eventloop:  Clean up event loop slightly, cap wait on MS.
      event-loop:  Remove dead code, make sure win-dispatcher handles all events.
      event-loop:  Make environ-trace object generic, warn of slow win-dispatcher callbacks.
      ospf:  Add/update debug tracing.
      Fix build on 64-bit systems.
      Fix enable_tests=True build.
      Update copyright for recently touched files.
      Use new perl script to update copyright.
      Update a few non-standard copyrights.
      Add perl script to update copyrights.
      Remove old update_copyright.sh script.
      Update version to 1.8.4
      Update html for 1.8.4.
      Update release notes with git shortlog.
      Update release procedures docs, www pkg script.
      Fix test build failure on F15.
      Fix compile breakage due to fpnotify.
      mcast:  Add checks for inet6_option_space
      pim:  Use pointers instead of references for members.
      pim:  Attempt manual destruction of pim node.
      pim: Add some memory debugging.
      ospf:  Initialize some variables.
      libxorp:  Allow un-registering timers.
      mrt:  Initialize iterators to know values.
      rib:  Fix memory leak in rib.
      pim:  Fix recently added bugs.
      rtrmgr:  Remove some timers in destructors.
      Update copyrights for recently touched files.

    RUN Admin Team (68):
      Wiki backup on Wed, 23 Mar 2011 03:00:01 +0100...
      [snip]

    Steven Simpson (6):
      Supporting asynchronous method implementations
      Simplifying (a)synchronous conditional compilation:
      xrl:  Convert more low-level xrl processing to async handling.
      Asynchronous callbacks accept argument pointers instead of references:
      Added helper classes for async responses.
      Support for IEEE754 binary64 format in XRLs
      Made fp64 serialization compatible with pre-C99.


Release 1.8.3 (March 16, 2011)

   *  Change the way VLANs are created.  This changes the config
      file syntax (though the original syntax didn't actually work
      right..so probably no one is actually using it.)

   *  Re-add support for XORP on Microsoft Windows.  Add instructions
      to BUILD_NOTES for cross-compiling with mingw.

   *  Add more options for disabling compile of certain modules.
      See:  scons --help

   *  Add support for IPv6 multicast with virtual routing tables.
      Requires Linux kernel 2.6.35 or higher.

   *  Support compiling with clang + llvm compiler:
      Install latest clang and llvm from their SVN repositories and:
      scons CC=clang CXX=clang++

   *  Add some changes to make it easier to support uSTL, but it does not
      actually work as uSTL had too many limitations and bugs, and didn't seem
      to gain much space improvements anyway.
      See BUILD_NOTES for more info.

   *  Support cross-compiling.  See BUILD_NOTES.

   *  BSD:  Don't crash FEA when interface disappears.

   *  BSD:  Don't fail commit if cannot remove route that doesn't exist.

   *  Add signal handling for more graceful exit.  Helps clean up /var/tmp/xrl.*
      files and lets valgrind report more useful information.

   *  timers:  Fix memory leak related to the Heap class.

   *  BGP:  Fix up tear-down logic to make sure it exits promptly in
      all cases.

   *  pim: Fix a recursive delete issue in pim code, exposed by the ability to
      gracefully shut down processes with SIGTERM.

   *  rtrmgr:  Allow starting helper processes under valgrind.  Just
      create a file called XORP_USE_VALGRIND in the working directory.
      If you want xorp_rtrmgr to use valgrind, you have to start it under
      valgrind manually.

   *  FEA:  Properly clean up all sockets and remove them from the eventloop
      callback when cleaing up io_ip_socket objects.

   *  firewall:  Support compiling netlink firewall support on Linux, if
      kernel headers are properly modified to compile with c++.


git shortlog since 1a4cdaa30cec4ab15519859df78a462b7ee2a3e1 (Around 1.8-CT)

Ben Greear (163):
      Remove some old CVS file tags, update version to 1.8-CT
      Update copyright script for 2010.
      Remove some comments, update more strings from 1.7 to 1.8
      Remove more commented 1.7 strings.
      Update rls-name and date for tex files.
      Update copyright for all files touched since 1.7 release.
      Start updating xorp web page files for XORP.CT.
      Remove auto-generated html files.
      VRRP:  Add prefix-length attribute to VRRP user-guide.
      Update latex docs to point to www.candelatech.com/xorp.ct instead of xorp.org
      Change some URLs over to www.candelatech.com/xorp.ct
      docs:  Build .ps targets as well as .pdf
      docs:  Allow doxygen to create source code docs
      Fix up source repository link on web page.
      scons:  Detect lack of openssl/md5.h and exit with warning.
      scons:  Warn user if libcurses isn't found and exit build process.
      rtrmgr:  Need to link against libcrypto on Fedora 13.
      scons:  Warn user and fail if cannot find libcrypto.
      boost:  Remove boost header requirment.
      scons:  Tell users how to install libpcap-devel package.
      www:  Create script to package web page, update some broken URLs.
      OLSR/BGP:  Allow to not compile OLSR and BGP.
      Build BGP and OLSR by default.
      OLSR:  Fix OLSR build when ipv6 is disabled.
      Allow compiling out VRRP and OSPF.
      Fix up defaults for protocol enables.
      MFEA6:  Support IPv6 multicast routing virtual routing tables.
      Fix 'scons install' when strip=yes:  Cannot strip scripts.
      rpms:  Fix up rpm-builder script and spec file.
      scons:  Fix optimize=size compile warnings with -fno-strict-aliasing
      rip:  Allow disabling compile of RIP, saves around 750k on disk.
      fea:  Enable disable compile of fea-dummy logic.
      xorpsh:  Allow disabling compile of xorpsh, saves around 820k on disk.
      templates:  Don't install templates if their modules are not compiled.
      clang:  Start making changes to build under clang.
      clang:  Change some code to keep clang from crashing.
      clang:  Fix c++ template issues, minimal system builds now.
      clang:  fix rest of xorp to compile with clang.
      stl:  Move stl includes to libxorp/xorp.h in preparation to try ustl.
      ustl:  Link against ustl when that is selected.
      bgp/ustl:  Enable ustl compile, open-code operator<, operator==.
      libxorp/ustl:  Change code to work with ustl limitations.
      cli/ustl:  Update cli for uSTL compile.
      olsr/ustl:  Work on getting olsr to compile under ustl.
      fea/ustl:  fea changes to work better with uSTL.
      ustl:  Get fib2mrib compiling with uSTL.
      ustl:  Get feaclientlib compiling with uSTL.
      ustl:  Get libproto compiling with uSTL.
      ustl:  Modify libxipc to work with uSTL.
      ustl:  Rest of the uSTL changes.
      ustl:  Fix build errors when NOT using ustl, introduced by ustl changes.
      uSTL:  Add ustl patch and instructions for building with uSTL.
      scons/check:  Fix compile for 'scons check' code.
      Update buildbot info.
      Merge branch 'master' of github.com:greearb/xorp.ct
      Update rls notes for uSTL.
      Quieten BINDTODEVICE warning when not running as super-user.
      clang:  Work around clang bug in test harness code.
      check:  Attempt to fix up bgp test harness to properly show all failed tests.
      scons-check:  Fix typo introduced by daddy's little helper & friend!
      tests:  Normalize pass/fail strings for easier post-processing.
      tests:  Fix build of libxipc stress test tool (disable batching logic)
      tests:  Exit test_busted fork after completing test.
      tests:  Make bgp test cases more obvious.
      test_busted:  Attempt better cleanup if process hangs.
      bgp:  Fix build when profiling is disabled.  Fix typo in test_busted script.
      uSTL:  Get slightly closer to building ospf with uSTL
      test:  Try a little harder to kill hung test programs.
      cli:  Don't return reference to pointer object.  Makes it too easy to not realize object can be NULL.
      build:  Pass CXXFLAGS and similar to config process.
      Update build-notes with cross-compile instructions.
      curses:  Allow use of EITHER ncurses or curses library.
      html/docs:  Update web page with build-bot link.
      bgp:  Don't assert on duplicate attributes.
      Merge branch 'master' of git@github.com:greearb/xorp.ct
      cross-compile:  Update notes for cross-compiling ncurses.
      Add some more cross-compile notes.
      build:  Fix static build:  scons shared=no
      Merge branch 'master' of git@github.com:greearb/xorp.ct
      fea:  Handle funky input from netlink without crashing.
      buildbot:  Add buildbot master.cfg file.
      buildbot:  Update README for buildbot server instructions.
      bsd:  Attempt to make device removal work better on bsd.
      BSD/fea:  Fix typo in previous attempt.
      bsd:  Don't fail commit if route removal fails with ESRCH
      signals:  Add some default signal handler logic.
      pim:  Use pointers instead of reference objects in class members.
      signals:  Add signal handling to most other processes.
      Remove some logging that appears to be breaking the 'scons check' step.
      Update release notes for BSD fixes and signal handling.
      debug:  Add debugging to track down buildbot failures.
      Rename cleanup script so it doesn't kill itself.
      configs:  Add sample configs for ospf + mcast.
      bgp:  Bail out of BGP destructor if xrl_router is stuck.
      signals:  Don't call xlog in signal handler.
      buildbot:  Tweak cleanup script for better cleanup.
      valgrind:  Enable running processes under valgrind
      Update notes for installing proper packages on Ubuntu.
      xrl:  Chmod xrl file to be g+rwx, u+rwx and suid.
      bsd:  Enable -Werror compile flag
      fea:  Remove sockets from eventloop in io-ip-socket destructor.
      pim:  Fix crash due to calling pure-virtual method.
      libxorp/heap:  Fix long-standing memory corruption.
      bgp:  Debugging & decrease timeouts in destructor.
      Update release notes.
      Update rls notes.
      endian:  Minimize use of hand-crafted endian checks.
      bsd/endian:  Fix up endian logic for systems that don't have <endian.h>
      Fix cruft left in by last commit.
      bgp:  Fix another potential hang when shutting down BGP.
      bgp/socket:  Make BGP error message slightly more useful.
      livecd:  Update web docs for live-cd.
      fea/firewall:  Enable firewall support on linux.
      Update rls notes to note enabling firewall logic.
      firewall:  Fix suggested code patch for iptables.h
      ospf:  Remove assertion when FINDER is lost.
      Update 'save' help text..was talking about 'load' instead.
      fea/mfea:  Do a better job of cleaning up multicast on reload.
      pim/igmp:  Fix config-file reload issues.
      pkg-script:  Update .deb build script for latest version.
      Rename directory with ":" in name to work better on Windows.
      mld6igmp:  Try to not send pkts with 0.0.0.0 source IP.
      vlans:  Create vlans with dev.vid format (eth1.5)
      fea:  Work around some bugs relating to vifs.
      compile:  Add checks for existence of CC and CXX compiler.
      Fix up gcc/g++ check for older Scons.
      Start working porting to mingw cross-compile to win32 executable.
      Tweak a few files to aid mingw compile.
      Re-enable Windows support for Xorp.CT.
      Add missing files to support Windows.
      win32:  Fix some path errors, and some fea issues.
      Fix some non-win32 build breakage introduced in the win32 port.
      Update notes for building with standard mingw32 packages.
      More build notes update for win32
      windows:  Fix build instructions to use normal upstream mingw distribution.
      html:  Update html slightly, add script to upload.
      windows:  Default to tcp transport on windows builds
      windows: Fix typo in windows startup command.
      html: Update web page to be 'official' xorp page
      news.html:  Fix typo in web page.
      vlans: Treat vlans as primary interfaces.
      html:  Update bug link to point to bugzilla.
      Merge branch 'master' of github.com:greearb/xorp.ct
      Update rls notes for VLAN changes.
      Add example OSPF configuration file for Windows.
      Fix vlan-related compile on Windows-32.
      Fix test value related to vlans.
      Merge branch 'master' of github.com:greearb/xorp.ct
      Fix vlan related build problems on BSD.
      Fix up RPM packaging script for upcoming 1.8.3 release.
      Merge branch 'master' of github.com:greearb/xorp.ct
      Fix typo related to vlan changes.
      Update README, remove some xorp.ct stuff.
      Remove some ancient and un-used stuff.
      Remove old kdoc cruft, update doxygen.cfg file (remove .ct from project name)
      Fix more vlan test breakage, seems to complete 'scons check' now.
      Documentation:  Notes for building latex, update html for wiki.
      Change xrl pipe group ownership to be xorp
      Add a README, remove some stale TODO files.
      www:  Update web page to point to wiki documentation.
      www:  Remove deprecated mailing lists from web page.
      Update copyright for changed files.
      Update copyright for files with 'and Others' copyright.

greearb (1):
      scons:  Fix openssl/md5.h detection on Fedora core 5.



Release 1.8-CT  June, 2010

Overview:

Merge xorp.ct changes from Ben's private tree into upstream 1.7.

Major changes include:

   * Allow OSPF, RIP, BGP, OSLR, and PIM to better handle interfaces
      being added to and deleted from a running xorp instance via the 'xorpsh' CLI tool.

   * PIM: Fix state-machine lockup due to failure to advance state machine in some error cases.

   * RIP, BGP, PIM: Allow binding the protocol sockets to specific interfaces.

   * FEA: Support binding to specific interfaces, including multicast protocols.
      Use Netlink (Linux only) to filter events so that a single instance of
      xorp pays attention to only it's interfaces.

   * FEA: Support new Linux kernel API to provide multiple multicast
     routing tables per kernel instance. This requires kernel 2.6.34
     and the latest iproute and iptable tools.  These changes are
     backwards compatible with normal kernels.

   * OLSR: Enable building OLSR, support binding to a specific interface.

   * Support building IPv6 multicast support on Linux. Haven't tested functionality yet.



git shortlog for commits since Release 1.7.

Achmad Basuki:
      rpms:  Add scripts & files to build RPM packages on Fedora Linux (at least).

Ben Greear:
      Remove tags and branches dir.
      Move trunk/* to ./, remove trunk directory.
      xorp-ct:  Merge old CVS patch into svn repository.
      olsr:  Enable OLSR compile in scons
      olsr:  Fix OLSR install target, properly add OLSR templates if OLSR is enabled.
      libxorp: Work-around crash in selector.cc due to accessing stale memory.
      fea:  Add method to dump netlink route messages.
      libxipc:  De-obfuscate ReplyPacket (it was just a vector of bytes)
      libxipc:  Give user a better clue as to why xrl router timed out.
      Fix some uninitialized memory errors found by valgrind.
      Remove some noisy logging.      Add code to clean up pid-file if possible (on exit)
      Fix logging & tracing to show micro-seconds, greatly aids debugging performance issues.
      mfea:  Fix vif removal race related to mld6igmp
      startup:  Make startup faster by implementing startup methods.
      fea:  Don't fail commit because we can't remove multicast addresses that are already deleted.
      startup: Put 'startup' method in common.xif.
      pim:  Don't fail commit if pim can't find interface to stop.
      fea:  Don't fail commit if vif is gone when un-registering protocol on interface.
      mfea:   Defer start of mfea_vif if it can't be started when immediately requested.
      ospf:  Add OSPF logging in the path that disables an interface.
      rtrmgr:  Add some logging to rtr-mgr to help track configuration commits.
      mld6igmp:  Defer mld6igmp vif start if vif is DOWN
      pim:  Handle deferred vif_start for pim.
      mld6igmp:   Don't faile igmp if it can't join multicast group.
      ospf:   More logging to help track down OSPF peer link issue.
      ospf/fea: Add logic to print out the configuration tree.
      Add xorp_install.bash script
      Add scripts to generate .deb files on Fedora.
      cli:  Fix memory leak
      libxorp:  Add BugCatcher class to help debug use-after-free and similar errors.
      rtrmgr: Disable XRLdb run-time verification by default.  Should speed up startup.
      build:  Enable gprof
      fea:  Allow filtering netlink messages
      policy:  Fix redist static and connected routes to ospf.
      Fix compile errors on Ubuntu
      fea:  Replace all instances of HAVE_PCAP with HAVE_PCAP_H
      OSPF:  Interop with RFC4813, fix router-link metric for loopback case.
      scons:  Properly detect multicast header files for older Linux distributions.
      fea:  Properly check for minimum ethernet packet size.
      fea:  Dynamically attempt to use ioctl to set device flags if netlink doesn't work.
      vrrp:  Remove assert that appears to be wrong.
      ArpHeader/vrrp:  Fix a compile error on Sparc, related to ArpHeader.
      fea:  Remove some un-needed casts and assignments related to netlink messages.
      fea/vrrp:  Make some errors about adding/deleting macs non-critical.
      fea:  Detect pcap-bpf.h and don't use the feature if it isn't available.
      fea/pcap:  Don't link against libpcap if it doesn't exist.
      Fix build on BSD.
      Move MULT_MCAST table detection logic into allconfig.py instead of hard-coding it.
      netlink:  ifdef out netlink code if not compiled to use netlink sockets.
      fea:  Thoroughly disable all routing_socket code if platform doesn't support it.
      fea: Don't compile ioctl get/set logic if netlink is defined (we prefer netlink).
      fea/click:  Disable CLICK by default.  Saves around 200k of disk space.
      AlignData cannot be made to copy-data, other code makes assumptions that it does not.
      Allow disabling of IPv6 via scons...even if OS supports it.
      ipv6:  Conditionally compile much of the IPv6 related code.
      ipv6:  Conditionally compile some more IPv6 code.
      fea/firewall:  Allow to compile out firewall code, saves ~180k stripped.
      Only generate .scons_build_args when doing a build (not an install, for instance)
      Build template 'build-script' to strip 'firewall' out of fea.tp.raw.
      Fix crash when DEBUG_LOGGING was enabled, fix build when DEBUG_LOGING was enabled.
      Revert "Conditionally compile much of the IPv6 related code.:
      fea:  Conditionally compile Remove socket6 API
      ipv6:  Conditionally compile socket6 logic.  Saves around 80k on disk.
      ipv6/fea:  Conditionally compile socket6 API        Saves about 80k on disk.
      ipv6/pim:  Don't build pim6 if IPv6 is disabled.  Saves about 12k on disk
      ospfv3/ipv6:  Disable ospfv3 when ipv6 is disabled.  Saves about 270k on disk.
      ospf:  Fix up build errors introduced earlier, when ipv6 is enabled.
      Fix compile on really old systems (Fedora 5)
      fea/netlink:  Fix problem with older kernels (FC5, 2.6.28 kernel, for instance)
      ripng/ipv6:  Don't build ripng if not using IPv6
      fea/ipv6:  Conditionally compile ipv6 stuff in fea-fib-client interface.
      rib/xif: Re-arrange so that it will be easier to ifdef out the ipv6 functions.
      static/ipv6:  Conditionally compile some ipv6 logic in static.
      ospf:  Group ipv6 code together to make it easier to conditionally compile.
      ospf/ipv6:  Conditionally compile all ipv6 code in xrl_io.cc, saves 50k
      rib/ipv6: Conditionally compile some ipv6 code in tools.
      pim/ipv6:  Conditionally compile some xrl_pim_node ipv6 code.
      fib2mrib/ipv6:  Conditionally compile ipv6 code, saves 20k
      ipv6:  Conditionally compile (more) ipv6 code for bgp, ospf, rib, and static-routes.
      vrrp:  Fix assert related to packet size.
      fea/ipv6:  Conditionally compile a bunch more fea/rib/pim ipv6 code.
      vrrp/fea:  The commit logic was paying more attention to the error_msg string than return codes.
      vrrp:  Enable creating/deleting secondary IP address for the VRRP masters.
      vrrp:  If vrrp tries to remove the VRRP MAC, and it's the only one that exists
             ..then create a random MAC to take it's place.  Otherwis
      ipv6/pim:  conditionally compile more ipv6 code.
      rpms:  Script to automate building RPMs.
      fea:  Add better decoding for netlink error messages.
      vrrp:  Don't allow user to mis-configure interval.
      fea:  If we try to read netlink for a particular seqno, but do not find it
            before netlink socket is out of packets to read, then do   
      fea:  Add work-around for older kernels that cannot pull single interfaces.
      fea:  Fix link & MTU detection on funky systems.
      Fix 'scons check' build.
      carrier-sense:  My previous fix for sensing carrier by looking at sysfs files
            on linux neglected to deal with exceptions thrown by
      IPMR:  Add support for new multiple mcast table API.
      Logging:  Enable conditional compilation of logging code.
      mfea:  Update IPv6 mcast code to modern kernels.
      Small improvement to memory usage related to xrl_error
      xrl:  Move ipv4 and ipv4Net objects into xrl_atom
      ipv6/mcast:  BSD doesn't have mifc6ctl.vifc_threshold member.
      selector:  Work around assert in selector logic.
      beautify code:  Had to stare at offending line for quite a while to parse it.
      exceptions:  Pass string back by reference.
      fea,comm:  Remove some noisy logging.
      mld6igmp:  Tweak logging and add/delete callback.
      policy:  Add support for exporting routes from fib2mrib to ospf.
      rib/show_routes:  Fix crash due to race.
      Move parse_netlink_socket logic into get_netlink_socket.cc file.
      fea:  route distribution debugging
      Package script used by Candela.
      Final xorp.ct merge
      Update README for XORP.ct and rls 1.8
      olsr/ospf/libxorp:  Add some files missed in xorp.ct merge.
      oslr:  Build OLSR by default.
      Move README to base directory.
      Update README file.

Eric S. Johnson:
      vrrp:  Fix asserts, remove IPs on shutdown.

Saurabh <saurabh.pandya@elitecore.com>
      IPv6/PIM:  conditionally compile more ipv6 code.


Release 1.7  May 1, 2010
============================
  ALL:
    - Compiles on Linux (x86-32, x86-64, Sparc, at least) and BSD variants.
    - Replaced 'make' build system with 'scons'
    - New installation layout.
    - Footprint reduction.
    - Bug fixes here an there, more queued for release 1.8.
    - Support shared libraries.

  OLSR:
    - Currently broken in 1.7

  SNMP:
    - Removed


Release 1.6 (2009/01/07)
============================
  ALL:
    - XORP now builds on Linux CentOS 5.2, Linux openSUSE-11.0,
      Linux Debian-5.0 (lenny, unreleased), Linux Ubuntu 8.10,
      Linux Red Hat Enterprise Linux Server release 5 (Tikanga),
      Linux Fedora 10, and OpenBSD-4.4.

    - XORP now builds on Linux systems with kernel 2.6.26 which is the
      first one to support IPv6 multicast routing.

  CONFIGURATION:
    - If a PIM-SM router is suppose to receive and process the PIM-SM
      Bootstrap messages, the configuration must have the "bootstrap {}"
      block included (even if it is empty):

      protocols {
          pimsm4 {
              bootstrap {
              }
          }
      }

      protocols {
          pimsm6 {
              bootstrap {
              }
          }
      }

      Previously, the Bootstrap messages were unconditionally processed
      even if the "bootstrap {}" block contained "disable: true"
      statement.

    - The following CLI operational command prefix has been changed:
      OLD: "show route admin distances"
      NEW: "show route admin distance"
     
    - The CLI "show version" command is supported

    - Addition of run-time configuration trace options for RIP/RIPng:

      protocols {
          rip {
              traceoptions {
                  disable: false
              }
          }
      }

  LIBXORP:
    - Class EtherMac is removed and is replaced/superseded by the
      existing class Mac.

    - Performance improvements and various bug fixes in the EventLoop
      and SelectorList implementation.

  LIBXIPC:
    - XRL performance enhancements. (Bug 808)

    - Issues that might be triggered under heavy system load have been fixed
      (Bug 800)

  LIBFEACLIENT:
    - No significant changes.

  XRL:
    - See LIBXIPC

  RTRMGR:
    - No significant changes.

  XORPSH:
    - Incorrect help "show bgp peers detail" command  (Bug 280)

    - Xorpsh exiting immediately on error doesn't work  (Bug 763)

    - "Show version" CLI supported  (Bug 789)

    -  Show route admin distance not working (Bug 812)

  POLICY:
    - Tag per route is not reset in case the policies are removed (Bug 567)

    - Implement per-peer BGP import/export policies  (Bug 667)

    - Enhance policy network-lists to included prefix length (Bug 674)

  FEA/MFEA:
    - Bug fix for OpenBSD when transmitting IGMP packets.

  RIB:
    - No significant changes

  RIP/RIPng:
    - Added traceoption support 

  OLSR:
    - 

  OSPF:
    - When the designated router was restarted the MaxAge LSAs that it
      generated when reflected back would be responded to with a MaxAge LSA,
      this process could continue indefinitely, leaving the neighbor state in
      EXCHANGE. (Bug 785)

    - OSPF virtual links support broken in the 1.5 and 1.6 releases
	
  BGP:
    - Support for Red Hat Linux (Bug 793)

  STATIC_ROUTES:
    - No significant changes.

  MLD/IGMP:
    - Bug fix when checking the source address of IGMP packet if the
      source address is allowed to be 0.0.0.0.

  MLD/IGMP-Lite:
    - Bug fix when checking the source address of IGMP packet if the
      source address is allowed to be 0.0.0.0.

  PIM-SM:
      Ability to add candidate BSR after inserting Cand-RP with same group
      (Bug 803)

  FIB2MRIB:
    - No significant changes.


  SNMP:
    - 

  VRRP:
    - Initial implementation of VRRP version 2 as described in RFC 3768.

    - Supports running more than one VRRP instances on the same box although
      they need to be on different interfaces and different LANs for correct
      behavior (see ERRATA).

    - The following master failure modes have been tested and are known to work
      (i.e., backup becomes master): bringing the master's interface down,
      rebooting / crashing the master, physically removing the network cable.
      Note that in the latter case the master may fail to resume operations
      when the cable is restored (see ERRATA).

    - Successfully interoperates with vrrpd.

Release 1.5 (2008/07/22)
========================
  ALL:
    - XORP now builds on DragonFlyBSD-1.10.1, DragonFlyBSD-1.12.2,
      FreeBSD-7.0, Linux Debian-4.0 (etch), Linux Fedora 7,
      Linux Fedora 8, Linux Fedora 9, Linux Gentoo 2008.0,
      Linux Ubuntu-7.04, Linux Ubuntu-7.10, Linux Ubuntu-8.04.1,
      NetBSD-4.0, OpenBSD-4.1, OpenBSD-4.2, OpenBSD-4.3, Mac OS X 10.5.2,
      Mac OS 10.5.3, and Mac OS X 10.5.4.

  CONFIGURATION:
    - Addition of new FEA configuration statements to set the IPv4/IPv6
      unicast forwarding table IDs:

      fea {
          unicast-forwarding4 {
              table-id: 254
          }
          unicast-forwarding6 {
              table-id: 254
          }
      }

      If the table ID is not configured, the FEA will use the default
      table ID for the system.
      Note that not all systems support multiple forwarding tables.
      Currently, they exist only on Linux (among all systems supported by
      XORP).

    - The "DISCARD" network interface flag is printed as appropriate
      when displaying the list of interfaces in the CLI.

    - Addition of new FEA configuration statement to support
      "unreachable" interfaces. Such interfaces are similar to "discard"
      interfaces, except that instead of silently throwing away packets,
      the system will respond with "ICMP destination unreachable".

      interfaces {
          interface my_unreachable {
              unreachable: true
              vif my_unreachable {
              }
          }
      }

      The default value for the "unreachable" statement is false.

    - Addition of new FEA configuration statement to flag an interface
      for "management" purpose. An interface that is flagged as
      "management" might be used in the future by some of the protocols
      for protocol-specific purpose.

      interfaces {
          interface fxp0 {
              management: true
              vif fxp0 {
                  address 10.10.10.10 {
                      prefix-length: 24
                  }
              }
          }
      }

      The default value for the "management" statement is false.

    - Addition of support to configure VLANs on an interface.
      A VLAN is configured by using a "vlan" block that includes
      the VLAN ID:

      interfaces {
          interface fxp0 {
              vif fxp0 {
                  address 10.10.10.10 {
                      prefix-length: 24
                  }
              }
              vif vlan1 {
                  vlan {
                      vlan-id: 1
                  }
                  address 10.10.20.20 {
                      prefix-length: 24
                  }
              }
          }
      }

    - Addition of preliminary support to configure firewall rules.
      Firewall rules are configured by using numbered entries:

      firewall {
          rule4 100 {
              action: "drop"
              protocol: 6		/* TCP */
              source {
                  interface: "fxp0"
                  vif: "fxp0"
                  network: 0.0.0.0/0
                  port-begin: 0
                  port-end: 65535
              }
              destination {
                  network: 10.10.0.0/24
                  port-begin: 0
                  port-end: 1024
              }
          }
      }
      Note that compiling firewall support on Linux systems require
      patching some of the system header files. See ERRATA for details.

    - The following PIM-SM configuration statements have been deprecated,
      because PIM-SM doesn't use Router Alert IP option anymore:

      protocols {
          pimsm4 {
              interface foo {
                  vif foo {
                      enable-ip-router-alert-option-check: true
                  }
              }
          }
      }

      protocols {
          pimsm6 {
              interface foo {
                  vif foo {
                      enable-ip-router-alert-option-check: true
                  }
              }
          }
      }

  LIBXORP:
    - The local system-independent xorp_random() implemenation is used
      instead of the random(3) provided by the system.

    - Improved MAC address support (classes Mac and EtherMac).

    - More consistent usage of XORP_OK and XORP_ERROR to return error
      codes.

  LIBXIPC:
    - Bug fix in the internal mechanism for obtaining the IPv4 addresses
      from the system. After the bug fix, a secondary (alias) IP address
      can be specified with the "-i <addr>" command-line option to
      the xorp_rtrmgr or xorp_finder binaries.

  LIBFEACLIENT:
    - No significant changes.

  XRL:
    - Critical bug fix that can be triggered by malformatted XRLs.

    - Addition of support for 64-bit integers: i64 and u64 for
      signed and unsigned respectively.

  RTRMGR:
    - Addition of preliminary mechanism to log events to a file or
      to a syslog facility.

    - Addition of support to run XORP in background (in daemon mode).

  XORPSH:
    - Bug fix related to assigning the node ID position in case the
      previous (sibling) node was deleted at the same time a new node
      was added.
      This fixes "Found out-of-order term(s) inside policy ..." error
      inside the policy manager.

    - The "-c <cmd>" command line option can be used more than once to
      run multiple commands.

    - Fix a long configuration delay when using xorpsh in
      non-interactive mode (e.g., "cat commands.txt | xorpsh").

    - Addition of a new "-e" command line option. It can be used to tell
      xorpsh to exit immediately if the connection to the Finder fails.

  POLICY:
    - No significant changes.

  FEA/MFEA:
    - Major refactoring of the FEA/MFEA internals.

    - Critical bug fix that affects recent NetBSD and OpenBSD releases.

    - Critical IPv6-related bug fix when adding unicast forwarding
      entries to the kernel. This bug was exposed only on *BSD systems
      with 64-bit CPU.

    - If MFEA is started, it will explicitly enable the multicast
      forwarding flags that have been added to recent OpenBSD releases:
      net.inet.ip.mforwarding (for OpenBSD-3.9 and later) and
      net.inet6.ip6.mforwarding (for OpenBSD-4.0 and later).

  RIB:
    - No significant changes.

  RIP/RIPng:
    - Addition of support for "show ripng" xorpsh operational commands.

    - Critical RIPng-related bug fix. Previously the RIPng installed
      routes had incorrect outgoing interface toward the destination.

    - Bug fix related to the TTL for RIPng multicast packets: now it is
      set to 255 as specified in the protocol specification (RFC 2080)
      instead of 1.

  OLSR:
    - Added support for RFC 3626 Optimized Link State Routing Protocol.
      This is a fully fledged XORP routing process with policy route
      redistribution capability. The work was generously funded over
      2007/2008 by CenGen, Inc.

  OSPF:
    - Bug fix related to OSPFv3 link-local scope LSAs. Previously the
      link-local scope LSAs were incorrectly flooded to links other
      than the one they belonged to.

    - Bug fix related to OSPFv3 Inter-Area-Prefix-LSAs. The check for
      the minimum size of an Inter-Area-Prefix-LSA was incorrect so
      short prefixes such as the default route would be rejected.

    - Added a clear database command.

    - In the OSPFv2 configuration "passive" is no longer a bool but a
      directive. Previously setting an interface to passive would set
      the interface to loopback and announce a host route for the
      interface. Using the passive keyword will still set the
      interface to loopback but now the network will be announced. If
      the previous behaviour of of announcing the host route is
      required the host variable can be set to true.

  BGP:
    - Added support for 4-byte AS numbers, as detailed in RFC 4893.
      From 1st Jan 2009 4-byte AS numbers will be allocated by default
      by RIPE, so it is desirable that all BGP implementations support
      four-byte AS numbers by that time.  Currently 4-byte support is
      not enabled in XORP by default, but can be enabled using the
      "enable-4byte-as-numbers" configuration option.

  STATIC_ROUTES:
    - Bug fix that prevented the deletion of interface-specific routes
      using xorpsh.

  MLD/IGMP:
    - No significant changes.

  MLD/IGMP-Lite:
    - An implementation of Lightweight IGMP/MLD is available in
      directory ${XORP}/contrib/mld6igmp_lite. It can be used instead
      of the existing MLD/IGMP vanilla implementation by using the
      following command before compiling XORP:
        ./configure --with-mld6igmp_lite

  PIM-SM:
    - No significant changes.

  FIB2MRIB:
    - No significant changes.

  CLI:
    - No significant changes.

  SNMP:
    - No significant changes.

Release 1.4 (2007/03/20)
=========================
  ALL:
    - XORP now builds on DragonFlyBSD-1.8, FreeBSD-6.2, Linux Fedora
      Core6, Linux Debian-3.1 (sarge), NetBSD-3.1 and OpenBSD-4.0.

    - XORP now can be compiled with the Intel C/C++ compiler 9.* on
      Linux.

    - XORP now can be cross-compiled for IA-64, MIPS (Broadcom for
      Linksys WRT54G), PowerPC-603, Sparc64, and XScale processors.

    - Implementation of OSPFv3 (draft-ietf-ospf-ospfv3-update-23.txt).

    - Implementation of floating static routes (i.e., static routes
      for the same prefix with different next hop and metrics).

  CONFIGURATION:
    - Allow static routes to have "nexthop4" and "nexthop6" policy
      matching conditions in the "from" block.

    - Addition of new FEA configuration statements to retain XORP
      unicast forwarding entries on startup or shutdown:

      fea {
          unicast-forwarding4 {
              forwarding-entries {
                  retain-on-startup: false
                  retain-on-shutdown: false
              }
          }
          unicast-forwarding6 {
              forwarding-entries {
                  retain-on-startup: false
                  retain-on-shutdown: false
              }
          }
      }

      The default value for each statement is false.
      Note that those statements prevent the FEA itself from deleting
      the forwarding entries and does not prevent the RIB or any of the
      unicast routing protocols from deleting the entries on shutdown.

    - The "elements" policy statements for configuring sets of network
      routes have been deprecated:

      policy {
          network4-list foo {
              elements: "1.2.0.0/16,3.4.0.0/16"
          }
          network6-list bar {
              elements: "2222::/64,3333::/64"
          }
      }

      The new replacement statement is "network" and can be used to
      specify one element per line:

      policy {
          network4-list foo {
              network 1.2.0.0/16
              network 3.4.0.0/16
          }
          network6-list bar {
              network 2222::/64
              network 3333::/64
          }
      }

    - The following keywords are supported inside the policy
      configuration when comparing IPv4 or IPv6 network prefixes:
      exact, longer, orlonger, shorter, orshorter, not. For example:

      "network4 exact 10.0.0.0/8"     SAME AS "network4 == 10.0.0.0/8"
      "network4 longer 10.0.0.0/8"    SAME AS "network4 < 10.0.0.0/8"
      "network4 orlonger 10.0.0.0/8"  SAME AS "network4 <= 10.0.0.0/8"
      "network4 shorter 10.0.0.0/8"   SAME AS "network4 > 10.0.0.0/8"
      "network4 orshorter 10.0.0.0/8" SAME AS "network4 >= 10.0.0.0/8"
      "network4 not 10.0.0.0/8"       SAME AS "network4 != 10.0.0.0/8"

      The original operators are supported as well.

    - A floating static route (also called "qualified" by some router
      vendors) can be added with a configuration like:

      protocols {
          static {
              route 10.10.0.0/16 {
                  next-hop: 172.16.0.1
                  metric: 1
                  qualified-next-hop 172.17.0.2 {
                      metric: 10
                  }
              }
              interface-route 10.30.30.0/24 {
                  next-hop-interface: "rl0"
                  next-hop-vif: "rl0"
                  next-hop-router: 172.16.0.1
                  metric: 1
                  qualified-next-hop-interface rl1 {
                      qualified-next-hop-vif rl1 {
                          next-hop-router: 172.17.0.2
                          metric: 10
                      }
                  }
              }
          }
      }

  LIBXORP:
    - The XORP scheduler now has support for priority-based tasks.

  LIBXIPC:
    - No significant changes.

  LIBFEACLIENT:
    - No significant changes.

  XRL:
    - No significant changes.

  RTRMGR:
    - Bug fix in the semantics of the rtrmgr template %activate keyword.

  XORPSH:
    - No significant changes.

  POLICY:
    - Bug fix related to creating export policies that match protocol's
      its own routes (e.g., a policy that modifies the BGP routes
      exported to its peers).

    - Various other bug fixes.

  FEA/MFEA:
    - Fix the routing socket based mechanism (used by BSD-derived
      systems) for obtaining the interface name (toward the destination)
      for a routing entry.

    - Apply a performance improvement when configuring a large number of
      interfaces/VIFs, each of them with the "default-system-config"
      configuration statement.

    - Bug fix related to atomically modifying the IP address of an interface.

  RIB:
    - Bug fix related to (not) installing redundant host-specific
      entries for the other side of a point-to-point interface if the
      netmask for the interface covers the host-specific entry.

  RIP/RIPng:
    - No significant changes.

  OSPF:
    - OSPFv3 is now available.

    - The OSPFv3 protocol requires that link-local addresses are used,
      therefore it is necessary to configure a link-local address for
      each interface, this restriction will be removed in the future.

    - The OSPFv3 configuration allows multiple instances to be configured
      however only one instance will be created. Configuring multiple
      OSPFv3 instances is guaranteed to cause problems.

    - Bug fix related to the processing of previously generated LSAs
      on startup has been fixed. Restarting a router that was the
      designated router could exhibit this problem.
      
    - Bug fix on a broadcast interface if the router was not the
      designated router then the nexthop was incorrectly
      unconditionally set to the designated router; introducing an
      unnecessary extra hop.

  BGP:
    - BGP has taken advantage of the priority-based tasks in the XORP
      scheduler and background tasks are run at a low priority;
      leading to improved performance.

  STATIC_ROUTES:
    - Bug fix related to declaring some of the policy matching
      conditions in the "from" block.

  MLD/IGMP:
    - Bug fix related to atomically modifying the IP address of an
      interface.

    - Bug fix related to ignoring protocol messages that are not
      recognized by the configured protocol version on an interface.

    - Ignore control messages if the source address is not directly
      connected.

    - Don't send the periodic Group-Specific or Group-and-Source-Specific
      Queries for entries that are in IGMPv1 mode.

  PIM-SM:
    - Bug fix related to atomically modifying the IP address of an
      interface.

    - The PIM-SM control messages do not include the IP Router Alert
      option anymore, because it has been included from the newer
      revisions of the PIM-SM protocol specification (RFC 4601 and
      draft-ietf-pim-sm-bsr-09.txt,.ps).

    - Don't send PIM Hello message with DR Priority of 0 when shutting
      down an interface, because this is not part of the protocol
      specification.

  FIB2MRIB:
    - Bug fix related to updating the interface and vif name of a
      forwarding entry received from the FEA.

  CLI:
    - Performance improvement if the CLI is processing a large amount
      of data. E.g., if xorpsh is used in a pipe like:

      cat commands.txt | xorpsh

  SNMP:
    - Bug fix with the snmpd arguments when sampling whether snmpd
      can start and its version is >= 5.2.

Release 1.3 (2006/08/02)
=========================
  ALL:
    - Numerous improvements, bug fixes and cleanup.

    - XORP now builds on Linux Fedora Core5, DragonFlyBSD-1.4,
      FreeBSD-6.1.

    - Implementation of IGMPv3 (RFC 3376) and MLDv2 (RFC 3810).
      Those are necessary to complete the Source-Specific Multicast
      support.

  CONFIGURATION:
    - Addition of new OSPF configuration statement as part of the MD5
      keys:

      * max-time-drift: u32 (default to 3600, i.e., 1 hour)

      It is used to set the maximum time drift (in seconds) among all
      OSPF routers. The allowed values are in the range [0--65535]. If
      the value is 65535, the time drift is unlimited.

    - The following statements for configuring static routes have been
      deprecated:
      route4, route6, interface-route4, interface-route6, mrib-route4,
      mrib-route6, mrib-interface-route4, mrib-interface-route6.

      The new replacement statements are:
      route, interface-route, mrib-route, mrib-interface-route.

      Each of the new statements can be used to configure either IPv4Net
      or IPv6Net route.

    - The following statements for configuring RIP and RIPng have been
      renamed:

      * route-expiry-secs -> route-timeout

      * route-deletion-secs -> deletion-delay

      * table-request-secs -> request-interval

      * interpacket-delay-msecs -> interpacket-delay

    - The following statements for configuring RIP and RIPng random
      intervals have been replaced:

      * triggered-update-min-secs and triggered-update-max-secs with
        triggered-delay and triggered-jitter

      * table-announce-min-secs and table-announce-max-secs with
        update-interval and update-jitter

      Previously, each interval was specified as [foo-min, foo-max].
      Now each interval is specified as
      [foo - foo * jitter / 100, foo + foo * jitter / 100]
      where "jitter" is specified as a percentage (an integer in the
      interval [0, 100]) of the value of "foo".

    - The "version" statement for configuring an IGMP interface/vif
      allows values in the range [1-3]. Previously, the allowed range
      was [1-2].

    - The "version" statement for configuring a MLD interface/vif allows
      values in the range [1-2]. Previously, the allowed range was [1-1].

    - The following statement for configuring PIM-SM (pimsm4 and pimsm6)
      has been renamed:

      interval-sec -> interval

    - If a "then" policy block contains "accept" or "reject" statement,
      now all statements inside the "then" block are evaluated
      regardless of their position.

    - Addition of a new "exit" operational mode command that is
      equivalent to the "quit" operational mode command.

    - The "create" and "set" configuration commands are merged, so now
      the new "set" command can be used for setting values and for
      creating new configuration nodes. For backward compatibility,
      the obsoleted "create" command is preserved as an alias for the
      new "set" command, though it may be removed in the future.

  LIBXORP:
    - Few bug fixes in the RefTrie implementation.

  LIBXIPC:
    - Minor improvement in parsing XRL requests.

  LIBFEACLIENT:
    - No significant changes.

  XRL:
    - No significant changes.

  RTRMGR:
    - Various bug fixes.

  XORPSH:
    - Previously, the "commit" command was not available in
      configuration mode if there were no pending configuration changes.
      Now the "commit" command is always available, but the following
      message will be printed instead:
        "No configuration changes to commit."

    - Various bug fixes.

  POLICY:
    - Various bug fixes.

  FEA/MFEA:
    - Bug fix in transmitting large packets on Linux when using IP raw
      sockets.

    - Linux-related netlink socket code refactoring and bug fix.

    - Bug fix in obtaining the incoming interface for raw packets
      (in case of *BSD).

    - Bug fix in parsing the ancillary data from recvmsg().

    - Accept zeroed source addresses of raw packets, because of
      protocols like IGMPv3.

    - Bug fix in restoring kernel routes that were automatically removed
      when the MAC address or MTU on an interface is modified.

    - Bug fix in processing IPv4 raw packets if they contain an IP option
      with a bogus option length.

  RIB:
    - Several bug fixes and improvements.

  RIP/RIPng:
    - Various bug fixes in the MD5 authentication support.

    - Remove route flap when applying/deleting RIP-related import
      policies.

    - Fix an issue with INFINITY cost routes that might be bounced
      indefinitely between two XORP routers.

  OSPF:
    - Various bug fixes in the MD5 authentication support.

  BGP:
    - Prefix limits on a per peer basis.

    - Various bug fixes.

  STATIC_ROUTES:
    - No significant changes.

  MLD/IGMP:
    - Implementation of IGMPv3 (RFC 3376) and MLDv2 (RFC 3810).

    - Unification of the IGMP and MLD execution path.

  PIM-SM:
    - Bug fix related to the SPT switch (the bug is *BSD specific).

    - Use the RPF interface toward the BSR when transmitting a Cand-RP
      Advertisement message. Previously the first interface that is UP
      was chosen.

    - Use the RPF interface toward the RP when transmitting PIM Register
      messages toward the RP. Previously the interface of the directly
      connected source was chosen.

  FIB2MRIB:
    - No significant changes.

  CLI:
    - Bug fix related to tracking the window size when it is resized.

  SNMP:
    - No significant changes.

Release 1.2 (2006/03/08)
=========================
  ALL:
    - Numerous improvements, bug fixes and cleanup.

    - The third-party ospfd implementation is replaced with a new
      OSPF implementation developed from scratch.

    - The integration of the routing policy mechanism with the rest of
      the system is completed.

    - XORP now builds on Windows Server 2003 (Service Pack 1),
      amd64+FreeBSD-6.0, FreeBSD-6.1 (BETA3), NetBSD-3.0, OpenBSD-3.8,
      MacOS X 10.4.5, Linux Fedora Core4 (among others).

  CONFIGURATION:
    - Addition of new interface related configuration statement:

      * restore-original-config-on-shutdown: <bool>

      This optional statement is used to enable the restoring of the
      original network interface information on shutdown.

    - Addition of new PIM-SM related configuration statements:

      * enable-ip-router-alert-option-check: <bool>

      This optional statement is used to enable the IP Router Alert option
      check per virtual interface.

      * cand-bsr-by-vif-addr: <IPv4 | IPv6>
        and
      * cand-rp-by-vif-addr: <IPv4 | IPv6>

      Those optional statements are used together with cand-bsr-by-vif-name
      and cand-rp-by-vif-name respectively to specify the particular
      IP address on the configured vif. If they are omitted, a domain-wide
      address (if exists) that belongs to that interface is chosen by the
      router itself.

      * hello-period: <u32>

      This optional statement is used to configure the PIM Hello messages
      period (in seconds).

      * hello-triggered-delay: <u32>

      This optional statement is used to configure the randomized triggered
      delay of the PIM Hello messages (in seconds).

    - Addition of new MLD/IGMP related configuration statements:

      * version: <u32>

      This optional statement is used to configure the MLD/IGMP
      protocol version per virtual interface.

      * enable-ip-router-alert-option-check: <bool>

      This optional statement is used to enable the IP Router Alert option
      check per virtual interface.

      * query-interval: <u32>

      This optional statement is used to specify (per virtual interface)
      the interval between general queries.

      * query-last-member-interval: <u32>

      This optional statement is used to specify (per virtual interface)
      the maximum response time inserted into group-specific queries sent
      in response to leave group messages.

      * query-response-interval: <u32>

      This optional statement is used to specify (per virtual interface)
      the maximum response time inserted into the periodic general queries.

      * robust-count: <u32>

      This optional statement is used to specify (per virtual interface)
      the robustness variable count that allows tuning for the expected
      packet loss on a subnet.

    - Addition of support for user environmental variables CFLAGS_END and
      CXXFLAGS_END. Those variables can be used to specify the compiler
      flags (for the C and C++ compiler respectively) that must be after
      all other flags.

  LIBXORP:
    - Various improvements in the RunCommand implementation.

  LIBXIPC:
    - No significant changes.

  LIBFEACLIENT:
    - No significant changes.

  XRL:
    - No significant changes.

  RTRMGR:
    - Generalization of the %mandatory keyword syntax so now it can
      be used to specify any node or variable (multi-value nodes excluded)
      in the configuration tree. Previously it could be used to specify
      only configuration child nodes or variables.

    - Addition of support for read-only, permanent and user-hidden nodes
      (specified respectively by the new %read-only, %permanent and
       %user-hidden template commands).

    - Modification of the %allow and %allow-range semantics so a help string
      can be supplied for each allowed value or range.

    - Removal of the mechanism for specifying the hook for saving
      a configuration file (the "-s <app>" command-line argument).
      The mechanism is broken and is superseded by the rtrmgr template
      support for running external programs.

    - Various other improvements and bug fixes.

  XORPSH:
    - Addition of support to run xorpsh in non-interactive mode.

    - Modification of the configurational mode "show" command
      so now it displays parameters only if their value is not
      same as the default value.

    - Addition of command "show -all" that shows the complete configuration
      including the parameters with default values.

    - Modification to the "show" command output: in configuration mode
      all deleted (and uncommitted) entries are prefixed with "-".

    - Modification of the default operational and configuration mode
      prompts to "user@hostname> " and "user@hostname# " respectively.

    - Addition of support to modify the operational and configuration
      mode prompts by environmental variables
      XORP_PROMPT_OPERATIONAL and XORP_PROMPT_CONFIGURATION
      respectively.

    - Addition of support for command-line completion for allowed values.

    - Various other improvements and bug fixes.

  POLICY:
    - Several bug fixes.

  FEA/MFEA:
    - Addition of RawSocket{4,6} generic abstraction that is not
      multicast-specific.

  RIB:
    - Addition of support for displaying the routing tables in brief,
      detailed and terse format. The default format is "brief".

   - Few bug fixes.

  RIP/RIPng:
    - The syntax for configuring the authentication mechanism has changed:

      OLD:
      authentication {
          type: "plaintext"
          password: "FOO"
      }
      OR
      authentication {
          type: "md5"
          password: "FOO"
      }

      NEW:
      authentication {
          simple-password: "FOO"
      }
      OR
      authentication {
          md5 1 {             /* KeyID: [0, 255] */
              password: "FOO"
              start-time: "YYYY-MM-DD.HH:MM"
              end-time: "YYYY-MM-DD.HH:MM"
          }
      }

    - Several bug fixes.

  OSPF:
    - Initial implementation of OSPF that replaces the third-party ospfd.

  BGP:
    - The network4/network6 directives have been deprecated.
      If you wish to inject static routes into BGP, you must now add
      these routes to the static_routes protocol block, and then configure
      the policy engine to redistribute them to BGP.

    - Proper support for policy filters.

    - Addition of support for route flap damping.

    - Addition of support for route aggregation.

    - Addition of support for route reflection.

    - Addition of support for confederations.

    - Bug fix to correctly handle connection collisions.

    - Addition of default support for NO_EXPORT, NO_ADVERTISE, and
      NO_EXPORT_SUBCONFED well-known communities.

    - Addition of the capability to reconfigure a peering (e.g., from IBGP to
      EBGP) which requires re-configuring the default filters.

    - Numerous bug fixes that should greatly improve stability.

  STATIC_ROUTES:
    -  Several bug fixes.

  MLD/IGMP:
    - No significant changes.

  PIM-SM:
    - Updated to support the lastest PIM-SM specification
      (draft-ietf-pim-sm-v2-new-11.{ps,txt}).

    - Addition of support to disable the "wrong iif" kernel upcall on
      interfaces we don't need to monitor.

    - Bug fix related to the handling of the deleted MRIB entries.

    - Bug fix related to transmitting AssertCancel message when
      a PIM configured interface is gracefully shutdown.

  FIB2MRIB:
    - Several bug fixes.

  CLI:
    - Various improvements and bug fixes.

  SNMP:
    - No significant changes.

Release 1.1 (2005/04/13)
=========================
  ALL:
    - Numerous improvements, bug fixes and cleanup.

    - XORP now builds on amd64+OpenBSD-3.6-current.

    - The --enable-advanced-mcast-api flag to "./configure" has been
      replaced  with the --disable-advanced-multicast-api flag.

    - Addition of support for code execution profiling.

    - Currently "gmake" does not build the regression tests.
      The command "gmake check" should be used to build and run the
      regression tests.

    - Addition of two new documents:
      * "An Introduction to Writing a XORP Process"
      * "XORP User Manual"

  CONFIGURATION:
    - All "enabled: true/false" XORP configuration flags are now
      renamed to "disable: false/true".

    - The syntax for configuring the IPv4/IPv6 forwarding has changed:

      OLD:
      fea {
          enable-unicast-forwarding4: true
          enable-unicast-forwarding6: true
      }

      NEW:
      fea {
          unicast-forwarding4 {
              disable: false
          }

          unicast-forwarding6 {
              disable: false
          }
      }

    - The syntax for configuring the AFI/SAFI combinations in BGP has
      changed:

      OLD:
      bgp {
          peer <peer_name> {
              enable-ipv4-multicast
              enable-ipv6-unicast
              enable-ipv6-multicast
          }
      }

      NEW:
      bgp {
          peer <peer_name> {
              ipv4-unicast: true
              ipv4-multicast: true
              ipv6-unicast: true
              ipv6-multicast: true
          }
      }
      The new syntax allows IPv4 unicast to be disabled which was not
      previously possible.

    - The syntax for configuring the nexthop router address for static
      routes has changed:

      OLD:
      nexthop: <IP address>

      NEW:
      next-hop: <IP address>

  LIBXORP:
    - Bug fix in ordering events scheduled at exactly the same time
      and expiring at exactly the same time.

    - Various improvements to the eventloop implementation.

    - Addition of a mechanism for buffered asynchronous reads and writes.

  LIBXIPC:
    - Addition of XRL pipelining support.

    - The Finder client address can be defined by the following variable
      in the environment: XORP_FINDER_CLIENT_ADDRESS.
      The Finder server address and port can be defined by the following
      variables in the environment: XORP_FINDER_SERVER_ADDRESS and
      XORP_FINDER_SERVER_PORT respectively.
      Those changes re-enable communicating with remote XORP processes.

    - Various other improvements (including performance) and bug fixes.

  LIBFEACLIENT:
    - Few bug fixes.

  XRL:
    - No significant changes.

  RTRMGR:
    - Addition of a new rtrmgr template keyword:
      %deprecated: "Reason".
      This keyword can be used to deprecate old configuration statements.

    - Addition of a new rtrmgr keyword: %update.
      It is similar to %activate, and is called whenever the configuration
      in the subtree has changed.

    - Modification to the rtrmgr template semantics: the XRLs per template
      nodes are sent in the order those nodes are declared in the template
      files. Previously, the order was alphabetical (by the name of the
      template nodes).

    - Various other improvements and bug fixes.

  XORPSH:
    - Addition of a mechanism to track the status of the modules, and
      to provide operational commands for only those modules that are
      running.

    - Various other improvements and bug fixes.

  POLICY:
    - Initial implementation of a policy manager. It is still being tested,
      and should not be used.

  FEA/MFEA:
    - Implementation of Click FEA support.

    - Addition of support for discard interfaces and discard routes.

    - Addition of support for adding interface-specific routes.

    - Addition of support for ACLs, though currently there is no mechanism
      to configure them through the XORP configuration file.

    - Initial support for raw sockets.

    - Various bug fixes, improvements and cleanup.

  RIB:
    - Bug fix in adding point-to-point network interfaces.

    - Removal of the old mechanism (ExportTable) for propagating
      the routes to the FEA and all other interested parties.

    - Removal of hard-wired "static" table.

    - Various other improvements and bug fixes.

  RIP/RIPng:
    - MD5 authentication now works properly. Previously, it was generating
      the wrong signature.

    - Cisco compatibility bug fix.

  BGP:
    - Addition of support for creating IPv6 TCP connections.

    - Few bug fixes in the Multi-protocol support.

    - Major improvements to the flow control mechanism.

    - Various improvements and bug fixes.

  STATIC_ROUTES:
    -  Addition of configuration support for interface-specific static
       routes.

    - Improvements in handling stored routes if they are affected by
      network interface information updates.

    - Addition of support for tracking the state of the relevant
      processes, and for graceful registering/deregistering with them.

    - Addition of support for better checking of the XRL error codes.

    - Few other improvements and bug fixes.

  MLD/IGMP:
    - Bug fix in updating the primary address of an interface.

    - Addition of support for tracking the state of the relevant
      processes, and for graceful registering/deregistering with them.

    - Addition of support for better checking of the XRL error codes.

    - Addition of support for better queueing of the outgoing XRLs
      so their ordering is preserved.

    - Few other improvements and bug fixes.

  PIM-SM:
    - Bug fixes in handling the MRIB entries and MRIB-related state.

    - Bug fix in scheduling the internal PimMre tasks.

    - Bug fix in updating the primary address of an interface.

    - Bug fix in the computation of the checksum of PIM Register packages
      received from a Cisco router that itself is not spec-compliant in the
      checksum computation.

    - Addition of support for tracking the state of the relevant
      processes, and for graceful registering/deregistering with them.

    - Addition of support for better checking of the XRL error codes.

    - Addition of support for better queueing of the outgoing XRLs
      so their ordering is preserved.

    - Various other bug fixes, improvements and cleanup.

  FIB2MRIB:
    - Bug fixes when adding and deleting the Fib2Mrib entries.

    - Improvements in handling stored routes if they are affected by
      network interface information updates.

    - Addition of support for tracking the state of the relevant
      processes, and for graceful registering/deregistering with them.

    - Addition of support for better checking of the XRL error codes.

    - Few other bug fixes and improvements.

  CLI:
    - Bug fix in <SPACE> auto-completion for sub-commands.

    - Few other bug fixes and improvements.

  SNMP:
    - No significant changes.

Release 1.0 (2004/07/08)
=========================
  ALL:
    - All the routing processes can now be started and configured via the
      RTRMGR/XORPSH.

  LIBXORP:
    - Addition of support for safe callbacks (e.g., if an object is
      destroyed, all callbacks that refer to that object are invalidated).

  LIBXIPC:
    - Addition of support for event notification if the status of a target
      changes.

  LIBFEACLIENT:
    - Few bug fixes.

  XRL:
    - No significant changes.

  RTRMGR:
    - Addition of new command-line option "-v" to print verbose information.

    - Removal of command-line option "-d" that prints default information,
      because the same information is printed with the "-h" flag.

    - Addition of support for explicit configuration of the XRL target name of
      a module.

    - Addition of support for %help command in the rtrmgr template files.

    - Addition of support for new methods per module: "startup_method"
      and "shutdown_method".

    - Numerous other improvements and bug fixes.

  XORPSH:
    - Addition of new command-line option "-v" to print verbose information.

    - Removal of command-line option "-d" that prints default information,
      because the same information is printed with the "-h" flag.

    - Addition of support for help string in the xorpsh operational
      commands template files.

    - Addition of support for positional arguments in the xorpsh operational
      commands template files.

    - Addition of support to interrupt an operational command.
      Now if a command is interrupted from the command line by typing Ctrl-C,
      then the executed binary command itself (and its forked children, if any)
      is killed.

    - Numerous other improvements and bug fixes.

  FEA/MFEA:
    - Addition of support for propagating the Forwarding Information Base
      from the underlying system to clients interested in that information.

    - Addition of support for opening TCP or UDP sockets via the FEA.

    - Modification to the MFEA to use "libfeaclient" to obtain the interface
      information from the FEA.

    - Numerious bug fixes.

  RIB:
    - Addition of support for redistributing routes between two internal
      tables.

    - Addition of support for obtaining routes directly from some of the
      internal tables.

    - Modification to the RIB to use "libfeaclient" to obtain the interface
      information from the FEA.

    - Modification to the RIB to use the new RedistTable to propagate
      the final routes to the FEA and anyone else interested (e.g., PIM-SM).

    - Few bug fixes.

  RIP/RIPng:
    - Packet forwarding and reception via FEA written for RIPv2 and RIPng.
      RIPv2 should be usable.

  BGP:
    - IPv6 has now been tested with peerings to the 6Bone; unicast and
      multicast SAFIs.

    - Route origination is now possible from BGP.

    - The memory leaks from the previous release have been found and fixed.

  STATIC_ROUTES:
    - This is a new module for configuring static routes to the
      unicast or multicast RIB.

  MLD/IGMP:
    - During startup, a primary address is selected per configured interface,
      and this primary address should be the link-local unicast address
      of that interface.

    - New CLI commands: "show igmp interface address" and
      "show mld interface address"

    - Resend some of the XRLs (e.g., those who do not carry soft-state
      such as protocol control messages) if there is an error.

    - Few bug fixes.

  PIM-SM:
    - Updated to support the lastest PIM-SM specification
      (draft-ietf-pim-sm-v2-new-09.{ps,txt}).

    - Addition of support for "alternative subnet" configuration such that
      non-local senders appear as senders connected to the same subnet.
      It is needed as a work-around solution when there are uni-directional
      interfaces for sending and receiving traffic (e.g., satellite links).

    - During startup, a primary address and a domain-wide address are
      selected per configured interface.
      The primary address should be the link-local unicast address
      of that interface, and the domain-wide address should be a domain-wide
      reachable unicast address.

    - Resend some of the XRLs (e.g., those who do not carry soft-state
      such as protocol control messages) if there is an error.

    - Several bug fixes.

  FIB2MRIB:
    - This is a new module for propagating the unicast forwarding information
      obtained from the underlying system via the FEA to the multicast RIB.

  CLI:
    - Addition of support to propagate command interruption (e.g., Ctrl-C)
      from the CLI to the object that handles the command processing
      by calling a pre-defined callback.

    - During startup, if the input is a terminal (e.g., xorpsh), then
      read the terminal size instead of using the default values.

    - A bug fix related to the CLI paging output: now it can handle properly
      lines that are longer than the width of the CLI output terminal.

    - Several other bug fixes.

  SNMP:
    - No significant changes.


Release 0.5 (2003/11/06)
========================
  ALL:
    - New library libfeaclient to simplify interface configuration
      replication and event reception.

  LIBXORP:
    - Addition of ServiceBase class (service.hh) for asynchronous
      process components that might provide a service.  The
      ServiceBase contains status information, (e.g. starting,
      running, shutting down, shutdown) and methods for triggering
      status changes (e.g.start, shutdown).  It also provides an
      interface for observers to be notified of state changes.

    - Addition of ctype(3) wrappers that work properly even if the
      value of the int argument is not representable as an unsigned
      char and doesn't have the value of EOF.

  LIBXIPC:
    - Minor refactoring and code clean-up.

    - Fixes to XrlAtom binary marshalling methods and test code for
      checking this functionality in future.

  LIBFEACLIENT:
    - Added to project.  Provides interface configuration tree
      mirroring and update event notification.  Intended to unify how
      this data is replicated between processes.

  XRL:
    - kdoc generation nits.

  RTRMGR:
    - Fix the process name of a started proces to be the same
      as the binary name.

    - Minor code cleanup.

  XORPSH:
    - No significant changes.

  FEA/MFEA:
    - Added Linux Netlink support for writing network interface information,
      and routing entries to the kernel, and for observing the change of
      that information in the kernel.

    - Completed support for Linux /proc parsing to return network interface
      information.

    - Added support for NetBSD and OpenBSD to the unicast FEA.

    - Added compilation-time check whether the underlying system
      supports IPv6 multicast and IPv6 multicast routing, and isolate
      the compilation of all MFEA code that is specific to IPv6 multicast
      and IPv6 multicast routing.

    - Added support for run-time check whether the underlying system
      supports IPv4 or IPv6 multicast routing.

    - Various bug fixes and cleanup

  RIB:
    - No significant changes.

  BGP:
    - Supports multiprotocol IPv6.

    - The code for multicast SAFI is enabled but is untested.

    - MED processing is now deterministic.

    - A memory leak exists.

  MLD/IGMP:
    - No significant changes.

  PIM-SM:
    - A bug fix related to the removal of timed-out multicast forwarding
      entries.

  CLI:
    - Change slightly the command-line editing, so now Ctrl-W deletes
      the word before the cursor. Before, Ctrl-W would delete the
      whole line.

    - Apply a fix to libtecla in network mode such that
      keyboard-generated signals are not propagated to the process
      we have connected to.

  SNMP:
    - No significant changes.

  RIP/RIPng:
    - Code added to talk to FEA and RIB.  To become functional it
      still requires the ability to send packets and receive UDP
      packets through the FEA (work in progress).

Release 0.4 (2003/08/28)
========================
  ALL:
    - Rename all process names from "foo" to "xorp_foo":
      bgp -> xorp_bgp
      fea -> xorp_fea
      fea_dummy -> xorp_fea_dummy
      finder -> xorp_finder
      ospfd -> xorp_ospf
      rib -> xorp_rib
      rtrmgr -> xorp_rtrmgr

    - Added support for "gmake install" that installs the required
      XORP pieces under /usr/local/xorp.
      Currently, the installed subdirectories and files follow
      the organization in the XORP source code tree.
      Only the following binaries are installed in subdirectory "bin":
      call_xrl, xorp_rtrmgr, xorpsh.

    - Removed old directory "mfea", because it is not needed anymore
      (all the MFEA code has been merged with the FEA).

    - The code does not compile anymore on MacOS X 10.2.x (or earlier),
      due to compiler issues. After Apple starts distributing a better
      compiler (probably with MacOS X 10.3.x?), then attempt will be
      made to keep the code compiling again on MacOS X.

  LIBXORP:
    - Added pre-order iterators for Trie and RefTrie.

  LIBXIPC:
    - Addition of virtual methods in XrlRouter to provide processes with
      an opportunity to detect finder connection, registration, and
      disconnection events.

  XRL:
    - Minor changes to clnt-gen that changes the names of some typedefs.

  RTRMGR:
    - Now all relative paths to templates, xrl files, configuration
      files, etc are computed relative to the root of the XORP tree.
      The root is computed in the following order:
      1. The shell environment XORP_ROOT (if exists).
      2. The parent directory the rtrmgr is run from
         (only if it contains the etc/templates and the xrl/targets
         directories).
      3. The XORP_ROOT value as defined in config.h (currently this is
         the installation directory, and it defaults to /usr/local/xorp).

  XORPSH:
    - Now all relative paths to executable commands are computed
      relative to the root of the XORP tree. The root is computed
      similar to the rtrmgr root (see above), except that in step (2)
      we consider the parent directory the xorpsh is run instead.

  FEA/MFEA:
    - Bug fix: if the multicast protocol to start/stop is PIM, then start/stop
      PIM multicast routing in the kernel.

    - Bug fix (Linux-specific): if IGMP/MLD is enabled, then the multicast
      router will properly receive all IGMP/MLD messages.

    - Added support to enable/disable unicast forwarding in the kernel
      via the FEA.
      Currently, the support is only for FreeBSD, but is not used yet.
      Hence, the user must explicitly enable unicast forwarding
      before starting XORP.
      E.g., in case of FreeBSD run `sysctl net.inet.ip.forwarding=1`
      as root. In case of Linux run
      `echo 1 > /proc/sys/net/ipv4/ip_forward` as root.

    - Fix a compilation problem for NetBSD
      (courtesy Hitoshi Asaeda <Hitoshi.Asaeda@sophia.inria.fr>
      and Jun-ichiro itojun Hagino <itojun@iijlab.net>).

    - Initial support for Linux /proc parsing to return network interface
      information (work in progress).

    - Bug fixes in setting the broadcast or p2p flags and addresses
      in the FEA internal interface tree (IfTree).

    - Bug fix in computing the minimum size of a message received
      on a routing socket.

    - Change the MFEA configuration scripts so now the IPv4/IPv6 setup
      is controlled by a single variable IP_VERSION that should be
      either IPV4 or IPV6. Note that those configuration scripts
      are temporary solution until the MFEA is integrated with
      the rtrmgr.

  RIB:
    - No significant changes.

  BGP:
    - Update packets with unknown path attributes are now correctly handled.

  MLD/IGMP:
    - Change the "RX" log messages to include the vif name a message was
      received on.

    - Initial support for returning the process status via get_status XRL.

    - Change the MLD/IGMP configuration scripts so now the IPv4/IPv6 setup
      is controlled by a single variable IP_VERSION that should be
      either IPV4 or IPV6. Note that those configuration scripts
      are temporary solution until the MLD/IGMP is integrated with
      the rtrmgr.

  PIM-SM:
    - Change the "RX" log messages to include the vif name a message was
      received on.

    - Change the PIM configuration scripts so now the IPv4/IPv6 setup
      is controlled by a single variable IP_VERSION that should be
      either IPV4 or IPV6. Note that those configuration scripts
      are temporary solution until the PIM is integrated with
      the rtrmgr.

    - Implement Join/Prune items fragmentation across Join/Prune messages
      when generating Join/Prune messages.

    - Fix some of the XRL names related to static RP configuration
      in the configuration shell scripts.

    - Fix the generation of Assert messages when data packets are received
      on the wrong interface; in addition, the Assert messages triggered
      by data packets are rate-limited to one Assert message/s (on
      average, per (S,G) or (*,G) routing entry).

    - Implement an optimization when generating Assert messages
      triggered by the data packets received on the wrong interface:
      suppress the second Assert message that is a duplicate.

    - Implement bandwidth-prorated SPT switch triggering:
      The SPT switch can be triggered at the last-hop router if the
      bandwidth from a given source is above a configured threshold.
      In addition, the same mechanism is implemented in the RP as well
      (not in the spec, where the SPT switch in the RP is always triggered
      by the first packet).

    - Keep various PIM-related statistics (e.g., number of sent
      or received PIM control messages per interface, etc), and add
      the appropriate XRL interface to get or reset those statistics.

    - Modify slightly the "show pim join" CLI output. E.g., print
      "Could assert WC:" for all entries, print "Could assert SG:"
      for (S,G,rpt) as well, etc.

    - Bug fix: when receiving IPv6 PIM packets, use the IPv6-specific
      pseudo-header to compute the checksum.

  CLI:
    - On exit, restore the original terminal flags in case of stdio-based
      CLI access. This should fix a bug when running xorpsh from sh/bash
      and pressing Ctrl-D leaves sh/bash in non-echo mode.

    - Reverse the key binding of 'j' and 'k' in page mode. Now the
      binding is same as in "vi/more/less":
      'j' scroll down one line, while 'k' scroll up one line.

  SNMP:
    - Full implementation of BGP4-MIB module (RFC 1657) including traps.

  RIP/RIPng:
    - Implementation functionally operational save communication with the RIB
      for injecting routes, the FEA to send and receive packets, FEA
      interface monitoring code, and an XRL interface for configuration.

Release 0.3 (2003/06/09)
========================
  ALL:
    - Compilation fixes for GCC3.3 on FreeBSD 4.8R.

    - Cross directory build and gmake check support.

    - Purge of abort() calls.  Replacement by XLOG_UNFINISHED,
      XLOG_UNREACHABLE and XLOG_ASSERT as appropriate, or in some
      cases better error handling code.

    - Change to autoconf-2.53 and automake-1.5 as standard autotool versions.
      The older autoconf-2.13 and automake-1.4 should still work.

    - Remove the multicast-specific timer implementation, and
      use instead the default Xorp timers (XorpTimer).

  LIBXORP:
    - Allocation without construction bug fixed in SelectorList code.  Fixes
      potential for junk values and sanity checking when the number of active
      file descriptors is large.

    - Addition of status codes for XORP processes to report operational
      state (to the rtrmgr).

    - Addition of XLOG_UNFINISHED and XLOG_UNREACHABLE to xlog.h.

    - Explicitly disable copy constructor and assignment operator for
      EventLoop.

    - Replacement of traditional struct timeval with TimeVal class.  TimeVal
      comes with constructors and numerous helper methods.

    - IPvXNet methods renaming:
      get_ipv4Net() -> get_ipv4net()
      get_ipv6Net() -> get_ipv6net()

  LIBXIPC:
    - Removal of 0.1 release Finder code and compatibility shims that allowed
      newer and older code to co-exist.  Renaming of "FinderNG" classes
      and files to "Finder".

    - Use of class and instance names and Finder policy for having a
      primary instance in a class (first registered is primary, then second
      in case first exits/fails, and so forth).

    - Support for tunneling XRLs and XRL responses to and from the Finder.

    - Implementation event notification through the Finder using tunneled
      XRLs.  XRL Targets can now request to be notified of the birth and
      death of other XRL Targets by the Finder.

    - Reduced number of XrlErrors to hopefully simplify handling errors.

    - Addition of new enumated type XrlErrorCode and change
      XrlError::error_code method to return this type.  Allows compiler to
      detect unhandled error types in switch statements (if default case is
      not used).

    - Finder clients no longer reconnect to the Finder should they lose their
      connection per ${XORP}/docs/design_arch/error_handling.tex.

    - Increased Finder timeout for call_xrl.

    - Fix memory corruption following Finder transport error events.

    - Convert all code to use FinderServer class when they need to instantiate
      a Finder.

    - More consistent handling of defaults on send and receive sides of Finder.

    - Fix xrl_parser_input.cc handling of absolute file names.

    - Assorted minor clean-ups.

  XRL:
    - Addition of get_status and shutdown methods to the common interface.

  RTRMGR:
    - Workaround for yacc incompatibilities on newer Redhat releases.

    - Implement a new TaskManager, which handles actually doing the
      work during a commit, starting processes and validating that they
      start, dependency interlocking between processes, and shutting
      down processes that are no longer needed.

    - rtrmgr will now shutdown processes after they are not needed.

    - rtrmgr can now use the common XRL call get_status to monitor
      process state, and the common XRL shutdown to gracefully shutdown a
      process.  Added new modinfo subcommands to specify when to use
      XRLs for these tasks.

    - Use system MD5 for authentication.

    - Better config file string parser.

    - Add tinderbox tests to cover some of the basic functionality.

    - Better error handling (more compliant with XORP Error Handling
      document).

  XORPSH:
    - Ctrl-C now terminates the current command,  Ctrl-D exits xorpsh.

  FEA:
    - MFEA code merged with the unicast FEA, though logically the MFEA
      is still a separate entity.

    - Refactoring of FEA internals regarding reading/writing/observing
      interfaces-related information and forwarding-table related
      information.

    - Support for few more OS-specific methods for reading
      interface-related information or forwarding table related information.

    - Addition of IPv6 support (where missing) for reading/writing information
      regarding network interfaces or the unicast forwarding table.

    - Addition of a command-line option to ``fea'' and ``fea_dummy'' to
      specify the finder hostname and port number.

    - On startup and shutdown remove from the kernel all forwarding entries
      added by the fea.

    - Addition of XRLs to obtain information about all network interfaces
      (i.e., not only those that are configured by the rtrmgr).
      Should be used only for debugging purpose (though temporary they
      are used by the MFEA as well).

    - ``fea_rtsock'' deprecated (replaced with the generic ``fea'').

  RIB:
    - Export a RIB table to any target that registers interest.

    - Replace fea_fti/0.1 XRL interface with fti/0.2.  The new interface
      introduces metric, admin_distance and protocol_origin when RIB
      information is propagated to the RIB clients.

    - Refactoring of the Vif manager implementation.

    - Support for returning the process status through the get_status
      XRL and shutting down using the shutdown XRL.

  BGP:
    - More robust to XRL communication failures. In particular support
      for retransmission.

    - Replace calls to abort() with more self-explanatory self-destruction.

    - Terminate interface removed and replaced with common shutdown XRL
      interface.

    - Use system md5 header files.

    - Peer list sorted by remote IP for snmp.

    - Uninitialised variable bug fix in NextHopRibRequest.

    - Initial support for returning the process status via get_status XRL.

  MFEA:
    - MFEA code merged with the unicast FEA, though logically the MFEA
      is still a separate entity.
      As part of the merging process, the MFEA now obtains the information
      about network interfaces and the unicast forwarding table from the
      FEA instead of the the kernel.

    - Addition of a check for Router Alert IP option.

    - Enable receiving of hop-by-hop options.

    - Replace all MLD6_XXX with MLD_XXX (following KAME's recommendation).

    - Compilation fixes for NetBSD-current (and probably NetBSD-1.6.1)
      (courtesy Hitoshi Asaeda <Hitoshi.Asaeda@sophia.inria.fr>).

    - Initial support for returning the process status via get_status XRL.

    - Addition of a command-line option to ``test_mfea'' to specify the
      finder hostname and port number.

    - Misc. bug fixes, internal code refactoring, and cleanup.

  MLD/IGMP:
    - Protocol implementation testing completed.

    - Replace all MLD6_XXX with MLD_XXX (following KAME's recommendation).

    - Unify some of the MLD and IGMP protocol-specific code.

    - Support for configurable setting of the protocol version per vif.

    - Addition of a command-line option to ``test_mld6igmp'' to specify the
      finder hostname and port number.

    - Misc. bug fixes.

  PIM-SM:
    - Configuration-related fixes.

    - Rename RP-related configuration commands and XRLs:
      OLD: add_config_rp{4,6}, delete_config_rp{4,6}, config_rp_done
      NEW: add_config_static_rp{4,6}, delete_config_static_rp{4,6},
           config_static_rp_done

    - Addition of XRL interface to receive MRIB-related updates
      from the RIB; the interface is not used yet.

    - Initial support for returning the process status via get_status XRL.

    - Addition of a mechanism that should hold-off PIM-SM status
      to PROC_NOT_READY until it has received all necessary confirmation
      from both MFEA and MLD/IGMP.

    - Addition of PIM configuration option and XRL interface to configure
      the SPT-switch bandwidth threshold.  Currently, the SPT-switch is
      enabled only for the corner cases: switch on the first packet, or
      never switch.

    - Addition of a command-line option to ``test_pim'' to specify the
      finder hostname and port number.

  CLI:
    - Critical bug fix (could be triggered if a program like
      ${XORP}/pim/test_pim is run in background, and is accessed
      by the built-in CLI).

    - Addition of Ctrl-C handling:
      o If Ctrl-C is hit before <Enter>, then cancel the current line
        and present a new prompt.
      o If Ctrl-C is hit while waiting for command completion, then
        cancel the wait and present a new prompt.

    - Removed the 5 seconds timer that would timeout the waiting for
      command completion (the user can use Ctrl-C to cancel the wait).

    - Enable receiving Ctrl-C if the input is stdio (e.g., in case of xorpsh).

  SNMP:
    - Integrated with Net-SNMP agent.

    - Implemented bgpVersion and bgpPeerTable from BGP4-MIB (RFC 1657).

  RIP/RIPng:
    - Implementation started.

Release 0.2 (2003/03/10)
========================

  ALL:
    - Source code compiles under GCC 3.2.1 and on Mac OS X 10.2.x (GCC 3.1)
      in addition to GCC 2.95.x and 2.96.

  LIBXORP:
    - Add libxorp/ref_trie.hh :
      Implementation of a trie to support route
      lookups.  Based on trie.hh, but with reference-counted storage
      supporting delayed deletion.

  LIBXIPC:
    - Complete re-implementation of the XRL finder, so that
      registration/deregistration to the finder uses XRLs.

  RTRMGR:
    - Add operational-mode commands for monitoring BGP routes and
      peers, and VIF/interface state.

    - Re-implement how rtrmgr decides when to start processes.  This
      fixes a few bugs in the dependency tracking - prior to this the
      RIB would not be started because it requires no direct configuration.

  FEA:
    - Bug fixes.

  RIB:
    - Ensure that the originating protocol is propagated throughout
      the RIB.

    - Fix bug where routes for directly connected interfaces were
      incorrectly being fed back to the FEA (which didn't expect to
      see add_route for these subnets).

  BGP:
    - XRL interfaces for monitoring BGP peers and the complete BGP
      routing table added.  Helper programs bgp/tools/show_routes and
      bgp/tools/show_peers added, along with versions of these for
      running from xorpsh.

    - Support for adding/removing MEDs added.

    - BGP message handling and Path Attribute handling re-written to
      be much cleaner and more efficient.

    - Re-structured the BGP peer state machine to make the code easier
      to understand.

    - Change BGP to use reference-counted tries.  This greatly
      simplifies the implementation of background tasks.

    - Correctly handle unrecognized optional transitive attributes.

    - Merge isolation tests into a single binary.

    - Added BGP/RIB/FEA integration tests.

    - Too many bug fixes to list.

  MFEA:
    - Minor bug fixes.

  MLD/IGMP:
    - No changes.

  PIM-SM:
    - PIM-SM Bootstrap mechanism reimplemented and tested.
      Note that the Bootstrap-related configuration commands in
      pim/configure_pim have changed slightly.

    - Detailed testing of the basic protocol and the Bootstrap mechanism
      completed and documented in the XORP PIM-SM Test Suite document.

    - Numerous bug fixes.


Release 0.1 (2002/12/11)
========================

  - First public release.

  - CVS repository opened to the world.
