// -*- Protocol-Buffers -*- //============================================================================== /// @file netconfig.proto /// @brief Network configuration interface /// @author Tor Slettnes //============================================================================== syntax = "proto3"; package picarro.platform.netconfig; import "google/protobuf/empty.proto"; import "google/protobuf/timestamp.proto"; import "google/protobuf/wrappers.proto"; import "signal.proto"; service NetConfig { rpc get_hostname(google.protobuf.Empty) returns (google.protobuf.StringValue); rpc set_hostname(google.protobuf.StringValue) returns (google.protobuf.Empty); rpc get_connections(google.protobuf.Empty) returns (ConnectionMap); rpc define_connection(ConnectionRequest) returns (google.protobuf.Empty); rpc remove_connection(MappingKey) returns (google.protobuf.BoolValue); rpc activate_connection(MappingKey) returns (google.protobuf.Empty); rpc deactivate_connection(MappingKey) returns (google.protobuf.Empty); rpc get_active_connections(google.protobuf.Empty) returns (ActiveConnectionMap); rpc request_scan(google.protobuf.Empty) returns (google.protobuf.Empty); rpc get_aps(google.protobuf.Empty) returns (AccessPointMap); rpc connect_ap(AccessPointConnection) returns (google.protobuf.Empty); rpc get_devices(google.protobuf.Empty) returns (DeviceMap); rpc get_global_data(google.protobuf.Empty) returns (GlobalData); rpc set_wireless_enabled(RadioState) returns (google.protobuf.Empty); rpc set_wireless_allowed(google.protobuf.BoolValue) returns (google.protobuf.Empty); rpc select_wireless_band(WirelessBandSetting) returns (google.protobuf.Empty); //======================================================================== // Watch for changes rpc watch (picarro.signal.Filter) returns (stream Signal); } // IP Configuration message IPConfigData { IPConfigMethod method = 1; repeated AddressData address_data = 2; string gateway = 3; repeated string dns = 4; repeated string domains = 5; repeated string searches = 6; repeated string wins = 7; } enum IPConfigMethod { // Synchronized to IPConfigMethod enumeration in // '../cpp/interface/netconfig-netconfig-structs.h'. METHOD_NONE = 0; METHOD_DISABLED = 1; METHOD_AUTO = 2; METHOD_DHCP = 3; METHOD_MANUAL = 4; METHOD_LINK_LOCAL = 5; } message AddressData { string address = 1; uint32 prefixlength = 2; } //============================================================================== // Connection // message ConnectionList // { // repeated ConnectionData connection = 1; // } message ConnectionMap { map map = 1; } message ConnectionRequest { ConnectionData data = 1; bool activate = 2; } message ConnectionData { string id = 1; string interface = 2; oneof data { WiredConnectionData wired_data = 4; WirelessConnectionData wireless_data = 5; } IPConfigData ip4config = 8; IPConfigData ip6config = 9; string uuid = 15; } message WiredConnectionData { bool auto_negotiate = 1; } message WirelessConnectionData { bytes ssid = 1; WirelessMode mode = 2; bool hidden = 3; uint32 tx_power = 4; KeyManagement key_mgmt = 5; uint32 auth_protos = 6; AuthenticationType auth_type = 7; oneof auth { WEP_Data wep = 8; WPA_Data wpa = 9; EAP_Data eap = 10; } optional WirelessBandSelection band = 15; } //============================================================================== // ActiveConnection // message ActiveConnectionList // { // repeated ActiveConnectionData activeconnection = 1; // } message ActiveConnectionMap { map map = 1; } message ActiveConnectionData { string id = 1; ActiveConnectionState state = 2; ActiveConnectionStateReason state_reason = 3; uint32 state_flags = 4; bool vpn = 7; bool default4 = 8; IPConfigData ip4config = 9; bool default6 = 10; IPConfigData ip6config = 11; ConnectionType type = 12; string uuid = 15; } enum ConnectionType { // Synchronized to ConnectionType enumeration in // '../cpp/interface/netconfig-netconfig-structs.h'. CONNECTION_TYPE_UNKNOWN = 0; CONNECTION_TYPE_WIRED = 1; CONNECTION_TYPE_WIRELESS = 2; } enum ActiveConnectionState { // Synchronized to NMActiveConnectionState enumeration in // '/usr/include/libnm/nm-dbus-interface.h'. CONNECTION_STATE_UNKNOWN = 0; CONNECTION_STATE_ACTIVATING = 1; CONNECTION_STATE_ACTIVATED = 2; CONNECTION_STATE_DEACTIVATING = 3; CONNECTION_STATE_DEACTIVATED = 4; } enum ActiveConnectionStateReason { // Synchronized to NMActiveConnectionStateReason enumeration in // '/usr/include/libnm/nm-dbus-interface.h'. CONNECTION_STATE_REASON_UNKNOWN = 0; CONNECTION_STATE_REASON_NONE = 1; CONNECTION_STATE_REASON_USER_DISCONNECTED = 2; CONNECTION_STATE_REASON_DEVICE_DISCONNECTED = 3; CONNECTION_STATE_REASON_SERVICE_STOPPED = 4; CONNECTION_STATE_REASON_IP_CONFIG_INVALID = 5; CONNECTION_STATE_REASON_CONNECT_TIMEOUT = 6; CONNECTION_STATE_REASON_SERVICE_START_TIMEOUT = 7; CONNECTION_STATE_REASON_SERVICE_START_FAILED = 8; CONNECTION_STATE_REASON_NO_SECRETS = 9; CONNECTION_STATE_REASON_LOGIN_FAILED = 10; CONNECTION_STATE_REASON_CONNECTION_REMOVED = 11; CONNECTION_STATE_REASON_DEPENDENCY_FAILED = 12; CONNECTION_STATE_REASON_DEVICE_REALIZE_FAILED = 13; CONNECTION_STATE_REASON_DEVICE_REMOVED = 14; } enum ActivationStateFlags { // Synchronized to NMActivationStateFlags enumeration in // '/usr/include/libnm/nm-dbus-interface.h'. ACTIVATION_STATE_FLAG_NONE = 0; ACTIVATION_STATE_FLAG_IS_MASTER = 0x1; ACTIVATION_STATE_FLAG_IS_SLAVE = 0x2; ACTIVATION_STATE_FLAG_LAYER2_READY = 0x4; ACTIVATION_STATE_FLAG_IP4_READY = 0x8; ACTIVATION_STATE_FLAG_IP6_READY = 0x10; ACTIVATION_STATE_FLAG_MASTER_HAS_SLAVES = 0x20; ACTIVATION_STATE_FLAG_LIFETIME_BOUND_TO_PROFILE_VISIBILITY = 0x40; ACTIVATION_STATE_FLAG_EXTERNAL = 0x80; } //============================================================================== // Authentication Data enum WirelessMode { // Synchronized to NM80211Mode enumeration in // '/usr/include/libnm/nm-dbus-interface.h'. MODE_UNKNOWN = 0; MODE_ADHOC = 1; MODE_INFRASTRUCTURE = 2; MODE_AP = 3; MODE_MESH = 4; } enum WirelessBandSelection { // Synchronized with WirelessBandSelection enumeration in // '../cpp/interface/netconfig-netconfig-structs.h'. BAND_ANY = 0; // Either 2.4 or 5 GHz BAND_A = 1; // 5 GHz only BAND_BG = 2; // 2.4 GHz only } enum KeyManagement { // Synchronized to KeyManagement enumeration in // '../cpp/interface/netconfig-netconfig-structs.h'. KEY_EMPTY = 0; KEY_WEP = 1; KEY_IEEE8021X = 2; KEY_PSK = 3; KEY_SAE = 4; KEY_OWE = 5; KEY_EAP = 6; }; enum WEP_KeyType { KEY_TYPE_UNKNOWN = 0; KEY_TYPE_KEY = 1; /* Hex or ASCII */ KEY_TYPE_PASSPHRASE = 2; /* 104/128-bit Passphrase */ } enum AuthenticationAlgorithm { // Synchronized to AuthenticationAlgorithm enumeration in // '../cpp/interface/netconfig-netconfig-structs.h'. AUTH_ALG_NONE = 0; AUTH_ALG_WEP_OPEN = 1; AUTH_ALG_WEP_SHARED = 2; AUTH_ALG_LEAP = 3; } enum EAP_Type { // Synchronized to IEEE8021X_EAP_Type enumeration in // '../cpp/interface/netconfig-netconfig-structs.h'. EAP_NONE = 0; EAP_MD5 = 1; EAP_TLS = 2; EAP_TTLS = 3; EAP_FAST = 4; EAP_LEAP = 5; EAP_PEAP = 6; EAP_PWD = 7; }; enum EAP_Phase2 { // Synchronized to IEEE8021X_EAP_Phase2 enumeration in // '../cpp/interface/netconfig-netconfig-structs.h'. Phase2_NONE = 0; Phase2_MD5 = 1; Phase2_GTC = 2; Phase2_PAP = 3; Phase2_CHAP = 4; Phase2_MSCHAP = 5; Phase2_MSCHAPv2 = 6; Phase2_MSCHAPv2_NO_EAP = 7; }; enum FAST_Provisioning { Provisioning_NONE = 0; Provisioning_DISABLED = 4; Provisioning_ANONYMOUS = 5; Provisioning_AUTHENTICATED = 6; Provisioning_ANY = 7; }; enum AuthenticationProtocol { // Synchronized to AuthenticationProtocol enumeration in // '../cpp/interface/netconfig-netconfig-structs.h'. AUTH_PROTO_UNSPECIFIED = 0x0000; AUTH_PROTO_WPA = 0x0001; AUTH_PROTO_RSN = 0x0002; } enum AuthenticationType { // Synchronized to AuthenticationType enumeration in // '../cpp/interface/netconfig-netconfig-structs.h'. AUTH_TYPE_NONE = 0; AUTH_TYPE_WEP = 1; AUTH_TYPE_WPA = 2; AUTH_TYPE_EAP = 3; AUTH_TYPE_UNKNOWN = 15; }; message WEP_Data { AuthenticationAlgorithm auth_alg = 1; repeated bytes key = 2; uint32 key_idx = 3; WEP_KeyType key_type = 4; } message WPA_Data { string psk = 1; } message EAP_Data { AuthenticationAlgorithm auth_alg = 1; EAP_Type eap_type = 2; EAP_Phase2 eap_phase2 = 3; string anonymous_identity = 4; string domain = 5; string identity = 6; string password = 7; string ca_cert = 8; string ca_cert_password = 9; string client_cert = 12; string client_cert_key = 13; string client_cert_password = 14; string pac_file = 16; FAST_Provisioning fast_provisioning = 17; } //============================================================================== // Access Point enum AccessPointSecurityFlags { // Synchronized to NM80211ApSecurityFlags enumeration in // '/usr/include/libnm/nm-dbus-interface.h'. AP_SEC_NONE = 0x00000000; AP_SEC_PAIR_WEP40 = 0x00000001; AP_SEC_PAIR_WEP104 = 0x00000002; AP_SEC_PAIR_TKIP = 0x00000004; AP_SEC_PAIR_CCMP = 0x00000008; AP_SEC_GROUP_WEP40 = 0x00000010; AP_SEC_GROUP_WEP104 = 0x00000020; AP_SEC_GROUP_TKIP = 0x00000040; AP_SEC_GROUP_CCMP = 0x00000080; AP_SEC_KEY_MGMT_PSK = 0x00000100; AP_SEC_KEY_MGMT_802_1X = 0x00000200; AP_SEC_KEY_MGMT_SAE = 0x00000400; AP_SEC_KEY_MGMT_OWE = 0x00000800; AP_SEC_KEY_MGMT_OWE_TM = 0x00001000; } // message AccessPointList // { // repeated AccessPointData ap = 1; // } message AccessPointMap { map map = 1; } message AccessPointConnection { oneof key { string bssid = 1; bytes ssid = 2; } ConnectionData connection = 8; } message AccessPointData { bytes ssid = 1; uint32 frequency = 2; uint32 flags = 3; uint32 rsn_flags = 4; uint32 wpa_flags = 5; string hwaddress = 6; WirelessMode mode = 7; uint32 maxbitrate = 8; uint32 strength = 9; google.protobuf.Timestamp lastseen = 10; AuthenticationType auth_type = 15; } //============================================================================== // Device // message DeviceList // { // repeated DeviceData device = 1; // } message DeviceMap { map map = 1; } message DeviceData { DeviceType type = 1; DeviceState state = 2; uint32 flags = 3; string interface = 4; string hwaddress = 5; IPConfigData ip4config = 6; IPConfigData ip6config = 7; string active_connection = 8; ConnectivityState ip4connectivity = 10; ConnectivityState ip6connectivity = 11; oneof devicedata { WiredDeviceData wired_data = 12; WirelessDeviceData wireless_data = 13; } DeviceStateReason state_reason = 22; } message WiredDeviceData { uint32 speed = 1; } message WirelessDeviceData { WirelessMode mode = 1; uint32 bitrate = 2; string active_accesspoint = 3; google.protobuf.Timestamp last_scan = 4; } enum DeviceType { // Synchronized to NMDeviceType enumeration in // '/usr/include/libnm/nm-dbus-interface.h'. DEVICE_TYPE_UNKNOWN = 0; DEVICE_TYPE_ETHERNET = 1; DEVICE_TYPE_WIFI = 2; DEVICE_TYPE_BLUETOOTH = 5; } enum DeviceState { // Synchronized to NMDeviceState enumeration in // '/usr/include/libnm/nm-dbus-interface.h'. DEVICE_STATE_UNKNOWN = 0; DEVICE_STATE_UNMANAGED = 10; DEVICE_STATE_UNAVAILABLE = 20; DEVICE_STATE_DISCONNECTED = 30; DEVICE_STATE_PREPARE = 40; DEVICE_STATE_CONFIG = 50; DEVICE_STATE_NEED_AUTH = 60; DEVICE_STATE_IP_CONFIG = 70; DEVICE_STATE_IP_CHECK = 80; DEVICE_STATE_SECONDARIES = 90; DEVICE_STATE_ACTIVATED = 100; DEVICE_STATE_DEACTIVATING = 110; DEVICE_STATE_FAILED = 120; } enum DeviceStateReason { DEVICE_STATE_REASON_NONE = 0; DEVICE_STATE_REASON_UNKNOWN = 1; DEVICE_STATE_REASON_NOW_MANAGED = 2; DEVICE_STATE_REASON_NOW_UNMANAGED = 3; DEVICE_STATE_REASON_CONFIG_FAILED = 4; DEVICE_STATE_REASON_IP_CONFIG_UNAVAILABLE = 5; DEVICE_STATE_REASON_IP_CONFIG_EXPIRED = 6; DEVICE_STATE_REASON_NO_SECRETS = 7; DEVICE_STATE_REASON_SUPPLICANT_DISCONNECT = 8; DEVICE_STATE_REASON_SUPPLICANT_CONFIG_FAILED = 9; DEVICE_STATE_REASON_SUPPLICANT_FAILED = 10; DEVICE_STATE_REASON_SUPPLICANT_TIMEOUT = 11; DEVICE_STATE_REASON_PPP_START_FAILED = 12; DEVICE_STATE_REASON_PPP_DISCONNECT = 13; DEVICE_STATE_REASON_PPP_FAILED = 14; DEVICE_STATE_REASON_DHCP_START_FAILED = 15; DEVICE_STATE_REASON_DHCP_ERROR = 16; DEVICE_STATE_REASON_DHCP_FAILED = 17; DEVICE_STATE_REASON_SHARED_START_FAILED = 18; DEVICE_STATE_REASON_SHARED_FAILED = 19; DEVICE_STATE_REASON_AUTOIP_START_FAILED = 20; DEVICE_STATE_REASON_AUTOIP_ERROR = 21; DEVICE_STATE_REASON_AUTOIP_FAILED = 22; DEVICE_STATE_REASON_MODEM_BUSY = 23; DEVICE_STATE_REASON_MODEM_NO_DIAL_TONE = 24; DEVICE_STATE_REASON_MODEM_NO_CARRIER = 25; DEVICE_STATE_REASON_MODEM_DIAL_TIMEOUT = 26; DEVICE_STATE_REASON_MODEM_DIAL_FAILED = 27; DEVICE_STATE_REASON_MODEM_INIT_FAILED = 28; DEVICE_STATE_REASON_GSM_APN_FAILED = 29; DEVICE_STATE_REASON_GSM_REGISTRATION_NOT_SEARCHING = 30; DEVICE_STATE_REASON_GSM_REGISTRATION_DENIED = 31; DEVICE_STATE_REASON_GSM_REGISTRATION_TIMEOUT = 32; DEVICE_STATE_REASON_GSM_REGISTRATION_FAILED = 33; DEVICE_STATE_REASON_GSM_PIN_CHECK_FAILED = 34; DEVICE_STATE_REASON_FIRMWARE_MISSING = 35; DEVICE_STATE_REASON_REMOVED = 36; DEVICE_STATE_REASON_SLEEPING = 37; DEVICE_STATE_REASON_CONNECTION_REMOVED = 38; DEVICE_STATE_REASON_USER_REQUESTED = 39; DEVICE_STATE_REASON_CARRIER = 40; DEVICE_STATE_REASON_CONNECTION_ASSUMED = 41; DEVICE_STATE_REASON_SUPPLICANT_AVAILABLE = 42; DEVICE_STATE_REASON_MODEM_NOT_FOUND = 43; DEVICE_STATE_REASON_BT_FAILED = 44; DEVICE_STATE_REASON_GSM_SIM_NOT_INSERTED = 45; DEVICE_STATE_REASON_GSM_SIM_PIN_REQUIRED = 46; DEVICE_STATE_REASON_GSM_SIM_PUK_REQUIRED = 47; DEVICE_STATE_REASON_GSM_SIM_WRONG = 48; DEVICE_STATE_REASON_INFINIBAND_MODE = 49; DEVICE_STATE_REASON_DEPENDENCY_FAILED = 50; DEVICE_STATE_REASON_BR2684_FAILED = 51; DEVICE_STATE_REASON_MODEM_MANAGER_UNAVAILABLE = 52; DEVICE_STATE_REASON_SSID_NOT_FOUND = 53; DEVICE_STATE_REASON_SECONDARY_CONNECTION_FAILED = 54; DEVICE_STATE_REASON_DCB_FCOE_FAILED = 55; DEVICE_STATE_REASON_TEAMD_CONTROL_FAILED = 56; DEVICE_STATE_REASON_MODEM_FAILED = 57; DEVICE_STATE_REASON_MODEM_AVAILABLE = 58; DEVICE_STATE_REASON_SIM_PIN_INCORRECT = 59; DEVICE_STATE_REASON_NEW_ACTIVATION = 60; DEVICE_STATE_REASON_PARENT_CHANGED = 61; DEVICE_STATE_REASON_PARENT_MANAGED_CHANGED = 62; DEVICE_STATE_REASON_OVSDB_FAILED = 63; DEVICE_STATE_REASON_IP_ADDRESS_DUPLICATE = 64; DEVICE_STATE_REASON_IP_METHOD_UNSUPPORTED = 65; DEVICE_STATE_REASON_SRIOV_CONFIGURATION_FAILED = 66; DEVICE_STATE_REASON_PEER_NOT_FOUND = 67; } enum DeviceFlags { // Synchronized to NMDeviceInterfaceFlags enumeration in // '/usr/include/libnm/nm-dbus-interface.h'. DEVICE_FLAG_NONE = 0x0; DEVICE_FLAG_UP = 0x1; DEVICE_FLAG_LOWER_UP = 0x2; DEVICE_FLAG_CARRIER = 0x10000; } enum ConnectivityState { // Synchronized to NMConnectivityState enumeration in // '/usr/include/libnm/nm-dbus-interface.h'. CONNECTIVITY_UNKNOWN = 0; CONNECTIVITY_NONE = 1; CONNECTIVITY_PORTAL = 2; CONNECTIVITY_LIMITED = 3; CONNECTIVITY_FULL = 4; } //============================================================================== // Global Data message GlobalData { NetworkState state = 1; ConnectivityState connectivity = 2; bool wireless_hardware_enabled = 8; bool wireless_enabled = 9; bool wireless_allowed = 15; WirelessBandSelection wireless_band_selection = 14; } enum NetworkState { // Synchronized to NMState enumeration in // '/usr/include/libnm/nm-dbus-interface.h'. NET_STATE_UNKNOWN = 0; NET_STATE_ASLEEP = 10; NET_STATE_DISCONNECTED = 20; NET_STATE_DISCONNECTING = 30; NET_STATE_CONNECTING = 40; NET_STATE_CONNECTED_LOCAL = 50; NET_STATE_CONNECTED_SITE = 60; NET_STATE_CONNECTED_GLOBAL = 70; } message RadioState { bool wireless_enabled = 1; } message WirelessBandSetting { WirelessBandSelection band_selection = 1; } //============================================================================== // Signals message MappingKey { string key = 1; } message Signal { picarro.signal.MappingAction mapping_action = 1; string mapping_key = 2; oneof signal { GlobalData global = 8; DeviceData device = 9; ConnectionData connection = 10; ActiveConnectionData active_connection = 11; AccessPointData accesspoint = 12; } }