# Permission::Key

<a id="key-1"></a>

# Key

```cpp
#include <icy/turn/permission.h>

struct Key
```

[Defined in src/turn/include/icy/turn/permission.h:41](https://github.com/auscaster/icey/blob/main/src/turn/include/icy/turn/permission.h#L41)

The peer IP address a permission covers, as its address family and raw bytes. A permission ignores the port.

## Public Attributes

| Return | Name | Description |
|--------|------|-------------|
| `int` | [`af`](#af-1)  |  |
| `std::array< uint8_t, 16 >` | [`bytes`](#bytes)  |  |
| `uint8_t` | [`size`](#size-11)  |  |

---

<a id="af-1"></a>

### af

```cpp
int af = AF_UNSPEC
```

[Defined in src/turn/include/icy/turn/permission.h:43](https://github.com/auscaster/icey/blob/main/src/turn/include/icy/turn/permission.h#L43)

---

<a id="bytes"></a>

### bytes

```cpp
std::array< uint8_t, 16 > bytes {}
```

[Defined in src/turn/include/icy/turn/permission.h:44](https://github.com/auscaster/icey/blob/main/src/turn/include/icy/turn/permission.h#L44)

---

<a id="size-11"></a>

### size

```cpp
uint8_t size = 0
```

[Defined in src/turn/include/icy/turn/permission.h:45](https://github.com/auscaster/icey/blob/main/src/turn/include/icy/turn/permission.h#L45)

## Public Methods

| Return | Name | Description |
|--------|------|-------------|
| `bool` | [`valid`](#valid-8) `const` `inline` |  |
| `bool` | [`matches`](#matches-1) `const` `inline` |  |
| `bool` | [`matches`](#matches-2) `const` `inline` |  |

---

<a id="valid-8"></a>

### valid

`const` `inline`

```cpp
inline bool valid() const
```

[Defined in src/turn/include/icy/turn/permission.h:47](https://github.com/auscaster/icey/blob/main/src/turn/include/icy/turn/permission.h#L47)

---

<a id="matches-1"></a>

### matches

`const` `inline`

```cpp
inline bool matches(const net::Address & address) const
```

[Defined in src/turn/include/icy/turn/permission.h:83](https://github.com/auscaster/icey/blob/main/src/turn/include/icy/turn/permission.h#L83)

---

<a id="matches-2"></a>

### matches

`const` `inline`

```cpp
inline bool matches(const Key & other) const
```

[Defined in src/turn/include/icy/turn/permission.h:92](https://github.com/auscaster/icey/blob/main/src/turn/include/icy/turn/permission.h#L92)

## Public Static Methods

| Return | Name | Description |
|--------|------|-------------|
| [`Key`](#key-1) | [`fromAddress`](#fromaddress) `static` `inline` |  |
| [`Key`](#key-1) | [`fromIP`](#fromip) `static` `inline` |  |

---

<a id="fromaddress"></a>

### fromAddress

`static` `inline`

```cpp
static inline Key fromAddress(const net::Address & address)
```

[Defined in src/turn/include/icy/turn/permission.h:52](https://github.com/auscaster/icey/blob/main/src/turn/include/icy/turn/permission.h#L52)

---

<a id="fromip"></a>

### fromIP

`static` `inline`

```cpp
static inline Key fromIP(const std::string & ip)
```

[Defined in src/turn/include/icy/turn/permission.h:74](https://github.com/auscaster/icey/blob/main/src/turn/include/icy/turn/permission.h#L74)
