| 1 | /* SPDX-License-Identifier: LGPL-2.1-or-later */ |
| 2 | /* |
| 3 | * Copyright (C) 2004 Red Hat, Inc. |
| 4 | */ |
| 5 | |
| 6 | /* D-Bus-related definitions for NetworkManager VPN plugins. |
| 7 | * |
| 8 | * Note that although this header is installed as part of libnm, it is also |
| 9 | * used by some external code that does not link to libnm. |
| 10 | */ |
| 11 | |
| 12 | #ifndef __NM_VPN_DBUS_INTERFACE_H__ |
| 13 | #define __NM_VPN_DBUS_INTERFACE_H__ |
| 14 | |
| 15 | #include "nm-dbus-interface.h" |
| 16 | |
| 17 | #ifndef NM_VERSION_H |
| 18 | #define NM_DEPRECATED_IN_1_8_FOR(n) |
| 19 | #endif |
| 20 | |
| 21 | /* |
| 22 | * dbus services details |
| 23 | */ |
| 24 | #define NM_DBUS_PATH_VPN "/org/freedesktop/NetworkManager/VPN/Manager" |
| 25 | #define NM_DBUS_INTERFACE_VPN "org.freedesktop.NetworkManager.VPN.Manager" |
| 26 | |
| 27 | #define NM_DBUS_PATH_VPN_CONNECTION "/org/freedesktop/NetworkManager/VPN/Connection" |
| 28 | #define NM_DBUS_INTERFACE_VPN_CONNECTION "org.freedesktop.NetworkManager.VPN.Connection" |
| 29 | |
| 30 | #define NM_VPN_DBUS_PLUGIN_PATH "/org/freedesktop/NetworkManager/VPN/Plugin" |
| 31 | #define NM_VPN_DBUS_PLUGIN_INTERFACE "org.freedesktop.NetworkManager.VPN.Plugin" |
| 32 | |
| 33 | /* |
| 34 | * VPN Errors |
| 35 | */ |
| 36 | #define NM_DBUS_NO_ACTIVE_VPN_CONNECTION \ |
| 37 | "org.freedesktop.NetworkManager.VPNConnections.NoActiveVPNConnection" |
| 38 | #define NM_DBUS_NO_VPN_CONNECTIONS "org.freedesktop.NetworkManager.VPNConnections.NoVPNConnections" |
| 39 | #define NM_DBUS_INVALID_VPN_CONNECTION \ |
| 40 | "org.freedesktop.NetworkManager.VPNConnections.InvalidVPNConnection" |
| 41 | |
| 42 | #define NM_DBUS_VPN_ERROR_PREFIX "org.freedesktop.NetworkManager.VPN.Error" |
| 43 | #define NM_DBUS_VPN_STARTING_IN_PROGRESS "StartingInProgress" |
| 44 | #define NM_DBUS_VPN_ALREADY_STARTED "AlreadyStarted" |
| 45 | #define NM_DBUS_VPN_STOPPING_IN_PROGRESS "StoppingInProgress" |
| 46 | #define NM_DBUS_VPN_ALREADY_STOPPED "AlreadyStopped" |
| 47 | #define NM_DBUS_VPN_WRONG_STATE "WrongState" |
| 48 | #define NM_DBUS_VPN_BAD_ARGUMENTS "BadArguments" |
| 49 | #define NM_DBUS_VPN_INTERACTIVE_NOT_SUPPORTED "InteractiveNotSupported" |
| 50 | |
| 51 | /* |
| 52 | * VPN daemon signals |
| 53 | */ |
| 54 | #define NM_DBUS_VPN_SIGNAL_LOGIN_BANNER "LoginBanner" |
| 55 | #define NM_DBUS_VPN_SIGNAL_LOGIN_FAILED "LoginFailed" |
| 56 | #define NM_DBUS_VPN_SIGNAL_LAUNCH_FAILED "LaunchFailed" |
| 57 | #define NM_DBUS_VPN_SIGNAL_CONNECT_FAILED "ConnectFailed" |
| 58 | #define NM_DBUS_VPN_SIGNAL_VPN_CONFIG_BAD "VPNConfigBad" |
| 59 | #define NM_DBUS_VPN_SIGNAL_IP_CONFIG_BAD "IPConfigBad" |
| 60 | #define NM_DBUS_VPN_SIGNAL_STATE_CHANGE "StateChange" |
| 61 | #define NM_DBUS_VPN_SIGNAL_IP4_CONFIG "IP4Config" |
| 62 | |
| 63 | /** |
| 64 | * NMVpnServiceState: |
| 65 | * @NM_VPN_SERVICE_STATE_UNKNOWN: The state of the VPN plugin is unknown. |
| 66 | * @NM_VPN_SERVICE_STATE_INIT: The VPN plugin is initialized. |
| 67 | * @NM_VPN_SERVICE_STATE_SHUTDOWN: Not used. |
| 68 | * @NM_VPN_SERVICE_STATE_STARTING: The plugin is attempting to connect to a VPN server. |
| 69 | * @NM_VPN_SERVICE_STATE_STARTED: The plugin has connected to a VPN server. |
| 70 | * @NM_VPN_SERVICE_STATE_STOPPING: The plugin is disconnecting from the VPN server. |
| 71 | * @NM_VPN_SERVICE_STATE_STOPPED: The plugin has disconnected from the VPN server. |
| 72 | * |
| 73 | * VPN daemon states |
| 74 | */ |
| 75 | typedef enum { |
| 76 | NM_VPN_SERVICE_STATE_UNKNOWN = 0, |
| 77 | NM_VPN_SERVICE_STATE_INIT, |
| 78 | NM_VPN_SERVICE_STATE_SHUTDOWN, |
| 79 | NM_VPN_SERVICE_STATE_STARTING, |
| 80 | NM_VPN_SERVICE_STATE_STARTED, |
| 81 | NM_VPN_SERVICE_STATE_STOPPING, |
| 82 | NM_VPN_SERVICE_STATE_STOPPED |
| 83 | } NMVpnServiceState; |
| 84 | |
| 85 | /** |
| 86 | * NMVpnConnectionState: |
| 87 | * @NM_VPN_CONNECTION_STATE_UNKNOWN: The state of the VPN connection is |
| 88 | * unknown. |
| 89 | * @NM_VPN_CONNECTION_STATE_PREPARE: The VPN connection is preparing to |
| 90 | * connect. |
| 91 | * @NM_VPN_CONNECTION_STATE_NEED_AUTH: The VPN connection needs authorization |
| 92 | * credentials. |
| 93 | * @NM_VPN_CONNECTION_STATE_CONNECT: The VPN connection is being established. |
| 94 | * @NM_VPN_CONNECTION_STATE_IP_CONFIG_GET: The VPN connection is getting an IP |
| 95 | * address. |
| 96 | * @NM_VPN_CONNECTION_STATE_ACTIVATED: The VPN connection is active. |
| 97 | * @NM_VPN_CONNECTION_STATE_FAILED: The VPN connection failed. |
| 98 | * @NM_VPN_CONNECTION_STATE_DISCONNECTED: The VPN connection is disconnected. |
| 99 | * |
| 100 | * VPN connection states |
| 101 | */ |
| 102 | typedef enum { |
| 103 | NM_VPN_CONNECTION_STATE_UNKNOWN = 0, |
| 104 | NM_VPN_CONNECTION_STATE_PREPARE, |
| 105 | NM_VPN_CONNECTION_STATE_NEED_AUTH, |
| 106 | NM_VPN_CONNECTION_STATE_CONNECT, |
| 107 | NM_VPN_CONNECTION_STATE_IP_CONFIG_GET, |
| 108 | NM_VPN_CONNECTION_STATE_ACTIVATED, |
| 109 | NM_VPN_CONNECTION_STATE_FAILED, |
| 110 | NM_VPN_CONNECTION_STATE_DISCONNECTED |
| 111 | } NMVpnConnectionState; |
| 112 | |
| 113 | /** |
| 114 | * NMVpnConnectionStateReason: |
| 115 | * @NM_VPN_CONNECTION_STATE_REASON_UNKNOWN: The reason for the VPN connection |
| 116 | * state change is unknown. |
| 117 | * @NM_VPN_CONNECTION_STATE_REASON_NONE: No reason was given for the VPN |
| 118 | * connection state change. |
| 119 | * @NM_VPN_CONNECTION_STATE_REASON_USER_DISCONNECTED: The VPN connection changed |
| 120 | * state because the user disconnected it. |
| 121 | * @NM_VPN_CONNECTION_STATE_REASON_DEVICE_DISCONNECTED: The VPN connection |
| 122 | * changed state because the device it was using was disconnected. |
| 123 | * @NM_VPN_CONNECTION_STATE_REASON_SERVICE_STOPPED: The service providing the |
| 124 | * VPN connection was stopped. |
| 125 | * @NM_VPN_CONNECTION_STATE_REASON_IP_CONFIG_INVALID: The IP config of the VPN |
| 126 | * connection was invalid. |
| 127 | * @NM_VPN_CONNECTION_STATE_REASON_CONNECT_TIMEOUT: The connection attempt to |
| 128 | * the VPN service timed out. |
| 129 | * @NM_VPN_CONNECTION_STATE_REASON_SERVICE_START_TIMEOUT: A timeout occurred |
| 130 | * while starting the service providing the VPN connection. |
| 131 | * @NM_VPN_CONNECTION_STATE_REASON_SERVICE_START_FAILED: Starting the service |
| 132 | * starting the service providing the VPN connection failed. |
| 133 | * @NM_VPN_CONNECTION_STATE_REASON_NO_SECRETS: Necessary secrets for the VPN |
| 134 | * connection were not provided. |
| 135 | * @NM_VPN_CONNECTION_STATE_REASON_LOGIN_FAILED: Authentication to the VPN |
| 136 | * server failed. |
| 137 | * @NM_VPN_CONNECTION_STATE_REASON_CONNECTION_REMOVED: The connection was |
| 138 | * deleted from settings. |
| 139 | * |
| 140 | * VPN connection state reasons |
| 141 | */ |
| 142 | NM_DEPRECATED_IN_1_8_FOR(NMActiveConnectionStateReason) |
| 143 | typedef enum { |
| 144 | NM_VPN_CONNECTION_STATE_REASON_UNKNOWN = 0, |
| 145 | NM_VPN_CONNECTION_STATE_REASON_NONE = 1, |
| 146 | NM_VPN_CONNECTION_STATE_REASON_USER_DISCONNECTED = 2, |
| 147 | NM_VPN_CONNECTION_STATE_REASON_DEVICE_DISCONNECTED = 3, |
| 148 | NM_VPN_CONNECTION_STATE_REASON_SERVICE_STOPPED = 4, |
| 149 | NM_VPN_CONNECTION_STATE_REASON_IP_CONFIG_INVALID = 5, |
| 150 | NM_VPN_CONNECTION_STATE_REASON_CONNECT_TIMEOUT = 6, |
| 151 | NM_VPN_CONNECTION_STATE_REASON_SERVICE_START_TIMEOUT = 7, |
| 152 | NM_VPN_CONNECTION_STATE_REASON_SERVICE_START_FAILED = 8, |
| 153 | NM_VPN_CONNECTION_STATE_REASON_NO_SECRETS = 9, |
| 154 | NM_VPN_CONNECTION_STATE_REASON_LOGIN_FAILED = 10, |
| 155 | NM_VPN_CONNECTION_STATE_REASON_CONNECTION_REMOVED = 11, |
| 156 | } NMVpnConnectionStateReason; |
| 157 | |
| 158 | /** |
| 159 | * NMVpnPluginFailure: |
| 160 | * @NM_VPN_PLUGIN_FAILURE_LOGIN_FAILED: Login failed. |
| 161 | * @NM_VPN_PLUGIN_FAILURE_CONNECT_FAILED: Connect failed. |
| 162 | * @NM_VPN_PLUGIN_FAILURE_BAD_IP_CONFIG: Invalid IP configuration returned from |
| 163 | * the VPN plugin. |
| 164 | * |
| 165 | * VPN plugin failure reasons |
| 166 | */ |
| 167 | typedef enum { |
| 168 | NM_VPN_PLUGIN_FAILURE_LOGIN_FAILED, |
| 169 | NM_VPN_PLUGIN_FAILURE_CONNECT_FAILED, |
| 170 | NM_VPN_PLUGIN_FAILURE_BAD_IP_CONFIG |
| 171 | } NMVpnPluginFailure; |
| 172 | |
| 173 | #ifndef NM_VERSION_H |
| 174 | #undef NM_DEPRECATED_IN_1_8_FOR |
| 175 | #endif |
| 176 | |
| 177 | /*** Generic config ***/ |
| 178 | |
| 179 | /* string: VPN interface name (tun0, tap0, etc) */ |
| 180 | #define NM_VPN_PLUGIN_CONFIG_TUNDEV "tundev" |
| 181 | |
| 182 | /* string: Proxy PAC */ |
| 183 | #define NM_VPN_PLUGIN_CONFIG_PROXY_PAC "pac" |
| 184 | |
| 185 | /* string: Login message */ |
| 186 | #define NM_VPN_PLUGIN_CONFIG_BANNER "banner" |
| 187 | |
| 188 | /* uint32 / array of uint8: IP address of the public external VPN gateway (network byte order) */ |
| 189 | #define NM_VPN_PLUGIN_CONFIG_EXT_GATEWAY "gateway" |
| 190 | |
| 191 | /* uint32: Maximum Transfer Unit that the VPN interface should use */ |
| 192 | #define NM_VPN_PLUGIN_CONFIG_MTU "mtu" |
| 193 | |
| 194 | /* boolean: Has IP4 configuration? */ |
| 195 | #define NM_VPN_PLUGIN_CONFIG_HAS_IP4 "has-ip4" |
| 196 | |
| 197 | /* boolean: Has IP6 configuration? */ |
| 198 | #define NM_VPN_PLUGIN_CONFIG_HAS_IP6 "has-ip6" |
| 199 | |
| 200 | /* boolean: If %TRUE the VPN plugin can persist/reconnect the connection over |
| 201 | * link changes and VPN server dropouts. |
| 202 | */ |
| 203 | #define NM_VPN_PLUGIN_CAN_PERSIST "can-persist" |
| 204 | |
| 205 | /*** Ip4Config ***/ |
| 206 | |
| 207 | /* uint32: IP address of the internal gateway of the subnet the VPN interface is |
| 208 | * on, if the VPN uses subnet configuration (network byte order) |
| 209 | */ |
| 210 | #define NM_VPN_PLUGIN_IP4_CONFIG_INT_GATEWAY "internal-gateway" |
| 211 | |
| 212 | /* uint32: internal IP address of the local VPN interface (network byte order) */ |
| 213 | #define NM_VPN_PLUGIN_IP4_CONFIG_ADDRESS "address" |
| 214 | |
| 215 | /* uint32: IP address of the other side of Point-to-Point connection if the VPN |
| 216 | * uses Point-to-Point configuration. (network byte order) |
| 217 | */ |
| 218 | #define NM_VPN_PLUGIN_IP4_CONFIG_PTP "ptp" |
| 219 | |
| 220 | /* uint32: IP prefix of the VPN interface; 1 - 32 inclusive */ |
| 221 | #define NM_VPN_PLUGIN_IP4_CONFIG_PREFIX "prefix" |
| 222 | |
| 223 | /* array of uint32: IP addresses of DNS servers for the VPN (network byte order) */ |
| 224 | #define NM_VPN_PLUGIN_IP4_CONFIG_DNS "dns" |
| 225 | |
| 226 | /* array of uint32: IP addresses of NBNS/WINS servers for the VPN (network byte order) */ |
| 227 | #define NM_VPN_PLUGIN_IP4_CONFIG_NBNS "nbns" |
| 228 | |
| 229 | /* uint32: Message Segment Size that the VPN interface should use */ |
| 230 | #define NM_VPN_PLUGIN_IP4_CONFIG_MSS "mss" |
| 231 | |
| 232 | /* string: DNS domain name */ |
| 233 | #define NM_VPN_PLUGIN_IP4_CONFIG_DOMAIN "domain" |
| 234 | |
| 235 | /* array of strings: DNS domain names */ |
| 236 | #define NM_VPN_PLUGIN_IP4_CONFIG_DOMAINS "domains" |
| 237 | |
| 238 | /* [ip4 routes]: custom routes the client should apply, in the format used |
| 239 | * by nm_utils_ip4_routes_to/from_gvalue |
| 240 | */ |
| 241 | #define NM_VPN_PLUGIN_IP4_CONFIG_ROUTES "routes" |
| 242 | |
| 243 | /* whether the previous IP4 routing configuration should be preserved. */ |
| 244 | #define NM_VPN_PLUGIN_IP4_CONFIG_PRESERVE_ROUTES "preserve-routes" |
| 245 | |
| 246 | /* boolean: prevent this VPN connection from ever getting the default route */ |
| 247 | #define NM_VPN_PLUGIN_IP4_CONFIG_NEVER_DEFAULT "never-default" |
| 248 | |
| 249 | /* Deprecated */ |
| 250 | #define NM_VPN_PLUGIN_IP4_CONFIG_GATEWAY NM_VPN_PLUGIN_IP4_CONFIG_EXT_GATEWAY |
| 251 | |
| 252 | /* Legacy IP4 items; these are included in the IP4 config by older plugins, |
| 253 | * but in the generic config by newer plugins. |
| 254 | */ |
| 255 | |
| 256 | #define NM_VPN_PLUGIN_IP4_CONFIG_BANNER NM_VPN_PLUGIN_CONFIG_BANNER |
| 257 | #define NM_VPN_PLUGIN_IP4_CONFIG_EXT_GATEWAY NM_VPN_PLUGIN_CONFIG_EXT_GATEWAY |
| 258 | #define NM_VPN_PLUGIN_IP4_CONFIG_MTU NM_VPN_PLUGIN_CONFIG_MTU |
| 259 | #define NM_VPN_PLUGIN_IP4_CONFIG_TUNDEV NM_VPN_PLUGIN_CONFIG_TUNDEV |
| 260 | |
| 261 | /*** Ip6Config ***/ |
| 262 | |
| 263 | /* array of uint8: IP address of the internal gateway of the subnet the VPN interface is |
| 264 | * on, if the VPN uses subnet configuration (network byte order) |
| 265 | */ |
| 266 | #define NM_VPN_PLUGIN_IP6_CONFIG_INT_GATEWAY "internal-gateway" |
| 267 | |
| 268 | /* array of uint8: internal IP address of the local VPN interface (network byte order) */ |
| 269 | #define NM_VPN_PLUGIN_IP6_CONFIG_ADDRESS "address" |
| 270 | |
| 271 | /* array of uint8: IP address of the other side of Point-to-Point connection if the VPN |
| 272 | * uses Point-to-Point configuration. (network byte order) |
| 273 | */ |
| 274 | #define NM_VPN_PLUGIN_IP6_CONFIG_PTP "ptp" |
| 275 | |
| 276 | /* uint32: prefix length of the VPN interface; 1 - 128 inclusive */ |
| 277 | #define NM_VPN_PLUGIN_IP6_CONFIG_PREFIX "prefix" |
| 278 | |
| 279 | /* array of array of uint8: IP addresses of DNS servers for the VPN (network byte order) */ |
| 280 | #define NM_VPN_PLUGIN_IP6_CONFIG_DNS "dns" |
| 281 | |
| 282 | /* uint32: Message Segment Size that the VPN interface should use */ |
| 283 | #define NM_VPN_PLUGIN_IP6_CONFIG_MSS "mss" |
| 284 | |
| 285 | /* string: DNS domain name */ |
| 286 | #define NM_VPN_PLUGIN_IP6_CONFIG_DOMAIN "domain" |
| 287 | |
| 288 | /* array of strings: DNS domain names */ |
| 289 | #define NM_VPN_PLUGIN_IP6_CONFIG_DOMAINS "domains" |
| 290 | |
| 291 | /* [ip6 routes]: custom routes the client should apply, in the format used |
| 292 | * by nm_utils_ip6_routes_to/from_gvalue |
| 293 | */ |
| 294 | #define NM_VPN_PLUGIN_IP6_CONFIG_ROUTES "routes" |
| 295 | |
| 296 | /* whether the previous IP6 routing configuration should be preserved. */ |
| 297 | #define NM_VPN_PLUGIN_IP6_CONFIG_PRESERVE_ROUTES "preserve-routes" |
| 298 | |
| 299 | /* boolean: prevent this VPN connection from ever getting the default route */ |
| 300 | #define NM_VPN_PLUGIN_IP6_CONFIG_NEVER_DEFAULT "never-default" |
| 301 | |
| 302 | #endif /* __NM_VPN_DBUS_INTERFACE_H__ */ |
| 303 | |