Code in this directory is made available under the following licence:

  ---------------------------------------------------------------------------
  Copyright (c) 2007, 2008 by Juliusz Chroboczek
  
  Permission is hereby granted, free of charge, to any person obtaining a copy
  of this software and associated documentation files (the "Software"), to deal
  in the Software without restriction, including without limitation the rights
  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  copies of the Software, and to permit persons to whom the Software is
  furnished to do so, subject to the following conditions:
  
  The above copyright notice and this permission notice shall be included in
  all copies or substantial portions of the Software.
  
  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  THE SOFTWARE.
  ---------------------------------------------------------------------------

The code also makes calls to and links with the "libzebra" code of Quagga,
in the lib/ directory of this project, which is subject to the GPL licence
as given in the top-level COPYING file included with Quagga.

Contributors to the code in babeld/ are asked to make their work available
under the same MIT/X11 licence as given immediately above.  Please indicate
your assent to this by updating this file and appending the appropriate

  Copyright <year> <Author name>, <author contact details>

line to the existing copyright assertion lines in the MIT/X11 licence text
above in this file.
