**breaking** consolidate src/tlv/*lsa* into src/lsa/*lsa*

Lsa de/serialize functions are replaced by wireEncode/Decode.
Update LSA wire formats. Change TLV assignments as required.
Update nlsrc to print using new encoding.

refs: #4787

Change-Id: Ie8d40b7836d51ea5bb444c8db208dc2b3a0d1cec
diff --git a/src/tlv/adjacency-lsa.cpp b/src/tlv/adjacency-lsa.cpp
deleted file mode 100644
index 72f138b..0000000
--- a/src/tlv/adjacency-lsa.cpp
+++ /dev/null
@@ -1,138 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/*
- * Copyright (c) 2014-2018,  The University of Memphis,
- *                           Regents of the University of California,
- *                           Arizona Board of Regents.
- *
- * This file is part of NLSR (Named-data Link State Routing).
- * See AUTHORS.md for complete list of NLSR authors and contributors.
- *
- * NLSR is free software: you can redistribute it and/or modify it under the terms
- * of the GNU General Public License as published by the Free Software Foundation,
- * either version 3 of the License, or (at your option) any later version.
- *
- * NLSR is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
- * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE.  See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * NLSR, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "adjacency-lsa.hpp"
-#include "tlv-nlsr.hpp"
-
-#include <ndn-cxx/util/concepts.hpp>
-#include <ndn-cxx/encoding/block-helpers.hpp>
-
-namespace nlsr {
-namespace tlv {
-
-BOOST_CONCEPT_ASSERT((ndn::WireEncodable<AdjacencyLsa>));
-BOOST_CONCEPT_ASSERT((ndn::WireDecodable<AdjacencyLsa>));
-static_assert(std::is_base_of<ndn::tlv::Error, AdjacencyLsa::Error>::value,
-              "AdjacencyLsa::Error must inherit from tlv::Error");
-
-AdjacencyLsa::AdjacencyLsa()
-  : m_hasAdjacencies(false)
-{
-}
-
-AdjacencyLsa::AdjacencyLsa(const ndn::Block& block)
-{
-  wireDecode(block);
-}
-
-template<ndn::encoding::Tag TAG>
-size_t
-AdjacencyLsa::wireEncode(ndn::EncodingImpl<TAG>& block) const
-{
-  size_t totalLength = 0;
-
-  for (std::list<Adjacency>::const_reverse_iterator it = m_adjacencies.rbegin();
-       it != m_adjacencies.rend(); ++it) {
-    totalLength += it->wireEncode(block);
-  }
-
-  totalLength += m_lsaInfo.wireEncode(block);
-
-  totalLength += block.prependVarNumber(totalLength);
-  totalLength += block.prependVarNumber(ndn::tlv::nlsr::AdjacencyLsa);
-
-  return totalLength;
-}
-
-NDN_CXX_DEFINE_WIRE_ENCODE_INSTANTIATIONS(AdjacencyLsa);
-
-const ndn::Block&
-AdjacencyLsa::wireEncode() const
-{
-  if (m_wire.hasWire()) {
-    return m_wire;
-  }
-
-  ndn::EncodingEstimator estimator;
-  size_t estimatedSize = wireEncode(estimator);
-
-  ndn::EncodingBuffer buffer(estimatedSize, 0);
-  wireEncode(buffer);
-
-  m_wire = buffer.block();
-
-  return m_wire;
-}
-
-void
-AdjacencyLsa::wireDecode(const ndn::Block& wire)
-{
-  m_hasAdjacencies = false;
-  m_adjacencies.clear();
-
-  m_wire = wire;
-
-  if (m_wire.type() != ndn::tlv::nlsr::AdjacencyLsa) {
-    BOOST_THROW_EXCEPTION(Error("Expected AdjacencyLsa Block, but Block is of a different type: #" +
-                                ndn::to_string(m_wire.type())));
-  }
-
-  m_wire.parse();
-
-  ndn::Block::element_const_iterator val = m_wire.elements_begin();
-
-  if (val != m_wire.elements_end() && val->type() == ndn::tlv::nlsr::LsaInfo) {
-    m_lsaInfo.wireDecode(*val);
-    ++val;
-  }
-  else {
-    BOOST_THROW_EXCEPTION(Error("Missing required LsaInfo field"));
-  }
-
-  for (; val != m_wire.elements_end(); ++val) {
-    if (val->type() == ndn::tlv::nlsr::Adjacency) {
-      m_adjacencies.push_back(Adjacency(*val));
-      m_hasAdjacencies = true;
-    }
-    else {
-      BOOST_THROW_EXCEPTION(Error("Expected Adjacency Block, but Block is of a different type: #" +
-                                  ndn::to_string(m_wire.type())));
-    }
-  }
-}
-
-std::ostream&
-operator<<(std::ostream& os, const AdjacencyLsa& adjacencyLsa)
-{
-  os << "AdjacencyLsa("
-     << adjacencyLsa.getLsaInfo();
-
-  for (const auto& adjacency : adjacencyLsa) {
-    os << ", " << adjacency;
-  }
-
-  os << ")";
-
-  return os;
-}
-
-} // namespace tlv
-} // namespace nlsr
diff --git a/src/tlv/adjacency-lsa.hpp b/src/tlv/adjacency-lsa.hpp
deleted file mode 100644
index 20c775d..0000000
--- a/src/tlv/adjacency-lsa.hpp
+++ /dev/null
@@ -1,176 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/*
- * Copyright (c) 2014-2018,  The University of Memphis,
- *                           Regents of the University of California,
- *                           Arizona Board of Regents.
- *
- * This file is part of NLSR (Named-data Link State Routing).
- * See AUTHORS.md for complete list of NLSR authors and contributors.
- *
- * NLSR is free software: you can redistribute it and/or modify it under the terms
- * of the GNU General Public License as published by the Free Software Foundation,
- * either version 3 of the License, or (at your option) any later version.
- *
- * NLSR is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
- * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE.  See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * NLSR, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef NLSR_TLV_ADJACENCY_LSA_HPP
-#define NLSR_TLV_ADJACENCY_LSA_HPP
-
-#include "lsa-info.hpp"
-#include "adjacency.hpp"
-
-#include <ndn-cxx/util/time.hpp>
-#include <ndn-cxx/encoding/block.hpp>
-#include <ndn-cxx/encoding/encoding-buffer.hpp>
-#include <ndn-cxx/encoding/tlv.hpp>
-#include <ndn-cxx/name.hpp>
-
-#include <list>
-
-namespace nlsr {
-namespace tlv {
-
-/*!
-   \brief Data abstraction for AdjacencyLsa
-
-   AdjacencyLsa := ADJACENCY-LSA-TYPE TLV-LENGTH
-                     LsaInfo
-                     Adjacency*
-
-   \sa https://redmine.named-data.net/projects/nlsr/wiki/LSDB_DataSet
- */
-class AdjacencyLsa
-{
-public:
-  class Error : public ndn::tlv::Error
-  {
-  public:
-    explicit
-    Error(const std::string& what)
-      : ndn::tlv::Error(what)
-    {
-    }
-  };
-
-  typedef std::list<Adjacency> AdjacencyList;
-  typedef AdjacencyList::const_iterator iterator;
-
-  AdjacencyLsa();
-
-  explicit
-  AdjacencyLsa(const ndn::Block& block);
-
-  const LsaInfo&
-  getLsaInfo() const
-  {
-    return m_lsaInfo;
-  }
-
-  AdjacencyLsa&
-  setLsaInfo(const LsaInfo& lsaInfo)
-  {
-    m_lsaInfo = lsaInfo;
-    m_wire.reset();
-    return *this;
-  }
-
-  bool
-  hasAdjacencies() const
-  {
-    return m_hasAdjacencies;
-  }
-
-  const std::list<Adjacency>&
-  getAdjacencies() const
-  {
-    return m_adjacencies;
-  }
-
-  AdjacencyLsa&
-  addAdjacency(const Adjacency& adjacency)
-  {
-    m_adjacencies.push_back(adjacency);
-    m_wire.reset();
-    m_hasAdjacencies = true;
-    return *this;
-  }
-
-  AdjacencyLsa&
-  clearAdjacencies()
-  {
-    m_adjacencies.clear();
-    m_hasAdjacencies = false;
-    return *this;
-  }
-
-  /*! \brief Encodes the Adjacent objects and some info using the method in TAG.
-   *
-   * This function will TLV-format the Adjacent objects and some LSA
-   * info using the implementation speciifed by TAG. Usually this is
-   * called with an estimator first to guess how long the buffer needs
-   * to be, then with an encoder to do the real work. This process is
-   * automated by the other wireEncode.
-   * \sa AdjacencyLsa::wireEncode()
-   */
-  template<ndn::encoding::Tag TAG>
-  size_t
-  wireEncode(ndn::EncodingImpl<TAG>& block) const;
-
-  /*! \brief Create a TLV encoding of this object.
-   *
-   * Create a block containing the TLV encoding of this object. That
-   * involves two steps: estimating the size that the information will
-   * take up, and then creating a buffer of that size and encoding the
-   * information into it. Both steps are accomplished by
-   * AdjacencyLsa::wireEncode(ndn::EncodingImpl<TAG>&)
-   */
-  const ndn::Block&
-  wireEncode() const;
-
-  /*! \brief Populate this object by decoding the one contained in the
-   * given block.
-   */
-  void
-  wireDecode(const ndn::Block& wire);
-
-  iterator
-  begin() const;
-
-  iterator
-  end() const;
-
-private:
-  LsaInfo m_lsaInfo;
-  bool m_hasAdjacencies;
-  AdjacencyList m_adjacencies;
-
-  mutable ndn::Block m_wire;
-};
-
-NDN_CXX_DECLARE_WIRE_ENCODE_INSTANTIATIONS(AdjacencyLsa);
-
-inline AdjacencyLsa::iterator
-AdjacencyLsa::begin() const
-{
-  return m_adjacencies.begin();
-}
-
-inline AdjacencyLsa::iterator
-AdjacencyLsa::end() const
-{
-  return m_adjacencies.end();
-}
-
-std::ostream&
-operator<<(std::ostream& os, const AdjacencyLsa& adjacencyLsa);
-
-} // namespace tlv
-} // namespace nlsr
-
-#endif // NLSR_TLV_ADJACENCY_LSA_HPP
diff --git a/src/tlv/adjacency.cpp b/src/tlv/adjacency.cpp
deleted file mode 100644
index b9adec9..0000000
--- a/src/tlv/adjacency.cpp
+++ /dev/null
@@ -1,140 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/*
- * Copyright (c) 2014-2018,  The University of Memphis,
- *                           Regents of the University of California,
- *                           Arizona Board of Regents.
- *
- * This file is part of NLSR (Named-data Link State Routing).
- * See AUTHORS.md for complete list of NLSR authors and contributors.
- *
- * NLSR is free software: you can redistribute it and/or modify it under the terms
- * of the GNU General Public License as published by the Free Software Foundation,
- * either version 3 of the License, or (at your option) any later version.
- *
- * NLSR is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
- * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE.  See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * NLSR, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "adjacency.hpp"
-#include "tlv-nlsr.hpp"
-
-#include <ndn-cxx/util/concepts.hpp>
-#include <ndn-cxx/encoding/block-helpers.hpp>
-
-namespace nlsr {
-namespace tlv {
-
-BOOST_CONCEPT_ASSERT((ndn::WireEncodable<Adjacency>));
-BOOST_CONCEPT_ASSERT((ndn::WireDecodable<Adjacency>));
-static_assert(std::is_base_of<ndn::tlv::Error, Adjacency::Error>::value,
-              "Adjacency::Error must inherit from tlv::Error");
-
-Adjacency::Adjacency()
-  : m_cost(0)
-{
-}
-
-Adjacency::Adjacency(const ndn::Block& block)
-{
-  wireDecode(block);
-}
-
-template<ndn::encoding::Tag TAG>
-size_t
-Adjacency::wireEncode(ndn::EncodingImpl<TAG>& encoder) const
-{
-  size_t totalLength = 0;
-
-  totalLength += prependNonNegativeIntegerBlock(encoder, ndn::tlv::nlsr::Cost, m_cost);
-
-  totalLength += encoder.prependByteArrayBlock(
-    ndn::tlv::nlsr::Uri, reinterpret_cast<const uint8_t*>(m_uri.c_str()), m_uri.size());
-
-  totalLength += m_name.wireEncode(encoder);
-
-  totalLength += encoder.prependVarNumber(totalLength);
-  totalLength += encoder.prependVarNumber(ndn::tlv::nlsr::Adjacency);
-
-  return totalLength;
-}
-
-NDN_CXX_DEFINE_WIRE_ENCODE_INSTANTIATIONS(Adjacency);
-
-const ndn::Block&
-Adjacency::wireEncode() const
-{
-  if (m_wire.hasWire()) {
-    return m_wire;
-  }
-
-  ndn::EncodingEstimator estimator;
-  size_t estimatedSize = wireEncode(estimator);
-
-  ndn::EncodingBuffer buffer(estimatedSize, 0);
-  wireEncode(buffer);
-
-  m_wire = buffer.block();
-
-  return m_wire;
-}
-
-void
-Adjacency::wireDecode(const ndn::Block& wire)
-{
-  m_name.clear();
-  m_uri = "";
-  m_cost = 0;
-
-  m_wire = wire;
-
-  if (m_wire.type() != ndn::tlv::nlsr::Adjacency) {
-    BOOST_THROW_EXCEPTION(Error("Expected Adjacency Block, but Block is of a different type: #" +
-                                ndn::to_string(m_wire.type())));
-  }
-
-  m_wire.parse();
-
-  ndn::Block::element_const_iterator val = m_wire.elements_begin();
-
-  if (val != m_wire.elements_end() && val->type() == ndn::tlv::Name) {
-    m_name.wireDecode(*val);
-    ++val;
-  }
-  else {
-    BOOST_THROW_EXCEPTION(Error("Missing required Name field"));
-  }
-
-  if (val != m_wire.elements_end() && val->type() == ndn::tlv::nlsr::Uri) {
-    m_uri.assign(reinterpret_cast<const char*>(val->value()), val->value_size());
-    ++val;
-  }
-  else {
-    BOOST_THROW_EXCEPTION(Error("Missing required Uri field"));
-  }
-
-  if (val != m_wire.elements_end() && val->type() == ndn::tlv::nlsr::Cost) {
-    m_cost = ndn::readNonNegativeInteger(*val);
-    ++val;
-  }
-  else {
-    BOOST_THROW_EXCEPTION(Error("Missing required Cost field"));
-  }
-}
-
-std::ostream&
-operator<<(std::ostream& os, const Adjacency& adjacency)
-{
-  os << "Adjacency("
-     << "Name: " << adjacency.getName() << ", "
-     << "Uri: " << adjacency.getUri() << ", "
-     << "Cost: " << adjacency.getCost() << ")";
-
-  return os;
-}
-
-} // namespace tlv
-} // namespace nlsr
diff --git a/src/tlv/adjacency.hpp b/src/tlv/adjacency.hpp
deleted file mode 100644
index 4046e8f..0000000
--- a/src/tlv/adjacency.hpp
+++ /dev/null
@@ -1,148 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/*
- * Copyright (c) 2014-2018,  The University of Memphis,
- *                           Regents of the University of California,
- *                           Arizona Board of Regents.
- *
- * This file is part of NLSR (Named-data Link State Routing).
- * See AUTHORS.md for complete list of NLSR authors and contributors.
- *
- * NLSR is free software: you can redistribute it and/or modify it under the terms
- * of the GNU General Public License as published by the Free Software Foundation,
- * either version 3 of the License, or (at your option) any later version.
- *
- * NLSR is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
- * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE.  See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * NLSR, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef NLSR_TLV_ADJACENCY_HPP
-#define NLSR_TLV_ADJACENCY_HPP
-
-#include <ndn-cxx/util/time.hpp>
-#include <ndn-cxx/encoding/block.hpp>
-#include <ndn-cxx/encoding/encoding-buffer.hpp>
-#include <ndn-cxx/encoding/tlv.hpp>
-#include <ndn-cxx/name.hpp>
-
-namespace nlsr {
-namespace tlv {
-
-/*!
-   \brief Data abstraction for Adjacency
-
-   Adjacency := ADJACENCY-TYPE TLV-LENGTH
-                  Name
-                  Uri
-                  Cost
-
-   \sa https://redmine.named-data.net/projects/nlsr/wiki/LSDB_DataSet
- */
-class Adjacency
-{
-public:
-  class Error : public ndn::tlv::Error
-  {
-  public:
-    explicit
-    Error(const std::string& what)
-      : ndn::tlv::Error(what)
-    {
-    }
-  };
-
-  Adjacency();
-
-  explicit
-  Adjacency(const ndn::Block& block);
-
-  const ndn::Name&
-  getName() const
-  {
-    return m_name;
-  }
-
-  Adjacency&
-  setName(const ndn::Name& name)
-  {
-    m_name = name;
-    m_wire.reset();
-    return *this;
-  }
-
-  const std::string&
-  getUri() const
-  {
-    return m_uri;
-  }
-
-  Adjacency&
-  setUri(const std::string& uri)
-  {
-    m_uri = uri;
-    m_wire.reset();
-    return *this;
-  }
-
-  uint64_t
-  getCost() const
-  {
-    return m_cost;
-  }
-
-  Adjacency&
-  setCost(uint64_t cost)
-  {
-    m_cost = cost;
-    m_wire.reset();
-    return *this;
-  }
-
-  /*! \brief TLV-encode this object using the implementation in from TAG.
-   *
-   * This method TLV-encodes this Adjacency object using the
-   * implementation given by TAG. Usually two implementations are
-   * provided: a size estimator and a real encoder, which are used in
-   * sequence to allocate the necessary block size and then encode it.
-   * \sa Adjacency::wireEncode()
-   */
-  template<ndn::encoding::Tag TAG>
-  size_t
-  wireEncode(ndn::EncodingImpl<TAG>& block) const;
-
-  /*! \brief Create a TLV encoding of this object.
-   *
-   * This function automates the process of guessing the necessary
-   * size of a block containing this object, and then creating a block
-   * and putting the TLV encoding into it.
-   * \sa Adjacency::wireEncode(ndn::EncodingImpl<TAG>&)
-   */
-  const ndn::Block&
-  wireEncode() const;
-
-  /*! \brief Populate this object by decoding the object contained in
-   * the given block.
-   */
-  void
-  wireDecode(const ndn::Block& wire);
-
-private:
-  ndn::Name m_name;
-  std::string m_uri;
-  uint64_t m_cost;
-
-  mutable ndn::Block m_wire;
-};
-
-NDN_CXX_DECLARE_WIRE_ENCODE_INSTANTIATIONS(Adjacency);
-
-std::ostream&
-operator<<(std::ostream& os, const Adjacency& adjacency);
-
-} // namespace tlv
-} // namespace nlsr
-
-#endif // NLSR_TLV_ADJACENCY_HPP
diff --git a/src/tlv/coordinate-lsa.cpp b/src/tlv/coordinate-lsa.cpp
deleted file mode 100644
index f05b682..0000000
--- a/src/tlv/coordinate-lsa.cpp
+++ /dev/null
@@ -1,152 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/*
- * Copyright (c) 2014-2019,  The University of Memphis,
- *                           Regents of the University of California,
- *                           Arizona Board of Regents.
- *
- * This file is part of NLSR (Named-data Link State Routing).
- * See AUTHORS.md for complete list of NLSR authors and contributors.
- *
- * NLSR is free software: you can redistribute it and/or modify it under the terms
- * of the GNU General Public License as published by the Free Software Foundation,
- * either version 3 of the License, or (at your option) any later version.
- *
- * NLSR is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
- * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE.  See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * NLSR, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "coordinate-lsa.hpp"
-#include "tlv-nlsr.hpp"
-
-#include <ndn-cxx/util/concepts.hpp>
-#include <ndn-cxx/encoding/block-helpers.hpp>
-
-namespace nlsr {
-namespace tlv {
-
-BOOST_CONCEPT_ASSERT((ndn::WireEncodable<CoordinateLsa>));
-BOOST_CONCEPT_ASSERT((ndn::WireDecodable<CoordinateLsa>));
-static_assert(std::is_base_of<ndn::tlv::Error, CoordinateLsa::Error>::value,
-              "CoordinateLsa::Error must inherit from tlv::Error");
-
-CoordinateLsa::CoordinateLsa()
-  : m_hyperbolicRadius(0.0)
-{
-}
-
-CoordinateLsa::CoordinateLsa(const ndn::Block& block)
-{
-  wireDecode(block);
-}
-
-template<ndn::encoding::Tag TAG>
-size_t
-CoordinateLsa::wireEncode(ndn::EncodingImpl<TAG>& block) const
-{
-  size_t totalLength = 0;
-
-  for (auto it = m_hyperbolicAngle.rbegin(); it != m_hyperbolicAngle.rend(); ++it) {
-    totalLength += ndn::encoding::prependDoubleBlock(block, ndn::tlv::nlsr::HyperbolicAngle, *it);
-  }
-
-  totalLength += ndn::encoding::prependDoubleBlock(block, ndn::tlv::nlsr::HyperbolicRadius, m_hyperbolicRadius);
-
-  totalLength += m_lsaInfo.wireEncode(block);
-
-  totalLength += block.prependVarNumber(totalLength);
-  totalLength += block.prependVarNumber(ndn::tlv::nlsr::CoordinateLsa);
-
-  return totalLength;
-}
-
-NDN_CXX_DEFINE_WIRE_ENCODE_INSTANTIATIONS(CoordinateLsa);
-
-const ndn::Block&
-CoordinateLsa::wireEncode() const
-{
-  if (m_wire.hasWire()) {
-    return m_wire;
-  }
-
-  ndn::EncodingEstimator estimator;
-  size_t estimatedSize = wireEncode(estimator);
-
-  ndn::EncodingBuffer buffer(estimatedSize, 0);
-  wireEncode(buffer);
-
-  m_wire = buffer.block();
-
-  return m_wire;
-}
-
-void
-CoordinateLsa::wireDecode(const ndn::Block& wire)
-{
-  m_hyperbolicRadius = 0.0;
-  m_hyperbolicAngle.clear();
-
-  m_wire = wire;
-
-  if (m_wire.type() != ndn::tlv::nlsr::CoordinateLsa) {
-    std::stringstream error;
-    error << "Expected CoordinateLsa Block, but Block is of a different type: #"
-          << m_wire.type();
-    BOOST_THROW_EXCEPTION(Error(error.str()));
-  }
-
-  m_wire.parse();
-
-  ndn::Block::element_const_iterator val = m_wire.elements_begin();
-
-  if (val != m_wire.elements_end() && val->type() == ndn::tlv::nlsr::LsaInfo) {
-    m_lsaInfo.wireDecode(*val);
-    ++val;
-  }
-  else {
-    BOOST_THROW_EXCEPTION(Error("Missing required LsaInfo field"));
-  }
-
-  if (val != m_wire.elements_end() && val->type() == ndn::tlv::nlsr::HyperbolicRadius) {
-    m_hyperbolicRadius = ndn::encoding::readDouble(*val);
-    ++val;
-  }
-  else {
-    BOOST_THROW_EXCEPTION(Error("Missing required HyperbolicRadius field"));
-  }
-
-  for (; val != m_wire.elements_end(); ++val) {
-    if (val->type() == ndn::tlv::nlsr::HyperbolicAngle) {
-      m_hyperbolicAngle.push_back(ndn::encoding::readDouble(*val));
-    }
-  }
-}
-
-std::ostream&
-operator<<(std::ostream& os, const CoordinateLsa& coordinateLsa)
-{
-  os << "CoordinateLsa("
-     << coordinateLsa.getLsaInfo() << ", "
-     << "HyperbolicRadius: " << coordinateLsa.getHyperbolicRadius() << ", ";
-
-  os << "HyperbolicAngles: ";
-  int i = 0;
-  for (const auto& value: coordinateLsa.getHyperbolicAngle()) {
-    if (i == 0) {
-      os << value;
-    }
-    else {
-      os << ", " << value;
-    }
-    ++i;
-  }
-  os << ")";
-
-  return os;
-}
-
-} // namespace tlv
-} // namespace nlsr
diff --git a/src/tlv/coordinate-lsa.hpp b/src/tlv/coordinate-lsa.hpp
deleted file mode 100644
index 603c119..0000000
--- a/src/tlv/coordinate-lsa.hpp
+++ /dev/null
@@ -1,152 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/*
- * Copyright (c) 2014-2018,  The University of Memphis,
- *                           Regents of the University of California,
- *                           Arizona Board of Regents.
- *
- * This file is part of NLSR (Named-data Link State Routing).
- * See AUTHORS.md for complete list of NLSR authors and contributors.
- *
- * NLSR is free software: you can redistribute it and/or modify it under the terms
- * of the GNU General Public License as published by the Free Software Foundation,
- * either version 3 of the License, or (at your option) any later version.
- *
- * NLSR is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
- * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE.  See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * NLSR, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef NLSR_TLV_COORDINATE_LSA_HPP
-#define NLSR_TLV_COORDINATE_LSA_HPP
-
-#include "lsa-info.hpp"
-
-#include <ndn-cxx/util/time.hpp>
-#include <ndn-cxx/encoding/block.hpp>
-#include <ndn-cxx/encoding/encoding-buffer.hpp>
-#include <ndn-cxx/encoding/tlv.hpp>
-#include <ndn-cxx/name.hpp>
-
-namespace nlsr {
-namespace tlv {
-
-/*!
-   \brief Data abstraction for CoordinateLsa
-
-   CoordinateLsa := COORDINATE-LSA-TYPE TLV-LENGTH
-                      LsaInfo
-                      HyperbolicRadius
-                      HyperbolicAngle+
-
-   \sa https://redmine.named-data.net/projects/nlsr/wiki/LSDB_DataSet
- */
-class CoordinateLsa
-{
-public:
-  class Error : public ndn::tlv::Error
-  {
-  public:
-    explicit
-    Error(const std::string& what)
-      : ndn::tlv::Error(what)
-    {
-    }
-  };
-
-  CoordinateLsa();
-
-  explicit
-  CoordinateLsa(const ndn::Block& block);
-
-  const LsaInfo&
-  getLsaInfo() const
-  {
-    return m_lsaInfo;
-  }
-
-  CoordinateLsa&
-  setLsaInfo(const LsaInfo& lsaInfo)
-  {
-    m_lsaInfo = lsaInfo;
-    m_wire.reset();
-    return *this;
-  }
-
-  double
-  getHyperbolicRadius() const
-  {
-    return m_hyperbolicRadius;
-  }
-
-  CoordinateLsa&
-  setHyperbolicRadius(double hyperbolicRadius)
-  {
-    m_hyperbolicRadius = hyperbolicRadius;
-    m_wire.reset();
-    return *this;
-  }
-
-  const std::vector<double>
-  getHyperbolicAngle() const
-  {
-    return m_hyperbolicAngle;
-  }
-
-  CoordinateLsa&
-  setHyperbolicAngle(const std::vector<double>& hyperbolicAngle)
-  {
-    m_hyperbolicAngle = hyperbolicAngle;
-    m_wire.reset();
-    return *this;
-  }
-
-  /*! \brief Encodes the hyperbolic coordinates and some info using the method in TAG.
-   *
-   * This function will TLV-format the hyperbolic coordinates objects and some LSA
-   * info using the implementation speciifed by TAG. Usually this is
-   * called with an estimator first to guess how long the buffer needs
-   * to be, then with an encoder to do the real work. This process is
-   * automated by the other wireEncode.
-   * \sa CoordinateLsa::wireEncode()
-   */
-  template<ndn::encoding::Tag TAG>
-  size_t
-  wireEncode(ndn::EncodingImpl<TAG>& block) const;
-
-  /*! \brief Create a TLV encoding of this object.
-   *
-   * Create a block containing the TLV encoding of this object. That
-   * involves two steps: estimating the size that the information will
-   * take up, and then creating a buffer of that size and encoding the
-   * information into it. Both steps are accomplished by
-   * CoordinateLsa::wireEncode(ndn::EncodingImpl<TAG>&)
-   */
-  const ndn::Block&
-  wireEncode() const;
-
-  /*! \brief Populate this object by decoding the one contained in the
-   * given block.
-   */
-  void
-  wireDecode(const ndn::Block& wire);
-
-private:
-  LsaInfo m_lsaInfo;
-  double m_hyperbolicRadius;
-  std::vector<double> m_hyperbolicAngle;
-
-  mutable ndn::Block m_wire;
-};
-
-NDN_CXX_DECLARE_WIRE_ENCODE_INSTANTIATIONS(CoordinateLsa);
-
-std::ostream&
-operator<<(std::ostream& os, const CoordinateLsa& coordinateLsa);
-
-} // namespace tlv
-} // namespace nlsr
-
-#endif // NLSR_TLV_COORDINATE_LSA_HPP
diff --git a/src/tlv/lsa-info.cpp b/src/tlv/lsa-info.cpp
deleted file mode 100644
index 5f83863..0000000
--- a/src/tlv/lsa-info.cpp
+++ /dev/null
@@ -1,186 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/*
- * Copyright (c) 2014-2018,  The University of Memphis,
- *                           Regents of the University of California,
- *                           Arizona Board of Regents.
- *
- * This file is part of NLSR (Named-data Link State Routing).
- * See AUTHORS.md for complete list of NLSR authors and contributors.
- *
- * NLSR is free software: you can redistribute it and/or modify it under the terms
- * of the GNU General Public License as published by the Free Software Foundation,
- * either version 3 of the License, or (at your option) any later version.
- *
- * NLSR is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
- * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE.  See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * NLSR, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "lsa-info.hpp"
-#include "tlv-nlsr.hpp"
-
-#include <ndn-cxx/util/concepts.hpp>
-#include <ndn-cxx/encoding/block-helpers.hpp>
-
-namespace nlsr {
-namespace tlv {
-
-BOOST_CONCEPT_ASSERT((ndn::WireEncodable<LsaInfo>));
-BOOST_CONCEPT_ASSERT((ndn::WireDecodable<LsaInfo>));
-static_assert(std::is_base_of<ndn::tlv::Error, LsaInfo::Error>::value,
-              "LsaInfo::Error must inherit from tlv::Error");
-
-const ndn::time::milliseconds LsaInfo::INFINITE_EXPIRATION_PERIOD(ndn::time::milliseconds::max());
-
-LsaInfo::LsaInfo()
-  : m_sequenceNumber(0)
-  , m_expirationPeriod(INFINITE_EXPIRATION_PERIOD)
-  , m_hasInfiniteExpirationPeriod(true)
-{
-}
-
-LsaInfo::LsaInfo(const ndn::Block& block)
-{
-  wireDecode(block);
-}
-
-template<ndn::encoding::Tag TAG>
-size_t
-LsaInfo::wireEncode(ndn::EncodingImpl<TAG>& encoder) const
-{
-  size_t totalLength = 0;
-
-  // Absence of an ExpirationPeriod signifies non-expiration
-  if (!m_hasInfiniteExpirationPeriod) {
-    totalLength += prependNonNegativeIntegerBlock(encoder,
-                                                  ndn::tlv::nlsr::ExpirationPeriod,
-                                                  m_expirationPeriod.count());
-  }
-
-  totalLength += prependNonNegativeIntegerBlock(encoder,
-                                                ndn::tlv::nlsr::SequenceNumber,
-                                                m_sequenceNumber);
-
-  totalLength += prependNestedBlock(encoder, ndn::tlv::nlsr::OriginRouter, m_originRouter);
-
-  totalLength += encoder.prependVarNumber(totalLength);
-  totalLength += encoder.prependVarNumber(ndn::tlv::nlsr::LsaInfo);
-
-  return totalLength;
-}
-
-NDN_CXX_DEFINE_WIRE_ENCODE_INSTANTIATIONS(LsaInfo);
-
-const ndn::Block&
-LsaInfo::wireEncode() const
-{
-  if (m_wire.hasWire()) {
-    return m_wire;
-  }
-
-  ndn::EncodingEstimator estimator;
-  size_t estimatedSize = wireEncode(estimator);
-
-  ndn::EncodingBuffer buffer(estimatedSize, 0);
-  wireEncode(buffer);
-
-  m_wire = buffer.block();
-
-  return m_wire;
-}
-
-void
-LsaInfo::wireDecode(const ndn::Block& wire)
-{
-  m_originRouter.clear();
-  m_sequenceNumber = 0;
-  m_expirationPeriod = ndn::time::milliseconds::min();
-
-  m_wire = wire;
-
-  if (m_wire.type() != ndn::tlv::nlsr::LsaInfo) {
-    std::stringstream error;
-    error << "Expected LsaInfo Block, but Block is of a different type: #"
-          << m_wire.type();
-    BOOST_THROW_EXCEPTION(Error(error.str()));
-  }
-
-  m_wire.parse();
-
-  ndn::Block::element_const_iterator val = m_wire.elements_begin();
-
-  if (val != m_wire.elements_end() && val->type() == ndn::tlv::nlsr::OriginRouter) {
-    val->parse();
-    ndn::Block::element_const_iterator it = val->elements_begin();
-
-    if (it != val->elements_end() && it->type() == ndn::tlv::Name) {
-      m_originRouter.wireDecode(*it);
-    }
-    else {
-      BOOST_THROW_EXCEPTION(Error("OriginRouter: Missing required Name field"));
-    }
-
-    ++val;
-  }
-  else {
-    BOOST_THROW_EXCEPTION(Error("Missing required OriginRouter field"));
-  }
-
-  if (val != m_wire.elements_end() && val->type() == ndn::tlv::nlsr::SequenceNumber) {
-    m_sequenceNumber = ndn::readNonNegativeInteger(*val);
-    ++val;
-  }
-  else {
-    BOOST_THROW_EXCEPTION(Error("Missing required SequenceNumber field"));
-  }
-
-  if (val != m_wire.elements_end() && val->type() == ndn::tlv::nlsr::ExpirationPeriod) {
-    m_expirationPeriod = ndn::time::milliseconds(ndn::readNonNegativeInteger(*val));
-    m_hasInfiniteExpirationPeriod = false;
-  }
-  else {
-    m_expirationPeriod = INFINITE_EXPIRATION_PERIOD;
-    m_hasInfiniteExpirationPeriod = true;
-  }
-}
-
-std::ostream&
-operator<<(std::ostream& os, const LsaInfo& lsaInfo)
-{
-  os << "LsaInfo("
-     << "OriginRouter: " << lsaInfo.getOriginRouter() << ", "
-     << "SequenceNumber: " << lsaInfo.getSequenceNumber() << ", ";
-
-  if (!lsaInfo.hasInfiniteExpirationPeriod()) {
-    os << "ExpirationPeriod: " << lsaInfo.getExpirationPeriod();
-  }
-  else {
-    os << "ExpirationPeriod: Infinity";
-  }
-
-  os << ")";
-
-  return os;
-}
-
-std::shared_ptr<LsaInfo>
-makeLsaInfo(const Lsa& lsa)
-{
-  std::shared_ptr<LsaInfo> lsaInfo = std::make_shared<LsaInfo>();
-
-  lsaInfo->setOriginRouter(lsa.getOrigRouter());
-  lsaInfo->setSequenceNumber(lsa.getLsSeqNo());
-
-  ndn::time::system_clock::duration duration
-    = lsa.getExpirationTimePoint() - ndn::time::system_clock::now();
-
-  lsaInfo->setExpirationPeriod(ndn::time::duration_cast<ndn::time::milliseconds>(duration));
-
-  return lsaInfo;
-}
-
-} // namespace tlv
-} // namespace nlsr
diff --git a/src/tlv/lsa-info.hpp b/src/tlv/lsa-info.hpp
deleted file mode 100644
index 291c428..0000000
--- a/src/tlv/lsa-info.hpp
+++ /dev/null
@@ -1,168 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/*
- * Copyright (c) 2014-2018,  The University of Memphis,
- *                           Regents of the University of California,
- *                           Arizona Board of Regents.
- *
- * This file is part of NLSR (Named-data Link State Routing).
- * See AUTHORS.md for complete list of NLSR authors and contributors.
- *
- * NLSR is free software: you can redistribute it and/or modify it under the terms
- * of the GNU General Public License as published by the Free Software Foundation,
- * either version 3 of the License, or (at your option) any later version.
- *
- * NLSR is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
- * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE.  See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * NLSR, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef NLSR_TLV_LSA_INFO_HPP
-#define NLSR_TLV_LSA_INFO_HPP
-
-#include "lsa.hpp"
-
-#include <ndn-cxx/util/time.hpp>
-#include <ndn-cxx/encoding/block.hpp>
-#include <ndn-cxx/encoding/encoding-buffer.hpp>
-#include <ndn-cxx/encoding/tlv.hpp>
-#include <ndn-cxx/name.hpp>
-#include <boost/throw_exception.hpp>
-
-namespace nlsr {
-namespace tlv {
-
-/*!
-   \brief Data abstraction for LsaInfo
-
-   LsaInfo := LSA-TYPE TLV-LENGTH
-                OriginRouter
-                SequenceNumber
-                ExpirationPeriod?
-
-   \sa https://redmine.named-data.net/projects/nlsr/wiki/LSDB_DataSet
- */
-class LsaInfo
-{
-public:
-  class Error : public ndn::tlv::Error
-  {
-  public:
-    explicit
-    Error(const std::string& what)
-      : ndn::tlv::Error(what)
-    {
-    }
-  };
-
-  LsaInfo();
-
-  explicit
-  LsaInfo(const ndn::Block& block);
-
-  const ndn::Name&
-  getOriginRouter() const
-  {
-    return m_originRouter;
-  }
-
-  LsaInfo&
-  setOriginRouter(const ndn::Name& name)
-  {
-    m_originRouter = name;
-    m_wire.reset();
-    return *this;
-  }
-
-  uint64_t
-  getSequenceNumber() const
-  {
-    return m_sequenceNumber;
-  }
-
-  LsaInfo&
-  setSequenceNumber(uint64_t sequenceNumber)
-  {
-    m_sequenceNumber = sequenceNumber;
-    m_wire.reset();
-    return *this;
-  }
-
-  static const ndn::time::milliseconds INFINITE_EXPIRATION_PERIOD;
-
-  const ndn::time::milliseconds&
-  getExpirationPeriod() const
-  {
-    return m_expirationPeriod;
-  }
-
-  LsaInfo&
-  setExpirationPeriod(const ndn::time::milliseconds& expirationPeriod)
-  {
-    m_expirationPeriod = expirationPeriod;
-
-    m_hasInfiniteExpirationPeriod = (m_expirationPeriod == INFINITE_EXPIRATION_PERIOD);
-
-    m_wire.reset();
-    return *this;
-  }
-
-  bool
-  hasInfiniteExpirationPeriod() const
-  {
-    return m_hasInfiniteExpirationPeriod;
-  }
-
-  /*! \brief Encodes LSA info using the method in TAG.
-   *
-   * This function will TLV-format LSA info using the implementation
-   * speciifed by TAG. Usually this is called with an estimator first
-   * to guess how long the buffer needs to be, then with an encoder to
-   * do the real work. This process is automated by the other
-   * wireEncode.
-   * \sa LsaInfo::wireEncode()
-   */
-  template<ndn::encoding::Tag TAG>
-  size_t
-  wireEncode(ndn::EncodingImpl<TAG>& block) const;
-
-  /*! \brief Create a TLV encoding of this object.
-   *
-   * Create a block containing the TLV encoding of this object. That
-   * involves two steps: estimating the size that the information will
-   * take up, and then creating a buffer of that size and encoding the
-   * information into it. Both steps are accomplished by
-   * LsaInfo::wireEncode(ndn::EncodingImpl<TAG>&)
-   */
-  const ndn::Block&
-  wireEncode() const;
-
-  /*! \brief Populate this object by decoding the one contained in the
-   * given block.
-   */
-  void
-  wireDecode(const ndn::Block& wire);
-
-private:
-  ndn::Name m_originRouter;
-  uint64_t m_sequenceNumber;
-  ndn::time::milliseconds m_expirationPeriod;
-  bool m_hasInfiniteExpirationPeriod;
-
-  mutable ndn::Block m_wire;
-};
-
-NDN_CXX_DECLARE_WIRE_ENCODE_INSTANTIATIONS(LsaInfo);
-
-std::ostream&
-operator<<(std::ostream& os, const LsaInfo& lsaInfo);
-
-std::shared_ptr<LsaInfo>
-makeLsaInfo(const Lsa& lsa);
-
-} // namespace tlv
-} // namespace nlsr
-
-#endif // NLSR_TLV_LSA_INFO_HPP
diff --git a/src/tlv/name-lsa.cpp b/src/tlv/name-lsa.cpp
deleted file mode 100644
index 82f3860..0000000
--- a/src/tlv/name-lsa.cpp
+++ /dev/null
@@ -1,138 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/*
- * Copyright (c) 2014-2018,  The University of Memphis,
- *                           Regents of the University of California,
- *                           Arizona Board of Regents.
- *
- * This file is part of NLSR (Named-data Link State Routing).
- * See AUTHORS.md for complete list of NLSR authors and contributors.
- *
- * NLSR is free software: you can redistribute it and/or modify it under the terms
- * of the GNU General Public License as published by the Free Software Foundation,
- * either version 3 of the License, or (at your option) any later version.
- *
- * NLSR is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
- * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE.  See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * NLSR, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "name-lsa.hpp"
-#include "tlv-nlsr.hpp"
-
-#include <ndn-cxx/util/concepts.hpp>
-#include <ndn-cxx/encoding/block-helpers.hpp>
-
-namespace nlsr {
-namespace tlv {
-
-BOOST_CONCEPT_ASSERT((ndn::WireEncodable<NameLsa>));
-BOOST_CONCEPT_ASSERT((ndn::WireDecodable<NameLsa>));
-static_assert(std::is_base_of<ndn::tlv::Error, NameLsa::Error>::value,
-              "NameLsa::Error must inherit from tlv::Error");
-
-NameLsa::NameLsa()
-  : m_hasNames(false)
-{
-}
-
-NameLsa::NameLsa(const ndn::Block& block)
-{
-  wireDecode(block);
-}
-
-template<ndn::encoding::Tag TAG>
-size_t
-NameLsa::wireEncode(ndn::EncodingImpl<TAG>& block) const
-{
-  size_t totalLength = 0;
-
-  for (std::list<ndn::Name>::const_reverse_iterator it = m_names.rbegin();
-       it != m_names.rend(); ++it) {
-    totalLength += it->wireEncode(block);
-  }
-
-  totalLength += m_lsaInfo.wireEncode(block);
-
-  totalLength += block.prependVarNumber(totalLength);
-  totalLength += block.prependVarNumber(ndn::tlv::nlsr::NameLsa);
-
-  return totalLength;
-}
-
-NDN_CXX_DEFINE_WIRE_ENCODE_INSTANTIATIONS(NameLsa);
-
-const ndn::Block&
-NameLsa::wireEncode() const
-{
-  if (m_wire.hasWire()) {
-    return m_wire;
-  }
-
-  ndn::EncodingEstimator estimator;
-  size_t estimatedSize = wireEncode(estimator);
-
-  ndn::EncodingBuffer buffer(estimatedSize, 0);
-  wireEncode(buffer);
-
-  m_wire = buffer.block();
-
-  return m_wire;
-}
-
-void
-NameLsa::wireDecode(const ndn::Block& wire)
-{
-  m_hasNames = false;
-  m_names.clear();
-
-  m_wire = wire;
-
-  if (m_wire.type() != ndn::tlv::nlsr::NameLsa) {
-    BOOST_THROW_EXCEPTION(Error("Expected NameLsa Block, but Block is of a different type: #" +
-                                ndn::to_string(m_wire.type())));
-  }
-
-  m_wire.parse();
-
-  ndn::Block::element_const_iterator val = m_wire.elements_begin();
-
-  if (val != m_wire.elements_end() && val->type() == ndn::tlv::nlsr::LsaInfo) {
-    m_lsaInfo.wireDecode(*val);
-    ++val;
-  }
-  else {
-    BOOST_THROW_EXCEPTION(Error("Missing required LsaInfo field"));
-  }
-
-  for (; val != m_wire.elements_end(); ++val) {
-    if (val->type() == ndn::tlv::Name) {
-      m_names.push_back(ndn::Name(*val));
-      m_hasNames = true;
-    }
-    else {
-      BOOST_THROW_EXCEPTION(Error("Expected Name Block, but Block is of a different type: #" +
-                                  ndn::to_string(m_wire.type())));
-    }
-  }
-}
-
-std::ostream&
-operator<<(std::ostream& os, const NameLsa& nameLsa)
-{
-  os << "NameLsa("
-     << nameLsa.getLsaInfo();
-
-  for (const auto& name : nameLsa) {
-    os << ", Name: " << name;
-  }
-
-  os << ")";
-
-  return os;
-}
-
-} // namespace tlv
-} // namespace nlsr
diff --git a/src/tlv/name-lsa.hpp b/src/tlv/name-lsa.hpp
deleted file mode 100644
index 0278631..0000000
--- a/src/tlv/name-lsa.hpp
+++ /dev/null
@@ -1,175 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/*
- * Copyright (c) 2014-2018,  The University of Memphis,
- *                           Regents of the University of California,
- *                           Arizona Board of Regents.
- *
- * This file is part of NLSR (Named-data Link State Routing).
- * See AUTHORS.md for complete list of NLSR authors and contributors.
- *
- * NLSR is free software: you can redistribute it and/or modify it under the terms
- * of the GNU General Public License as published by the Free Software Foundation,
- * either version 3 of the License, or (at your option) any later version.
- *
- * NLSR is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
- * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE.  See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * NLSR, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef NLSR_TLV_NAME_LSA_HPP
-#define NLSR_TLV_NAME_LSA_HPP
-
-#include "lsa-info.hpp"
-
-#include <ndn-cxx/util/time.hpp>
-#include <ndn-cxx/encoding/block.hpp>
-#include <ndn-cxx/encoding/encoding-buffer.hpp>
-#include <ndn-cxx/encoding/tlv.hpp>
-#include <ndn-cxx/name.hpp>
-
-#include <list>
-
-namespace nlsr {
-namespace tlv {
-
-/*!
-   \brief Data abstraction for NameLsa
-
-   NameLsa := NAME-LSA-TYPE TLV-LENGTH
-                LsaInfo
-                Name+
-
-   \sa https://redmine.named-data.net/projects/nlsr/wiki/LSDB_DataSet
- */
-class NameLsa
-{
-public:
-  class Error : public ndn::tlv::Error
-  {
-  public:
-    explicit
-    Error(const std::string& what)
-      : ndn::tlv::Error(what)
-    {
-    }
-  };
-
-  typedef std::list<ndn::Name> NameList;
-  typedef NameList::const_iterator iterator;
-
-  NameLsa();
-
-  explicit
-  NameLsa(const ndn::Block& block);
-
-  const LsaInfo&
-  getLsaInfo() const
-  {
-    return m_lsaInfo;
-  }
-
-  NameLsa&
-  setLsaInfo(const LsaInfo& lsaInfo)
-  {
-    m_lsaInfo = lsaInfo;
-    m_wire.reset();
-    return *this;
-  }
-
-  bool
-  hasNames() const
-  {
-    return m_hasNames;
-  }
-
-  const std::list<ndn::Name>&
-  getNames() const
-  {
-    return m_names;
-  }
-
-  NameLsa&
-  addName(const ndn::Name& name)
-  {
-    m_names.push_back(name);
-    m_wire.reset();
-    m_hasNames = true;
-    return *this;
-  }
-
-  NameLsa&
-  clearNames()
-  {
-    m_names.clear();
-    m_hasNames = false;
-    return *this;
-  }
-
-  /*! \brief Encodes the Name objects and some info using the method in TAG.
-   *
-   * This function will TLV-format the Name objects and some LSA
-   * info using the implementation speciifed by TAG. Usually this is
-   * called with an estimator first to guess how long the buffer needs
-   * to be, then with an encoder to do the real work. This process is
-   * automated by the other wireEncode.
-   * \sa NameLsa::wireEncode()
-   */
-  template<ndn::encoding::Tag TAG>
-  size_t
-  wireEncode(ndn::EncodingImpl<TAG>& block) const;
-
-  /*! \brief Create a TLV encoding of this object.
-   *
-   * Create a block containing the TLV encoding of this object. That
-   * involves two steps: estimating the size that the information will
-   * take up, and then creating a buffer of that size and encoding the
-   * information into it. Both steps are accomplished by
-   * NameLsa::wireEncode(ndn::EncodingImpl<TAG>&)
-   */
-  const ndn::Block&
-  wireEncode() const;
-
-  /*! \brief Populate this object by decoding the one contained in the
-   * given block.
-   */
-  void
-  wireDecode(const ndn::Block& wire);
-
-  iterator
-  begin() const;
-
-  iterator
-  end() const;
-
-private:
-  LsaInfo m_lsaInfo;
-  bool m_hasNames;
-  NameList m_names;
-
-  mutable ndn::Block m_wire;
-};
-
-NDN_CXX_DECLARE_WIRE_ENCODE_INSTANTIATIONS(NameLsa);
-
-inline NameLsa::iterator
-NameLsa::begin() const
-{
-  return m_names.begin();
-}
-
-inline NameLsa::iterator
-NameLsa::end() const
-{
-  return m_names.end();
-}
-
-std::ostream&
-operator<<(std::ostream& os, const NameLsa& nameLsa);
-
-} // namespace tlv
-} // namespace nlsr
-
-#endif // NLSR_TLV_NAME_LSA_HPP
diff --git a/src/tlv/nexthop.cpp b/src/tlv/nexthop.cpp
index d05473e..508bf1a 100644
--- a/src/tlv/nexthop.cpp
+++ b/src/tlv/nexthop.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2019,  The University of Memphis,
+ * Copyright (c) 2014-2020,  The University of Memphis,
  *                           Regents of the University of California,
  *                           Arizona Board of Regents.
  *
