# PermissionPolicy

<a id="permissionpolicy"></a>

# PermissionPolicy

```cpp
#include <icy/turn/server/permissionpolicy.h>

class PermissionPolicy
```

[Defined in src/turn/include/icy/turn/server/permissionpolicy.h:25](https://github.com/auscaster/icey/blob/main/src/turn/include/icy/turn/server/permissionpolicy.h#L25)

Lightweight server-side TURN permission policy.

Keeps the explicit permission list fast and binary, while making server exceptions such as local-IP auto-grants explicit and auditable.

## Public Methods

| Return | Name | Description |
|--------|------|-------------|
|  | [`PermissionPolicy`](#permissionpolicy-1) `inline` `explicit` `noexcept` |  |
| `bool` | [`allowsExplicit`](#allowsexplicit) `const` `noexcept` |  |
| `bool` | [`allowsImplicit`](#allowsimplicit) `const` `noexcept` |  |
| `bool` | [`allows`](#allows) `const` `noexcept` |  |

---

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

### PermissionPolicy

`inline` `explicit` `noexcept`

```cpp
inline explicit PermissionPolicy(bool enableLocalIPPermissions = false) noexcept
```

[Defined in src/turn/include/icy/turn/server/permissionpolicy.h:28](https://github.com/auscaster/icey/blob/main/src/turn/include/icy/turn/server/permissionpolicy.h#L28)

---

<a id="allowsexplicit"></a>

### allowsExplicit

`const` `noexcept`

```cpp
bool allowsExplicit(const PermissionList & permissions, const Permission::Key & peerKey) const noexcept
```

[Defined in src/turn/include/icy/turn/server/permissionpolicy.h:33](https://github.com/auscaster/icey/blob/main/src/turn/include/icy/turn/server/permissionpolicy.h#L33)

---

<a id="allowsimplicit"></a>

### allowsImplicit

`const` `noexcept`

```cpp
bool allowsImplicit(const Permission::Key & peerKey) const noexcept
```

[Defined in src/turn/include/icy/turn/server/permissionpolicy.h:35](https://github.com/auscaster/icey/blob/main/src/turn/include/icy/turn/server/permissionpolicy.h#L35)

---

<a id="allows"></a>

### allows

`const` `noexcept`

```cpp
bool allows(const PermissionList & permissions, const Permission::Key & peerKey) const noexcept
```

[Defined in src/turn/include/icy/turn/server/permissionpolicy.h:36](https://github.com/auscaster/icey/blob/main/src/turn/include/icy/turn/server/permissionpolicy.h#L36)

## Private Attributes

| Return | Name | Description |
|--------|------|-------------|
| `bool` | [`_enableLocalIPPermissions`](#_enablelocalippermissions)  |  |

---

<a id="_enablelocalippermissions"></a>

### _enableLocalIPPermissions

```cpp
bool _enableLocalIPPermissions = false
```

[Defined in src/turn/include/icy/turn/server/permissionpolicy.h:42](https://github.com/auscaster/icey/blob/main/src/turn/include/icy/turn/server/permissionpolicy.h#L42)

## Private Static Methods

| Return | Name | Description |
|--------|------|-------------|
| `bool` | [`isLocalAutoGrantAddress`](#islocalautograntaddress) `static` `noexcept` |  |

---

<a id="islocalautograntaddress"></a>

### isLocalAutoGrantAddress

`static` `noexcept`

```cpp
static bool isLocalAutoGrantAddress(const Permission::Key & peerKey) noexcept
```

[Defined in src/turn/include/icy/turn/server/permissionpolicy.h:40](https://github.com/auscaster/icey/blob/main/src/turn/include/icy/turn/server/permissionpolicy.h#L40)
