---
title: llarp/messages/relay.hpp

---

# llarp/messages/relay.hpp



## Namespaces

| Name           |
| -------------- |
| **[llarp](Namespaces/namespacellarp.md)** <br>[crypto.hpp] |

## Classes

|                | Name           |
| -------------- | -------------- |
| struct | **[llarp::RelayUpstreamMessage](Classes/structllarp_1_1RelayUpstreamMessage.md)**  |
| struct | **[llarp::RelayDownstreamMessage](Classes/structllarp_1_1RelayDownstreamMessage.md)**  |




## Source code

```cpp
#pragma once

#include <llarp/crypto/encrypted.hpp>
#include <llarp/crypto/types.hpp>
#include "link_message.hpp"
#include <llarp/path/path_types.hpp>

#include <vector>

namespace llarp
{
  struct RelayUpstreamMessage : public ILinkMessage
  {
    Encrypted<MAX_LINK_MSG_SIZE - 128> X;
    TunnelNonce Y;

    bool
    DecodeKey(const llarp_buffer_t& key, llarp_buffer_t* buf) override;

    bool
    BEncode(llarp_buffer_t* buf) const override;

    bool
    HandleMessage(AbstractRouter* router) const override;

    void
    Clear() override;
    const char*

    Name() const override
    {
      return "RelayUpstream";
    }
    uint16_t
    Priority() const override
    {
      return 0;
    }
  };

  struct RelayDownstreamMessage : public ILinkMessage
  {
    Encrypted<MAX_LINK_MSG_SIZE - 128> X;
    TunnelNonce Y;

    bool
    DecodeKey(const llarp_buffer_t& key, llarp_buffer_t* buf) override;

    bool
    BEncode(llarp_buffer_t* buf) const override;

    bool
    HandleMessage(AbstractRouter* router) const override;

    void
    Clear() override;

    const char*
    Name() const override
    {
      return "RelayDownstream";
    }

    uint16_t
    Priority() const override
    {
      return 0;
    }
  };
}  // namespace llarp
```


-------------------------------

Updated on 2025-03-02 at 05:10:06 +0000