@@ -21,7 +21,6 @@
 
 #include "nexthop.hpp"
 #include "tlv-nlsr.hpp"
-#include "coordinate-lsa.hpp"
 
 #include <ndn-cxx/util/concepts.hpp>
 #include <ndn-cxx/encoding/block-helpers.hpp>
diff --git a/src/tlv/routing-table-entry.cpp b/src/tlv/routing-table-entry.cpp
index c8e6332..255d418 100644
--- a/src/tlv/routing-table-entry.cpp
+++ b/src/tlv/routing-table-entry.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /**
- * Copyright (c) 2014-2018,  The University of Memphis,
+ * Copyright (c) 2014-2020,  The University of Memphis,
  *                           Regents of the University of California,
  *                           Arizona Board of Regents.
  *
@@ -80,7 +80,7 @@
   totalLength += m_des.wireEncode(block);
 
   totalLength += block.prependVarNumber(totalLength);
-  totalLength += block.prependVarNumber(ndn::tlv::nlsr::RouteTableEntry);
+  totalLength += block.prependVarNumber(ndn::tlv::nlsr::RoutingTableEntry);
 
   return totalLength;
 }
@@ -113,7 +113,7 @@
 
   m_wire = wire;
 
-  if (m_wire.type() != ndn::tlv::nlsr::RouteTableEntry) {
+  if (m_wire.type() != ndn::tlv::nlsr::RoutingTableEntry) {
     std::stringstream error;
     error << "Expected RoutingTable Block, but Block is of a different type: #"
           << m_wire.type();
diff --git a/src/tlv/routing-table-status.cpp b/src/tlv/routing-table-status.cpp
index a35f88c..00d2c78 100644
--- a/src/tlv/routing-table-status.cpp
+++ b/src/tlv/routing-table-status.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /**
- * Copyright (c) 2014-2019,  The University of Memphis,
+ * Copyright (c) 2014-2020,  The University of Memphis,
  *                           Regents of the University of California,
  *                           Arizona Board of Regents.
  *
@@ -123,7 +123,7 @@
 
   ndn::Block::element_const_iterator val = m_wire.elements_begin();
 
-  for (; val != m_wire.elements_end() && val->type() == ndn::tlv::nlsr::RouteTableEntry; ++val) {
+  for (; val != m_wire.elements_end() && val->type() == ndn::tlv::nlsr::RoutingTableEntry; ++val) {
     m_routingtables.push_back(RoutingTable(*val));
     m_hasRoutingtable = true;
   }
diff --git a/src/tlv/tlv-nlsr.hpp b/src/tlv/tlv-nlsr.hpp
index 265b2c6..e7d2253 100644
--- a/src/tlv/tlv-nlsr.hpp
+++ b/src/tlv/tlv-nlsr.hpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2019,  The University of Memphis,
+ * Copyright (c) 2014-2020,  The University of Memphis,
  *                           Regents of the University of California,
  *                           Arizona Board of Regents.
  *
@@ -34,24 +34,23 @@
  *  used in the LSDB Status Dataset.
  */
 enum {
-  LsaInfo          = 128,
-  OriginRouter     = 129,
-  SequenceNumber   = 130,
-  AdjacencyLsa     = 131,
-  Adjacency        = 132,
-  CoordinateLsa    = 133,
-  CostDouble       = 134,
-  HyperbolicRadius = 135,
-  HyperbolicAngle  = 136,
-  NameLsa          = 137,
-  LsdbStatus       = 138,
-  ExpirationPeriod = 139,
-  Cost             = 140,
-  Uri              = 141,
-  Destination      = 142,
-  NextHop          = 143,
-  RoutingTable     = 144,
-  RouteTableEntry  = 145,
+  Lsa                         = 128,
+  SequenceNumber              = 130,
+  AdjacencyLsa                = 131,
+  Adjacency                   = 132,
+  CoordinateLsa               = 133,
+  CostDouble                  = 134,
+  HyperbolicRadius            = 135,
+  HyperbolicAngle             = 136,
+  NameLsa                     = 137,
+  LsdbStatus                  = 138,
+  ExpirationTime              = 139,
+  Cost                        = 140,
+  Uri                         = 141,
+  Destination                 = 142,
+  NextHop                     = 143,
+  RoutingTable                = 144,
+  RoutingTableEntry           = 145
 };
 
 } // namespace nlsr