/**
   * Method to add a new TE LSP from a previous Path message received
   *
   * @param lsp
   * @param path
   */
  public void forwardRSVPpath(LSPTE lsp, RSVPTEPathMessage path) throws LSPCreationException {
    log.info("Forwarding and Processing RSVP Path Message");
    int nodeType = LSPParameters.LSP_NODE_TYPE_TRANSIT;

    if (lsp == null) log.info("Cosa Mala...");
    if (lsp.getIdDestination() == null) log.info("IPDest is null");
    if (localIP == null) log.info("IPLocal is null");
    log.info(
        "Comparando: "
            + lsp.getIdDestination().getHostAddress()
            + " y "
            + localIP.getHostAddress());
    if ((lsp.getIdDestination().getHostAddress()).equals(localIP.getHostAddress())) {
      nodeType = LSPParameters.LSP_NODE_TYPE_DESTINATION;
      log.info("New LSP, I am node Destination!");
    }
    /*
     	log.info("localIP.getHostAddress()::"+localIP.getHostAddress());
     	if(localIP.getHostAddress().equals("192.168.1.8"))
     	{

     	}

     	if(localIP.getHostAddress().equals("192.168.1.9"))
     	{
     		nodeType = LSPParameters.LSP_NODE_TYPE_DESTINATION;
     	}
    */
    // DESTINATION NODE //

    if (nodeType == LSPParameters.LSP_NODE_TYPE_DESTINATION) {
      // crear el RSPV RESV y enviarlo de vuelta

      RSVPTEResvMessage resv = new RSVPTEResvMessage();

      resv = resourceManager.getRSVPResvMessageFromDestination(path, lsp);

      LSPKey key = new LSPKey(lsp.getIdSource(), lsp.getIdLSP());

      // Guardamos el LSP en la lista
      LSPList.put(key, lsp);

      // Enviamos el mensaje
      if (resv != null) {
        Inet4Address prox = resourceManager.getPreviousHopIPv4List().get(key);
        timeEnd_Node = System.nanoTime();
        log.info("LSP Time Path Node Process (ms): " + ((timeEnd_Node - timeIni_Node) / 1000000));
        log.info("Sending RSVP Resv message to " + prox.toString() + " !");
        sendRSVPMessage(resv, prox);
      }
      // TRANSIT NODE //
    } else if (nodeType == LSPParameters.LSP_NODE_TYPE_TRANSIT) {
      log.info("New LSP, I am transit node");

      ERO eroRSVP = new ERO();
      LinkedList<EROSubobject> clone =
          (LinkedList<EROSubobject>) path.getEro().getEroSubobjects().clone();
      eroRSVP.setEroSubobjects(clone);
      lsp.setEro(eroRSVP);

      boolean check = resourceManager.checkResources(lsp);
      if (check == false) {
        log.info("Error! No Resources in the Node!");
        throw new LSPCreationException(LSPCreationErrorTypes.NO_RESOURCES);
      } else {
        LSPKey key = new LSPKey(lsp.getIdSource(), lsp.getIdLSP());

        // Put the LSP in the list
        LSPList.put(key, lsp);

        RSVPTEPathMessage NewPath = resourceManager.forwardRSVPpath(lsp, path);
        timeEnd_Node = System.nanoTime();
        log.info(
            "LSP Time to Process RSVP Path in Node (ms): "
                + ((timeEnd_Node - timeIni_Node) / 1000000));
        Inet4Address prox = (resourceManager.getProxHopIPv4List()).get(key);
        log.info("Sending the RSVP PATH message to " + prox.toString() + " !");
        sendRSVPMessage(NewPath, prox);
      }
    }
  }