#ifndef NLSR_RTE_HPP
#define NLSR_RTE_HPP

#include<iostream>

#include "nlsr_nhl.hpp"

namespace nlsr
{

    using namespace std;

    class RoutingTableEntry
    {
    public:
        RoutingTableEntry()
            : destination()
            , nhl()
        {
        }

        ~RoutingTableEntry()
        {
        }

        RoutingTableEntry(string dest)
            : nhl()
        {
            destination=dest;
        }

        string getDestination()
        {
            return destination;
        }

        Nhl& getNhl()
        {
            return nhl;
        }

    private:
        string destination;
        Nhl nhl;
    };

    ostream&
    operator<<(ostream& os, RoutingTableEntry &rte);

}

#endif
