---
title: llarp::layers::platform

---

# llarp::layers::platform



## Classes

|                | Name           |
| -------------- | -------------- |
| class | **[llarp::layers::platform::PlatformLayer_Base](Classes/classllarp_1_1layers_1_1platform_1_1PlatformLayer__Base.md)** <br>owner of all platform layer components  |
| struct | **[llarp::layers::platform::PlatformAddr](Classes/structllarp_1_1layers_1_1platform_1_1PlatformAddr.md)** <br>a (ipv6 address, flowlabel) tuple that we use for platform layer side addressing  |
| struct | **[llarp::layers::platform::AddressMapping](Classes/structllarp_1_1layers_1_1platform_1_1AddressMapping.md)** <br>an entry for mapping an os address to a flow address  |
| struct | **[llarp::layers::platform::Traffic](Classes/structllarp_1_1layers_1_1platform_1_1Traffic.md)** <br>datum the os gives us that we forward to the flow layer as needed.  |
| struct | **[llarp::layers::platform::MapAddressEvent](Classes/structllarp_1_1layers_1_1platform_1_1MapAddressEvent.md)** <br>this contains all info needed for mapping a platform address to our platform driver  |
| class | **[llarp::layers::platform::PlatformDriver_Base](Classes/classllarp_1_1layers_1_1platform_1_1PlatformDriver__Base.md)** <br>base type that is responsible for bridging the os and the flow layer.  |
| struct | **[llarp::layers::platform::ResolvedName](Classes/structllarp_1_1layers_1_1platform_1_1ResolvedName.md)** <br>a .loki / .snode name we resolved to a FlowAddr  |
| class | **[llarp::layers::platform::NameResolverJob_Base](Classes/classllarp_1_1layers_1_1platform_1_1NameResolverJob__Base.md)** <br>a one shot job that will resolve a string to a resolved name which we can use to establish a flow to  |

## Types

|                | Name           |
| -------------- | -------------- |
| enum class| **[PlatformKind](Namespaces/namespacellarp_1_1layers_1_1platform.md#enum-platformkind)** { ip, embedded, ip, embedded} |
| enum class| **[EtherType_t](Namespaces/namespacellarp_1_1layers_1_1platform.md#enum-ethertype-t)** { ipv4_unicast, ip_hybrid_unicast, plainquic, proto_auth}<br>the kind of traffic we are tunneling  |
| enum class| **[PlatformKind](Namespaces/namespacellarp_1_1layers_1_1platform.md#enum-platformkind)** { ip, embedded, ip, embedded} |
| using std::variant< std::string_view, [dns::Question](Classes/structllarp_1_1dns_1_1Question.md) > | **[UnresolvedName_t](Namespaces/namespacellarp_1_1layers_1_1platform.md#using-unresolvedname-t)** <br>a variant for a name we have yet to resolve  |

## Types Documentation

### enum PlatformKind

| Enumerator | Value | Description |
| ---------- | ----- | ----------- |
| ip | | IP via tun interface.   |
| embedded | | IP via tap interface giving layer 2 hints.  embedded lokinet  |
| ip | | IP via tun interface.   |
| embedded | | IP via tap interface giving layer 2 hints.  embedded lokinet  |




### enum EtherType_t

| Enumerator | Value | Description |
| ---------- | ----- | ----------- |
| ipv4_unicast | | ipv4 unicast traffic   |
| ip_hybrid_unicast | | ipv4/ipv6 unicast traffic   |
| plainquic | | plainquic stream   |
| proto_auth | | flow layer auth protocol   |



the kind of traffic we are tunneling 

### enum PlatformKind

| Enumerator | Value | Description |
| ---------- | ----- | ----------- |
| ip | | IP via tun interface.   |
| embedded | | IP via tap interface giving layer 2 hints.  embedded lokinet  |
| ip | | IP via tun interface.   |
| embedded | | IP via tap interface giving layer 2 hints.  embedded lokinet  |




### using UnresolvedName_t

```cpp
using llarp::layers::platform::UnresolvedName_t = typedef std::variant<std::string_view, dns::Question>;
```

a variant for a name we have yet to resolve 






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

Updated on 2023-01-23 at 14:22:33 +0000