// SPDX-License-Identifier: MIT
// Copyright © 2018 WireGuard LLC. All Rights Reserved.

import Foundation

enum PacketTunnelOptionKey: String {

    case interfaceName, wireguardSettings, remoteAddress, dnsServers, mtu,

    // IPv4 settings
    ipv4Addresses, ipv4SubnetMasks,
    ipv4IncludedRouteAddresses, ipv4IncludedRouteSubnetMasks,
    ipv4ExcludedRouteAddresses, ipv4ExcludedRouteSubnetMasks,

    // IPv6 settings
    ipv6Addresses, ipv6NetworkPrefixLengths,
    ipv6IncludedRouteAddresses, ipv6IncludedRouteNetworkPrefixLengths,
    ipv6ExcludedRouteAddresses, ipv6ExcludedRouteNetworkPrefixLengths
}

extension Dictionary where Key == String {
    subscript(key: PacketTunnelOptionKey) -> Value? {
        get {
            return self[key.rawValue]
        }
        set(value) {
            self[key.rawValue] = value
        }
    }
}