nm_rs/auto/
enums.rs

1// This file was generated by gir (https://github.com/gtk-rs/gir)
2// from gir
3// from gtk-girs (https://github.com/gtk-rs/gir-files)
4// DO NOT EDIT
5
6use crate::ffi;
7use glib::{prelude::*, translate::*};
8
9#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
10#[non_exhaustive]
11pub enum NM80211Mode {
12    #[doc(alias = "NM_802_11_MODE_UNKNOWN")]
13    Unknown,
14    #[doc(alias = "NM_802_11_MODE_ADHOC")]
15    Adhoc,
16    #[doc(alias = "NM_802_11_MODE_INFRA")]
17    Infra,
18    #[doc(alias = "NM_802_11_MODE_AP")]
19    Ap,
20    #[doc(alias = "NM_802_11_MODE_MESH")]
21    Mesh,
22    #[doc(hidden)]
23    __Unknown(i32),
24}
25
26#[doc(hidden)]
27impl IntoGlib for NM80211Mode {
28    type GlibType = ffi::NM80211Mode;
29
30    #[inline]
31    fn into_glib(self) -> ffi::NM80211Mode {
32        match self {
33            Self::Unknown => ffi::NM_802_11_MODE_UNKNOWN,
34            Self::Adhoc => ffi::NM_802_11_MODE_ADHOC,
35            Self::Infra => ffi::NM_802_11_MODE_INFRA,
36            Self::Ap => ffi::NM_802_11_MODE_AP,
37            Self::Mesh => ffi::NM_802_11_MODE_MESH,
38            Self::__Unknown(value) => value,
39        }
40    }
41}
42
43#[doc(hidden)]
44impl FromGlib<ffi::NM80211Mode> for NM80211Mode {
45    #[inline]
46    unsafe fn from_glib(value: ffi::NM80211Mode) -> Self {
47        skip_assert_initialized!();
48
49        match value {
50            ffi::NM_802_11_MODE_UNKNOWN => Self::Unknown,
51            ffi::NM_802_11_MODE_ADHOC => Self::Adhoc,
52            ffi::NM_802_11_MODE_INFRA => Self::Infra,
53            ffi::NM_802_11_MODE_AP => Self::Ap,
54            ffi::NM_802_11_MODE_MESH => Self::Mesh,
55            value => Self::__Unknown(value),
56        }
57    }
58}
59
60impl StaticType for NM80211Mode {
61    #[inline]
62    #[doc(alias = "nm_802_11_mode_get_type")]
63    fn static_type() -> glib::Type {
64        unsafe { from_glib(ffi::nm_802_11_mode_get_type()) }
65    }
66}
67
68impl glib::HasParamSpec for NM80211Mode {
69    type ParamSpec = glib::ParamSpecEnum;
70    type SetValue = Self;
71    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
72
73    fn param_spec_builder() -> Self::BuilderFn {
74        Self::ParamSpec::builder_with_default
75    }
76}
77
78impl glib::value::ValueType for NM80211Mode {
79    type Type = Self;
80}
81
82unsafe impl<'a> glib::value::FromValue<'a> for NM80211Mode {
83    type Checker = glib::value::GenericValueTypeChecker<Self>;
84
85    #[inline]
86    unsafe fn from_value(value: &'a glib::Value) -> Self {
87        skip_assert_initialized!();
88        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
89    }
90}
91
92impl ToValue for NM80211Mode {
93    #[inline]
94    fn to_value(&self) -> glib::Value {
95        let mut value = glib::Value::for_value_type::<Self>();
96        unsafe {
97            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
98        }
99        value
100    }
101
102    #[inline]
103    fn value_type(&self) -> glib::Type {
104        Self::static_type()
105    }
106}
107
108impl From<NM80211Mode> for glib::Value {
109    #[inline]
110    fn from(v: NM80211Mode) -> Self {
111        skip_assert_initialized!();
112        ToValue::to_value(&v)
113    }
114}
115
116/// #NMActiveConnectionState values indicate the state of a connection to a
117/// specific network while it is starting, connected, or disconnecting from that
118/// network.
119#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
120#[non_exhaustive]
121#[doc(alias = "NMActiveConnectionState")]
122pub enum ActiveConnectionState {
123    /// the state of the connection is unknown
124    #[doc(alias = "NM_ACTIVE_CONNECTION_STATE_UNKNOWN")]
125    Unknown,
126    /// a network connection is being prepared
127    #[doc(alias = "NM_ACTIVE_CONNECTION_STATE_ACTIVATING")]
128    Activating,
129    /// there is a connection to the network
130    #[doc(alias = "NM_ACTIVE_CONNECTION_STATE_ACTIVATED")]
131    Activated,
132    /// the network connection is being
133    ///   torn down and cleaned up
134    #[doc(alias = "NM_ACTIVE_CONNECTION_STATE_DEACTIVATING")]
135    Deactivating,
136    /// the network connection is disconnected
137    ///   and will be removed
138    #[doc(alias = "NM_ACTIVE_CONNECTION_STATE_DEACTIVATED")]
139    Deactivated,
140    #[doc(hidden)]
141    __Unknown(i32),
142}
143
144#[doc(hidden)]
145impl IntoGlib for ActiveConnectionState {
146    type GlibType = ffi::NMActiveConnectionState;
147
148    #[inline]
149    fn into_glib(self) -> ffi::NMActiveConnectionState {
150        match self {
151            Self::Unknown => ffi::NM_ACTIVE_CONNECTION_STATE_UNKNOWN,
152            Self::Activating => ffi::NM_ACTIVE_CONNECTION_STATE_ACTIVATING,
153            Self::Activated => ffi::NM_ACTIVE_CONNECTION_STATE_ACTIVATED,
154            Self::Deactivating => ffi::NM_ACTIVE_CONNECTION_STATE_DEACTIVATING,
155            Self::Deactivated => ffi::NM_ACTIVE_CONNECTION_STATE_DEACTIVATED,
156            Self::__Unknown(value) => value,
157        }
158    }
159}
160
161#[doc(hidden)]
162impl FromGlib<ffi::NMActiveConnectionState> for ActiveConnectionState {
163    #[inline]
164    unsafe fn from_glib(value: ffi::NMActiveConnectionState) -> Self {
165        skip_assert_initialized!();
166
167        match value {
168            ffi::NM_ACTIVE_CONNECTION_STATE_UNKNOWN => Self::Unknown,
169            ffi::NM_ACTIVE_CONNECTION_STATE_ACTIVATING => Self::Activating,
170            ffi::NM_ACTIVE_CONNECTION_STATE_ACTIVATED => Self::Activated,
171            ffi::NM_ACTIVE_CONNECTION_STATE_DEACTIVATING => Self::Deactivating,
172            ffi::NM_ACTIVE_CONNECTION_STATE_DEACTIVATED => Self::Deactivated,
173            value => Self::__Unknown(value),
174        }
175    }
176}
177
178impl StaticType for ActiveConnectionState {
179    #[inline]
180    #[doc(alias = "nm_active_connection_state_get_type")]
181    fn static_type() -> glib::Type {
182        unsafe { from_glib(ffi::nm_active_connection_state_get_type()) }
183    }
184}
185
186impl glib::HasParamSpec for ActiveConnectionState {
187    type ParamSpec = glib::ParamSpecEnum;
188    type SetValue = Self;
189    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
190
191    fn param_spec_builder() -> Self::BuilderFn {
192        Self::ParamSpec::builder_with_default
193    }
194}
195
196impl glib::value::ValueType for ActiveConnectionState {
197    type Type = Self;
198}
199
200unsafe impl<'a> glib::value::FromValue<'a> for ActiveConnectionState {
201    type Checker = glib::value::GenericValueTypeChecker<Self>;
202
203    #[inline]
204    unsafe fn from_value(value: &'a glib::Value) -> Self {
205        skip_assert_initialized!();
206        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
207    }
208}
209
210impl ToValue for ActiveConnectionState {
211    #[inline]
212    fn to_value(&self) -> glib::Value {
213        let mut value = glib::Value::for_value_type::<Self>();
214        unsafe {
215            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
216        }
217        value
218    }
219
220    #[inline]
221    fn value_type(&self) -> glib::Type {
222        Self::static_type()
223    }
224}
225
226impl From<ActiveConnectionState> for glib::Value {
227    #[inline]
228    fn from(v: ActiveConnectionState) -> Self {
229        skip_assert_initialized!();
230        ToValue::to_value(&v)
231    }
232}
233
234/// Active connection state reasons.
235#[cfg(feature = "v1_8")]
236#[cfg_attr(docsrs, doc(cfg(feature = "v1_8")))]
237#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
238#[non_exhaustive]
239#[doc(alias = "NMActiveConnectionStateReason")]
240pub enum ActiveConnectionStateReason {
241    /// The reason for the active connection
242    ///   state change is unknown.
243    #[doc(alias = "NM_ACTIVE_CONNECTION_STATE_REASON_UNKNOWN")]
244    Unknown,
245    /// No reason was given for the active
246    ///   connection state change.
247    #[doc(alias = "NM_ACTIVE_CONNECTION_STATE_REASON_NONE")]
248    None,
249    /// The active connection changed
250    ///   state because the user disconnected it.
251    #[doc(alias = "NM_ACTIVE_CONNECTION_STATE_REASON_USER_DISCONNECTED")]
252    UserDisconnected,
253    /// The active connection
254    ///   changed state because the device it was using was disconnected.
255    #[doc(alias = "NM_ACTIVE_CONNECTION_STATE_REASON_DEVICE_DISCONNECTED")]
256    DeviceDisconnected,
257    /// The service providing the
258    ///   VPN connection was stopped.
259    #[doc(alias = "NM_ACTIVE_CONNECTION_STATE_REASON_SERVICE_STOPPED")]
260    ServiceStopped,
261    /// The IP config of the active
262    ///   connection was invalid.
263    #[doc(alias = "NM_ACTIVE_CONNECTION_STATE_REASON_IP_CONFIG_INVALID")]
264    IpConfigInvalid,
265    /// The connection attempt to
266    ///   the VPN service timed out.
267    #[doc(alias = "NM_ACTIVE_CONNECTION_STATE_REASON_CONNECT_TIMEOUT")]
268    ConnectTimeout,
269    /// A timeout occurred
270    ///   while starting the service providing the VPN connection.
271    #[doc(alias = "NM_ACTIVE_CONNECTION_STATE_REASON_SERVICE_START_TIMEOUT")]
272    ServiceStartTimeout,
273    /// Starting the service
274    ///   providing the VPN connection failed.
275    #[doc(alias = "NM_ACTIVE_CONNECTION_STATE_REASON_SERVICE_START_FAILED")]
276    ServiceStartFailed,
277    /// Necessary secrets for the
278    ///   connection were not provided.
279    #[doc(alias = "NM_ACTIVE_CONNECTION_STATE_REASON_NO_SECRETS")]
280    NoSecrets,
281    /// Authentication to the
282    ///   server failed.
283    #[doc(alias = "NM_ACTIVE_CONNECTION_STATE_REASON_LOGIN_FAILED")]
284    LoginFailed,
285    /// The connection was
286    ///   deleted from settings.
287    #[doc(alias = "NM_ACTIVE_CONNECTION_STATE_REASON_CONNECTION_REMOVED")]
288    ConnectionRemoved,
289    /// Master connection of this
290    ///   connection failed to activate.
291    #[doc(alias = "NM_ACTIVE_CONNECTION_STATE_REASON_DEPENDENCY_FAILED")]
292    DependencyFailed,
293    /// Could not create the
294    ///   software device link.
295    #[doc(alias = "NM_ACTIVE_CONNECTION_STATE_REASON_DEVICE_REALIZE_FAILED")]
296    DeviceRealizeFailed,
297    /// The device this connection
298    ///   depended on disappeared.
299    #[doc(alias = "NM_ACTIVE_CONNECTION_STATE_REASON_DEVICE_REMOVED")]
300    DeviceRemoved,
301    #[doc(hidden)]
302    __Unknown(i32),
303}
304
305#[cfg(feature = "v1_8")]
306#[cfg_attr(docsrs, doc(cfg(feature = "v1_8")))]
307#[doc(hidden)]
308impl IntoGlib for ActiveConnectionStateReason {
309    type GlibType = ffi::NMActiveConnectionStateReason;
310
311    fn into_glib(self) -> ffi::NMActiveConnectionStateReason {
312        match self {
313            Self::Unknown => ffi::NM_ACTIVE_CONNECTION_STATE_REASON_UNKNOWN,
314            Self::None => ffi::NM_ACTIVE_CONNECTION_STATE_REASON_NONE,
315            Self::UserDisconnected => ffi::NM_ACTIVE_CONNECTION_STATE_REASON_USER_DISCONNECTED,
316            Self::DeviceDisconnected => ffi::NM_ACTIVE_CONNECTION_STATE_REASON_DEVICE_DISCONNECTED,
317            Self::ServiceStopped => ffi::NM_ACTIVE_CONNECTION_STATE_REASON_SERVICE_STOPPED,
318            Self::IpConfigInvalid => ffi::NM_ACTIVE_CONNECTION_STATE_REASON_IP_CONFIG_INVALID,
319            Self::ConnectTimeout => ffi::NM_ACTIVE_CONNECTION_STATE_REASON_CONNECT_TIMEOUT,
320            Self::ServiceStartTimeout => {
321                ffi::NM_ACTIVE_CONNECTION_STATE_REASON_SERVICE_START_TIMEOUT
322            }
323            Self::ServiceStartFailed => ffi::NM_ACTIVE_CONNECTION_STATE_REASON_SERVICE_START_FAILED,
324            Self::NoSecrets => ffi::NM_ACTIVE_CONNECTION_STATE_REASON_NO_SECRETS,
325            Self::LoginFailed => ffi::NM_ACTIVE_CONNECTION_STATE_REASON_LOGIN_FAILED,
326            Self::ConnectionRemoved => ffi::NM_ACTIVE_CONNECTION_STATE_REASON_CONNECTION_REMOVED,
327            Self::DependencyFailed => ffi::NM_ACTIVE_CONNECTION_STATE_REASON_DEPENDENCY_FAILED,
328            Self::DeviceRealizeFailed => {
329                ffi::NM_ACTIVE_CONNECTION_STATE_REASON_DEVICE_REALIZE_FAILED
330            }
331            Self::DeviceRemoved => ffi::NM_ACTIVE_CONNECTION_STATE_REASON_DEVICE_REMOVED,
332            Self::__Unknown(value) => value,
333        }
334    }
335}
336
337#[cfg(feature = "v1_8")]
338#[cfg_attr(docsrs, doc(cfg(feature = "v1_8")))]
339#[doc(hidden)]
340impl FromGlib<ffi::NMActiveConnectionStateReason> for ActiveConnectionStateReason {
341    unsafe fn from_glib(value: ffi::NMActiveConnectionStateReason) -> Self {
342        skip_assert_initialized!();
343
344        match value {
345            ffi::NM_ACTIVE_CONNECTION_STATE_REASON_UNKNOWN => Self::Unknown,
346            ffi::NM_ACTIVE_CONNECTION_STATE_REASON_NONE => Self::None,
347            ffi::NM_ACTIVE_CONNECTION_STATE_REASON_USER_DISCONNECTED => Self::UserDisconnected,
348            ffi::NM_ACTIVE_CONNECTION_STATE_REASON_DEVICE_DISCONNECTED => Self::DeviceDisconnected,
349            ffi::NM_ACTIVE_CONNECTION_STATE_REASON_SERVICE_STOPPED => Self::ServiceStopped,
350            ffi::NM_ACTIVE_CONNECTION_STATE_REASON_IP_CONFIG_INVALID => Self::IpConfigInvalid,
351            ffi::NM_ACTIVE_CONNECTION_STATE_REASON_CONNECT_TIMEOUT => Self::ConnectTimeout,
352            ffi::NM_ACTIVE_CONNECTION_STATE_REASON_SERVICE_START_TIMEOUT => {
353                Self::ServiceStartTimeout
354            }
355            ffi::NM_ACTIVE_CONNECTION_STATE_REASON_SERVICE_START_FAILED => Self::ServiceStartFailed,
356            ffi::NM_ACTIVE_CONNECTION_STATE_REASON_NO_SECRETS => Self::NoSecrets,
357            ffi::NM_ACTIVE_CONNECTION_STATE_REASON_LOGIN_FAILED => Self::LoginFailed,
358            ffi::NM_ACTIVE_CONNECTION_STATE_REASON_CONNECTION_REMOVED => Self::ConnectionRemoved,
359            ffi::NM_ACTIVE_CONNECTION_STATE_REASON_DEPENDENCY_FAILED => Self::DependencyFailed,
360            ffi::NM_ACTIVE_CONNECTION_STATE_REASON_DEVICE_REALIZE_FAILED => {
361                Self::DeviceRealizeFailed
362            }
363            ffi::NM_ACTIVE_CONNECTION_STATE_REASON_DEVICE_REMOVED => Self::DeviceRemoved,
364            value => Self::__Unknown(value),
365        }
366    }
367}
368
369#[cfg(feature = "v1_8")]
370#[cfg_attr(docsrs, doc(cfg(feature = "v1_8")))]
371impl StaticType for ActiveConnectionStateReason {
372    #[inline]
373    #[doc(alias = "nm_active_connection_state_reason_get_type")]
374    fn static_type() -> glib::Type {
375        unsafe { from_glib(ffi::nm_active_connection_state_reason_get_type()) }
376    }
377}
378
379#[cfg(feature = "v1_8")]
380#[cfg_attr(docsrs, doc(cfg(feature = "v1_8")))]
381impl glib::HasParamSpec for ActiveConnectionStateReason {
382    type ParamSpec = glib::ParamSpecEnum;
383    type SetValue = Self;
384    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
385
386    fn param_spec_builder() -> Self::BuilderFn {
387        Self::ParamSpec::builder_with_default
388    }
389}
390
391#[cfg(feature = "v1_8")]
392#[cfg_attr(docsrs, doc(cfg(feature = "v1_8")))]
393impl glib::value::ValueType for ActiveConnectionStateReason {
394    type Type = Self;
395}
396
397#[cfg(feature = "v1_8")]
398#[cfg_attr(docsrs, doc(cfg(feature = "v1_8")))]
399unsafe impl<'a> glib::value::FromValue<'a> for ActiveConnectionStateReason {
400    type Checker = glib::value::GenericValueTypeChecker<Self>;
401
402    #[inline]
403    unsafe fn from_value(value: &'a glib::Value) -> Self {
404        skip_assert_initialized!();
405        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
406    }
407}
408
409#[cfg(feature = "v1_8")]
410#[cfg_attr(docsrs, doc(cfg(feature = "v1_8")))]
411impl ToValue for ActiveConnectionStateReason {
412    #[inline]
413    fn to_value(&self) -> glib::Value {
414        let mut value = glib::Value::for_value_type::<Self>();
415        unsafe {
416            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
417        }
418        value
419    }
420
421    #[inline]
422    fn value_type(&self) -> glib::Type {
423        Self::static_type()
424    }
425}
426
427#[cfg(feature = "v1_8")]
428#[cfg_attr(docsrs, doc(cfg(feature = "v1_8")))]
429impl From<ActiveConnectionStateReason> for glib::Value {
430    #[inline]
431    fn from(v: ActiveConnectionStateReason) -> Self {
432        skip_assert_initialized!();
433        ToValue::to_value(&v)
434    }
435}
436
437/// Errors returned from the secret-agent manager.
438///
439/// These errors may be returned from operations that could cause secrets to be
440/// requested (such as nm_client_activate_connection()), and correspond to D-Bus
441/// errors in the "org.freedesktop.NetworkManager.AgentManager" namespace.
442#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
443#[non_exhaustive]
444#[doc(alias = "NMAgentManagerError")]
445pub enum AgentManagerError {
446    /// unknown or unspecified error
447    #[doc(alias = "NM_AGENT_MANAGER_ERROR_FAILED")]
448    Failed,
449    /// The caller does not have permission
450    ///   to register a secret agent, or is trying to register the same secret agent
451    ///   twice.
452    #[doc(alias = "NM_AGENT_MANAGER_ERROR_PERMISSION_DENIED")]
453    PermissionDenied,
454    /// The identifier is not a valid
455    ///   secret agent identifier.
456    #[doc(alias = "NM_AGENT_MANAGER_ERROR_INVALID_IDENTIFIER")]
457    InvalidIdentifier,
458    /// The caller tried to unregister an agent
459    ///   that was not registered.
460    #[doc(alias = "NM_AGENT_MANAGER_ERROR_NOT_REGISTERED")]
461    NotRegistered,
462    /// No secret agent returned secrets for this
463    ///   request
464    #[doc(alias = "NM_AGENT_MANAGER_ERROR_NO_SECRETS")]
465    NoSecrets,
466    /// The user canceled the secrets request.
467    #[doc(alias = "NM_AGENT_MANAGER_ERROR_USER_CANCELED")]
468    UserCanceled,
469    #[doc(hidden)]
470    __Unknown(i32),
471}
472
473#[doc(hidden)]
474impl IntoGlib for AgentManagerError {
475    type GlibType = ffi::NMAgentManagerError;
476
477    #[inline]
478    fn into_glib(self) -> ffi::NMAgentManagerError {
479        match self {
480            Self::Failed => ffi::NM_AGENT_MANAGER_ERROR_FAILED,
481            Self::PermissionDenied => ffi::NM_AGENT_MANAGER_ERROR_PERMISSION_DENIED,
482            Self::InvalidIdentifier => ffi::NM_AGENT_MANAGER_ERROR_INVALID_IDENTIFIER,
483            Self::NotRegistered => ffi::NM_AGENT_MANAGER_ERROR_NOT_REGISTERED,
484            Self::NoSecrets => ffi::NM_AGENT_MANAGER_ERROR_NO_SECRETS,
485            Self::UserCanceled => ffi::NM_AGENT_MANAGER_ERROR_USER_CANCELED,
486            Self::__Unknown(value) => value,
487        }
488    }
489}
490
491#[doc(hidden)]
492impl FromGlib<ffi::NMAgentManagerError> for AgentManagerError {
493    #[inline]
494    unsafe fn from_glib(value: ffi::NMAgentManagerError) -> Self {
495        skip_assert_initialized!();
496
497        match value {
498            ffi::NM_AGENT_MANAGER_ERROR_FAILED => Self::Failed,
499            ffi::NM_AGENT_MANAGER_ERROR_PERMISSION_DENIED => Self::PermissionDenied,
500            ffi::NM_AGENT_MANAGER_ERROR_INVALID_IDENTIFIER => Self::InvalidIdentifier,
501            ffi::NM_AGENT_MANAGER_ERROR_NOT_REGISTERED => Self::NotRegistered,
502            ffi::NM_AGENT_MANAGER_ERROR_NO_SECRETS => Self::NoSecrets,
503            ffi::NM_AGENT_MANAGER_ERROR_USER_CANCELED => Self::UserCanceled,
504            value => Self::__Unknown(value),
505        }
506    }
507}
508
509impl glib::error::ErrorDomain for AgentManagerError {
510    #[inline]
511    fn domain() -> glib::Quark {
512        skip_assert_initialized!();
513
514        unsafe { from_glib(ffi::nm_agent_manager_error_quark()) }
515    }
516
517    #[inline]
518    fn code(self) -> i32 {
519        self.into_glib()
520    }
521
522    #[inline]
523    #[allow(clippy::match_single_binding)]
524    fn from(code: i32) -> Option<Self> {
525        skip_assert_initialized!();
526        match unsafe { from_glib(code) } {
527            Self::__Unknown(_) => Some(Self::Failed),
528            value => Some(value),
529        }
530    }
531}
532
533impl StaticType for AgentManagerError {
534    #[inline]
535    #[doc(alias = "nm_agent_manager_error_get_type")]
536    fn static_type() -> glib::Type {
537        unsafe { from_glib(ffi::nm_agent_manager_error_get_type()) }
538    }
539}
540
541impl glib::HasParamSpec for AgentManagerError {
542    type ParamSpec = glib::ParamSpecEnum;
543    type SetValue = Self;
544    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
545
546    fn param_spec_builder() -> Self::BuilderFn {
547        Self::ParamSpec::builder_with_default
548    }
549}
550
551impl glib::value::ValueType for AgentManagerError {
552    type Type = Self;
553}
554
555unsafe impl<'a> glib::value::FromValue<'a> for AgentManagerError {
556    type Checker = glib::value::GenericValueTypeChecker<Self>;
557
558    #[inline]
559    unsafe fn from_value(value: &'a glib::Value) -> Self {
560        skip_assert_initialized!();
561        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
562    }
563}
564
565impl ToValue for AgentManagerError {
566    #[inline]
567    fn to_value(&self) -> glib::Value {
568        let mut value = glib::Value::for_value_type::<Self>();
569        unsafe {
570            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
571        }
572        value
573    }
574
575    #[inline]
576    fn value_type(&self) -> glib::Type {
577        Self::static_type()
578    }
579}
580
581impl From<AgentManagerError> for glib::Value {
582    #[inline]
583    fn from(v: AgentManagerError) -> Self {
584        skip_assert_initialized!();
585        ToValue::to_value(&v)
586    }
587}
588
589/// #NMCapability names the numbers in the Capabilities property.
590/// Capabilities are positive numbers. They are part of stable API
591/// and a certain capability number is guaranteed not to change.
592///
593/// The range 0x7000 - 0x7FFF of capabilities is guaranteed not to be
594/// used by upstream NetworkManager. It could thus be used for downstream
595/// extensions.
596#[cfg(feature = "v1_6")]
597#[cfg_attr(docsrs, doc(cfg(feature = "v1_6")))]
598#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
599#[non_exhaustive]
600#[doc(alias = "NMCapability")]
601pub enum Capability {
602    /// Teams can be managed. This means the team device plugin
603    ///   is loaded.
604    #[doc(alias = "NM_CAPABILITY_TEAM")]
605    Team,
606    /// OpenVSwitch can be managed. This means the OVS device plugin
607    ///   is loaded. Since: 1.24.
608    #[doc(alias = "NM_CAPABILITY_OVS")]
609    Ovs,
610    #[doc(hidden)]
611    __Unknown(i32),
612}
613
614#[cfg(feature = "v1_6")]
615#[cfg_attr(docsrs, doc(cfg(feature = "v1_6")))]
616#[doc(hidden)]
617impl IntoGlib for Capability {
618    type GlibType = ffi::NMCapability;
619
620    #[inline]
621    fn into_glib(self) -> ffi::NMCapability {
622        match self {
623            Self::Team => ffi::NM_CAPABILITY_TEAM,
624            Self::Ovs => ffi::NM_CAPABILITY_OVS,
625            Self::__Unknown(value) => value,
626        }
627    }
628}
629
630#[cfg(feature = "v1_6")]
631#[cfg_attr(docsrs, doc(cfg(feature = "v1_6")))]
632#[doc(hidden)]
633impl FromGlib<ffi::NMCapability> for Capability {
634    #[inline]
635    unsafe fn from_glib(value: ffi::NMCapability) -> Self {
636        skip_assert_initialized!();
637
638        match value {
639            ffi::NM_CAPABILITY_TEAM => Self::Team,
640            ffi::NM_CAPABILITY_OVS => Self::Ovs,
641            value => Self::__Unknown(value),
642        }
643    }
644}
645
646#[cfg(feature = "v1_6")]
647#[cfg_attr(docsrs, doc(cfg(feature = "v1_6")))]
648impl StaticType for Capability {
649    #[inline]
650    #[doc(alias = "nm_capability_get_type")]
651    fn static_type() -> glib::Type {
652        unsafe { from_glib(ffi::nm_capability_get_type()) }
653    }
654}
655
656#[cfg(feature = "v1_6")]
657#[cfg_attr(docsrs, doc(cfg(feature = "v1_6")))]
658impl glib::HasParamSpec for Capability {
659    type ParamSpec = glib::ParamSpecEnum;
660    type SetValue = Self;
661    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
662
663    fn param_spec_builder() -> Self::BuilderFn {
664        Self::ParamSpec::builder_with_default
665    }
666}
667
668#[cfg(feature = "v1_6")]
669#[cfg_attr(docsrs, doc(cfg(feature = "v1_6")))]
670impl glib::value::ValueType for Capability {
671    type Type = Self;
672}
673
674#[cfg(feature = "v1_6")]
675#[cfg_attr(docsrs, doc(cfg(feature = "v1_6")))]
676unsafe impl<'a> glib::value::FromValue<'a> for Capability {
677    type Checker = glib::value::GenericValueTypeChecker<Self>;
678
679    #[inline]
680    unsafe fn from_value(value: &'a glib::Value) -> Self {
681        skip_assert_initialized!();
682        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
683    }
684}
685
686#[cfg(feature = "v1_6")]
687#[cfg_attr(docsrs, doc(cfg(feature = "v1_6")))]
688impl ToValue for Capability {
689    #[inline]
690    fn to_value(&self) -> glib::Value {
691        let mut value = glib::Value::for_value_type::<Self>();
692        unsafe {
693            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
694        }
695        value
696    }
697
698    #[inline]
699    fn value_type(&self) -> glib::Type {
700        Self::static_type()
701    }
702}
703
704#[cfg(feature = "v1_6")]
705#[cfg_attr(docsrs, doc(cfg(feature = "v1_6")))]
706impl From<Capability> for glib::Value {
707    #[inline]
708    fn from(v: Capability) -> Self {
709        skip_assert_initialized!();
710        ToValue::to_value(&v)
711    }
712}
713
714/// Describes errors that may result from operations involving a #NMClient.
715///
716/// D-Bus operations may also return errors from other domains, including
717/// #NMManagerError, #NMSettingsError, #NMAgentManagerError, and #NMConnectionError.
718#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
719#[non_exhaustive]
720#[doc(alias = "NMClientError")]
721pub enum ClientError {
722    /// unknown or unclassified error
723    #[doc(alias = "NM_CLIENT_ERROR_FAILED")]
724    Failed,
725    /// an operation that requires NetworkManager
726    ///   failed because NetworkManager is not running
727    #[doc(alias = "NM_CLIENT_ERROR_MANAGER_NOT_RUNNING")]
728    ManagerNotRunning,
729    /// NetworkManager claimed that an
730    ///   operation succeeded, but the object that was allegedly created (eg,
731    ///   #NMRemoteConnection, #NMActiveConnection) was apparently destroyed before
732    ///   #NMClient could create a representation of it.
733    #[doc(alias = "NM_CLIENT_ERROR_OBJECT_CREATION_FAILED")]
734    ObjectCreationFailed,
735    #[doc(hidden)]
736    __Unknown(i32),
737}
738
739#[doc(hidden)]
740impl IntoGlib for ClientError {
741    type GlibType = ffi::NMClientError;
742
743    #[inline]
744    fn into_glib(self) -> ffi::NMClientError {
745        match self {
746            Self::Failed => ffi::NM_CLIENT_ERROR_FAILED,
747            Self::ManagerNotRunning => ffi::NM_CLIENT_ERROR_MANAGER_NOT_RUNNING,
748            Self::ObjectCreationFailed => ffi::NM_CLIENT_ERROR_OBJECT_CREATION_FAILED,
749            Self::__Unknown(value) => value,
750        }
751    }
752}
753
754#[doc(hidden)]
755impl FromGlib<ffi::NMClientError> for ClientError {
756    #[inline]
757    unsafe fn from_glib(value: ffi::NMClientError) -> Self {
758        skip_assert_initialized!();
759
760        match value {
761            ffi::NM_CLIENT_ERROR_FAILED => Self::Failed,
762            ffi::NM_CLIENT_ERROR_MANAGER_NOT_RUNNING => Self::ManagerNotRunning,
763            ffi::NM_CLIENT_ERROR_OBJECT_CREATION_FAILED => Self::ObjectCreationFailed,
764            value => Self::__Unknown(value),
765        }
766    }
767}
768
769impl glib::error::ErrorDomain for ClientError {
770    #[inline]
771    fn domain() -> glib::Quark {
772        skip_assert_initialized!();
773
774        unsafe { from_glib(ffi::nm_client_error_quark()) }
775    }
776
777    #[inline]
778    fn code(self) -> i32 {
779        self.into_glib()
780    }
781
782    #[inline]
783    #[allow(clippy::match_single_binding)]
784    fn from(code: i32) -> Option<Self> {
785        skip_assert_initialized!();
786        match unsafe { from_glib(code) } {
787            Self::__Unknown(_) => Some(Self::Failed),
788            value => Some(value),
789        }
790    }
791}
792
793impl StaticType for ClientError {
794    #[inline]
795    #[doc(alias = "nm_client_error_get_type")]
796    fn static_type() -> glib::Type {
797        unsafe { from_glib(ffi::nm_client_error_get_type()) }
798    }
799}
800
801impl glib::HasParamSpec for ClientError {
802    type ParamSpec = glib::ParamSpecEnum;
803    type SetValue = Self;
804    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
805
806    fn param_spec_builder() -> Self::BuilderFn {
807        Self::ParamSpec::builder_with_default
808    }
809}
810
811impl glib::value::ValueType for ClientError {
812    type Type = Self;
813}
814
815unsafe impl<'a> glib::value::FromValue<'a> for ClientError {
816    type Checker = glib::value::GenericValueTypeChecker<Self>;
817
818    #[inline]
819    unsafe fn from_value(value: &'a glib::Value) -> Self {
820        skip_assert_initialized!();
821        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
822    }
823}
824
825impl ToValue for ClientError {
826    #[inline]
827    fn to_value(&self) -> glib::Value {
828        let mut value = glib::Value::for_value_type::<Self>();
829        unsafe {
830            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
831        }
832        value
833    }
834
835    #[inline]
836    fn value_type(&self) -> glib::Type {
837        Self::static_type()
838    }
839}
840
841impl From<ClientError> for glib::Value {
842    #[inline]
843    fn from(v: ClientError) -> Self {
844        skip_assert_initialized!();
845        ToValue::to_value(&v)
846    }
847}
848
849/// #NMClientPermission values indicate various permissions that NetworkManager
850/// clients can obtain to perform certain tasks on behalf of the current user.
851#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
852#[non_exhaustive]
853#[doc(alias = "NMClientPermission")]
854pub enum ClientPermission {
855    /// unknown or no permission
856    #[doc(alias = "NM_CLIENT_PERMISSION_NONE")]
857    None,
858    /// controls whether networking
859    ///  can be globally enabled or disabled
860    #[doc(alias = "NM_CLIENT_PERMISSION_ENABLE_DISABLE_NETWORK")]
861    EnableDisableNetwork,
862    /// controls whether Wi-Fi can be
863    ///  globally enabled or disabled
864    #[doc(alias = "NM_CLIENT_PERMISSION_ENABLE_DISABLE_WIFI")]
865    EnableDisableWifi,
866    /// controls whether WWAN (3G) can be
867    ///  globally enabled or disabled
868    #[doc(alias = "NM_CLIENT_PERMISSION_ENABLE_DISABLE_WWAN")]
869    EnableDisableWwan,
870    /// controls whether WiMAX can be
871    ///  globally enabled or disabled
872    #[doc(alias = "NM_CLIENT_PERMISSION_ENABLE_DISABLE_WIMAX")]
873    EnableDisableWimax,
874    /// controls whether the client can ask
875    ///  NetworkManager to sleep and wake
876    #[doc(alias = "NM_CLIENT_PERMISSION_SLEEP_WAKE")]
877    SleepWake,
878    /// controls whether networking connections
879    ///  can be started, stopped, and changed
880    #[doc(alias = "NM_CLIENT_PERMISSION_NETWORK_CONTROL")]
881    NetworkControl,
882    /// controls whether a password
883    ///  protected Wi-Fi hotspot can be created
884    #[doc(alias = "NM_CLIENT_PERMISSION_WIFI_SHARE_PROTECTED")]
885    WifiShareProtected,
886    /// controls whether an open Wi-Fi hotspot
887    ///  can be created
888    #[doc(alias = "NM_CLIENT_PERMISSION_WIFI_SHARE_OPEN")]
889    WifiShareOpen,
890    /// controls whether connections
891    ///  that are available to all users can be modified
892    #[doc(alias = "NM_CLIENT_PERMISSION_SETTINGS_MODIFY_SYSTEM")]
893    SettingsModifySystem,
894    /// controls whether connections
895    ///  owned by the current user can be modified
896    #[doc(alias = "NM_CLIENT_PERMISSION_SETTINGS_MODIFY_OWN")]
897    SettingsModifyOwn,
898    /// controls whether the
899    ///  persistent hostname can be changed
900    #[doc(alias = "NM_CLIENT_PERMISSION_SETTINGS_MODIFY_HOSTNAME")]
901    SettingsModifyHostname,
902    /// modify persistent global
903    ///  DNS configuration
904    #[doc(alias = "NM_CLIENT_PERMISSION_SETTINGS_MODIFY_GLOBAL_DNS")]
905    SettingsModifyGlobalDns,
906    /// controls access to Reload.
907    #[doc(alias = "NM_CLIENT_PERMISSION_RELOAD")]
908    Reload,
909    /// permission to create checkpoints.
910    #[doc(alias = "NM_CLIENT_PERMISSION_CHECKPOINT_ROLLBACK")]
911    CheckpointRollback,
912    /// controls whether device
913    ///  statistics can be globally enabled or disabled
914    #[doc(alias = "NM_CLIENT_PERMISSION_ENABLE_DISABLE_STATISTICS")]
915    EnableDisableStatistics,
916    /// controls whether
917    ///  connectivity check can be enabled or disabled
918    #[doc(alias = "NM_CLIENT_PERMISSION_ENABLE_DISABLE_CONNECTIVITY_CHECK")]
919    EnableDisableConnectivityCheck,
920    /// controls whether wifi scans can be performed
921    #[doc(alias = "NM_CLIENT_PERMISSION_WIFI_SCAN")]
922    WifiScan,
923    #[doc(hidden)]
924    __Unknown(i32),
925}
926
927#[doc(hidden)]
928impl IntoGlib for ClientPermission {
929    type GlibType = ffi::NMClientPermission;
930
931    fn into_glib(self) -> ffi::NMClientPermission {
932        match self {
933            Self::None => ffi::NM_CLIENT_PERMISSION_NONE,
934            Self::EnableDisableNetwork => ffi::NM_CLIENT_PERMISSION_ENABLE_DISABLE_NETWORK,
935            Self::EnableDisableWifi => ffi::NM_CLIENT_PERMISSION_ENABLE_DISABLE_WIFI,
936            Self::EnableDisableWwan => ffi::NM_CLIENT_PERMISSION_ENABLE_DISABLE_WWAN,
937            Self::EnableDisableWimax => ffi::NM_CLIENT_PERMISSION_ENABLE_DISABLE_WIMAX,
938            Self::SleepWake => ffi::NM_CLIENT_PERMISSION_SLEEP_WAKE,
939            Self::NetworkControl => ffi::NM_CLIENT_PERMISSION_NETWORK_CONTROL,
940            Self::WifiShareProtected => ffi::NM_CLIENT_PERMISSION_WIFI_SHARE_PROTECTED,
941            Self::WifiShareOpen => ffi::NM_CLIENT_PERMISSION_WIFI_SHARE_OPEN,
942            Self::SettingsModifySystem => ffi::NM_CLIENT_PERMISSION_SETTINGS_MODIFY_SYSTEM,
943            Self::SettingsModifyOwn => ffi::NM_CLIENT_PERMISSION_SETTINGS_MODIFY_OWN,
944            Self::SettingsModifyHostname => ffi::NM_CLIENT_PERMISSION_SETTINGS_MODIFY_HOSTNAME,
945            Self::SettingsModifyGlobalDns => ffi::NM_CLIENT_PERMISSION_SETTINGS_MODIFY_GLOBAL_DNS,
946            Self::Reload => ffi::NM_CLIENT_PERMISSION_RELOAD,
947            Self::CheckpointRollback => ffi::NM_CLIENT_PERMISSION_CHECKPOINT_ROLLBACK,
948            Self::EnableDisableStatistics => ffi::NM_CLIENT_PERMISSION_ENABLE_DISABLE_STATISTICS,
949            Self::EnableDisableConnectivityCheck => {
950                ffi::NM_CLIENT_PERMISSION_ENABLE_DISABLE_CONNECTIVITY_CHECK
951            }
952            Self::WifiScan => ffi::NM_CLIENT_PERMISSION_WIFI_SCAN,
953            Self::__Unknown(value) => value,
954        }
955    }
956}
957
958#[doc(hidden)]
959impl FromGlib<ffi::NMClientPermission> for ClientPermission {
960    unsafe fn from_glib(value: ffi::NMClientPermission) -> Self {
961        skip_assert_initialized!();
962
963        match value {
964            ffi::NM_CLIENT_PERMISSION_NONE => Self::None,
965            ffi::NM_CLIENT_PERMISSION_ENABLE_DISABLE_NETWORK => Self::EnableDisableNetwork,
966            ffi::NM_CLIENT_PERMISSION_ENABLE_DISABLE_WIFI => Self::EnableDisableWifi,
967            ffi::NM_CLIENT_PERMISSION_ENABLE_DISABLE_WWAN => Self::EnableDisableWwan,
968            ffi::NM_CLIENT_PERMISSION_ENABLE_DISABLE_WIMAX => Self::EnableDisableWimax,
969            ffi::NM_CLIENT_PERMISSION_SLEEP_WAKE => Self::SleepWake,
970            ffi::NM_CLIENT_PERMISSION_NETWORK_CONTROL => Self::NetworkControl,
971            ffi::NM_CLIENT_PERMISSION_WIFI_SHARE_PROTECTED => Self::WifiShareProtected,
972            ffi::NM_CLIENT_PERMISSION_WIFI_SHARE_OPEN => Self::WifiShareOpen,
973            ffi::NM_CLIENT_PERMISSION_SETTINGS_MODIFY_SYSTEM => Self::SettingsModifySystem,
974            ffi::NM_CLIENT_PERMISSION_SETTINGS_MODIFY_OWN => Self::SettingsModifyOwn,
975            ffi::NM_CLIENT_PERMISSION_SETTINGS_MODIFY_HOSTNAME => Self::SettingsModifyHostname,
976            ffi::NM_CLIENT_PERMISSION_SETTINGS_MODIFY_GLOBAL_DNS => Self::SettingsModifyGlobalDns,
977            ffi::NM_CLIENT_PERMISSION_RELOAD => Self::Reload,
978            ffi::NM_CLIENT_PERMISSION_CHECKPOINT_ROLLBACK => Self::CheckpointRollback,
979            ffi::NM_CLIENT_PERMISSION_ENABLE_DISABLE_STATISTICS => Self::EnableDisableStatistics,
980            ffi::NM_CLIENT_PERMISSION_ENABLE_DISABLE_CONNECTIVITY_CHECK => {
981                Self::EnableDisableConnectivityCheck
982            }
983            ffi::NM_CLIENT_PERMISSION_WIFI_SCAN => Self::WifiScan,
984            value => Self::__Unknown(value),
985        }
986    }
987}
988
989impl StaticType for ClientPermission {
990    #[inline]
991    #[doc(alias = "nm_client_permission_get_type")]
992    fn static_type() -> glib::Type {
993        unsafe { from_glib(ffi::nm_client_permission_get_type()) }
994    }
995}
996
997impl glib::HasParamSpec for ClientPermission {
998    type ParamSpec = glib::ParamSpecEnum;
999    type SetValue = Self;
1000    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
1001
1002    fn param_spec_builder() -> Self::BuilderFn {
1003        Self::ParamSpec::builder_with_default
1004    }
1005}
1006
1007impl glib::value::ValueType for ClientPermission {
1008    type Type = Self;
1009}
1010
1011unsafe impl<'a> glib::value::FromValue<'a> for ClientPermission {
1012    type Checker = glib::value::GenericValueTypeChecker<Self>;
1013
1014    #[inline]
1015    unsafe fn from_value(value: &'a glib::Value) -> Self {
1016        skip_assert_initialized!();
1017        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
1018    }
1019}
1020
1021impl ToValue for ClientPermission {
1022    #[inline]
1023    fn to_value(&self) -> glib::Value {
1024        let mut value = glib::Value::for_value_type::<Self>();
1025        unsafe {
1026            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
1027        }
1028        value
1029    }
1030
1031    #[inline]
1032    fn value_type(&self) -> glib::Type {
1033        Self::static_type()
1034    }
1035}
1036
1037impl From<ClientPermission> for glib::Value {
1038    #[inline]
1039    fn from(v: ClientPermission) -> Self {
1040        skip_assert_initialized!();
1041        ToValue::to_value(&v)
1042    }
1043}
1044
1045/// #NMClientPermissionResult values indicate what authorizations and permissions
1046/// the user requires to obtain a given #NMClientPermission
1047#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
1048#[non_exhaustive]
1049#[doc(alias = "NMClientPermissionResult")]
1050pub enum ClientPermissionResult {
1051    /// unknown or no authorization
1052    #[doc(alias = "NM_CLIENT_PERMISSION_RESULT_UNKNOWN")]
1053    Unknown,
1054    /// the permission is available
1055    #[doc(alias = "NM_CLIENT_PERMISSION_RESULT_YES")]
1056    Yes,
1057    /// authorization is necessary before the
1058    ///  permission is available
1059    #[doc(alias = "NM_CLIENT_PERMISSION_RESULT_AUTH")]
1060    Auth,
1061    /// permission to perform the operation is
1062    ///  denied by system policy
1063    #[doc(alias = "NM_CLIENT_PERMISSION_RESULT_NO")]
1064    No,
1065    #[doc(hidden)]
1066    __Unknown(i32),
1067}
1068
1069#[doc(hidden)]
1070impl IntoGlib for ClientPermissionResult {
1071    type GlibType = ffi::NMClientPermissionResult;
1072
1073    #[inline]
1074    fn into_glib(self) -> ffi::NMClientPermissionResult {
1075        match self {
1076            Self::Unknown => ffi::NM_CLIENT_PERMISSION_RESULT_UNKNOWN,
1077            Self::Yes => ffi::NM_CLIENT_PERMISSION_RESULT_YES,
1078            Self::Auth => ffi::NM_CLIENT_PERMISSION_RESULT_AUTH,
1079            Self::No => ffi::NM_CLIENT_PERMISSION_RESULT_NO,
1080            Self::__Unknown(value) => value,
1081        }
1082    }
1083}
1084
1085#[doc(hidden)]
1086impl FromGlib<ffi::NMClientPermissionResult> for ClientPermissionResult {
1087    #[inline]
1088    unsafe fn from_glib(value: ffi::NMClientPermissionResult) -> Self {
1089        skip_assert_initialized!();
1090
1091        match value {
1092            ffi::NM_CLIENT_PERMISSION_RESULT_UNKNOWN => Self::Unknown,
1093            ffi::NM_CLIENT_PERMISSION_RESULT_YES => Self::Yes,
1094            ffi::NM_CLIENT_PERMISSION_RESULT_AUTH => Self::Auth,
1095            ffi::NM_CLIENT_PERMISSION_RESULT_NO => Self::No,
1096            value => Self::__Unknown(value),
1097        }
1098    }
1099}
1100
1101impl StaticType for ClientPermissionResult {
1102    #[inline]
1103    #[doc(alias = "nm_client_permission_result_get_type")]
1104    fn static_type() -> glib::Type {
1105        unsafe { from_glib(ffi::nm_client_permission_result_get_type()) }
1106    }
1107}
1108
1109impl glib::HasParamSpec for ClientPermissionResult {
1110    type ParamSpec = glib::ParamSpecEnum;
1111    type SetValue = Self;
1112    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
1113
1114    fn param_spec_builder() -> Self::BuilderFn {
1115        Self::ParamSpec::builder_with_default
1116    }
1117}
1118
1119impl glib::value::ValueType for ClientPermissionResult {
1120    type Type = Self;
1121}
1122
1123unsafe impl<'a> glib::value::FromValue<'a> for ClientPermissionResult {
1124    type Checker = glib::value::GenericValueTypeChecker<Self>;
1125
1126    #[inline]
1127    unsafe fn from_value(value: &'a glib::Value) -> Self {
1128        skip_assert_initialized!();
1129        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
1130    }
1131}
1132
1133impl ToValue for ClientPermissionResult {
1134    #[inline]
1135    fn to_value(&self) -> glib::Value {
1136        let mut value = glib::Value::for_value_type::<Self>();
1137        unsafe {
1138            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
1139        }
1140        value
1141    }
1142
1143    #[inline]
1144    fn value_type(&self) -> glib::Type {
1145        Self::static_type()
1146    }
1147}
1148
1149impl From<ClientPermissionResult> for glib::Value {
1150    #[inline]
1151    fn from(v: ClientPermissionResult) -> Self {
1152        skip_assert_initialized!();
1153        ToValue::to_value(&v)
1154    }
1155}
1156
1157/// Describes errors that may result from operations involving a #NMConnection
1158/// or its #NMSettings.
1159///
1160/// These errors may be returned directly from #NMConnection and #NMSetting
1161/// methods, or may be returned from D-Bus operations (eg on #NMClient or
1162/// #NMDevice), where they correspond to errors in the
1163/// "org.freedesktop.NetworkManager.Settings.Connection" namespace.
1164#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
1165#[non_exhaustive]
1166#[doc(alias = "NMConnectionError")]
1167pub enum ConnectionError {
1168    /// unknown or unclassified error
1169    #[doc(alias = "NM_CONNECTION_ERROR_FAILED")]
1170    Failed,
1171    /// the #NMConnection object
1172    ///   did not contain the specified #NMSetting object
1173    #[doc(alias = "NM_CONNECTION_ERROR_SETTING_NOT_FOUND")]
1174    SettingNotFound,
1175    /// the #NMConnection did not contain the
1176    ///   requested #NMSetting property
1177    #[doc(alias = "NM_CONNECTION_ERROR_PROPERTY_NOT_FOUND")]
1178    PropertyNotFound,
1179    /// an operation which requires a secret
1180    ///   was attempted on a non-secret property
1181    #[doc(alias = "NM_CONNECTION_ERROR_PROPERTY_NOT_SECRET")]
1182    PropertyNotSecret,
1183    /// the #NMConnection object is missing an
1184    ///   #NMSetting which is required for its configuration. The error message will
1185    ///   always be prefixed with "&lt;setting-name>: ", where "&lt;setting-name>" is the
1186    ///   name of the setting that is missing.
1187    #[doc(alias = "NM_CONNECTION_ERROR_MISSING_SETTING")]
1188    MissingSetting,
1189    /// the #NMConnection object contains an
1190    ///   invalid or inappropriate #NMSetting. The error message will always be
1191    ///   prefixed with "&lt;setting-name>: ", where "&lt;setting-name>" is the name of the
1192    ///   setting that is invalid.
1193    #[doc(alias = "NM_CONNECTION_ERROR_INVALID_SETTING")]
1194    InvalidSetting,
1195    /// the #NMConnection object is invalid
1196    ///   because it is missing a required property. The error message will always be
1197    ///   prefixed with "&lt;setting-name>.&lt;property-name>: ", where "&lt;setting-name>" is
1198    ///   the name of the setting with the missing property, and "&lt;property-name>" is
1199    ///   the property that is missing.
1200    #[doc(alias = "NM_CONNECTION_ERROR_MISSING_PROPERTY")]
1201    MissingProperty,
1202    /// the #NMConnection object is invalid
1203    ///   because a property has an invalid value. The error message will always be
1204    ///   prefixed with "&lt;setting-name>.&lt;property-name>: ", where "&lt;setting-name>" is
1205    ///   the name of the setting with the invalid property, and "&lt;property-name>" is
1206    ///   the property that is invalid.
1207    #[doc(alias = "NM_CONNECTION_ERROR_INVALID_PROPERTY")]
1208    InvalidProperty,
1209    #[doc(hidden)]
1210    __Unknown(i32),
1211}
1212
1213#[doc(hidden)]
1214impl IntoGlib for ConnectionError {
1215    type GlibType = ffi::NMConnectionError;
1216
1217    #[inline]
1218    fn into_glib(self) -> ffi::NMConnectionError {
1219        match self {
1220            Self::Failed => ffi::NM_CONNECTION_ERROR_FAILED,
1221            Self::SettingNotFound => ffi::NM_CONNECTION_ERROR_SETTING_NOT_FOUND,
1222            Self::PropertyNotFound => ffi::NM_CONNECTION_ERROR_PROPERTY_NOT_FOUND,
1223            Self::PropertyNotSecret => ffi::NM_CONNECTION_ERROR_PROPERTY_NOT_SECRET,
1224            Self::MissingSetting => ffi::NM_CONNECTION_ERROR_MISSING_SETTING,
1225            Self::InvalidSetting => ffi::NM_CONNECTION_ERROR_INVALID_SETTING,
1226            Self::MissingProperty => ffi::NM_CONNECTION_ERROR_MISSING_PROPERTY,
1227            Self::InvalidProperty => ffi::NM_CONNECTION_ERROR_INVALID_PROPERTY,
1228            Self::__Unknown(value) => value,
1229        }
1230    }
1231}
1232
1233#[doc(hidden)]
1234impl FromGlib<ffi::NMConnectionError> for ConnectionError {
1235    #[inline]
1236    unsafe fn from_glib(value: ffi::NMConnectionError) -> Self {
1237        skip_assert_initialized!();
1238
1239        match value {
1240            ffi::NM_CONNECTION_ERROR_FAILED => Self::Failed,
1241            ffi::NM_CONNECTION_ERROR_SETTING_NOT_FOUND => Self::SettingNotFound,
1242            ffi::NM_CONNECTION_ERROR_PROPERTY_NOT_FOUND => Self::PropertyNotFound,
1243            ffi::NM_CONNECTION_ERROR_PROPERTY_NOT_SECRET => Self::PropertyNotSecret,
1244            ffi::NM_CONNECTION_ERROR_MISSING_SETTING => Self::MissingSetting,
1245            ffi::NM_CONNECTION_ERROR_INVALID_SETTING => Self::InvalidSetting,
1246            ffi::NM_CONNECTION_ERROR_MISSING_PROPERTY => Self::MissingProperty,
1247            ffi::NM_CONNECTION_ERROR_INVALID_PROPERTY => Self::InvalidProperty,
1248            value => Self::__Unknown(value),
1249        }
1250    }
1251}
1252
1253impl glib::error::ErrorDomain for ConnectionError {
1254    #[inline]
1255    fn domain() -> glib::Quark {
1256        skip_assert_initialized!();
1257
1258        unsafe { from_glib(ffi::nm_connection_error_quark()) }
1259    }
1260
1261    #[inline]
1262    fn code(self) -> i32 {
1263        self.into_glib()
1264    }
1265
1266    #[inline]
1267    #[allow(clippy::match_single_binding)]
1268    fn from(code: i32) -> Option<Self> {
1269        skip_assert_initialized!();
1270        match unsafe { from_glib(code) } {
1271            Self::__Unknown(_) => Some(Self::Failed),
1272            value => Some(value),
1273        }
1274    }
1275}
1276
1277impl StaticType for ConnectionError {
1278    #[inline]
1279    #[doc(alias = "nm_connection_error_get_type")]
1280    fn static_type() -> glib::Type {
1281        unsafe { from_glib(ffi::nm_connection_error_get_type()) }
1282    }
1283}
1284
1285impl glib::HasParamSpec for ConnectionError {
1286    type ParamSpec = glib::ParamSpecEnum;
1287    type SetValue = Self;
1288    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
1289
1290    fn param_spec_builder() -> Self::BuilderFn {
1291        Self::ParamSpec::builder_with_default
1292    }
1293}
1294
1295impl glib::value::ValueType for ConnectionError {
1296    type Type = Self;
1297}
1298
1299unsafe impl<'a> glib::value::FromValue<'a> for ConnectionError {
1300    type Checker = glib::value::GenericValueTypeChecker<Self>;
1301
1302    #[inline]
1303    unsafe fn from_value(value: &'a glib::Value) -> Self {
1304        skip_assert_initialized!();
1305        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
1306    }
1307}
1308
1309impl ToValue for ConnectionError {
1310    #[inline]
1311    fn to_value(&self) -> glib::Value {
1312        let mut value = glib::Value::for_value_type::<Self>();
1313        unsafe {
1314            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
1315        }
1316        value
1317    }
1318
1319    #[inline]
1320    fn value_type(&self) -> glib::Type {
1321        Self::static_type()
1322    }
1323}
1324
1325impl From<ConnectionError> for glib::Value {
1326    #[inline]
1327    fn from(v: ConnectionError) -> Self {
1328        skip_assert_initialized!();
1329        ToValue::to_value(&v)
1330    }
1331}
1332
1333#[cfg(feature = "v1_14")]
1334#[cfg_attr(docsrs, doc(cfg(feature = "v1_14")))]
1335#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
1336#[non_exhaustive]
1337#[doc(alias = "NMConnectionMultiConnect")]
1338pub enum ConnectionMultiConnect {
1339    /// indicates that the per-connection
1340    ///   setting is unspecified. In this case, it will fallback to the default
1341    ///   value, which is [`Single`][Self::Single].
1342    #[doc(alias = "NM_CONNECTION_MULTI_CONNECT_DEFAULT")]
1343    Default,
1344    /// the connection profile can only
1345    ///   be active once at each moment. Activating a profile that is already active,
1346    ///   will first deactivate it.
1347    #[doc(alias = "NM_CONNECTION_MULTI_CONNECT_SINGLE")]
1348    Single,
1349    /// the profile can
1350    ///   be manually activated multiple times on different devices. However,
1351    ///   regarding autoconnect, the profile will autoconnect only if it is
1352    ///   currently not connected otherwise.
1353    #[doc(alias = "NM_CONNECTION_MULTI_CONNECT_MANUAL_MULTIPLE")]
1354    ManualMultiple,
1355    /// the profile can autoactivate
1356    ///   and be manually activated multiple times together.
1357    #[doc(alias = "NM_CONNECTION_MULTI_CONNECT_MULTIPLE")]
1358    Multiple,
1359    #[doc(hidden)]
1360    __Unknown(i32),
1361}
1362
1363#[cfg(feature = "v1_14")]
1364#[cfg_attr(docsrs, doc(cfg(feature = "v1_14")))]
1365#[doc(hidden)]
1366impl IntoGlib for ConnectionMultiConnect {
1367    type GlibType = ffi::NMConnectionMultiConnect;
1368
1369    #[inline]
1370    fn into_glib(self) -> ffi::NMConnectionMultiConnect {
1371        match self {
1372            Self::Default => ffi::NM_CONNECTION_MULTI_CONNECT_DEFAULT,
1373            Self::Single => ffi::NM_CONNECTION_MULTI_CONNECT_SINGLE,
1374            Self::ManualMultiple => ffi::NM_CONNECTION_MULTI_CONNECT_MANUAL_MULTIPLE,
1375            Self::Multiple => ffi::NM_CONNECTION_MULTI_CONNECT_MULTIPLE,
1376            Self::__Unknown(value) => value,
1377        }
1378    }
1379}
1380
1381#[cfg(feature = "v1_14")]
1382#[cfg_attr(docsrs, doc(cfg(feature = "v1_14")))]
1383#[doc(hidden)]
1384impl FromGlib<ffi::NMConnectionMultiConnect> for ConnectionMultiConnect {
1385    #[inline]
1386    unsafe fn from_glib(value: ffi::NMConnectionMultiConnect) -> Self {
1387        skip_assert_initialized!();
1388
1389        match value {
1390            ffi::NM_CONNECTION_MULTI_CONNECT_DEFAULT => Self::Default,
1391            ffi::NM_CONNECTION_MULTI_CONNECT_SINGLE => Self::Single,
1392            ffi::NM_CONNECTION_MULTI_CONNECT_MANUAL_MULTIPLE => Self::ManualMultiple,
1393            ffi::NM_CONNECTION_MULTI_CONNECT_MULTIPLE => Self::Multiple,
1394            value => Self::__Unknown(value),
1395        }
1396    }
1397}
1398
1399#[cfg(feature = "v1_14")]
1400#[cfg_attr(docsrs, doc(cfg(feature = "v1_14")))]
1401impl StaticType for ConnectionMultiConnect {
1402    #[inline]
1403    #[doc(alias = "nm_connection_multi_connect_get_type")]
1404    fn static_type() -> glib::Type {
1405        unsafe { from_glib(ffi::nm_connection_multi_connect_get_type()) }
1406    }
1407}
1408
1409#[cfg(feature = "v1_14")]
1410#[cfg_attr(docsrs, doc(cfg(feature = "v1_14")))]
1411impl glib::HasParamSpec for ConnectionMultiConnect {
1412    type ParamSpec = glib::ParamSpecEnum;
1413    type SetValue = Self;
1414    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
1415
1416    fn param_spec_builder() -> Self::BuilderFn {
1417        Self::ParamSpec::builder_with_default
1418    }
1419}
1420
1421#[cfg(feature = "v1_14")]
1422#[cfg_attr(docsrs, doc(cfg(feature = "v1_14")))]
1423impl glib::value::ValueType for ConnectionMultiConnect {
1424    type Type = Self;
1425}
1426
1427#[cfg(feature = "v1_14")]
1428#[cfg_attr(docsrs, doc(cfg(feature = "v1_14")))]
1429unsafe impl<'a> glib::value::FromValue<'a> for ConnectionMultiConnect {
1430    type Checker = glib::value::GenericValueTypeChecker<Self>;
1431
1432    #[inline]
1433    unsafe fn from_value(value: &'a glib::Value) -> Self {
1434        skip_assert_initialized!();
1435        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
1436    }
1437}
1438
1439#[cfg(feature = "v1_14")]
1440#[cfg_attr(docsrs, doc(cfg(feature = "v1_14")))]
1441impl ToValue for ConnectionMultiConnect {
1442    #[inline]
1443    fn to_value(&self) -> glib::Value {
1444        let mut value = glib::Value::for_value_type::<Self>();
1445        unsafe {
1446            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
1447        }
1448        value
1449    }
1450
1451    #[inline]
1452    fn value_type(&self) -> glib::Type {
1453        Self::static_type()
1454    }
1455}
1456
1457#[cfg(feature = "v1_14")]
1458#[cfg_attr(docsrs, doc(cfg(feature = "v1_14")))]
1459impl From<ConnectionMultiConnect> for glib::Value {
1460    #[inline]
1461    fn from(v: ConnectionMultiConnect) -> Self {
1462        skip_assert_initialized!();
1463        ToValue::to_value(&v)
1464    }
1465}
1466
1467#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
1468#[non_exhaustive]
1469#[doc(alias = "NMConnectivityState")]
1470pub enum ConnectivityState {
1471    /// Network connectivity is unknown. This means the
1472    ///   connectivity checks are disabled (e.g. on server installations) or has
1473    ///   not run yet. The graphical shell should assume the Internet connection
1474    ///   might be available and not present a captive portal window.
1475    #[doc(alias = "NM_CONNECTIVITY_UNKNOWN")]
1476    Unknown,
1477    /// The host is not connected to any network. There's
1478    ///   no active connection that contains a default route to the internet and
1479    ///   thus it makes no sense to even attempt a connectivity check. The graphical
1480    ///   shell should use this state to indicate the network connection is unavailable.
1481    #[doc(alias = "NM_CONNECTIVITY_NONE")]
1482    None,
1483    /// The Internet connection is hijacked by a captive
1484    ///   portal gateway. The graphical shell may open a sandboxed web browser window
1485    ///   (because the captive portals typically attempt a man-in-the-middle attacks
1486    ///   against the https connections) for the purpose of authenticating to a gateway
1487    ///   and retrigger the connectivity check with CheckConnectivity() when the
1488    ///   browser window is dismissed.
1489    #[doc(alias = "NM_CONNECTIVITY_PORTAL")]
1490    Portal,
1491    /// The host is connected to a network, does not appear
1492    ///   to be able to reach the full Internet, but a captive portal has not been
1493    ///   detected.
1494    #[doc(alias = "NM_CONNECTIVITY_LIMITED")]
1495    Limited,
1496    /// The host is connected to a network, and
1497    ///   appears to be able to reach the full Internet.
1498    #[doc(alias = "NM_CONNECTIVITY_FULL")]
1499    Full,
1500    #[doc(hidden)]
1501    __Unknown(i32),
1502}
1503
1504#[doc(hidden)]
1505impl IntoGlib for ConnectivityState {
1506    type GlibType = ffi::NMConnectivityState;
1507
1508    #[inline]
1509    fn into_glib(self) -> ffi::NMConnectivityState {
1510        match self {
1511            Self::Unknown => ffi::NM_CONNECTIVITY_UNKNOWN,
1512            Self::None => ffi::NM_CONNECTIVITY_NONE,
1513            Self::Portal => ffi::NM_CONNECTIVITY_PORTAL,
1514            Self::Limited => ffi::NM_CONNECTIVITY_LIMITED,
1515            Self::Full => ffi::NM_CONNECTIVITY_FULL,
1516            Self::__Unknown(value) => value,
1517        }
1518    }
1519}
1520
1521#[doc(hidden)]
1522impl FromGlib<ffi::NMConnectivityState> for ConnectivityState {
1523    #[inline]
1524    unsafe fn from_glib(value: ffi::NMConnectivityState) -> Self {
1525        skip_assert_initialized!();
1526
1527        match value {
1528            ffi::NM_CONNECTIVITY_UNKNOWN => Self::Unknown,
1529            ffi::NM_CONNECTIVITY_NONE => Self::None,
1530            ffi::NM_CONNECTIVITY_PORTAL => Self::Portal,
1531            ffi::NM_CONNECTIVITY_LIMITED => Self::Limited,
1532            ffi::NM_CONNECTIVITY_FULL => Self::Full,
1533            value => Self::__Unknown(value),
1534        }
1535    }
1536}
1537
1538impl StaticType for ConnectivityState {
1539    #[inline]
1540    #[doc(alias = "nm_connectivity_state_get_type")]
1541    fn static_type() -> glib::Type {
1542        unsafe { from_glib(ffi::nm_connectivity_state_get_type()) }
1543    }
1544}
1545
1546impl glib::HasParamSpec for ConnectivityState {
1547    type ParamSpec = glib::ParamSpecEnum;
1548    type SetValue = Self;
1549    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
1550
1551    fn param_spec_builder() -> Self::BuilderFn {
1552        Self::ParamSpec::builder_with_default
1553    }
1554}
1555
1556impl glib::value::ValueType for ConnectivityState {
1557    type Type = Self;
1558}
1559
1560unsafe impl<'a> glib::value::FromValue<'a> for ConnectivityState {
1561    type Checker = glib::value::GenericValueTypeChecker<Self>;
1562
1563    #[inline]
1564    unsafe fn from_value(value: &'a glib::Value) -> Self {
1565        skip_assert_initialized!();
1566        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
1567    }
1568}
1569
1570impl ToValue for ConnectivityState {
1571    #[inline]
1572    fn to_value(&self) -> glib::Value {
1573        let mut value = glib::Value::for_value_type::<Self>();
1574        unsafe {
1575            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
1576        }
1577        value
1578    }
1579
1580    #[inline]
1581    fn value_type(&self) -> glib::Type {
1582        Self::static_type()
1583    }
1584}
1585
1586impl From<ConnectivityState> for glib::Value {
1587    #[inline]
1588    fn from(v: ConnectivityState) -> Self {
1589        skip_assert_initialized!();
1590        ToValue::to_value(&v)
1591    }
1592}
1593
1594/// Cryptography-related errors that can be returned from some nm-utils methods,
1595/// and some #NMSetting8021x operations.
1596#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
1597#[non_exhaustive]
1598#[doc(alias = "NMCryptoError")]
1599pub enum CryptoError {
1600    /// generic failure
1601    #[doc(alias = "NM_CRYPTO_ERROR_FAILED")]
1602    Failed,
1603    /// the certificate or key data provided
1604    ///   was invalid
1605    #[doc(alias = "NM_CRYPTO_ERROR_INVALID_DATA")]
1606    InvalidData,
1607    /// the password was invalid
1608    #[doc(alias = "NM_CRYPTO_ERROR_INVALID_PASSWORD")]
1609    InvalidPassword,
1610    /// the data uses an unknown cipher
1611    #[doc(alias = "NM_CRYPTO_ERROR_UNKNOWN_CIPHER")]
1612    UnknownCipher,
1613    /// decryption failed
1614    #[doc(alias = "NM_CRYPTO_ERROR_DECRYPTION_FAILED")]
1615    DecryptionFailed,
1616    /// encryption failed
1617    #[doc(alias = "NM_CRYPTO_ERROR_ENCRYPTION_FAILED")]
1618    EncryptionFailed,
1619    #[doc(hidden)]
1620    __Unknown(i32),
1621}
1622
1623#[doc(hidden)]
1624impl IntoGlib for CryptoError {
1625    type GlibType = ffi::NMCryptoError;
1626
1627    #[inline]
1628    fn into_glib(self) -> ffi::NMCryptoError {
1629        match self {
1630            Self::Failed => ffi::NM_CRYPTO_ERROR_FAILED,
1631            Self::InvalidData => ffi::NM_CRYPTO_ERROR_INVALID_DATA,
1632            Self::InvalidPassword => ffi::NM_CRYPTO_ERROR_INVALID_PASSWORD,
1633            Self::UnknownCipher => ffi::NM_CRYPTO_ERROR_UNKNOWN_CIPHER,
1634            Self::DecryptionFailed => ffi::NM_CRYPTO_ERROR_DECRYPTION_FAILED,
1635            Self::EncryptionFailed => ffi::NM_CRYPTO_ERROR_ENCRYPTION_FAILED,
1636            Self::__Unknown(value) => value,
1637        }
1638    }
1639}
1640
1641#[doc(hidden)]
1642impl FromGlib<ffi::NMCryptoError> for CryptoError {
1643    #[inline]
1644    unsafe fn from_glib(value: ffi::NMCryptoError) -> Self {
1645        skip_assert_initialized!();
1646
1647        match value {
1648            ffi::NM_CRYPTO_ERROR_FAILED => Self::Failed,
1649            ffi::NM_CRYPTO_ERROR_INVALID_DATA => Self::InvalidData,
1650            ffi::NM_CRYPTO_ERROR_INVALID_PASSWORD => Self::InvalidPassword,
1651            ffi::NM_CRYPTO_ERROR_UNKNOWN_CIPHER => Self::UnknownCipher,
1652            ffi::NM_CRYPTO_ERROR_DECRYPTION_FAILED => Self::DecryptionFailed,
1653            ffi::NM_CRYPTO_ERROR_ENCRYPTION_FAILED => Self::EncryptionFailed,
1654            value => Self::__Unknown(value),
1655        }
1656    }
1657}
1658
1659impl glib::error::ErrorDomain for CryptoError {
1660    #[inline]
1661    fn domain() -> glib::Quark {
1662        skip_assert_initialized!();
1663
1664        unsafe { from_glib(ffi::nm_crypto_error_quark()) }
1665    }
1666
1667    #[inline]
1668    fn code(self) -> i32 {
1669        self.into_glib()
1670    }
1671
1672    #[inline]
1673    #[allow(clippy::match_single_binding)]
1674    fn from(code: i32) -> Option<Self> {
1675        skip_assert_initialized!();
1676        match unsafe { from_glib(code) } {
1677            Self::__Unknown(_) => Some(Self::Failed),
1678            value => Some(value),
1679        }
1680    }
1681}
1682
1683impl StaticType for CryptoError {
1684    #[inline]
1685    #[doc(alias = "nm_crypto_error_get_type")]
1686    fn static_type() -> glib::Type {
1687        unsafe { from_glib(ffi::nm_crypto_error_get_type()) }
1688    }
1689}
1690
1691impl glib::HasParamSpec for CryptoError {
1692    type ParamSpec = glib::ParamSpecEnum;
1693    type SetValue = Self;
1694    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
1695
1696    fn param_spec_builder() -> Self::BuilderFn {
1697        Self::ParamSpec::builder_with_default
1698    }
1699}
1700
1701impl glib::value::ValueType for CryptoError {
1702    type Type = Self;
1703}
1704
1705unsafe impl<'a> glib::value::FromValue<'a> for CryptoError {
1706    type Checker = glib::value::GenericValueTypeChecker<Self>;
1707
1708    #[inline]
1709    unsafe fn from_value(value: &'a glib::Value) -> Self {
1710        skip_assert_initialized!();
1711        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
1712    }
1713}
1714
1715impl ToValue for CryptoError {
1716    #[inline]
1717    fn to_value(&self) -> glib::Value {
1718        let mut value = glib::Value::for_value_type::<Self>();
1719        unsafe {
1720            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
1721        }
1722        value
1723    }
1724
1725    #[inline]
1726    fn value_type(&self) -> glib::Type {
1727        Self::static_type()
1728    }
1729}
1730
1731impl From<CryptoError> for glib::Value {
1732    #[inline]
1733    fn from(v: CryptoError) -> Self {
1734        skip_assert_initialized!();
1735        ToValue::to_value(&v)
1736    }
1737}
1738
1739/// Device-related errors.
1740///
1741/// These errors may be returned directly from #NMDevice methods, or may be
1742/// returned from D-Bus operations (where they correspond to errors in the
1743/// "org.freedesktop.NetworkManager.Device" namespace).
1744#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
1745#[non_exhaustive]
1746#[doc(alias = "NMDeviceError")]
1747pub enum DeviceError {
1748    /// unknown or unclassified error
1749    #[doc(alias = "NM_DEVICE_ERROR_FAILED")]
1750    Failed,
1751    /// NetworkManager failed to create the device
1752    #[doc(alias = "NM_DEVICE_ERROR_CREATION_FAILED")]
1753    CreationFailed,
1754    /// the specified connection is not valid
1755    #[doc(alias = "NM_DEVICE_ERROR_INVALID_CONNECTION")]
1756    InvalidConnection,
1757    /// the specified connection is not
1758    ///   compatible with this device.
1759    #[doc(alias = "NM_DEVICE_ERROR_INCOMPATIBLE_CONNECTION")]
1760    IncompatibleConnection,
1761    /// the device does not have an active connection
1762    #[doc(alias = "NM_DEVICE_ERROR_NOT_ACTIVE")]
1763    NotActive,
1764    /// the requested operation is only valid on
1765    ///   software devices.
1766    #[doc(alias = "NM_DEVICE_ERROR_NOT_SOFTWARE")]
1767    NotSoftware,
1768    /// the requested operation is not allowed at
1769    ///   this time.
1770    #[doc(alias = "NM_DEVICE_ERROR_NOT_ALLOWED")]
1771    NotAllowed,
1772    /// the "specific object" in the
1773    ///   activation request (eg, the #NMAccessPoint or #NMWimaxNsp) was not
1774    ///   found.
1775    #[doc(alias = "NM_DEVICE_ERROR_SPECIFIC_OBJECT_NOT_FOUND")]
1776    SpecificObjectNotFound,
1777    /// the version id did not match.
1778    #[doc(alias = "NM_DEVICE_ERROR_VERSION_ID_MISMATCH")]
1779    VersionIdMismatch,
1780    /// the requested operation could not
1781    ///   be completed due to missing dependencies.
1782    #[doc(alias = "NM_DEVICE_ERROR_MISSING_DEPENDENCIES")]
1783    MissingDependencies,
1784    /// invalid argument. Since: 1.16.
1785    #[doc(alias = "NM_DEVICE_ERROR_INVALID_ARGUMENT")]
1786    InvalidArgument,
1787    #[doc(hidden)]
1788    __Unknown(i32),
1789}
1790
1791#[doc(hidden)]
1792impl IntoGlib for DeviceError {
1793    type GlibType = ffi::NMDeviceError;
1794
1795    #[inline]
1796    fn into_glib(self) -> ffi::NMDeviceError {
1797        match self {
1798            Self::Failed => ffi::NM_DEVICE_ERROR_FAILED,
1799            Self::CreationFailed => ffi::NM_DEVICE_ERROR_CREATION_FAILED,
1800            Self::InvalidConnection => ffi::NM_DEVICE_ERROR_INVALID_CONNECTION,
1801            Self::IncompatibleConnection => ffi::NM_DEVICE_ERROR_INCOMPATIBLE_CONNECTION,
1802            Self::NotActive => ffi::NM_DEVICE_ERROR_NOT_ACTIVE,
1803            Self::NotSoftware => ffi::NM_DEVICE_ERROR_NOT_SOFTWARE,
1804            Self::NotAllowed => ffi::NM_DEVICE_ERROR_NOT_ALLOWED,
1805            Self::SpecificObjectNotFound => ffi::NM_DEVICE_ERROR_SPECIFIC_OBJECT_NOT_FOUND,
1806            Self::VersionIdMismatch => ffi::NM_DEVICE_ERROR_VERSION_ID_MISMATCH,
1807            Self::MissingDependencies => ffi::NM_DEVICE_ERROR_MISSING_DEPENDENCIES,
1808            Self::InvalidArgument => ffi::NM_DEVICE_ERROR_INVALID_ARGUMENT,
1809            Self::__Unknown(value) => value,
1810        }
1811    }
1812}
1813
1814#[doc(hidden)]
1815impl FromGlib<ffi::NMDeviceError> for DeviceError {
1816    #[inline]
1817    unsafe fn from_glib(value: ffi::NMDeviceError) -> Self {
1818        skip_assert_initialized!();
1819
1820        match value {
1821            ffi::NM_DEVICE_ERROR_FAILED => Self::Failed,
1822            ffi::NM_DEVICE_ERROR_CREATION_FAILED => Self::CreationFailed,
1823            ffi::NM_DEVICE_ERROR_INVALID_CONNECTION => Self::InvalidConnection,
1824            ffi::NM_DEVICE_ERROR_INCOMPATIBLE_CONNECTION => Self::IncompatibleConnection,
1825            ffi::NM_DEVICE_ERROR_NOT_ACTIVE => Self::NotActive,
1826            ffi::NM_DEVICE_ERROR_NOT_SOFTWARE => Self::NotSoftware,
1827            ffi::NM_DEVICE_ERROR_NOT_ALLOWED => Self::NotAllowed,
1828            ffi::NM_DEVICE_ERROR_SPECIFIC_OBJECT_NOT_FOUND => Self::SpecificObjectNotFound,
1829            ffi::NM_DEVICE_ERROR_VERSION_ID_MISMATCH => Self::VersionIdMismatch,
1830            ffi::NM_DEVICE_ERROR_MISSING_DEPENDENCIES => Self::MissingDependencies,
1831            ffi::NM_DEVICE_ERROR_INVALID_ARGUMENT => Self::InvalidArgument,
1832            value => Self::__Unknown(value),
1833        }
1834    }
1835}
1836
1837impl glib::error::ErrorDomain for DeviceError {
1838    #[inline]
1839    fn domain() -> glib::Quark {
1840        skip_assert_initialized!();
1841
1842        unsafe { from_glib(ffi::nm_device_error_quark()) }
1843    }
1844
1845    #[inline]
1846    fn code(self) -> i32 {
1847        self.into_glib()
1848    }
1849
1850    #[inline]
1851    #[allow(clippy::match_single_binding)]
1852    fn from(code: i32) -> Option<Self> {
1853        skip_assert_initialized!();
1854        match unsafe { from_glib(code) } {
1855            Self::__Unknown(_) => Some(Self::Failed),
1856            value => Some(value),
1857        }
1858    }
1859}
1860
1861impl StaticType for DeviceError {
1862    #[inline]
1863    #[doc(alias = "nm_device_error_get_type")]
1864    fn static_type() -> glib::Type {
1865        unsafe { from_glib(ffi::nm_device_error_get_type()) }
1866    }
1867}
1868
1869impl glib::HasParamSpec for DeviceError {
1870    type ParamSpec = glib::ParamSpecEnum;
1871    type SetValue = Self;
1872    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
1873
1874    fn param_spec_builder() -> Self::BuilderFn {
1875        Self::ParamSpec::builder_with_default
1876    }
1877}
1878
1879impl glib::value::ValueType for DeviceError {
1880    type Type = Self;
1881}
1882
1883unsafe impl<'a> glib::value::FromValue<'a> for DeviceError {
1884    type Checker = glib::value::GenericValueTypeChecker<Self>;
1885
1886    #[inline]
1887    unsafe fn from_value(value: &'a glib::Value) -> Self {
1888        skip_assert_initialized!();
1889        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
1890    }
1891}
1892
1893impl ToValue for DeviceError {
1894    #[inline]
1895    fn to_value(&self) -> glib::Value {
1896        let mut value = glib::Value::for_value_type::<Self>();
1897        unsafe {
1898            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
1899        }
1900        value
1901    }
1902
1903    #[inline]
1904    fn value_type(&self) -> glib::Type {
1905        Self::static_type()
1906    }
1907}
1908
1909impl From<DeviceError> for glib::Value {
1910    #[inline]
1911    fn from(v: DeviceError) -> Self {
1912        skip_assert_initialized!();
1913        ToValue::to_value(&v)
1914    }
1915}
1916
1917#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
1918#[non_exhaustive]
1919#[doc(alias = "NMDeviceState")]
1920pub enum DeviceState {
1921    /// the device's state is unknown
1922    #[doc(alias = "NM_DEVICE_STATE_UNKNOWN")]
1923    Unknown,
1924    /// the device is recognized, but not managed by
1925    ///   NetworkManager
1926    #[doc(alias = "NM_DEVICE_STATE_UNMANAGED")]
1927    Unmanaged,
1928    /// the device is managed by NetworkManager, but
1929    ///   is not available for use.  Reasons may include the wireless switched off,
1930    ///   missing firmware, no ethernet carrier, missing supplicant or modem manager,
1931    ///   etc.
1932    #[doc(alias = "NM_DEVICE_STATE_UNAVAILABLE")]
1933    Unavailable,
1934    /// the device can be activated, but is currently
1935    ///   idle and not connected to a network.
1936    #[doc(alias = "NM_DEVICE_STATE_DISCONNECTED")]
1937    Disconnected,
1938    /// the device is preparing the connection to the
1939    ///   network.  This may include operations like changing the MAC address,
1940    ///   setting physical link properties, and anything else required to connect
1941    ///   to the requested network.
1942    #[doc(alias = "NM_DEVICE_STATE_PREPARE")]
1943    Prepare,
1944    /// the device is connecting to the requested network.
1945    ///   This may include operations like associating with the Wi-Fi AP, dialing
1946    ///   the modem, connecting to the remote Bluetooth device, etc.
1947    #[doc(alias = "NM_DEVICE_STATE_CONFIG")]
1948    Config,
1949    /// the device requires more information to continue
1950    ///   connecting to the requested network.  This includes secrets like WiFi
1951    ///   passphrases, login passwords, PIN codes, etc.
1952    #[doc(alias = "NM_DEVICE_STATE_NEED_AUTH")]
1953    NeedAuth,
1954    /// the device is requesting IPv4 and/or IPv6
1955    ///   addresses and routing information from the network.
1956    #[doc(alias = "NM_DEVICE_STATE_IP_CONFIG")]
1957    IpConfig,
1958    /// the device is checking whether further action is
1959    ///   required for the requested network connection.  This may include checking
1960    ///   whether only local network access is available, whether a captive portal
1961    ///   is blocking access to the Internet, etc.
1962    #[doc(alias = "NM_DEVICE_STATE_IP_CHECK")]
1963    IpCheck,
1964    /// the device is waiting for a secondary
1965    ///   connection (like a VPN) which must activated before the device can be
1966    ///   activated
1967    #[doc(alias = "NM_DEVICE_STATE_SECONDARIES")]
1968    Secondaries,
1969    /// the device has a network connection, either local
1970    ///   or global.
1971    #[doc(alias = "NM_DEVICE_STATE_ACTIVATED")]
1972    Activated,
1973    /// a disconnection from the current network
1974    ///   connection was requested, and the device is cleaning up resources used for
1975    ///   that connection.  The network connection may still be valid.
1976    #[doc(alias = "NM_DEVICE_STATE_DEACTIVATING")]
1977    Deactivating,
1978    /// the device failed to connect to the requested
1979    ///   network and is cleaning up the connection request
1980    #[doc(alias = "NM_DEVICE_STATE_FAILED")]
1981    Failed,
1982    #[doc(hidden)]
1983    __Unknown(i32),
1984}
1985
1986#[doc(hidden)]
1987impl IntoGlib for DeviceState {
1988    type GlibType = ffi::NMDeviceState;
1989
1990    fn into_glib(self) -> ffi::NMDeviceState {
1991        match self {
1992            Self::Unknown => ffi::NM_DEVICE_STATE_UNKNOWN,
1993            Self::Unmanaged => ffi::NM_DEVICE_STATE_UNMANAGED,
1994            Self::Unavailable => ffi::NM_DEVICE_STATE_UNAVAILABLE,
1995            Self::Disconnected => ffi::NM_DEVICE_STATE_DISCONNECTED,
1996            Self::Prepare => ffi::NM_DEVICE_STATE_PREPARE,
1997            Self::Config => ffi::NM_DEVICE_STATE_CONFIG,
1998            Self::NeedAuth => ffi::NM_DEVICE_STATE_NEED_AUTH,
1999            Self::IpConfig => ffi::NM_DEVICE_STATE_IP_CONFIG,
2000            Self::IpCheck => ffi::NM_DEVICE_STATE_IP_CHECK,
2001            Self::Secondaries => ffi::NM_DEVICE_STATE_SECONDARIES,
2002            Self::Activated => ffi::NM_DEVICE_STATE_ACTIVATED,
2003            Self::Deactivating => ffi::NM_DEVICE_STATE_DEACTIVATING,
2004            Self::Failed => ffi::NM_DEVICE_STATE_FAILED,
2005            Self::__Unknown(value) => value,
2006        }
2007    }
2008}
2009
2010#[doc(hidden)]
2011impl FromGlib<ffi::NMDeviceState> for DeviceState {
2012    unsafe fn from_glib(value: ffi::NMDeviceState) -> Self {
2013        skip_assert_initialized!();
2014
2015        match value {
2016            ffi::NM_DEVICE_STATE_UNKNOWN => Self::Unknown,
2017            ffi::NM_DEVICE_STATE_UNMANAGED => Self::Unmanaged,
2018            ffi::NM_DEVICE_STATE_UNAVAILABLE => Self::Unavailable,
2019            ffi::NM_DEVICE_STATE_DISCONNECTED => Self::Disconnected,
2020            ffi::NM_DEVICE_STATE_PREPARE => Self::Prepare,
2021            ffi::NM_DEVICE_STATE_CONFIG => Self::Config,
2022            ffi::NM_DEVICE_STATE_NEED_AUTH => Self::NeedAuth,
2023            ffi::NM_DEVICE_STATE_IP_CONFIG => Self::IpConfig,
2024            ffi::NM_DEVICE_STATE_IP_CHECK => Self::IpCheck,
2025            ffi::NM_DEVICE_STATE_SECONDARIES => Self::Secondaries,
2026            ffi::NM_DEVICE_STATE_ACTIVATED => Self::Activated,
2027            ffi::NM_DEVICE_STATE_DEACTIVATING => Self::Deactivating,
2028            ffi::NM_DEVICE_STATE_FAILED => Self::Failed,
2029            value => Self::__Unknown(value),
2030        }
2031    }
2032}
2033
2034impl StaticType for DeviceState {
2035    #[inline]
2036    #[doc(alias = "nm_device_state_get_type")]
2037    fn static_type() -> glib::Type {
2038        unsafe { from_glib(ffi::nm_device_state_get_type()) }
2039    }
2040}
2041
2042impl glib::HasParamSpec for DeviceState {
2043    type ParamSpec = glib::ParamSpecEnum;
2044    type SetValue = Self;
2045    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
2046
2047    fn param_spec_builder() -> Self::BuilderFn {
2048        Self::ParamSpec::builder_with_default
2049    }
2050}
2051
2052impl glib::value::ValueType for DeviceState {
2053    type Type = Self;
2054}
2055
2056unsafe impl<'a> glib::value::FromValue<'a> for DeviceState {
2057    type Checker = glib::value::GenericValueTypeChecker<Self>;
2058
2059    #[inline]
2060    unsafe fn from_value(value: &'a glib::Value) -> Self {
2061        skip_assert_initialized!();
2062        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
2063    }
2064}
2065
2066impl ToValue for DeviceState {
2067    #[inline]
2068    fn to_value(&self) -> glib::Value {
2069        let mut value = glib::Value::for_value_type::<Self>();
2070        unsafe {
2071            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
2072        }
2073        value
2074    }
2075
2076    #[inline]
2077    fn value_type(&self) -> glib::Type {
2078        Self::static_type()
2079    }
2080}
2081
2082impl From<DeviceState> for glib::Value {
2083    #[inline]
2084    fn from(v: DeviceState) -> Self {
2085        skip_assert_initialized!();
2086        ToValue::to_value(&v)
2087    }
2088}
2089
2090/// Device state change reason codes
2091#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
2092#[non_exhaustive]
2093#[doc(alias = "NMDeviceStateReason")]
2094pub enum DeviceStateReason {
2095    /// No reason given
2096    #[doc(alias = "NM_DEVICE_STATE_REASON_NONE")]
2097    None,
2098    /// Unknown error
2099    #[doc(alias = "NM_DEVICE_STATE_REASON_UNKNOWN")]
2100    Unknown,
2101    /// Device is now managed
2102    #[doc(alias = "NM_DEVICE_STATE_REASON_NOW_MANAGED")]
2103    NowManaged,
2104    /// Device is now unmanaged
2105    #[doc(alias = "NM_DEVICE_STATE_REASON_NOW_UNMANAGED")]
2106    NowUnmanaged,
2107    /// The device could not be readied for configuration
2108    #[doc(alias = "NM_DEVICE_STATE_REASON_CONFIG_FAILED")]
2109    ConfigFailed,
2110    /// IP configuration could not be reserved (no available address, timeout, etc)
2111    #[doc(alias = "NM_DEVICE_STATE_REASON_IP_CONFIG_UNAVAILABLE")]
2112    IpConfigUnavailable,
2113    /// The IP config is no longer valid
2114    #[doc(alias = "NM_DEVICE_STATE_REASON_IP_CONFIG_EXPIRED")]
2115    IpConfigExpired,
2116    /// Secrets were required, but not provided
2117    #[doc(alias = "NM_DEVICE_STATE_REASON_NO_SECRETS")]
2118    NoSecrets,
2119    /// 802.1x supplicant disconnected
2120    #[doc(alias = "NM_DEVICE_STATE_REASON_SUPPLICANT_DISCONNECT")]
2121    SupplicantDisconnect,
2122    /// 802.1x supplicant configuration failed
2123    #[doc(alias = "NM_DEVICE_STATE_REASON_SUPPLICANT_CONFIG_FAILED")]
2124    SupplicantConfigFailed,
2125    /// 802.1x supplicant failed
2126    #[doc(alias = "NM_DEVICE_STATE_REASON_SUPPLICANT_FAILED")]
2127    SupplicantFailed,
2128    /// 802.1x supplicant took too long to authenticate
2129    #[doc(alias = "NM_DEVICE_STATE_REASON_SUPPLICANT_TIMEOUT")]
2130    SupplicantTimeout,
2131    /// PPP service failed to start
2132    #[doc(alias = "NM_DEVICE_STATE_REASON_PPP_START_FAILED")]
2133    PppStartFailed,
2134    /// PPP service disconnected
2135    #[doc(alias = "NM_DEVICE_STATE_REASON_PPP_DISCONNECT")]
2136    PppDisconnect,
2137    /// PPP failed
2138    #[doc(alias = "NM_DEVICE_STATE_REASON_PPP_FAILED")]
2139    PppFailed,
2140    /// DHCP client failed to start
2141    #[doc(alias = "NM_DEVICE_STATE_REASON_DHCP_START_FAILED")]
2142    DhcpStartFailed,
2143    /// DHCP client error
2144    #[doc(alias = "NM_DEVICE_STATE_REASON_DHCP_ERROR")]
2145    DhcpError,
2146    /// DHCP client failed
2147    #[doc(alias = "NM_DEVICE_STATE_REASON_DHCP_FAILED")]
2148    DhcpFailed,
2149    /// Shared connection service failed to start
2150    #[doc(alias = "NM_DEVICE_STATE_REASON_SHARED_START_FAILED")]
2151    SharedStartFailed,
2152    /// Shared connection service failed
2153    #[doc(alias = "NM_DEVICE_STATE_REASON_SHARED_FAILED")]
2154    SharedFailed,
2155    /// AutoIP service failed to start
2156    #[doc(alias = "NM_DEVICE_STATE_REASON_AUTOIP_START_FAILED")]
2157    AutoipStartFailed,
2158    /// AutoIP service error
2159    #[doc(alias = "NM_DEVICE_STATE_REASON_AUTOIP_ERROR")]
2160    AutoipError,
2161    /// AutoIP service failed
2162    #[doc(alias = "NM_DEVICE_STATE_REASON_AUTOIP_FAILED")]
2163    AutoipFailed,
2164    /// The line is busy
2165    #[doc(alias = "NM_DEVICE_STATE_REASON_MODEM_BUSY")]
2166    ModemBusy,
2167    /// No dial tone
2168    #[doc(alias = "NM_DEVICE_STATE_REASON_MODEM_NO_DIAL_TONE")]
2169    ModemNoDialTone,
2170    /// No carrier could be established
2171    #[doc(alias = "NM_DEVICE_STATE_REASON_MODEM_NO_CARRIER")]
2172    ModemNoCarrier,
2173    /// The dialing request timed out
2174    #[doc(alias = "NM_DEVICE_STATE_REASON_MODEM_DIAL_TIMEOUT")]
2175    ModemDialTimeout,
2176    /// The dialing attempt failed
2177    #[doc(alias = "NM_DEVICE_STATE_REASON_MODEM_DIAL_FAILED")]
2178    ModemDialFailed,
2179    /// Modem initialization failed
2180    #[doc(alias = "NM_DEVICE_STATE_REASON_MODEM_INIT_FAILED")]
2181    ModemInitFailed,
2182    /// Failed to select the specified APN
2183    #[doc(alias = "NM_DEVICE_STATE_REASON_GSM_APN_FAILED")]
2184    GsmApnFailed,
2185    /// Not searching for networks
2186    #[doc(alias = "NM_DEVICE_STATE_REASON_GSM_REGISTRATION_NOT_SEARCHING")]
2187    GsmRegistrationNotSearching,
2188    /// Network registration denied
2189    #[doc(alias = "NM_DEVICE_STATE_REASON_GSM_REGISTRATION_DENIED")]
2190    GsmRegistrationDenied,
2191    /// Network registration timed out
2192    #[doc(alias = "NM_DEVICE_STATE_REASON_GSM_REGISTRATION_TIMEOUT")]
2193    GsmRegistrationTimeout,
2194    /// Failed to register with the requested network
2195    #[doc(alias = "NM_DEVICE_STATE_REASON_GSM_REGISTRATION_FAILED")]
2196    GsmRegistrationFailed,
2197    /// PIN check failed
2198    #[doc(alias = "NM_DEVICE_STATE_REASON_GSM_PIN_CHECK_FAILED")]
2199    GsmPinCheckFailed,
2200    /// Necessary firmware for the device may be missing
2201    #[doc(alias = "NM_DEVICE_STATE_REASON_FIRMWARE_MISSING")]
2202    FirmwareMissing,
2203    /// The device was removed
2204    #[doc(alias = "NM_DEVICE_STATE_REASON_REMOVED")]
2205    Removed,
2206    /// NetworkManager went to sleep
2207    #[doc(alias = "NM_DEVICE_STATE_REASON_SLEEPING")]
2208    Sleeping,
2209    /// The device's active connection disappeared
2210    #[doc(alias = "NM_DEVICE_STATE_REASON_CONNECTION_REMOVED")]
2211    ConnectionRemoved,
2212    /// Device disconnected by user or client
2213    #[doc(alias = "NM_DEVICE_STATE_REASON_USER_REQUESTED")]
2214    UserRequested,
2215    /// Carrier/link changed
2216    #[doc(alias = "NM_DEVICE_STATE_REASON_CARRIER")]
2217    Carrier,
2218    /// The device's existing connection was assumed
2219    #[doc(alias = "NM_DEVICE_STATE_REASON_CONNECTION_ASSUMED")]
2220    ConnectionAssumed,
2221    /// The supplicant is now available
2222    #[doc(alias = "NM_DEVICE_STATE_REASON_SUPPLICANT_AVAILABLE")]
2223    SupplicantAvailable,
2224    /// The modem could not be found
2225    #[doc(alias = "NM_DEVICE_STATE_REASON_MODEM_NOT_FOUND")]
2226    ModemNotFound,
2227    /// The Bluetooth connection failed or timed out
2228    #[doc(alias = "NM_DEVICE_STATE_REASON_BT_FAILED")]
2229    BtFailed,
2230    /// GSM Modem's SIM Card not inserted
2231    #[doc(alias = "NM_DEVICE_STATE_REASON_GSM_SIM_NOT_INSERTED")]
2232    GsmSimNotInserted,
2233    /// GSM Modem's SIM Pin required
2234    #[doc(alias = "NM_DEVICE_STATE_REASON_GSM_SIM_PIN_REQUIRED")]
2235    GsmSimPinRequired,
2236    /// GSM Modem's SIM Puk required
2237    #[doc(alias = "NM_DEVICE_STATE_REASON_GSM_SIM_PUK_REQUIRED")]
2238    GsmSimPukRequired,
2239    /// GSM Modem's SIM wrong
2240    #[doc(alias = "NM_DEVICE_STATE_REASON_GSM_SIM_WRONG")]
2241    GsmSimWrong,
2242    /// InfiniBand device does not support connected mode
2243    #[doc(alias = "NM_DEVICE_STATE_REASON_INFINIBAND_MODE")]
2244    InfinibandMode,
2245    /// A dependency of the connection failed
2246    #[doc(alias = "NM_DEVICE_STATE_REASON_DEPENDENCY_FAILED")]
2247    DependencyFailed,
2248    /// Problem with the RFC 2684 Ethernet over ADSL bridge
2249    #[doc(alias = "NM_DEVICE_STATE_REASON_BR2684_FAILED")]
2250    Br2684Failed,
2251    /// ModemManager not running
2252    #[doc(alias = "NM_DEVICE_STATE_REASON_MODEM_MANAGER_UNAVAILABLE")]
2253    ModemManagerUnavailable,
2254    /// The Wi-Fi network could not be found
2255    #[doc(alias = "NM_DEVICE_STATE_REASON_SSID_NOT_FOUND")]
2256    SsidNotFound,
2257    /// A secondary connection of the base connection failed
2258    #[doc(alias = "NM_DEVICE_STATE_REASON_SECONDARY_CONNECTION_FAILED")]
2259    SecondaryConnectionFailed,
2260    /// DCB or FCoE setup failed
2261    #[doc(alias = "NM_DEVICE_STATE_REASON_DCB_FCOE_FAILED")]
2262    DcbFcoeFailed,
2263    /// teamd control failed
2264    #[doc(alias = "NM_DEVICE_STATE_REASON_TEAMD_CONTROL_FAILED")]
2265    TeamdControlFailed,
2266    /// Modem failed or no longer available
2267    #[doc(alias = "NM_DEVICE_STATE_REASON_MODEM_FAILED")]
2268    ModemFailed,
2269    /// Modem now ready and available
2270    #[doc(alias = "NM_DEVICE_STATE_REASON_MODEM_AVAILABLE")]
2271    ModemAvailable,
2272    /// SIM PIN was incorrect
2273    #[doc(alias = "NM_DEVICE_STATE_REASON_SIM_PIN_INCORRECT")]
2274    SimPinIncorrect,
2275    /// New connection activation was enqueued
2276    #[doc(alias = "NM_DEVICE_STATE_REASON_NEW_ACTIVATION")]
2277    NewActivation,
2278    /// the device's parent changed
2279    #[doc(alias = "NM_DEVICE_STATE_REASON_PARENT_CHANGED")]
2280    ParentChanged,
2281    /// the device parent's management changed
2282    #[doc(alias = "NM_DEVICE_STATE_REASON_PARENT_MANAGED_CHANGED")]
2283    ParentManagedChanged,
2284    /// problem communicating with Open vSwitch database
2285    #[doc(alias = "NM_DEVICE_STATE_REASON_OVSDB_FAILED")]
2286    OvsdbFailed,
2287    /// a duplicate IP address was detected
2288    #[doc(alias = "NM_DEVICE_STATE_REASON_IP_ADDRESS_DUPLICATE")]
2289    IpAddressDuplicate,
2290    /// The selected IP method is not supported
2291    #[doc(alias = "NM_DEVICE_STATE_REASON_IP_METHOD_UNSUPPORTED")]
2292    IpMethodUnsupported,
2293    /// configuration of SR-IOV parameters failed
2294    #[doc(alias = "NM_DEVICE_STATE_REASON_SRIOV_CONFIGURATION_FAILED")]
2295    SriovConfigurationFailed,
2296    /// The Wi-Fi P2P peer could not be found
2297    #[doc(alias = "NM_DEVICE_STATE_REASON_PEER_NOT_FOUND")]
2298    PeerNotFound,
2299    /// The device handler dispatcher returned an
2300    ///   error. Since: 1.46
2301    #[doc(alias = "NM_DEVICE_STATE_REASON_DEVICE_HANDLER_FAILED")]
2302    DeviceHandlerFailed,
2303    /// The device is unmanaged because the device type
2304    ///   is unmanaged by default. Since: 1.48
2305    #[doc(alias = "NM_DEVICE_STATE_REASON_UNMANAGED_BY_DEFAULT")]
2306    UnmanagedByDefault,
2307    /// The device is unmanaged because it is an
2308    ///   external device and is unconfigured (down or without addresses). Since: 1.48
2309    #[doc(alias = "NM_DEVICE_STATE_REASON_UNMANAGED_EXTERNAL_DOWN")]
2310    UnmanagedExternalDown,
2311    /// The device is unmanaged because the link is
2312    ///   not initialized by udev. Since: 1.48
2313    #[doc(alias = "NM_DEVICE_STATE_REASON_UNMANAGED_LINK_NOT_INIT")]
2314    UnmanagedLinkNotInit,
2315    /// The device is unmanaged because NetworkManager is
2316    ///   quitting. Since: 1.48
2317    #[doc(alias = "NM_DEVICE_STATE_REASON_UNMANAGED_QUITTING")]
2318    UnmanagedQuitting,
2319    /// The device is unmanaged because networking is
2320    ///   disabled or the system is suspended. Since: 1.48
2321    #[doc(alias = "NM_DEVICE_STATE_REASON_UNMANAGED_SLEEPING")]
2322    UnmanagedSleeping,
2323    /// The device is unmanaged by user decision in
2324    ///   NetworkManager.conf ('unmanaged' in a [device*] section). Since: 1.48
2325    #[doc(alias = "NM_DEVICE_STATE_REASON_UNMANAGED_USER_CONF")]
2326    UnmanagedUserConf,
2327    /// The device is unmanaged by explicit user
2328    ///   decision (e.g. 'nmcli device set $DEV managed no'). Since: 1.48
2329    #[doc(alias = "NM_DEVICE_STATE_REASON_UNMANAGED_USER_EXPLICIT")]
2330    UnmanagedUserExplicit,
2331    /// The device is unmanaged by user decision
2332    ///   via settings plugin ('unmanaged-devices' for keyfile or 'NM_CONTROLLED=no' for ifcfg-rh).
2333    ///   Since: 1.48
2334    #[doc(alias = "NM_DEVICE_STATE_REASON_UNMANAGED_USER_SETTINGS")]
2335    UnmanagedUserSettings,
2336    /// The device is unmanaged via udev rule. Since: 1.48
2337    #[doc(alias = "NM_DEVICE_STATE_REASON_UNMANAGED_USER_UDEV")]
2338    UnmanagedUserUdev,
2339    #[doc(hidden)]
2340    __Unknown(i32),
2341}
2342
2343#[doc(hidden)]
2344impl IntoGlib for DeviceStateReason {
2345    type GlibType = ffi::NMDeviceStateReason;
2346
2347    fn into_glib(self) -> ffi::NMDeviceStateReason {
2348        match self {
2349            Self::None => ffi::NM_DEVICE_STATE_REASON_NONE,
2350            Self::Unknown => ffi::NM_DEVICE_STATE_REASON_UNKNOWN,
2351            Self::NowManaged => ffi::NM_DEVICE_STATE_REASON_NOW_MANAGED,
2352            Self::NowUnmanaged => ffi::NM_DEVICE_STATE_REASON_NOW_UNMANAGED,
2353            Self::ConfigFailed => ffi::NM_DEVICE_STATE_REASON_CONFIG_FAILED,
2354            Self::IpConfigUnavailable => ffi::NM_DEVICE_STATE_REASON_IP_CONFIG_UNAVAILABLE,
2355            Self::IpConfigExpired => ffi::NM_DEVICE_STATE_REASON_IP_CONFIG_EXPIRED,
2356            Self::NoSecrets => ffi::NM_DEVICE_STATE_REASON_NO_SECRETS,
2357            Self::SupplicantDisconnect => ffi::NM_DEVICE_STATE_REASON_SUPPLICANT_DISCONNECT,
2358            Self::SupplicantConfigFailed => ffi::NM_DEVICE_STATE_REASON_SUPPLICANT_CONFIG_FAILED,
2359            Self::SupplicantFailed => ffi::NM_DEVICE_STATE_REASON_SUPPLICANT_FAILED,
2360            Self::SupplicantTimeout => ffi::NM_DEVICE_STATE_REASON_SUPPLICANT_TIMEOUT,
2361            Self::PppStartFailed => ffi::NM_DEVICE_STATE_REASON_PPP_START_FAILED,
2362            Self::PppDisconnect => ffi::NM_DEVICE_STATE_REASON_PPP_DISCONNECT,
2363            Self::PppFailed => ffi::NM_DEVICE_STATE_REASON_PPP_FAILED,
2364            Self::DhcpStartFailed => ffi::NM_DEVICE_STATE_REASON_DHCP_START_FAILED,
2365            Self::DhcpError => ffi::NM_DEVICE_STATE_REASON_DHCP_ERROR,
2366            Self::DhcpFailed => ffi::NM_DEVICE_STATE_REASON_DHCP_FAILED,
2367            Self::SharedStartFailed => ffi::NM_DEVICE_STATE_REASON_SHARED_START_FAILED,
2368            Self::SharedFailed => ffi::NM_DEVICE_STATE_REASON_SHARED_FAILED,
2369            Self::AutoipStartFailed => ffi::NM_DEVICE_STATE_REASON_AUTOIP_START_FAILED,
2370            Self::AutoipError => ffi::NM_DEVICE_STATE_REASON_AUTOIP_ERROR,
2371            Self::AutoipFailed => ffi::NM_DEVICE_STATE_REASON_AUTOIP_FAILED,
2372            Self::ModemBusy => ffi::NM_DEVICE_STATE_REASON_MODEM_BUSY,
2373            Self::ModemNoDialTone => ffi::NM_DEVICE_STATE_REASON_MODEM_NO_DIAL_TONE,
2374            Self::ModemNoCarrier => ffi::NM_DEVICE_STATE_REASON_MODEM_NO_CARRIER,
2375            Self::ModemDialTimeout => ffi::NM_DEVICE_STATE_REASON_MODEM_DIAL_TIMEOUT,
2376            Self::ModemDialFailed => ffi::NM_DEVICE_STATE_REASON_MODEM_DIAL_FAILED,
2377            Self::ModemInitFailed => ffi::NM_DEVICE_STATE_REASON_MODEM_INIT_FAILED,
2378            Self::GsmApnFailed => ffi::NM_DEVICE_STATE_REASON_GSM_APN_FAILED,
2379            Self::GsmRegistrationNotSearching => {
2380                ffi::NM_DEVICE_STATE_REASON_GSM_REGISTRATION_NOT_SEARCHING
2381            }
2382            Self::GsmRegistrationDenied => ffi::NM_DEVICE_STATE_REASON_GSM_REGISTRATION_DENIED,
2383            Self::GsmRegistrationTimeout => ffi::NM_DEVICE_STATE_REASON_GSM_REGISTRATION_TIMEOUT,
2384            Self::GsmRegistrationFailed => ffi::NM_DEVICE_STATE_REASON_GSM_REGISTRATION_FAILED,
2385            Self::GsmPinCheckFailed => ffi::NM_DEVICE_STATE_REASON_GSM_PIN_CHECK_FAILED,
2386            Self::FirmwareMissing => ffi::NM_DEVICE_STATE_REASON_FIRMWARE_MISSING,
2387            Self::Removed => ffi::NM_DEVICE_STATE_REASON_REMOVED,
2388            Self::Sleeping => ffi::NM_DEVICE_STATE_REASON_SLEEPING,
2389            Self::ConnectionRemoved => ffi::NM_DEVICE_STATE_REASON_CONNECTION_REMOVED,
2390            Self::UserRequested => ffi::NM_DEVICE_STATE_REASON_USER_REQUESTED,
2391            Self::Carrier => ffi::NM_DEVICE_STATE_REASON_CARRIER,
2392            Self::ConnectionAssumed => ffi::NM_DEVICE_STATE_REASON_CONNECTION_ASSUMED,
2393            Self::SupplicantAvailable => ffi::NM_DEVICE_STATE_REASON_SUPPLICANT_AVAILABLE,
2394            Self::ModemNotFound => ffi::NM_DEVICE_STATE_REASON_MODEM_NOT_FOUND,
2395            Self::BtFailed => ffi::NM_DEVICE_STATE_REASON_BT_FAILED,
2396            Self::GsmSimNotInserted => ffi::NM_DEVICE_STATE_REASON_GSM_SIM_NOT_INSERTED,
2397            Self::GsmSimPinRequired => ffi::NM_DEVICE_STATE_REASON_GSM_SIM_PIN_REQUIRED,
2398            Self::GsmSimPukRequired => ffi::NM_DEVICE_STATE_REASON_GSM_SIM_PUK_REQUIRED,
2399            Self::GsmSimWrong => ffi::NM_DEVICE_STATE_REASON_GSM_SIM_WRONG,
2400            Self::InfinibandMode => ffi::NM_DEVICE_STATE_REASON_INFINIBAND_MODE,
2401            Self::DependencyFailed => ffi::NM_DEVICE_STATE_REASON_DEPENDENCY_FAILED,
2402            Self::Br2684Failed => ffi::NM_DEVICE_STATE_REASON_BR2684_FAILED,
2403            Self::ModemManagerUnavailable => ffi::NM_DEVICE_STATE_REASON_MODEM_MANAGER_UNAVAILABLE,
2404            Self::SsidNotFound => ffi::NM_DEVICE_STATE_REASON_SSID_NOT_FOUND,
2405            Self::SecondaryConnectionFailed => {
2406                ffi::NM_DEVICE_STATE_REASON_SECONDARY_CONNECTION_FAILED
2407            }
2408            Self::DcbFcoeFailed => ffi::NM_DEVICE_STATE_REASON_DCB_FCOE_FAILED,
2409            Self::TeamdControlFailed => ffi::NM_DEVICE_STATE_REASON_TEAMD_CONTROL_FAILED,
2410            Self::ModemFailed => ffi::NM_DEVICE_STATE_REASON_MODEM_FAILED,
2411            Self::ModemAvailable => ffi::NM_DEVICE_STATE_REASON_MODEM_AVAILABLE,
2412            Self::SimPinIncorrect => ffi::NM_DEVICE_STATE_REASON_SIM_PIN_INCORRECT,
2413            Self::NewActivation => ffi::NM_DEVICE_STATE_REASON_NEW_ACTIVATION,
2414            Self::ParentChanged => ffi::NM_DEVICE_STATE_REASON_PARENT_CHANGED,
2415            Self::ParentManagedChanged => ffi::NM_DEVICE_STATE_REASON_PARENT_MANAGED_CHANGED,
2416            Self::OvsdbFailed => ffi::NM_DEVICE_STATE_REASON_OVSDB_FAILED,
2417            Self::IpAddressDuplicate => ffi::NM_DEVICE_STATE_REASON_IP_ADDRESS_DUPLICATE,
2418            Self::IpMethodUnsupported => ffi::NM_DEVICE_STATE_REASON_IP_METHOD_UNSUPPORTED,
2419            Self::SriovConfigurationFailed => {
2420                ffi::NM_DEVICE_STATE_REASON_SRIOV_CONFIGURATION_FAILED
2421            }
2422            Self::PeerNotFound => ffi::NM_DEVICE_STATE_REASON_PEER_NOT_FOUND,
2423            Self::DeviceHandlerFailed => ffi::NM_DEVICE_STATE_REASON_DEVICE_HANDLER_FAILED,
2424            Self::UnmanagedByDefault => ffi::NM_DEVICE_STATE_REASON_UNMANAGED_BY_DEFAULT,
2425            Self::UnmanagedExternalDown => ffi::NM_DEVICE_STATE_REASON_UNMANAGED_EXTERNAL_DOWN,
2426            Self::UnmanagedLinkNotInit => ffi::NM_DEVICE_STATE_REASON_UNMANAGED_LINK_NOT_INIT,
2427            Self::UnmanagedQuitting => ffi::NM_DEVICE_STATE_REASON_UNMANAGED_QUITTING,
2428            Self::UnmanagedSleeping => ffi::NM_DEVICE_STATE_REASON_UNMANAGED_SLEEPING,
2429            Self::UnmanagedUserConf => ffi::NM_DEVICE_STATE_REASON_UNMANAGED_USER_CONF,
2430            Self::UnmanagedUserExplicit => ffi::NM_DEVICE_STATE_REASON_UNMANAGED_USER_EXPLICIT,
2431            Self::UnmanagedUserSettings => ffi::NM_DEVICE_STATE_REASON_UNMANAGED_USER_SETTINGS,
2432            Self::UnmanagedUserUdev => ffi::NM_DEVICE_STATE_REASON_UNMANAGED_USER_UDEV,
2433            Self::__Unknown(value) => value,
2434        }
2435    }
2436}
2437
2438#[doc(hidden)]
2439impl FromGlib<ffi::NMDeviceStateReason> for DeviceStateReason {
2440    unsafe fn from_glib(value: ffi::NMDeviceStateReason) -> Self {
2441        skip_assert_initialized!();
2442
2443        match value {
2444            ffi::NM_DEVICE_STATE_REASON_NONE => Self::None,
2445            ffi::NM_DEVICE_STATE_REASON_UNKNOWN => Self::Unknown,
2446            ffi::NM_DEVICE_STATE_REASON_NOW_MANAGED => Self::NowManaged,
2447            ffi::NM_DEVICE_STATE_REASON_NOW_UNMANAGED => Self::NowUnmanaged,
2448            ffi::NM_DEVICE_STATE_REASON_CONFIG_FAILED => Self::ConfigFailed,
2449            ffi::NM_DEVICE_STATE_REASON_IP_CONFIG_UNAVAILABLE => Self::IpConfigUnavailable,
2450            ffi::NM_DEVICE_STATE_REASON_IP_CONFIG_EXPIRED => Self::IpConfigExpired,
2451            ffi::NM_DEVICE_STATE_REASON_NO_SECRETS => Self::NoSecrets,
2452            ffi::NM_DEVICE_STATE_REASON_SUPPLICANT_DISCONNECT => Self::SupplicantDisconnect,
2453            ffi::NM_DEVICE_STATE_REASON_SUPPLICANT_CONFIG_FAILED => Self::SupplicantConfigFailed,
2454            ffi::NM_DEVICE_STATE_REASON_SUPPLICANT_FAILED => Self::SupplicantFailed,
2455            ffi::NM_DEVICE_STATE_REASON_SUPPLICANT_TIMEOUT => Self::SupplicantTimeout,
2456            ffi::NM_DEVICE_STATE_REASON_PPP_START_FAILED => Self::PppStartFailed,
2457            ffi::NM_DEVICE_STATE_REASON_PPP_DISCONNECT => Self::PppDisconnect,
2458            ffi::NM_DEVICE_STATE_REASON_PPP_FAILED => Self::PppFailed,
2459            ffi::NM_DEVICE_STATE_REASON_DHCP_START_FAILED => Self::DhcpStartFailed,
2460            ffi::NM_DEVICE_STATE_REASON_DHCP_ERROR => Self::DhcpError,
2461            ffi::NM_DEVICE_STATE_REASON_DHCP_FAILED => Self::DhcpFailed,
2462            ffi::NM_DEVICE_STATE_REASON_SHARED_START_FAILED => Self::SharedStartFailed,
2463            ffi::NM_DEVICE_STATE_REASON_SHARED_FAILED => Self::SharedFailed,
2464            ffi::NM_DEVICE_STATE_REASON_AUTOIP_START_FAILED => Self::AutoipStartFailed,
2465            ffi::NM_DEVICE_STATE_REASON_AUTOIP_ERROR => Self::AutoipError,
2466            ffi::NM_DEVICE_STATE_REASON_AUTOIP_FAILED => Self::AutoipFailed,
2467            ffi::NM_DEVICE_STATE_REASON_MODEM_BUSY => Self::ModemBusy,
2468            ffi::NM_DEVICE_STATE_REASON_MODEM_NO_DIAL_TONE => Self::ModemNoDialTone,
2469            ffi::NM_DEVICE_STATE_REASON_MODEM_NO_CARRIER => Self::ModemNoCarrier,
2470            ffi::NM_DEVICE_STATE_REASON_MODEM_DIAL_TIMEOUT => Self::ModemDialTimeout,
2471            ffi::NM_DEVICE_STATE_REASON_MODEM_DIAL_FAILED => Self::ModemDialFailed,
2472            ffi::NM_DEVICE_STATE_REASON_MODEM_INIT_FAILED => Self::ModemInitFailed,
2473            ffi::NM_DEVICE_STATE_REASON_GSM_APN_FAILED => Self::GsmApnFailed,
2474            ffi::NM_DEVICE_STATE_REASON_GSM_REGISTRATION_NOT_SEARCHING => {
2475                Self::GsmRegistrationNotSearching
2476            }
2477            ffi::NM_DEVICE_STATE_REASON_GSM_REGISTRATION_DENIED => Self::GsmRegistrationDenied,
2478            ffi::NM_DEVICE_STATE_REASON_GSM_REGISTRATION_TIMEOUT => Self::GsmRegistrationTimeout,
2479            ffi::NM_DEVICE_STATE_REASON_GSM_REGISTRATION_FAILED => Self::GsmRegistrationFailed,
2480            ffi::NM_DEVICE_STATE_REASON_GSM_PIN_CHECK_FAILED => Self::GsmPinCheckFailed,
2481            ffi::NM_DEVICE_STATE_REASON_FIRMWARE_MISSING => Self::FirmwareMissing,
2482            ffi::NM_DEVICE_STATE_REASON_REMOVED => Self::Removed,
2483            ffi::NM_DEVICE_STATE_REASON_SLEEPING => Self::Sleeping,
2484            ffi::NM_DEVICE_STATE_REASON_CONNECTION_REMOVED => Self::ConnectionRemoved,
2485            ffi::NM_DEVICE_STATE_REASON_USER_REQUESTED => Self::UserRequested,
2486            ffi::NM_DEVICE_STATE_REASON_CARRIER => Self::Carrier,
2487            ffi::NM_DEVICE_STATE_REASON_CONNECTION_ASSUMED => Self::ConnectionAssumed,
2488            ffi::NM_DEVICE_STATE_REASON_SUPPLICANT_AVAILABLE => Self::SupplicantAvailable,
2489            ffi::NM_DEVICE_STATE_REASON_MODEM_NOT_FOUND => Self::ModemNotFound,
2490            ffi::NM_DEVICE_STATE_REASON_BT_FAILED => Self::BtFailed,
2491            ffi::NM_DEVICE_STATE_REASON_GSM_SIM_NOT_INSERTED => Self::GsmSimNotInserted,
2492            ffi::NM_DEVICE_STATE_REASON_GSM_SIM_PIN_REQUIRED => Self::GsmSimPinRequired,
2493            ffi::NM_DEVICE_STATE_REASON_GSM_SIM_PUK_REQUIRED => Self::GsmSimPukRequired,
2494            ffi::NM_DEVICE_STATE_REASON_GSM_SIM_WRONG => Self::GsmSimWrong,
2495            ffi::NM_DEVICE_STATE_REASON_INFINIBAND_MODE => Self::InfinibandMode,
2496            ffi::NM_DEVICE_STATE_REASON_DEPENDENCY_FAILED => Self::DependencyFailed,
2497            ffi::NM_DEVICE_STATE_REASON_BR2684_FAILED => Self::Br2684Failed,
2498            ffi::NM_DEVICE_STATE_REASON_MODEM_MANAGER_UNAVAILABLE => Self::ModemManagerUnavailable,
2499            ffi::NM_DEVICE_STATE_REASON_SSID_NOT_FOUND => Self::SsidNotFound,
2500            ffi::NM_DEVICE_STATE_REASON_SECONDARY_CONNECTION_FAILED => {
2501                Self::SecondaryConnectionFailed
2502            }
2503            ffi::NM_DEVICE_STATE_REASON_DCB_FCOE_FAILED => Self::DcbFcoeFailed,
2504            ffi::NM_DEVICE_STATE_REASON_TEAMD_CONTROL_FAILED => Self::TeamdControlFailed,
2505            ffi::NM_DEVICE_STATE_REASON_MODEM_FAILED => Self::ModemFailed,
2506            ffi::NM_DEVICE_STATE_REASON_MODEM_AVAILABLE => Self::ModemAvailable,
2507            ffi::NM_DEVICE_STATE_REASON_SIM_PIN_INCORRECT => Self::SimPinIncorrect,
2508            ffi::NM_DEVICE_STATE_REASON_NEW_ACTIVATION => Self::NewActivation,
2509            ffi::NM_DEVICE_STATE_REASON_PARENT_CHANGED => Self::ParentChanged,
2510            ffi::NM_DEVICE_STATE_REASON_PARENT_MANAGED_CHANGED => Self::ParentManagedChanged,
2511            ffi::NM_DEVICE_STATE_REASON_OVSDB_FAILED => Self::OvsdbFailed,
2512            ffi::NM_DEVICE_STATE_REASON_IP_ADDRESS_DUPLICATE => Self::IpAddressDuplicate,
2513            ffi::NM_DEVICE_STATE_REASON_IP_METHOD_UNSUPPORTED => Self::IpMethodUnsupported,
2514            ffi::NM_DEVICE_STATE_REASON_SRIOV_CONFIGURATION_FAILED => {
2515                Self::SriovConfigurationFailed
2516            }
2517            ffi::NM_DEVICE_STATE_REASON_PEER_NOT_FOUND => Self::PeerNotFound,
2518            ffi::NM_DEVICE_STATE_REASON_DEVICE_HANDLER_FAILED => Self::DeviceHandlerFailed,
2519            ffi::NM_DEVICE_STATE_REASON_UNMANAGED_BY_DEFAULT => Self::UnmanagedByDefault,
2520            ffi::NM_DEVICE_STATE_REASON_UNMANAGED_EXTERNAL_DOWN => Self::UnmanagedExternalDown,
2521            ffi::NM_DEVICE_STATE_REASON_UNMANAGED_LINK_NOT_INIT => Self::UnmanagedLinkNotInit,
2522            ffi::NM_DEVICE_STATE_REASON_UNMANAGED_QUITTING => Self::UnmanagedQuitting,
2523            ffi::NM_DEVICE_STATE_REASON_UNMANAGED_SLEEPING => Self::UnmanagedSleeping,
2524            ffi::NM_DEVICE_STATE_REASON_UNMANAGED_USER_CONF => Self::UnmanagedUserConf,
2525            ffi::NM_DEVICE_STATE_REASON_UNMANAGED_USER_EXPLICIT => Self::UnmanagedUserExplicit,
2526            ffi::NM_DEVICE_STATE_REASON_UNMANAGED_USER_SETTINGS => Self::UnmanagedUserSettings,
2527            ffi::NM_DEVICE_STATE_REASON_UNMANAGED_USER_UDEV => Self::UnmanagedUserUdev,
2528            value => Self::__Unknown(value),
2529        }
2530    }
2531}
2532
2533impl StaticType for DeviceStateReason {
2534    #[inline]
2535    #[doc(alias = "nm_device_state_reason_get_type")]
2536    fn static_type() -> glib::Type {
2537        unsafe { from_glib(ffi::nm_device_state_reason_get_type()) }
2538    }
2539}
2540
2541impl glib::HasParamSpec for DeviceStateReason {
2542    type ParamSpec = glib::ParamSpecEnum;
2543    type SetValue = Self;
2544    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
2545
2546    fn param_spec_builder() -> Self::BuilderFn {
2547        Self::ParamSpec::builder_with_default
2548    }
2549}
2550
2551impl glib::value::ValueType for DeviceStateReason {
2552    type Type = Self;
2553}
2554
2555unsafe impl<'a> glib::value::FromValue<'a> for DeviceStateReason {
2556    type Checker = glib::value::GenericValueTypeChecker<Self>;
2557
2558    #[inline]
2559    unsafe fn from_value(value: &'a glib::Value) -> Self {
2560        skip_assert_initialized!();
2561        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
2562    }
2563}
2564
2565impl ToValue for DeviceStateReason {
2566    #[inline]
2567    fn to_value(&self) -> glib::Value {
2568        let mut value = glib::Value::for_value_type::<Self>();
2569        unsafe {
2570            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
2571        }
2572        value
2573    }
2574
2575    #[inline]
2576    fn value_type(&self) -> glib::Type {
2577        Self::static_type()
2578    }
2579}
2580
2581impl From<DeviceStateReason> for glib::Value {
2582    #[inline]
2583    fn from(v: DeviceStateReason) -> Self {
2584        skip_assert_initialized!();
2585        ToValue::to_value(&v)
2586    }
2587}
2588
2589/// #NMDeviceType values indicate the type of hardware represented by a
2590/// device object.
2591#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
2592#[non_exhaustive]
2593#[doc(alias = "NMDeviceType")]
2594pub enum DeviceType {
2595    /// unknown device
2596    #[doc(alias = "NM_DEVICE_TYPE_UNKNOWN")]
2597    Unknown,
2598    /// a wired ethernet device
2599    #[doc(alias = "NM_DEVICE_TYPE_ETHERNET")]
2600    Ethernet,
2601    /// an 802.11 Wi-Fi device
2602    #[doc(alias = "NM_DEVICE_TYPE_WIFI")]
2603    Wifi,
2604    /// not used
2605    #[doc(alias = "NM_DEVICE_TYPE_UNUSED1")]
2606    Unused1,
2607    /// not used
2608    #[doc(alias = "NM_DEVICE_TYPE_UNUSED2")]
2609    Unused2,
2610    /// a Bluetooth device supporting PAN or DUN access protocols
2611    #[doc(alias = "NM_DEVICE_TYPE_BT")]
2612    Bt,
2613    /// an OLPC XO mesh networking device
2614    #[doc(alias = "NM_DEVICE_TYPE_OLPC_MESH")]
2615    OlpcMesh,
2616    /// an 802.16e Mobile WiMAX broadband device
2617    #[doc(alias = "NM_DEVICE_TYPE_WIMAX")]
2618    Wimax,
2619    /// a modem supporting analog telephone, CDMA/EVDO,
2620    /// GSM/UMTS, or LTE network access protocols
2621    #[doc(alias = "NM_DEVICE_TYPE_MODEM")]
2622    Modem,
2623    /// an IP-over-InfiniBand device
2624    #[doc(alias = "NM_DEVICE_TYPE_INFINIBAND")]
2625    Infiniband,
2626    /// a bond controller interface
2627    #[doc(alias = "NM_DEVICE_TYPE_BOND")]
2628    Bond,
2629    /// an 802.1Q VLAN interface
2630    #[doc(alias = "NM_DEVICE_TYPE_VLAN")]
2631    Vlan,
2632    /// ADSL modem
2633    #[doc(alias = "NM_DEVICE_TYPE_ADSL")]
2634    Adsl,
2635    /// a bridge controller interface
2636    #[doc(alias = "NM_DEVICE_TYPE_BRIDGE")]
2637    Bridge,
2638    /// generic support for unrecognized device types
2639    #[doc(alias = "NM_DEVICE_TYPE_GENERIC")]
2640    Generic,
2641    /// a team controller interface
2642    #[doc(alias = "NM_DEVICE_TYPE_TEAM")]
2643    Team,
2644    /// a TUN or TAP interface
2645    #[doc(alias = "NM_DEVICE_TYPE_TUN")]
2646    Tun,
2647    /// a IP tunnel interface
2648    #[doc(alias = "NM_DEVICE_TYPE_IP_TUNNEL")]
2649    IpTunnel,
2650    /// a MACVLAN interface
2651    #[doc(alias = "NM_DEVICE_TYPE_MACVLAN")]
2652    Macvlan,
2653    /// a VXLAN interface
2654    #[doc(alias = "NM_DEVICE_TYPE_VXLAN")]
2655    Vxlan,
2656    /// a VETH interface
2657    #[doc(alias = "NM_DEVICE_TYPE_VETH")]
2658    Veth,
2659    /// a MACsec interface
2660    #[doc(alias = "NM_DEVICE_TYPE_MACSEC")]
2661    Macsec,
2662    /// a dummy interface
2663    #[doc(alias = "NM_DEVICE_TYPE_DUMMY")]
2664    Dummy,
2665    /// a PPP interface
2666    #[doc(alias = "NM_DEVICE_TYPE_PPP")]
2667    Ppp,
2668    /// a Open vSwitch interface
2669    #[doc(alias = "NM_DEVICE_TYPE_OVS_INTERFACE")]
2670    OvsInterface,
2671    /// a Open vSwitch port
2672    #[doc(alias = "NM_DEVICE_TYPE_OVS_PORT")]
2673    OvsPort,
2674    /// a Open vSwitch bridge
2675    #[doc(alias = "NM_DEVICE_TYPE_OVS_BRIDGE")]
2676    OvsBridge,
2677    /// a IEEE 802.15.4 (WPAN) MAC Layer Device
2678    #[doc(alias = "NM_DEVICE_TYPE_WPAN")]
2679    Wpan,
2680    /// 6LoWPAN interface
2681    #[doc(alias = "NM_DEVICE_TYPE_6LOWPAN")]
2682    _6lowpan,
2683    /// a WireGuard interface
2684    #[doc(alias = "NM_DEVICE_TYPE_WIREGUARD")]
2685    Wireguard,
2686    /// an 802.11 Wi-Fi P2P device. Since: 1.16.
2687    #[doc(alias = "NM_DEVICE_TYPE_WIFI_P2P")]
2688    WifiP2p,
2689    /// A VRF (Virtual Routing and Forwarding) interface. Since: 1.24.
2690    #[doc(alias = "NM_DEVICE_TYPE_VRF")]
2691    Vrf,
2692    /// a loopback interface. Since: 1.42.
2693    #[doc(alias = "NM_DEVICE_TYPE_LOOPBACK")]
2694    Loopback,
2695    /// A HSR/PRP device. Since: 1.46.
2696    #[doc(alias = "NM_DEVICE_TYPE_HSR")]
2697    Hsr,
2698    /// A IPVLAN device. Since: 1.52.
2699    #[doc(alias = "NM_DEVICE_TYPE_IPVLAN")]
2700    Ipvlan,
2701    #[doc(hidden)]
2702    __Unknown(i32),
2703}
2704
2705#[doc(hidden)]
2706impl IntoGlib for DeviceType {
2707    type GlibType = ffi::NMDeviceType;
2708
2709    fn into_glib(self) -> ffi::NMDeviceType {
2710        match self {
2711            Self::Unknown => ffi::NM_DEVICE_TYPE_UNKNOWN,
2712            Self::Ethernet => ffi::NM_DEVICE_TYPE_ETHERNET,
2713            Self::Wifi => ffi::NM_DEVICE_TYPE_WIFI,
2714            Self::Unused1 => ffi::NM_DEVICE_TYPE_UNUSED1,
2715            Self::Unused2 => ffi::NM_DEVICE_TYPE_UNUSED2,
2716            Self::Bt => ffi::NM_DEVICE_TYPE_BT,
2717            Self::OlpcMesh => ffi::NM_DEVICE_TYPE_OLPC_MESH,
2718            Self::Wimax => ffi::NM_DEVICE_TYPE_WIMAX,
2719            Self::Modem => ffi::NM_DEVICE_TYPE_MODEM,
2720            Self::Infiniband => ffi::NM_DEVICE_TYPE_INFINIBAND,
2721            Self::Bond => ffi::NM_DEVICE_TYPE_BOND,
2722            Self::Vlan => ffi::NM_DEVICE_TYPE_VLAN,
2723            Self::Adsl => ffi::NM_DEVICE_TYPE_ADSL,
2724            Self::Bridge => ffi::NM_DEVICE_TYPE_BRIDGE,
2725            Self::Generic => ffi::NM_DEVICE_TYPE_GENERIC,
2726            Self::Team => ffi::NM_DEVICE_TYPE_TEAM,
2727            Self::Tun => ffi::NM_DEVICE_TYPE_TUN,
2728            Self::IpTunnel => ffi::NM_DEVICE_TYPE_IP_TUNNEL,
2729            Self::Macvlan => ffi::NM_DEVICE_TYPE_MACVLAN,
2730            Self::Vxlan => ffi::NM_DEVICE_TYPE_VXLAN,
2731            Self::Veth => ffi::NM_DEVICE_TYPE_VETH,
2732            Self::Macsec => ffi::NM_DEVICE_TYPE_MACSEC,
2733            Self::Dummy => ffi::NM_DEVICE_TYPE_DUMMY,
2734            Self::Ppp => ffi::NM_DEVICE_TYPE_PPP,
2735            Self::OvsInterface => ffi::NM_DEVICE_TYPE_OVS_INTERFACE,
2736            Self::OvsPort => ffi::NM_DEVICE_TYPE_OVS_PORT,
2737            Self::OvsBridge => ffi::NM_DEVICE_TYPE_OVS_BRIDGE,
2738            Self::Wpan => ffi::NM_DEVICE_TYPE_WPAN,
2739            Self::_6lowpan => ffi::NM_DEVICE_TYPE_6LOWPAN,
2740            Self::Wireguard => ffi::NM_DEVICE_TYPE_WIREGUARD,
2741            Self::WifiP2p => ffi::NM_DEVICE_TYPE_WIFI_P2P,
2742            Self::Vrf => ffi::NM_DEVICE_TYPE_VRF,
2743            Self::Loopback => ffi::NM_DEVICE_TYPE_LOOPBACK,
2744            Self::Hsr => ffi::NM_DEVICE_TYPE_HSR,
2745            Self::Ipvlan => ffi::NM_DEVICE_TYPE_IPVLAN,
2746            Self::__Unknown(value) => value,
2747        }
2748    }
2749}
2750
2751#[doc(hidden)]
2752impl FromGlib<ffi::NMDeviceType> for DeviceType {
2753    unsafe fn from_glib(value: ffi::NMDeviceType) -> Self {
2754        skip_assert_initialized!();
2755
2756        match value {
2757            ffi::NM_DEVICE_TYPE_UNKNOWN => Self::Unknown,
2758            ffi::NM_DEVICE_TYPE_ETHERNET => Self::Ethernet,
2759            ffi::NM_DEVICE_TYPE_WIFI => Self::Wifi,
2760            ffi::NM_DEVICE_TYPE_UNUSED1 => Self::Unused1,
2761            ffi::NM_DEVICE_TYPE_UNUSED2 => Self::Unused2,
2762            ffi::NM_DEVICE_TYPE_BT => Self::Bt,
2763            ffi::NM_DEVICE_TYPE_OLPC_MESH => Self::OlpcMesh,
2764            ffi::NM_DEVICE_TYPE_WIMAX => Self::Wimax,
2765            ffi::NM_DEVICE_TYPE_MODEM => Self::Modem,
2766            ffi::NM_DEVICE_TYPE_INFINIBAND => Self::Infiniband,
2767            ffi::NM_DEVICE_TYPE_BOND => Self::Bond,
2768            ffi::NM_DEVICE_TYPE_VLAN => Self::Vlan,
2769            ffi::NM_DEVICE_TYPE_ADSL => Self::Adsl,
2770            ffi::NM_DEVICE_TYPE_BRIDGE => Self::Bridge,
2771            ffi::NM_DEVICE_TYPE_GENERIC => Self::Generic,
2772            ffi::NM_DEVICE_TYPE_TEAM => Self::Team,
2773            ffi::NM_DEVICE_TYPE_TUN => Self::Tun,
2774            ffi::NM_DEVICE_TYPE_IP_TUNNEL => Self::IpTunnel,
2775            ffi::NM_DEVICE_TYPE_MACVLAN => Self::Macvlan,
2776            ffi::NM_DEVICE_TYPE_VXLAN => Self::Vxlan,
2777            ffi::NM_DEVICE_TYPE_VETH => Self::Veth,
2778            ffi::NM_DEVICE_TYPE_MACSEC => Self::Macsec,
2779            ffi::NM_DEVICE_TYPE_DUMMY => Self::Dummy,
2780            ffi::NM_DEVICE_TYPE_PPP => Self::Ppp,
2781            ffi::NM_DEVICE_TYPE_OVS_INTERFACE => Self::OvsInterface,
2782            ffi::NM_DEVICE_TYPE_OVS_PORT => Self::OvsPort,
2783            ffi::NM_DEVICE_TYPE_OVS_BRIDGE => Self::OvsBridge,
2784            ffi::NM_DEVICE_TYPE_WPAN => Self::Wpan,
2785            ffi::NM_DEVICE_TYPE_6LOWPAN => Self::_6lowpan,
2786            ffi::NM_DEVICE_TYPE_WIREGUARD => Self::Wireguard,
2787            ffi::NM_DEVICE_TYPE_WIFI_P2P => Self::WifiP2p,
2788            ffi::NM_DEVICE_TYPE_VRF => Self::Vrf,
2789            ffi::NM_DEVICE_TYPE_LOOPBACK => Self::Loopback,
2790            ffi::NM_DEVICE_TYPE_HSR => Self::Hsr,
2791            ffi::NM_DEVICE_TYPE_IPVLAN => Self::Ipvlan,
2792            value => Self::__Unknown(value),
2793        }
2794    }
2795}
2796
2797impl StaticType for DeviceType {
2798    #[inline]
2799    #[doc(alias = "nm_device_type_get_type")]
2800    fn static_type() -> glib::Type {
2801        unsafe { from_glib(ffi::nm_device_type_get_type()) }
2802    }
2803}
2804
2805impl glib::HasParamSpec for DeviceType {
2806    type ParamSpec = glib::ParamSpecEnum;
2807    type SetValue = Self;
2808    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
2809
2810    fn param_spec_builder() -> Self::BuilderFn {
2811        Self::ParamSpec::builder_with_default
2812    }
2813}
2814
2815impl glib::value::ValueType for DeviceType {
2816    type Type = Self;
2817}
2818
2819unsafe impl<'a> glib::value::FromValue<'a> for DeviceType {
2820    type Checker = glib::value::GenericValueTypeChecker<Self>;
2821
2822    #[inline]
2823    unsafe fn from_value(value: &'a glib::Value) -> Self {
2824        skip_assert_initialized!();
2825        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
2826    }
2827}
2828
2829impl ToValue for DeviceType {
2830    #[inline]
2831    fn to_value(&self) -> glib::Value {
2832        let mut value = glib::Value::for_value_type::<Self>();
2833        unsafe {
2834            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
2835        }
2836        value
2837    }
2838
2839    #[inline]
2840    fn value_type(&self) -> glib::Type {
2841        Self::static_type()
2842    }
2843}
2844
2845impl From<DeviceType> for glib::Value {
2846    #[inline]
2847    fn from(v: DeviceType) -> Self {
2848        skip_assert_initialized!();
2849        ToValue::to_value(&v)
2850    }
2851}
2852
2853/// The tunneling mode.
2854#[cfg(feature = "v1_2")]
2855#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
2856#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
2857#[non_exhaustive]
2858#[doc(alias = "NMIPTunnelMode")]
2859pub enum IPTunnelMode {
2860    /// Unknown/unset tunnel mode
2861    #[doc(alias = "NM_IP_TUNNEL_MODE_UNKNOWN")]
2862    Unknown,
2863    /// IP in IP tunnel
2864    #[doc(alias = "NM_IP_TUNNEL_MODE_IPIP")]
2865    Ipip,
2866    /// GRE tunnel
2867    #[doc(alias = "NM_IP_TUNNEL_MODE_GRE")]
2868    Gre,
2869    /// SIT tunnel
2870    #[doc(alias = "NM_IP_TUNNEL_MODE_SIT")]
2871    Sit,
2872    /// ISATAP tunnel
2873    #[doc(alias = "NM_IP_TUNNEL_MODE_ISATAP")]
2874    Isatap,
2875    /// VTI tunnel
2876    #[doc(alias = "NM_IP_TUNNEL_MODE_VTI")]
2877    Vti,
2878    /// IPv6 in IPv6 tunnel
2879    #[doc(alias = "NM_IP_TUNNEL_MODE_IP6IP6")]
2880    Ip6ip6,
2881    /// IPv4 in IPv6 tunnel
2882    #[doc(alias = "NM_IP_TUNNEL_MODE_IPIP6")]
2883    Ipip6,
2884    /// IPv6 GRE tunnel
2885    #[doc(alias = "NM_IP_TUNNEL_MODE_IP6GRE")]
2886    Ip6gre,
2887    /// IPv6 VTI tunnel
2888    #[doc(alias = "NM_IP_TUNNEL_MODE_VTI6")]
2889    Vti6,
2890    /// GRETAP tunnel
2891    #[doc(alias = "NM_IP_TUNNEL_MODE_GRETAP")]
2892    Gretap,
2893    /// IPv6 GRETAP tunnel
2894    #[doc(alias = "NM_IP_TUNNEL_MODE_IP6GRETAP")]
2895    Ip6gretap,
2896    #[doc(hidden)]
2897    __Unknown(i32),
2898}
2899
2900#[cfg(feature = "v1_2")]
2901#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
2902#[doc(hidden)]
2903impl IntoGlib for IPTunnelMode {
2904    type GlibType = ffi::NMIPTunnelMode;
2905
2906    #[inline]
2907    fn into_glib(self) -> ffi::NMIPTunnelMode {
2908        match self {
2909            Self::Unknown => ffi::NM_IP_TUNNEL_MODE_UNKNOWN,
2910            Self::Ipip => ffi::NM_IP_TUNNEL_MODE_IPIP,
2911            Self::Gre => ffi::NM_IP_TUNNEL_MODE_GRE,
2912            Self::Sit => ffi::NM_IP_TUNNEL_MODE_SIT,
2913            Self::Isatap => ffi::NM_IP_TUNNEL_MODE_ISATAP,
2914            Self::Vti => ffi::NM_IP_TUNNEL_MODE_VTI,
2915            Self::Ip6ip6 => ffi::NM_IP_TUNNEL_MODE_IP6IP6,
2916            Self::Ipip6 => ffi::NM_IP_TUNNEL_MODE_IPIP6,
2917            Self::Ip6gre => ffi::NM_IP_TUNNEL_MODE_IP6GRE,
2918            Self::Vti6 => ffi::NM_IP_TUNNEL_MODE_VTI6,
2919            Self::Gretap => ffi::NM_IP_TUNNEL_MODE_GRETAP,
2920            Self::Ip6gretap => ffi::NM_IP_TUNNEL_MODE_IP6GRETAP,
2921            Self::__Unknown(value) => value,
2922        }
2923    }
2924}
2925
2926#[cfg(feature = "v1_2")]
2927#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
2928#[doc(hidden)]
2929impl FromGlib<ffi::NMIPTunnelMode> for IPTunnelMode {
2930    #[inline]
2931    unsafe fn from_glib(value: ffi::NMIPTunnelMode) -> Self {
2932        skip_assert_initialized!();
2933
2934        match value {
2935            ffi::NM_IP_TUNNEL_MODE_UNKNOWN => Self::Unknown,
2936            ffi::NM_IP_TUNNEL_MODE_IPIP => Self::Ipip,
2937            ffi::NM_IP_TUNNEL_MODE_GRE => Self::Gre,
2938            ffi::NM_IP_TUNNEL_MODE_SIT => Self::Sit,
2939            ffi::NM_IP_TUNNEL_MODE_ISATAP => Self::Isatap,
2940            ffi::NM_IP_TUNNEL_MODE_VTI => Self::Vti,
2941            ffi::NM_IP_TUNNEL_MODE_IP6IP6 => Self::Ip6ip6,
2942            ffi::NM_IP_TUNNEL_MODE_IPIP6 => Self::Ipip6,
2943            ffi::NM_IP_TUNNEL_MODE_IP6GRE => Self::Ip6gre,
2944            ffi::NM_IP_TUNNEL_MODE_VTI6 => Self::Vti6,
2945            ffi::NM_IP_TUNNEL_MODE_GRETAP => Self::Gretap,
2946            ffi::NM_IP_TUNNEL_MODE_IP6GRETAP => Self::Ip6gretap,
2947            value => Self::__Unknown(value),
2948        }
2949    }
2950}
2951
2952#[cfg(feature = "v1_2")]
2953#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
2954impl StaticType for IPTunnelMode {
2955    #[inline]
2956    #[doc(alias = "nm_ip_tunnel_mode_get_type")]
2957    fn static_type() -> glib::Type {
2958        unsafe { from_glib(ffi::nm_ip_tunnel_mode_get_type()) }
2959    }
2960}
2961
2962#[cfg(feature = "v1_2")]
2963#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
2964impl glib::HasParamSpec for IPTunnelMode {
2965    type ParamSpec = glib::ParamSpecEnum;
2966    type SetValue = Self;
2967    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
2968
2969    fn param_spec_builder() -> Self::BuilderFn {
2970        Self::ParamSpec::builder_with_default
2971    }
2972}
2973
2974#[cfg(feature = "v1_2")]
2975#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
2976impl glib::value::ValueType for IPTunnelMode {
2977    type Type = Self;
2978}
2979
2980#[cfg(feature = "v1_2")]
2981#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
2982unsafe impl<'a> glib::value::FromValue<'a> for IPTunnelMode {
2983    type Checker = glib::value::GenericValueTypeChecker<Self>;
2984
2985    #[inline]
2986    unsafe fn from_value(value: &'a glib::Value) -> Self {
2987        skip_assert_initialized!();
2988        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
2989    }
2990}
2991
2992#[cfg(feature = "v1_2")]
2993#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
2994impl ToValue for IPTunnelMode {
2995    #[inline]
2996    fn to_value(&self) -> glib::Value {
2997        let mut value = glib::Value::for_value_type::<Self>();
2998        unsafe {
2999            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
3000        }
3001        value
3002    }
3003
3004    #[inline]
3005    fn value_type(&self) -> glib::Type {
3006        Self::static_type()
3007    }
3008}
3009
3010#[cfg(feature = "v1_2")]
3011#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
3012impl From<IPTunnelMode> for glib::Value {
3013    #[inline]
3014    fn from(v: IPTunnelMode) -> Self {
3015        skip_assert_initialized!();
3016        ToValue::to_value(&v)
3017    }
3018}
3019
3020/// The type of the callback for `NMKeyfileReadHandler` and `NMKeyfileWriteHandler`.
3021/// Depending on the type, you can interpret `NMKeyfileHandlerData`.
3022#[cfg(feature = "v1_30")]
3023#[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
3024#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
3025#[non_exhaustive]
3026#[doc(alias = "NMKeyfileHandlerType")]
3027pub enum KeyfileHandlerType {
3028    /// a warning.
3029    #[doc(alias = "NM_KEYFILE_HANDLER_TYPE_WARN")]
3030    Warn,
3031    /// for handling certificates while writing
3032    ///   a connection to keyfile.
3033    #[doc(alias = "NM_KEYFILE_HANDLER_TYPE_WRITE_CERT")]
3034    WriteCert,
3035    #[doc(hidden)]
3036    __Unknown(i32),
3037}
3038
3039#[cfg(feature = "v1_30")]
3040#[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
3041#[doc(hidden)]
3042impl IntoGlib for KeyfileHandlerType {
3043    type GlibType = ffi::NMKeyfileHandlerType;
3044
3045    #[inline]
3046    fn into_glib(self) -> ffi::NMKeyfileHandlerType {
3047        match self {
3048            Self::Warn => ffi::NM_KEYFILE_HANDLER_TYPE_WARN,
3049            Self::WriteCert => ffi::NM_KEYFILE_HANDLER_TYPE_WRITE_CERT,
3050            Self::__Unknown(value) => value,
3051        }
3052    }
3053}
3054
3055#[cfg(feature = "v1_30")]
3056#[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
3057#[doc(hidden)]
3058impl FromGlib<ffi::NMKeyfileHandlerType> for KeyfileHandlerType {
3059    #[inline]
3060    unsafe fn from_glib(value: ffi::NMKeyfileHandlerType) -> Self {
3061        skip_assert_initialized!();
3062
3063        match value {
3064            ffi::NM_KEYFILE_HANDLER_TYPE_WARN => Self::Warn,
3065            ffi::NM_KEYFILE_HANDLER_TYPE_WRITE_CERT => Self::WriteCert,
3066            value => Self::__Unknown(value),
3067        }
3068    }
3069}
3070
3071#[cfg(feature = "v1_30")]
3072#[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
3073impl StaticType for KeyfileHandlerType {
3074    #[inline]
3075    #[doc(alias = "nm_keyfile_handler_type_get_type")]
3076    fn static_type() -> glib::Type {
3077        unsafe { from_glib(ffi::nm_keyfile_handler_type_get_type()) }
3078    }
3079}
3080
3081#[cfg(feature = "v1_30")]
3082#[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
3083impl glib::HasParamSpec for KeyfileHandlerType {
3084    type ParamSpec = glib::ParamSpecEnum;
3085    type SetValue = Self;
3086    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
3087
3088    fn param_spec_builder() -> Self::BuilderFn {
3089        Self::ParamSpec::builder_with_default
3090    }
3091}
3092
3093#[cfg(feature = "v1_30")]
3094#[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
3095impl glib::value::ValueType for KeyfileHandlerType {
3096    type Type = Self;
3097}
3098
3099#[cfg(feature = "v1_30")]
3100#[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
3101unsafe impl<'a> glib::value::FromValue<'a> for KeyfileHandlerType {
3102    type Checker = glib::value::GenericValueTypeChecker<Self>;
3103
3104    #[inline]
3105    unsafe fn from_value(value: &'a glib::Value) -> Self {
3106        skip_assert_initialized!();
3107        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
3108    }
3109}
3110
3111#[cfg(feature = "v1_30")]
3112#[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
3113impl ToValue for KeyfileHandlerType {
3114    #[inline]
3115    fn to_value(&self) -> glib::Value {
3116        let mut value = glib::Value::for_value_type::<Self>();
3117        unsafe {
3118            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
3119        }
3120        value
3121    }
3122
3123    #[inline]
3124    fn value_type(&self) -> glib::Type {
3125        Self::static_type()
3126    }
3127}
3128
3129#[cfg(feature = "v1_30")]
3130#[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
3131impl From<KeyfileHandlerType> for glib::Value {
3132    #[inline]
3133    fn from(v: KeyfileHandlerType) -> Self {
3134        skip_assert_initialized!();
3135        ToValue::to_value(&v)
3136    }
3137}
3138
3139/// The severity level of [`KeyfileHandlerType::Warn`][crate::KeyfileHandlerType::Warn] events.
3140#[cfg(feature = "v1_30")]
3141#[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
3142#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
3143#[non_exhaustive]
3144#[doc(alias = "NMKeyfileWarnSeverity")]
3145pub enum KeyfileWarnSeverity {
3146    /// debug message
3147    #[doc(alias = "NM_KEYFILE_WARN_SEVERITY_DEBUG")]
3148    Debug,
3149    /// info message
3150    #[doc(alias = "NM_KEYFILE_WARN_SEVERITY_INFO")]
3151    Info,
3152    /// info message about a missing file
3153    #[doc(alias = "NM_KEYFILE_WARN_SEVERITY_INFO_MISSING_FILE")]
3154    InfoMissingFile,
3155    /// a warning message
3156    #[doc(alias = "NM_KEYFILE_WARN_SEVERITY_WARN")]
3157    Warn,
3158    #[doc(hidden)]
3159    __Unknown(i32),
3160}
3161
3162#[cfg(feature = "v1_30")]
3163#[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
3164#[doc(hidden)]
3165impl IntoGlib for KeyfileWarnSeverity {
3166    type GlibType = ffi::NMKeyfileWarnSeverity;
3167
3168    #[inline]
3169    fn into_glib(self) -> ffi::NMKeyfileWarnSeverity {
3170        match self {
3171            Self::Debug => ffi::NM_KEYFILE_WARN_SEVERITY_DEBUG,
3172            Self::Info => ffi::NM_KEYFILE_WARN_SEVERITY_INFO,
3173            Self::InfoMissingFile => ffi::NM_KEYFILE_WARN_SEVERITY_INFO_MISSING_FILE,
3174            Self::Warn => ffi::NM_KEYFILE_WARN_SEVERITY_WARN,
3175            Self::__Unknown(value) => value,
3176        }
3177    }
3178}
3179
3180#[cfg(feature = "v1_30")]
3181#[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
3182#[doc(hidden)]
3183impl FromGlib<ffi::NMKeyfileWarnSeverity> for KeyfileWarnSeverity {
3184    #[inline]
3185    unsafe fn from_glib(value: ffi::NMKeyfileWarnSeverity) -> Self {
3186        skip_assert_initialized!();
3187
3188        match value {
3189            ffi::NM_KEYFILE_WARN_SEVERITY_DEBUG => Self::Debug,
3190            ffi::NM_KEYFILE_WARN_SEVERITY_INFO => Self::Info,
3191            ffi::NM_KEYFILE_WARN_SEVERITY_INFO_MISSING_FILE => Self::InfoMissingFile,
3192            ffi::NM_KEYFILE_WARN_SEVERITY_WARN => Self::Warn,
3193            value => Self::__Unknown(value),
3194        }
3195    }
3196}
3197
3198#[cfg(feature = "v1_30")]
3199#[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
3200impl StaticType for KeyfileWarnSeverity {
3201    #[inline]
3202    #[doc(alias = "nm_keyfile_warn_severity_get_type")]
3203    fn static_type() -> glib::Type {
3204        unsafe { from_glib(ffi::nm_keyfile_warn_severity_get_type()) }
3205    }
3206}
3207
3208#[cfg(feature = "v1_30")]
3209#[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
3210impl glib::HasParamSpec for KeyfileWarnSeverity {
3211    type ParamSpec = glib::ParamSpecEnum;
3212    type SetValue = Self;
3213    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
3214
3215    fn param_spec_builder() -> Self::BuilderFn {
3216        Self::ParamSpec::builder_with_default
3217    }
3218}
3219
3220#[cfg(feature = "v1_30")]
3221#[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
3222impl glib::value::ValueType for KeyfileWarnSeverity {
3223    type Type = Self;
3224}
3225
3226#[cfg(feature = "v1_30")]
3227#[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
3228unsafe impl<'a> glib::value::FromValue<'a> for KeyfileWarnSeverity {
3229    type Checker = glib::value::GenericValueTypeChecker<Self>;
3230
3231    #[inline]
3232    unsafe fn from_value(value: &'a glib::Value) -> Self {
3233        skip_assert_initialized!();
3234        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
3235    }
3236}
3237
3238#[cfg(feature = "v1_30")]
3239#[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
3240impl ToValue for KeyfileWarnSeverity {
3241    #[inline]
3242    fn to_value(&self) -> glib::Value {
3243        let mut value = glib::Value::for_value_type::<Self>();
3244        unsafe {
3245            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
3246        }
3247        value
3248    }
3249
3250    #[inline]
3251    fn value_type(&self) -> glib::Type {
3252        Self::static_type()
3253    }
3254}
3255
3256#[cfg(feature = "v1_30")]
3257#[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
3258impl From<KeyfileWarnSeverity> for glib::Value {
3259    #[inline]
3260    fn from(v: KeyfileWarnSeverity) -> Self {
3261        skip_assert_initialized!();
3262        ToValue::to_value(&v)
3263    }
3264}
3265
3266/// Errors related to the main "network management" interface of NetworkManager.
3267/// These may be returned from #NMClient methods that invoke D-Bus operations on
3268/// the "org.freedesktop.NetworkManager" interface, and correspond to D-Bus
3269/// errors in that namespace.
3270#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
3271#[non_exhaustive]
3272#[doc(alias = "NMManagerError")]
3273pub enum ManagerError {
3274    /// unknown or unclassified error
3275    #[doc(alias = "NM_MANAGER_ERROR_FAILED")]
3276    Failed,
3277    /// Permission denied.
3278    #[doc(alias = "NM_MANAGER_ERROR_PERMISSION_DENIED")]
3279    PermissionDenied,
3280    /// The requested connection is not known.
3281    #[doc(alias = "NM_MANAGER_ERROR_UNKNOWN_CONNECTION")]
3282    UnknownConnection,
3283    /// The requested device is not known.
3284    #[doc(alias = "NM_MANAGER_ERROR_UNKNOWN_DEVICE")]
3285    UnknownDevice,
3286    /// The requested connection cannot be
3287    ///   activated at this time.
3288    #[doc(alias = "NM_MANAGER_ERROR_CONNECTION_NOT_AVAILABLE")]
3289    ConnectionNotAvailable,
3290    /// The request could not be completed
3291    ///   because a required connection is not active.
3292    #[doc(alias = "NM_MANAGER_ERROR_CONNECTION_NOT_ACTIVE")]
3293    ConnectionNotActive,
3294    /// The connection to be activated was
3295    ///   already active on another device.
3296    #[doc(alias = "NM_MANAGER_ERROR_CONNECTION_ALREADY_ACTIVE")]
3297    ConnectionAlreadyActive,
3298    /// An activation request failed due to a
3299    ///   dependency being unavailable.
3300    #[doc(alias = "NM_MANAGER_ERROR_DEPENDENCY_FAILED")]
3301    DependencyFailed,
3302    /// The manager is already in the requested
3303    ///   sleep/wake state.
3304    #[doc(alias = "NM_MANAGER_ERROR_ALREADY_ASLEEP_OR_AWAKE")]
3305    AlreadyAsleepOrAwake,
3306    /// The network is already
3307    ///   enabled/disabled.
3308    #[doc(alias = "NM_MANAGER_ERROR_ALREADY_ENABLED_OR_DISABLED")]
3309    AlreadyEnabledOrDisabled,
3310    /// Unknown log level in SetLogging
3311    #[doc(alias = "NM_MANAGER_ERROR_UNKNOWN_LOG_LEVEL")]
3312    UnknownLogLevel,
3313    /// Unknown log domain in SetLogging
3314    #[doc(alias = "NM_MANAGER_ERROR_UNKNOWN_LOG_DOMAIN")]
3315    UnknownLogDomain,
3316    /// Invalid arguments for D-Bus request
3317    #[doc(alias = "NM_MANAGER_ERROR_INVALID_ARGUMENTS")]
3318    InvalidArguments,
3319    /// A plug-in was needed to complete the
3320    ///   activation but is not available.
3321    #[doc(alias = "NM_MANAGER_ERROR_MISSING_PLUGIN")]
3322    MissingPlugin,
3323    #[doc(hidden)]
3324    __Unknown(i32),
3325}
3326
3327#[doc(hidden)]
3328impl IntoGlib for ManagerError {
3329    type GlibType = ffi::NMManagerError;
3330
3331    fn into_glib(self) -> ffi::NMManagerError {
3332        match self {
3333            Self::Failed => ffi::NM_MANAGER_ERROR_FAILED,
3334            Self::PermissionDenied => ffi::NM_MANAGER_ERROR_PERMISSION_DENIED,
3335            Self::UnknownConnection => ffi::NM_MANAGER_ERROR_UNKNOWN_CONNECTION,
3336            Self::UnknownDevice => ffi::NM_MANAGER_ERROR_UNKNOWN_DEVICE,
3337            Self::ConnectionNotAvailable => ffi::NM_MANAGER_ERROR_CONNECTION_NOT_AVAILABLE,
3338            Self::ConnectionNotActive => ffi::NM_MANAGER_ERROR_CONNECTION_NOT_ACTIVE,
3339            Self::ConnectionAlreadyActive => ffi::NM_MANAGER_ERROR_CONNECTION_ALREADY_ACTIVE,
3340            Self::DependencyFailed => ffi::NM_MANAGER_ERROR_DEPENDENCY_FAILED,
3341            Self::AlreadyAsleepOrAwake => ffi::NM_MANAGER_ERROR_ALREADY_ASLEEP_OR_AWAKE,
3342            Self::AlreadyEnabledOrDisabled => ffi::NM_MANAGER_ERROR_ALREADY_ENABLED_OR_DISABLED,
3343            Self::UnknownLogLevel => ffi::NM_MANAGER_ERROR_UNKNOWN_LOG_LEVEL,
3344            Self::UnknownLogDomain => ffi::NM_MANAGER_ERROR_UNKNOWN_LOG_DOMAIN,
3345            Self::InvalidArguments => ffi::NM_MANAGER_ERROR_INVALID_ARGUMENTS,
3346            Self::MissingPlugin => ffi::NM_MANAGER_ERROR_MISSING_PLUGIN,
3347            Self::__Unknown(value) => value,
3348        }
3349    }
3350}
3351
3352#[doc(hidden)]
3353impl FromGlib<ffi::NMManagerError> for ManagerError {
3354    unsafe fn from_glib(value: ffi::NMManagerError) -> Self {
3355        skip_assert_initialized!();
3356
3357        match value {
3358            ffi::NM_MANAGER_ERROR_FAILED => Self::Failed,
3359            ffi::NM_MANAGER_ERROR_PERMISSION_DENIED => Self::PermissionDenied,
3360            ffi::NM_MANAGER_ERROR_UNKNOWN_CONNECTION => Self::UnknownConnection,
3361            ffi::NM_MANAGER_ERROR_UNKNOWN_DEVICE => Self::UnknownDevice,
3362            ffi::NM_MANAGER_ERROR_CONNECTION_NOT_AVAILABLE => Self::ConnectionNotAvailable,
3363            ffi::NM_MANAGER_ERROR_CONNECTION_NOT_ACTIVE => Self::ConnectionNotActive,
3364            ffi::NM_MANAGER_ERROR_CONNECTION_ALREADY_ACTIVE => Self::ConnectionAlreadyActive,
3365            ffi::NM_MANAGER_ERROR_DEPENDENCY_FAILED => Self::DependencyFailed,
3366            ffi::NM_MANAGER_ERROR_ALREADY_ASLEEP_OR_AWAKE => Self::AlreadyAsleepOrAwake,
3367            ffi::NM_MANAGER_ERROR_ALREADY_ENABLED_OR_DISABLED => Self::AlreadyEnabledOrDisabled,
3368            ffi::NM_MANAGER_ERROR_UNKNOWN_LOG_LEVEL => Self::UnknownLogLevel,
3369            ffi::NM_MANAGER_ERROR_UNKNOWN_LOG_DOMAIN => Self::UnknownLogDomain,
3370            ffi::NM_MANAGER_ERROR_INVALID_ARGUMENTS => Self::InvalidArguments,
3371            ffi::NM_MANAGER_ERROR_MISSING_PLUGIN => Self::MissingPlugin,
3372            value => Self::__Unknown(value),
3373        }
3374    }
3375}
3376
3377impl glib::error::ErrorDomain for ManagerError {
3378    #[inline]
3379    fn domain() -> glib::Quark {
3380        skip_assert_initialized!();
3381
3382        unsafe { from_glib(ffi::nm_manager_error_quark()) }
3383    }
3384
3385    #[inline]
3386    fn code(self) -> i32 {
3387        self.into_glib()
3388    }
3389
3390    #[inline]
3391    #[allow(clippy::match_single_binding)]
3392    fn from(code: i32) -> Option<Self> {
3393        skip_assert_initialized!();
3394        match unsafe { from_glib(code) } {
3395            Self::__Unknown(_) => Some(Self::Failed),
3396            value => Some(value),
3397        }
3398    }
3399}
3400
3401impl StaticType for ManagerError {
3402    #[inline]
3403    #[doc(alias = "nm_manager_error_get_type")]
3404    fn static_type() -> glib::Type {
3405        unsafe { from_glib(ffi::nm_manager_error_get_type()) }
3406    }
3407}
3408
3409impl glib::HasParamSpec for ManagerError {
3410    type ParamSpec = glib::ParamSpecEnum;
3411    type SetValue = Self;
3412    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
3413
3414    fn param_spec_builder() -> Self::BuilderFn {
3415        Self::ParamSpec::builder_with_default
3416    }
3417}
3418
3419impl glib::value::ValueType for ManagerError {
3420    type Type = Self;
3421}
3422
3423unsafe impl<'a> glib::value::FromValue<'a> for ManagerError {
3424    type Checker = glib::value::GenericValueTypeChecker<Self>;
3425
3426    #[inline]
3427    unsafe fn from_value(value: &'a glib::Value) -> Self {
3428        skip_assert_initialized!();
3429        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
3430    }
3431}
3432
3433impl ToValue for ManagerError {
3434    #[inline]
3435    fn to_value(&self) -> glib::Value {
3436        let mut value = glib::Value::for_value_type::<Self>();
3437        unsafe {
3438            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
3439        }
3440        value
3441    }
3442
3443    #[inline]
3444    fn value_type(&self) -> glib::Type {
3445        Self::static_type()
3446    }
3447}
3448
3449impl From<ManagerError> for glib::Value {
3450    #[inline]
3451    fn from(v: ManagerError) -> Self {
3452        skip_assert_initialized!();
3453        ToValue::to_value(&v)
3454    }
3455}
3456
3457/// The NMMetered enum has two different purposes: one is to configure
3458/// "connection.metered" setting of a connection profile in #NMSettingConnection, and
3459/// the other is to express the actual metered state of the #NMDevice at a given moment.
3460///
3461/// For the connection profile only #NM_METERED_UNKNOWN, #NM_METERED_NO
3462/// and #NM_METERED_YES are allowed.
3463///
3464/// The device's metered state at runtime is determined by the profile
3465/// which is currently active. If the profile explicitly specifies #NM_METERED_NO
3466/// or #NM_METERED_YES, then the device's metered state is as such.
3467/// If the connection profile leaves it undecided at #NM_METERED_UNKNOWN (the default),
3468/// then NetworkManager tries to guess the metered state, for example based on the
3469/// device type or on DHCP options (like Android devices exposing a "ANDROID_METERED"
3470/// DHCP vendor option). This then leads to either #NM_METERED_GUESS_NO or #NM_METERED_GUESS_YES.
3471///
3472/// Most applications probably should treat the runtime state #NM_METERED_GUESS_YES
3473/// like #NM_METERED_YES, and all other states as not metered.
3474///
3475/// Note that the per-device metered states are then combined to a global metered
3476/// state. This is basically the metered state of the device with the best default
3477/// route. However, that generalization of a global metered state may not be correct
3478/// if the default routes for IPv4 and IPv6 are on different devices, or if policy
3479/// routing is configured. In general, the global metered state tries to express whether
3480/// the traffic is likely metered, but since that depends on the traffic itself,
3481/// there is not one answer in all cases. Hence, an application may want to consider
3482/// the per-device's metered states.
3483#[cfg(feature = "v1_2")]
3484#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
3485#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
3486#[non_exhaustive]
3487#[doc(alias = "NMMetered")]
3488pub enum Metered {
3489    /// The metered status is unknown
3490    #[doc(alias = "NM_METERED_UNKNOWN")]
3491    Unknown,
3492    /// Metered, the value was explicitly configured
3493    #[doc(alias = "NM_METERED_YES")]
3494    Yes,
3495    /// Not metered, the value was explicitly configured
3496    #[doc(alias = "NM_METERED_NO")]
3497    No,
3498    /// Metered, the value was guessed
3499    #[doc(alias = "NM_METERED_GUESS_YES")]
3500    GuessYes,
3501    /// Not metered, the value was guessed
3502    #[doc(alias = "NM_METERED_GUESS_NO")]
3503    GuessNo,
3504    #[doc(hidden)]
3505    __Unknown(i32),
3506}
3507
3508#[cfg(feature = "v1_2")]
3509#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
3510#[doc(hidden)]
3511impl IntoGlib for Metered {
3512    type GlibType = ffi::NMMetered;
3513
3514    #[inline]
3515    fn into_glib(self) -> ffi::NMMetered {
3516        match self {
3517            Self::Unknown => ffi::NM_METERED_UNKNOWN,
3518            Self::Yes => ffi::NM_METERED_YES,
3519            Self::No => ffi::NM_METERED_NO,
3520            Self::GuessYes => ffi::NM_METERED_GUESS_YES,
3521            Self::GuessNo => ffi::NM_METERED_GUESS_NO,
3522            Self::__Unknown(value) => value,
3523        }
3524    }
3525}
3526
3527#[cfg(feature = "v1_2")]
3528#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
3529#[doc(hidden)]
3530impl FromGlib<ffi::NMMetered> for Metered {
3531    #[inline]
3532    unsafe fn from_glib(value: ffi::NMMetered) -> Self {
3533        skip_assert_initialized!();
3534
3535        match value {
3536            ffi::NM_METERED_UNKNOWN => Self::Unknown,
3537            ffi::NM_METERED_YES => Self::Yes,
3538            ffi::NM_METERED_NO => Self::No,
3539            ffi::NM_METERED_GUESS_YES => Self::GuessYes,
3540            ffi::NM_METERED_GUESS_NO => Self::GuessNo,
3541            value => Self::__Unknown(value),
3542        }
3543    }
3544}
3545
3546#[cfg(feature = "v1_2")]
3547#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
3548impl StaticType for Metered {
3549    #[inline]
3550    #[doc(alias = "nm_metered_get_type")]
3551    fn static_type() -> glib::Type {
3552        unsafe { from_glib(ffi::nm_metered_get_type()) }
3553    }
3554}
3555
3556#[cfg(feature = "v1_2")]
3557#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
3558impl glib::HasParamSpec for Metered {
3559    type ParamSpec = glib::ParamSpecEnum;
3560    type SetValue = Self;
3561    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
3562
3563    fn param_spec_builder() -> Self::BuilderFn {
3564        Self::ParamSpec::builder_with_default
3565    }
3566}
3567
3568#[cfg(feature = "v1_2")]
3569#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
3570impl glib::value::ValueType for Metered {
3571    type Type = Self;
3572}
3573
3574#[cfg(feature = "v1_2")]
3575#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
3576unsafe impl<'a> glib::value::FromValue<'a> for Metered {
3577    type Checker = glib::value::GenericValueTypeChecker<Self>;
3578
3579    #[inline]
3580    unsafe fn from_value(value: &'a glib::Value) -> Self {
3581        skip_assert_initialized!();
3582        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
3583    }
3584}
3585
3586#[cfg(feature = "v1_2")]
3587#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
3588impl ToValue for Metered {
3589    #[inline]
3590    fn to_value(&self) -> glib::Value {
3591        let mut value = glib::Value::for_value_type::<Self>();
3592        unsafe {
3593            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
3594        }
3595        value
3596    }
3597
3598    #[inline]
3599    fn value_type(&self) -> glib::Type {
3600        Self::static_type()
3601    }
3602}
3603
3604#[cfg(feature = "v1_2")]
3605#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
3606impl From<Metered> for glib::Value {
3607    #[inline]
3608    fn from(v: Metered) -> Self {
3609        skip_assert_initialized!();
3610        ToValue::to_value(&v)
3611    }
3612}
3613
3614/// The result of a checkpoint Rollback() operation for a specific device.
3615#[cfg(feature = "v1_4")]
3616#[cfg_attr(docsrs, doc(cfg(feature = "v1_4")))]
3617#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
3618#[non_exhaustive]
3619#[doc(alias = "NMRollbackResult")]
3620pub enum RollbackResult {
3621    /// the rollback succeeded.
3622    #[doc(alias = "NM_ROLLBACK_RESULT_OK")]
3623    Ok,
3624    /// the device no longer exists.
3625    #[doc(alias = "NM_ROLLBACK_RESULT_ERR_NO_DEVICE")]
3626    ErrNoDevice,
3627    /// the device is now unmanaged.
3628    #[doc(alias = "NM_ROLLBACK_RESULT_ERR_DEVICE_UNMANAGED")]
3629    ErrDeviceUnmanaged,
3630    /// other errors during rollback.
3631    #[doc(alias = "NM_ROLLBACK_RESULT_ERR_FAILED")]
3632    ErrFailed,
3633    #[doc(hidden)]
3634    __Unknown(i32),
3635}
3636
3637#[cfg(feature = "v1_4")]
3638#[cfg_attr(docsrs, doc(cfg(feature = "v1_4")))]
3639#[doc(hidden)]
3640impl IntoGlib for RollbackResult {
3641    type GlibType = ffi::NMRollbackResult;
3642
3643    #[inline]
3644    fn into_glib(self) -> ffi::NMRollbackResult {
3645        match self {
3646            Self::Ok => ffi::NM_ROLLBACK_RESULT_OK,
3647            Self::ErrNoDevice => ffi::NM_ROLLBACK_RESULT_ERR_NO_DEVICE,
3648            Self::ErrDeviceUnmanaged => ffi::NM_ROLLBACK_RESULT_ERR_DEVICE_UNMANAGED,
3649            Self::ErrFailed => ffi::NM_ROLLBACK_RESULT_ERR_FAILED,
3650            Self::__Unknown(value) => value,
3651        }
3652    }
3653}
3654
3655#[cfg(feature = "v1_4")]
3656#[cfg_attr(docsrs, doc(cfg(feature = "v1_4")))]
3657#[doc(hidden)]
3658impl FromGlib<ffi::NMRollbackResult> for RollbackResult {
3659    #[inline]
3660    unsafe fn from_glib(value: ffi::NMRollbackResult) -> Self {
3661        skip_assert_initialized!();
3662
3663        match value {
3664            ffi::NM_ROLLBACK_RESULT_OK => Self::Ok,
3665            ffi::NM_ROLLBACK_RESULT_ERR_NO_DEVICE => Self::ErrNoDevice,
3666            ffi::NM_ROLLBACK_RESULT_ERR_DEVICE_UNMANAGED => Self::ErrDeviceUnmanaged,
3667            ffi::NM_ROLLBACK_RESULT_ERR_FAILED => Self::ErrFailed,
3668            value => Self::__Unknown(value),
3669        }
3670    }
3671}
3672
3673/// #NMSecretAgentError values are passed by secret agents back to NetworkManager
3674/// when they encounter problems retrieving secrets on behalf of NM. They
3675/// correspond to errors in the "org.freedesktop.NetworkManager.SecretManager"
3676/// namespace.
3677///
3678/// Client APIs such as nm_client_activate_connection() will not see these error
3679/// codes; instead, the secret agent manager will translate them to the
3680/// corresponding #NMAgentManagerError codes.
3681#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
3682#[non_exhaustive]
3683#[doc(alias = "NMSecretAgentError")]
3684pub enum SecretAgentError {
3685    /// unknown or unclassified error
3686    #[doc(alias = "NM_SECRET_AGENT_ERROR_FAILED")]
3687    Failed,
3688    /// the caller (ie, NetworkManager) is
3689    ///   not authorized to make this request
3690    #[doc(alias = "NM_SECRET_AGENT_ERROR_PERMISSION_DENIED")]
3691    PermissionDenied,
3692    /// the connection for which secrets
3693    ///   were requested is invalid
3694    #[doc(alias = "NM_SECRET_AGENT_ERROR_INVALID_CONNECTION")]
3695    InvalidConnection,
3696    /// the request was canceled by the user
3697    #[doc(alias = "NM_SECRET_AGENT_ERROR_USER_CANCELED")]
3698    UserCanceled,
3699    /// the agent canceled the request
3700    ///   because it was requested to do so by NetworkManager
3701    #[doc(alias = "NM_SECRET_AGENT_ERROR_AGENT_CANCELED")]
3702    AgentCanceled,
3703    /// the agent cannot find any secrets for this
3704    ///   connection
3705    #[doc(alias = "NM_SECRET_AGENT_ERROR_NO_SECRETS")]
3706    NoSecrets,
3707    #[doc(hidden)]
3708    __Unknown(i32),
3709}
3710
3711#[doc(hidden)]
3712impl IntoGlib for SecretAgentError {
3713    type GlibType = ffi::NMSecretAgentError;
3714
3715    #[inline]
3716    fn into_glib(self) -> ffi::NMSecretAgentError {
3717        match self {
3718            Self::Failed => ffi::NM_SECRET_AGENT_ERROR_FAILED,
3719            Self::PermissionDenied => ffi::NM_SECRET_AGENT_ERROR_PERMISSION_DENIED,
3720            Self::InvalidConnection => ffi::NM_SECRET_AGENT_ERROR_INVALID_CONNECTION,
3721            Self::UserCanceled => ffi::NM_SECRET_AGENT_ERROR_USER_CANCELED,
3722            Self::AgentCanceled => ffi::NM_SECRET_AGENT_ERROR_AGENT_CANCELED,
3723            Self::NoSecrets => ffi::NM_SECRET_AGENT_ERROR_NO_SECRETS,
3724            Self::__Unknown(value) => value,
3725        }
3726    }
3727}
3728
3729#[doc(hidden)]
3730impl FromGlib<ffi::NMSecretAgentError> for SecretAgentError {
3731    #[inline]
3732    unsafe fn from_glib(value: ffi::NMSecretAgentError) -> Self {
3733        skip_assert_initialized!();
3734
3735        match value {
3736            ffi::NM_SECRET_AGENT_ERROR_FAILED => Self::Failed,
3737            ffi::NM_SECRET_AGENT_ERROR_PERMISSION_DENIED => Self::PermissionDenied,
3738            ffi::NM_SECRET_AGENT_ERROR_INVALID_CONNECTION => Self::InvalidConnection,
3739            ffi::NM_SECRET_AGENT_ERROR_USER_CANCELED => Self::UserCanceled,
3740            ffi::NM_SECRET_AGENT_ERROR_AGENT_CANCELED => Self::AgentCanceled,
3741            ffi::NM_SECRET_AGENT_ERROR_NO_SECRETS => Self::NoSecrets,
3742            value => Self::__Unknown(value),
3743        }
3744    }
3745}
3746
3747impl glib::error::ErrorDomain for SecretAgentError {
3748    #[inline]
3749    fn domain() -> glib::Quark {
3750        skip_assert_initialized!();
3751
3752        unsafe { from_glib(ffi::nm_secret_agent_error_quark()) }
3753    }
3754
3755    #[inline]
3756    fn code(self) -> i32 {
3757        self.into_glib()
3758    }
3759
3760    #[inline]
3761    #[allow(clippy::match_single_binding)]
3762    fn from(code: i32) -> Option<Self> {
3763        skip_assert_initialized!();
3764        match unsafe { from_glib(code) } {
3765            Self::__Unknown(_) => Some(Self::Failed),
3766            value => Some(value),
3767        }
3768    }
3769}
3770
3771impl StaticType for SecretAgentError {
3772    #[inline]
3773    #[doc(alias = "nm_secret_agent_error_get_type")]
3774    fn static_type() -> glib::Type {
3775        unsafe { from_glib(ffi::nm_secret_agent_error_get_type()) }
3776    }
3777}
3778
3779impl glib::HasParamSpec for SecretAgentError {
3780    type ParamSpec = glib::ParamSpecEnum;
3781    type SetValue = Self;
3782    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
3783
3784    fn param_spec_builder() -> Self::BuilderFn {
3785        Self::ParamSpec::builder_with_default
3786    }
3787}
3788
3789impl glib::value::ValueType for SecretAgentError {
3790    type Type = Self;
3791}
3792
3793unsafe impl<'a> glib::value::FromValue<'a> for SecretAgentError {
3794    type Checker = glib::value::GenericValueTypeChecker<Self>;
3795
3796    #[inline]
3797    unsafe fn from_value(value: &'a glib::Value) -> Self {
3798        skip_assert_initialized!();
3799        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
3800    }
3801}
3802
3803impl ToValue for SecretAgentError {
3804    #[inline]
3805    fn to_value(&self) -> glib::Value {
3806        let mut value = glib::Value::for_value_type::<Self>();
3807        unsafe {
3808            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
3809        }
3810        value
3811    }
3812
3813    #[inline]
3814    fn value_type(&self) -> glib::Type {
3815        Self::static_type()
3816    }
3817}
3818
3819impl From<SecretAgentError> for glib::Value {
3820    #[inline]
3821    fn from(v: SecretAgentError) -> Self {
3822        skip_assert_initialized!();
3823        ToValue::to_value(&v)
3824    }
3825}
3826
3827/// #NMSetting8021xCKFormat values indicate the general type of a certificate
3828/// or private key
3829#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
3830#[non_exhaustive]
3831#[doc(alias = "NMSetting8021xCKFormat")]
3832pub enum Setting8021xCKFormat {
3833    /// unknown file format
3834    #[doc(alias = "NM_SETTING_802_1X_CK_FORMAT_UNKNOWN")]
3835    Unknown,
3836    /// file contains an X.509 format certificate
3837    #[doc(alias = "NM_SETTING_802_1X_CK_FORMAT_X509")]
3838    X509,
3839    /// file contains an old-style OpenSSL PEM
3840    /// or DER private key
3841    #[doc(alias = "NM_SETTING_802_1X_CK_FORMAT_RAW_KEY")]
3842    RawKey,
3843    /// file contains a PKCS#<!-- -->12 certificate
3844    /// and private key
3845    #[doc(alias = "NM_SETTING_802_1X_CK_FORMAT_PKCS12")]
3846    Pkcs12,
3847    #[doc(hidden)]
3848    __Unknown(i32),
3849}
3850
3851#[doc(hidden)]
3852impl IntoGlib for Setting8021xCKFormat {
3853    type GlibType = ffi::NMSetting8021xCKFormat;
3854
3855    #[inline]
3856    fn into_glib(self) -> ffi::NMSetting8021xCKFormat {
3857        match self {
3858            Self::Unknown => ffi::NM_SETTING_802_1X_CK_FORMAT_UNKNOWN,
3859            Self::X509 => ffi::NM_SETTING_802_1X_CK_FORMAT_X509,
3860            Self::RawKey => ffi::NM_SETTING_802_1X_CK_FORMAT_RAW_KEY,
3861            Self::Pkcs12 => ffi::NM_SETTING_802_1X_CK_FORMAT_PKCS12,
3862            Self::__Unknown(value) => value,
3863        }
3864    }
3865}
3866
3867#[doc(hidden)]
3868impl FromGlib<ffi::NMSetting8021xCKFormat> for Setting8021xCKFormat {
3869    #[inline]
3870    unsafe fn from_glib(value: ffi::NMSetting8021xCKFormat) -> Self {
3871        skip_assert_initialized!();
3872
3873        match value {
3874            ffi::NM_SETTING_802_1X_CK_FORMAT_UNKNOWN => Self::Unknown,
3875            ffi::NM_SETTING_802_1X_CK_FORMAT_X509 => Self::X509,
3876            ffi::NM_SETTING_802_1X_CK_FORMAT_RAW_KEY => Self::RawKey,
3877            ffi::NM_SETTING_802_1X_CK_FORMAT_PKCS12 => Self::Pkcs12,
3878            value => Self::__Unknown(value),
3879        }
3880    }
3881}
3882
3883impl StaticType for Setting8021xCKFormat {
3884    #[inline]
3885    #[doc(alias = "nm_setting_802_1x_ck_format_get_type")]
3886    fn static_type() -> glib::Type {
3887        unsafe { from_glib(ffi::nm_setting_802_1x_ck_format_get_type()) }
3888    }
3889}
3890
3891impl glib::HasParamSpec for Setting8021xCKFormat {
3892    type ParamSpec = glib::ParamSpecEnum;
3893    type SetValue = Self;
3894    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
3895
3896    fn param_spec_builder() -> Self::BuilderFn {
3897        Self::ParamSpec::builder_with_default
3898    }
3899}
3900
3901impl glib::value::ValueType for Setting8021xCKFormat {
3902    type Type = Self;
3903}
3904
3905unsafe impl<'a> glib::value::FromValue<'a> for Setting8021xCKFormat {
3906    type Checker = glib::value::GenericValueTypeChecker<Self>;
3907
3908    #[inline]
3909    unsafe fn from_value(value: &'a glib::Value) -> Self {
3910        skip_assert_initialized!();
3911        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
3912    }
3913}
3914
3915impl ToValue for Setting8021xCKFormat {
3916    #[inline]
3917    fn to_value(&self) -> glib::Value {
3918        let mut value = glib::Value::for_value_type::<Self>();
3919        unsafe {
3920            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
3921        }
3922        value
3923    }
3924
3925    #[inline]
3926    fn value_type(&self) -> glib::Type {
3927        Self::static_type()
3928    }
3929}
3930
3931impl From<Setting8021xCKFormat> for glib::Value {
3932    #[inline]
3933    fn from(v: Setting8021xCKFormat) -> Self {
3934        skip_assert_initialized!();
3935        ToValue::to_value(&v)
3936    }
3937}
3938
3939/// #NMSetting8021xCKScheme values indicate how a certificate or private key is
3940/// stored in the setting properties, either as a blob of the item's data, or as
3941/// a path to a certificate or private key file on the filesystem
3942#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
3943#[non_exhaustive]
3944#[doc(alias = "NMSetting8021xCKScheme")]
3945pub enum Setting8021xCKScheme {
3946    /// unknown certificate or private key
3947    /// scheme
3948    #[doc(alias = "NM_SETTING_802_1X_CK_SCHEME_UNKNOWN")]
3949    Unknown,
3950    /// certificate or key is stored as the raw
3951    /// item data
3952    #[doc(alias = "NM_SETTING_802_1X_CK_SCHEME_BLOB")]
3953    Blob,
3954    /// certificate or key is stored as a path
3955    /// to a file containing the certificate or key data
3956    #[doc(alias = "NM_SETTING_802_1X_CK_SCHEME_PATH")]
3957    Path,
3958    /// certificate or key is stored as a
3959    /// URI of an object on a PKCS#11 token
3960    #[doc(alias = "NM_SETTING_802_1X_CK_SCHEME_PKCS11")]
3961    Pkcs11,
3962    #[doc(hidden)]
3963    __Unknown(i32),
3964}
3965
3966#[doc(hidden)]
3967impl IntoGlib for Setting8021xCKScheme {
3968    type GlibType = ffi::NMSetting8021xCKScheme;
3969
3970    #[inline]
3971    fn into_glib(self) -> ffi::NMSetting8021xCKScheme {
3972        match self {
3973            Self::Unknown => ffi::NM_SETTING_802_1X_CK_SCHEME_UNKNOWN,
3974            Self::Blob => ffi::NM_SETTING_802_1X_CK_SCHEME_BLOB,
3975            Self::Path => ffi::NM_SETTING_802_1X_CK_SCHEME_PATH,
3976            Self::Pkcs11 => ffi::NM_SETTING_802_1X_CK_SCHEME_PKCS11,
3977            Self::__Unknown(value) => value,
3978        }
3979    }
3980}
3981
3982#[doc(hidden)]
3983impl FromGlib<ffi::NMSetting8021xCKScheme> for Setting8021xCKScheme {
3984    #[inline]
3985    unsafe fn from_glib(value: ffi::NMSetting8021xCKScheme) -> Self {
3986        skip_assert_initialized!();
3987
3988        match value {
3989            ffi::NM_SETTING_802_1X_CK_SCHEME_UNKNOWN => Self::Unknown,
3990            ffi::NM_SETTING_802_1X_CK_SCHEME_BLOB => Self::Blob,
3991            ffi::NM_SETTING_802_1X_CK_SCHEME_PATH => Self::Path,
3992            ffi::NM_SETTING_802_1X_CK_SCHEME_PKCS11 => Self::Pkcs11,
3993            value => Self::__Unknown(value),
3994        }
3995    }
3996}
3997
3998impl StaticType for Setting8021xCKScheme {
3999    #[inline]
4000    #[doc(alias = "nm_setting_802_1x_ck_scheme_get_type")]
4001    fn static_type() -> glib::Type {
4002        unsafe { from_glib(ffi::nm_setting_802_1x_ck_scheme_get_type()) }
4003    }
4004}
4005
4006impl glib::HasParamSpec for Setting8021xCKScheme {
4007    type ParamSpec = glib::ParamSpecEnum;
4008    type SetValue = Self;
4009    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
4010
4011    fn param_spec_builder() -> Self::BuilderFn {
4012        Self::ParamSpec::builder_with_default
4013    }
4014}
4015
4016impl glib::value::ValueType for Setting8021xCKScheme {
4017    type Type = Self;
4018}
4019
4020unsafe impl<'a> glib::value::FromValue<'a> for Setting8021xCKScheme {
4021    type Checker = glib::value::GenericValueTypeChecker<Self>;
4022
4023    #[inline]
4024    unsafe fn from_value(value: &'a glib::Value) -> Self {
4025        skip_assert_initialized!();
4026        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
4027    }
4028}
4029
4030impl ToValue for Setting8021xCKScheme {
4031    #[inline]
4032    fn to_value(&self) -> glib::Value {
4033        let mut value = glib::Value::for_value_type::<Self>();
4034        unsafe {
4035            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
4036        }
4037        value
4038    }
4039
4040    #[inline]
4041    fn value_type(&self) -> glib::Type {
4042        Self::static_type()
4043    }
4044}
4045
4046impl From<Setting8021xCKScheme> for glib::Value {
4047    #[inline]
4048    fn from(v: Setting8021xCKScheme) -> Self {
4049        skip_assert_initialized!();
4050        ToValue::to_value(&v)
4051    }
4052}
4053
4054/// These flags modify the comparison behavior when comparing two settings or
4055/// two connections.
4056#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
4057#[non_exhaustive]
4058#[doc(alias = "NMSettingCompareFlags")]
4059pub enum SettingCompareFlags {
4060    /// match all properties exactly
4061    #[doc(alias = "NM_SETTING_COMPARE_FLAG_EXACT")]
4062    Exact,
4063    /// match only important attributes, like SSID,
4064    ///   type, security settings, etc.  Does not match, for example, connection ID
4065    ///   or UUID.
4066    #[doc(alias = "NM_SETTING_COMPARE_FLAG_FUZZY")]
4067    Fuzzy,
4068    /// ignore the connection's ID
4069    #[doc(alias = "NM_SETTING_COMPARE_FLAG_IGNORE_ID")]
4070    IgnoreId,
4071    /// ignore all secrets
4072    #[doc(alias = "NM_SETTING_COMPARE_FLAG_IGNORE_SECRETS")]
4073    IgnoreSecrets,
4074    /// ignore secrets for which
4075    ///   the secret's flags indicate the secret is owned by a user secret agent
4076    ///   (ie, the secret's flag includes @NM_SETTING_SECRET_FLAG_AGENT_OWNED)
4077    #[doc(alias = "NM_SETTING_COMPARE_FLAG_IGNORE_AGENT_OWNED_SECRETS")]
4078    IgnoreAgentOwnedSecrets,
4079    /// ignore secrets for which
4080    ///   the secret's flags indicate the secret should not be saved to persistent
4081    ///   storage (ie, the secret's flag includes @NM_SETTING_SECRET_FLAG_NOT_SAVED)
4082    #[doc(alias = "NM_SETTING_COMPARE_FLAG_IGNORE_NOT_SAVED_SECRETS")]
4083    IgnoreNotSavedSecrets,
4084    /// if this flag is set,
4085    ///   nm_setting_diff() and nm_connection_diff() will also include properties that
4086    ///   are set to their default value. See also @NM_SETTING_COMPARE_FLAG_DIFF_RESULT_NO_DEFAULT.
4087    #[doc(alias = "NM_SETTING_COMPARE_FLAG_DIFF_RESULT_WITH_DEFAULT")]
4088    DiffResultWithDefault,
4089    /// if this flag is set,
4090    ///   nm_setting_diff() and nm_connection_diff() will not include properties that
4091    ///   are set to their default value. This is the opposite of
4092    ///   @NM_SETTING_COMPARE_FLAG_DIFF_RESULT_WITH_DEFAULT. If both flags are set together,
4093    ///   @NM_SETTING_COMPARE_FLAG_DIFF_RESULT_WITH_DEFAULT wins. If both flags are unset,
4094    ///   this means to exclude default properties if there is a setting to compare,
4095    ///   but include all properties, if the setting 'b' is missing. This is the legacy
4096    ///   behaviour of libnm-util, where nm_setting_diff() behaved differently depending
4097    ///   on whether the setting 'b' was available. If @NM_SETTING_COMPARE_FLAG_DIFF_RESULT_WITH_DEFAULT
4098    ///   is set, nm_setting_diff() will also set the flags @NM_SETTING_DIFF_RESULT_IN_A_DEFAULT
4099    ///   and @NM_SETTING_DIFF_RESULT_IN_B_DEFAULT, if the values are default values.
4100    #[doc(alias = "NM_SETTING_COMPARE_FLAG_DIFF_RESULT_NO_DEFAULT")]
4101    DiffResultNoDefault,
4102    /// ignore the connection's timestamp
4103    #[doc(alias = "NM_SETTING_COMPARE_FLAG_IGNORE_TIMESTAMP")]
4104    IgnoreTimestamp,
4105    #[doc(hidden)]
4106    __Unknown(i32),
4107}
4108
4109#[doc(hidden)]
4110impl IntoGlib for SettingCompareFlags {
4111    type GlibType = ffi::NMSettingCompareFlags;
4112
4113    #[inline]
4114    fn into_glib(self) -> ffi::NMSettingCompareFlags {
4115        match self {
4116            Self::Exact => ffi::NM_SETTING_COMPARE_FLAG_EXACT,
4117            Self::Fuzzy => ffi::NM_SETTING_COMPARE_FLAG_FUZZY,
4118            Self::IgnoreId => ffi::NM_SETTING_COMPARE_FLAG_IGNORE_ID,
4119            Self::IgnoreSecrets => ffi::NM_SETTING_COMPARE_FLAG_IGNORE_SECRETS,
4120            Self::IgnoreAgentOwnedSecrets => {
4121                ffi::NM_SETTING_COMPARE_FLAG_IGNORE_AGENT_OWNED_SECRETS
4122            }
4123            Self::IgnoreNotSavedSecrets => ffi::NM_SETTING_COMPARE_FLAG_IGNORE_NOT_SAVED_SECRETS,
4124            Self::DiffResultWithDefault => ffi::NM_SETTING_COMPARE_FLAG_DIFF_RESULT_WITH_DEFAULT,
4125            Self::DiffResultNoDefault => ffi::NM_SETTING_COMPARE_FLAG_DIFF_RESULT_NO_DEFAULT,
4126            Self::IgnoreTimestamp => ffi::NM_SETTING_COMPARE_FLAG_IGNORE_TIMESTAMP,
4127            Self::__Unknown(value) => value,
4128        }
4129    }
4130}
4131
4132#[doc(hidden)]
4133impl FromGlib<ffi::NMSettingCompareFlags> for SettingCompareFlags {
4134    #[inline]
4135    unsafe fn from_glib(value: ffi::NMSettingCompareFlags) -> Self {
4136        skip_assert_initialized!();
4137
4138        match value {
4139            ffi::NM_SETTING_COMPARE_FLAG_EXACT => Self::Exact,
4140            ffi::NM_SETTING_COMPARE_FLAG_FUZZY => Self::Fuzzy,
4141            ffi::NM_SETTING_COMPARE_FLAG_IGNORE_ID => Self::IgnoreId,
4142            ffi::NM_SETTING_COMPARE_FLAG_IGNORE_SECRETS => Self::IgnoreSecrets,
4143            ffi::NM_SETTING_COMPARE_FLAG_IGNORE_AGENT_OWNED_SECRETS => {
4144                Self::IgnoreAgentOwnedSecrets
4145            }
4146            ffi::NM_SETTING_COMPARE_FLAG_IGNORE_NOT_SAVED_SECRETS => Self::IgnoreNotSavedSecrets,
4147            ffi::NM_SETTING_COMPARE_FLAG_DIFF_RESULT_WITH_DEFAULT => Self::DiffResultWithDefault,
4148            ffi::NM_SETTING_COMPARE_FLAG_DIFF_RESULT_NO_DEFAULT => Self::DiffResultNoDefault,
4149            ffi::NM_SETTING_COMPARE_FLAG_IGNORE_TIMESTAMP => Self::IgnoreTimestamp,
4150            value => Self::__Unknown(value),
4151        }
4152    }
4153}
4154
4155impl StaticType for SettingCompareFlags {
4156    #[inline]
4157    #[doc(alias = "nm_setting_compare_flags_get_type")]
4158    fn static_type() -> glib::Type {
4159        unsafe { from_glib(ffi::nm_setting_compare_flags_get_type()) }
4160    }
4161}
4162
4163impl glib::HasParamSpec for SettingCompareFlags {
4164    type ParamSpec = glib::ParamSpecEnum;
4165    type SetValue = Self;
4166    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
4167
4168    fn param_spec_builder() -> Self::BuilderFn {
4169        Self::ParamSpec::builder_with_default
4170    }
4171}
4172
4173impl glib::value::ValueType for SettingCompareFlags {
4174    type Type = Self;
4175}
4176
4177unsafe impl<'a> glib::value::FromValue<'a> for SettingCompareFlags {
4178    type Checker = glib::value::GenericValueTypeChecker<Self>;
4179
4180    #[inline]
4181    unsafe fn from_value(value: &'a glib::Value) -> Self {
4182        skip_assert_initialized!();
4183        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
4184    }
4185}
4186
4187impl ToValue for SettingCompareFlags {
4188    #[inline]
4189    fn to_value(&self) -> glib::Value {
4190        let mut value = glib::Value::for_value_type::<Self>();
4191        unsafe {
4192            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
4193        }
4194        value
4195    }
4196
4197    #[inline]
4198    fn value_type(&self) -> glib::Type {
4199        Self::static_type()
4200    }
4201}
4202
4203impl From<SettingCompareFlags> for glib::Value {
4204    #[inline]
4205    fn from(v: SettingCompareFlags) -> Self {
4206        skip_assert_initialized!();
4207        ToValue::to_value(&v)
4208    }
4209}
4210
4211/// #NMSettingConnectionAutoconnectSlaves values indicate whether slave connections
4212/// should be activated when controller is activated.
4213///
4214/// # Deprecated since 1.46
4215///
4216#[cfg_attr(feature = "v1_46", deprecated = "Since 1.46")]
4217#[cfg(feature = "v1_2")]
4218#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
4219#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
4220#[non_exhaustive]
4221#[doc(alias = "NMSettingConnectionAutoconnectSlaves")]
4222pub enum SettingConnectionAutoconnectSlaves {
4223    /// default value
4224    #[doc(alias = "NM_SETTING_CONNECTION_AUTOCONNECT_SLAVES_DEFAULT")]
4225    Default,
4226    /// slaves are not brought up when
4227    ///   controller is activated
4228    #[doc(alias = "NM_SETTING_CONNECTION_AUTOCONNECT_SLAVES_NO")]
4229    No,
4230    /// slaves are brought up when
4231    ///   controller is activated
4232    #[doc(alias = "NM_SETTING_CONNECTION_AUTOCONNECT_SLAVES_YES")]
4233    Yes,
4234    #[doc(hidden)]
4235    __Unknown(i32),
4236}
4237
4238#[cfg(feature = "v1_2")]
4239#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
4240#[allow(deprecated)]
4241#[doc(hidden)]
4242impl IntoGlib for SettingConnectionAutoconnectSlaves {
4243    type GlibType = ffi::NMSettingConnectionAutoconnectSlaves;
4244
4245    #[inline]
4246    fn into_glib(self) -> ffi::NMSettingConnectionAutoconnectSlaves {
4247        match self {
4248            Self::Default => ffi::NM_SETTING_CONNECTION_AUTOCONNECT_SLAVES_DEFAULT,
4249            Self::No => ffi::NM_SETTING_CONNECTION_AUTOCONNECT_SLAVES_NO,
4250            Self::Yes => ffi::NM_SETTING_CONNECTION_AUTOCONNECT_SLAVES_YES,
4251            Self::__Unknown(value) => value,
4252        }
4253    }
4254}
4255
4256#[cfg(feature = "v1_2")]
4257#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
4258#[allow(deprecated)]
4259#[doc(hidden)]
4260impl FromGlib<ffi::NMSettingConnectionAutoconnectSlaves> for SettingConnectionAutoconnectSlaves {
4261    #[inline]
4262    unsafe fn from_glib(value: ffi::NMSettingConnectionAutoconnectSlaves) -> Self {
4263        skip_assert_initialized!();
4264
4265        match value {
4266            ffi::NM_SETTING_CONNECTION_AUTOCONNECT_SLAVES_DEFAULT => Self::Default,
4267            ffi::NM_SETTING_CONNECTION_AUTOCONNECT_SLAVES_NO => Self::No,
4268            ffi::NM_SETTING_CONNECTION_AUTOCONNECT_SLAVES_YES => Self::Yes,
4269            value => Self::__Unknown(value),
4270        }
4271    }
4272}
4273
4274#[cfg(feature = "v1_2")]
4275#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
4276#[allow(deprecated)]
4277impl StaticType for SettingConnectionAutoconnectSlaves {
4278    #[inline]
4279    #[doc(alias = "nm_setting_connection_autoconnect_slaves_get_type")]
4280    fn static_type() -> glib::Type {
4281        unsafe { from_glib(ffi::nm_setting_connection_autoconnect_slaves_get_type()) }
4282    }
4283}
4284
4285#[cfg(feature = "v1_2")]
4286#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
4287#[allow(deprecated)]
4288impl glib::HasParamSpec for SettingConnectionAutoconnectSlaves {
4289    type ParamSpec = glib::ParamSpecEnum;
4290    type SetValue = Self;
4291    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
4292
4293    fn param_spec_builder() -> Self::BuilderFn {
4294        Self::ParamSpec::builder_with_default
4295    }
4296}
4297
4298#[cfg(feature = "v1_2")]
4299#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
4300#[allow(deprecated)]
4301impl glib::value::ValueType for SettingConnectionAutoconnectSlaves {
4302    type Type = Self;
4303}
4304
4305#[cfg(feature = "v1_2")]
4306#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
4307#[allow(deprecated)]
4308unsafe impl<'a> glib::value::FromValue<'a> for SettingConnectionAutoconnectSlaves {
4309    type Checker = glib::value::GenericValueTypeChecker<Self>;
4310
4311    #[inline]
4312    unsafe fn from_value(value: &'a glib::Value) -> Self {
4313        skip_assert_initialized!();
4314        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
4315    }
4316}
4317
4318#[cfg(feature = "v1_2")]
4319#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
4320#[allow(deprecated)]
4321impl ToValue for SettingConnectionAutoconnectSlaves {
4322    #[inline]
4323    fn to_value(&self) -> glib::Value {
4324        let mut value = glib::Value::for_value_type::<Self>();
4325        unsafe {
4326            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
4327        }
4328        value
4329    }
4330
4331    #[inline]
4332    fn value_type(&self) -> glib::Type {
4333        Self::static_type()
4334    }
4335}
4336
4337#[cfg(feature = "v1_2")]
4338#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
4339#[allow(deprecated)]
4340impl From<SettingConnectionAutoconnectSlaves> for glib::Value {
4341    #[inline]
4342    fn from(v: SettingConnectionAutoconnectSlaves) -> Self {
4343        skip_assert_initialized!();
4344        ToValue::to_value(&v)
4345    }
4346}
4347
4348/// #NMSettingConnectionDnsOverTls values indicate whether DNSOverTls should be enabled.
4349#[cfg(feature = "v1_34")]
4350#[cfg_attr(docsrs, doc(cfg(feature = "v1_34")))]
4351#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
4352#[non_exhaustive]
4353#[doc(alias = "NMSettingConnectionDnsOverTls")]
4354pub enum SettingConnectionDnsOverTls {
4355    /// default value
4356    #[doc(alias = "NM_SETTING_CONNECTION_DNS_OVER_TLS_DEFAULT")]
4357    Default,
4358    /// disable DNSOverTls
4359    #[doc(alias = "NM_SETTING_CONNECTION_DNS_OVER_TLS_NO")]
4360    No,
4361    /// enable opportunistic mode
4362    #[doc(alias = "NM_SETTING_CONNECTION_DNS_OVER_TLS_OPPORTUNISTIC")]
4363    Opportunistic,
4364    /// enable strict mode
4365    #[doc(alias = "NM_SETTING_CONNECTION_DNS_OVER_TLS_YES")]
4366    Yes,
4367    #[doc(hidden)]
4368    __Unknown(i32),
4369}
4370
4371#[cfg(feature = "v1_34")]
4372#[cfg_attr(docsrs, doc(cfg(feature = "v1_34")))]
4373#[doc(hidden)]
4374impl IntoGlib for SettingConnectionDnsOverTls {
4375    type GlibType = ffi::NMSettingConnectionDnsOverTls;
4376
4377    #[inline]
4378    fn into_glib(self) -> ffi::NMSettingConnectionDnsOverTls {
4379        match self {
4380            Self::Default => ffi::NM_SETTING_CONNECTION_DNS_OVER_TLS_DEFAULT,
4381            Self::No => ffi::NM_SETTING_CONNECTION_DNS_OVER_TLS_NO,
4382            Self::Opportunistic => ffi::NM_SETTING_CONNECTION_DNS_OVER_TLS_OPPORTUNISTIC,
4383            Self::Yes => ffi::NM_SETTING_CONNECTION_DNS_OVER_TLS_YES,
4384            Self::__Unknown(value) => value,
4385        }
4386    }
4387}
4388
4389#[cfg(feature = "v1_34")]
4390#[cfg_attr(docsrs, doc(cfg(feature = "v1_34")))]
4391#[doc(hidden)]
4392impl FromGlib<ffi::NMSettingConnectionDnsOverTls> for SettingConnectionDnsOverTls {
4393    #[inline]
4394    unsafe fn from_glib(value: ffi::NMSettingConnectionDnsOverTls) -> Self {
4395        skip_assert_initialized!();
4396
4397        match value {
4398            ffi::NM_SETTING_CONNECTION_DNS_OVER_TLS_DEFAULT => Self::Default,
4399            ffi::NM_SETTING_CONNECTION_DNS_OVER_TLS_NO => Self::No,
4400            ffi::NM_SETTING_CONNECTION_DNS_OVER_TLS_OPPORTUNISTIC => Self::Opportunistic,
4401            ffi::NM_SETTING_CONNECTION_DNS_OVER_TLS_YES => Self::Yes,
4402            value => Self::__Unknown(value),
4403        }
4404    }
4405}
4406
4407#[cfg(feature = "v1_34")]
4408#[cfg_attr(docsrs, doc(cfg(feature = "v1_34")))]
4409impl StaticType for SettingConnectionDnsOverTls {
4410    #[inline]
4411    #[doc(alias = "nm_setting_connection_dns_over_tls_get_type")]
4412    fn static_type() -> glib::Type {
4413        unsafe { from_glib(ffi::nm_setting_connection_dns_over_tls_get_type()) }
4414    }
4415}
4416
4417#[cfg(feature = "v1_34")]
4418#[cfg_attr(docsrs, doc(cfg(feature = "v1_34")))]
4419impl glib::HasParamSpec for SettingConnectionDnsOverTls {
4420    type ParamSpec = glib::ParamSpecEnum;
4421    type SetValue = Self;
4422    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
4423
4424    fn param_spec_builder() -> Self::BuilderFn {
4425        Self::ParamSpec::builder_with_default
4426    }
4427}
4428
4429#[cfg(feature = "v1_34")]
4430#[cfg_attr(docsrs, doc(cfg(feature = "v1_34")))]
4431impl glib::value::ValueType for SettingConnectionDnsOverTls {
4432    type Type = Self;
4433}
4434
4435#[cfg(feature = "v1_34")]
4436#[cfg_attr(docsrs, doc(cfg(feature = "v1_34")))]
4437unsafe impl<'a> glib::value::FromValue<'a> for SettingConnectionDnsOverTls {
4438    type Checker = glib::value::GenericValueTypeChecker<Self>;
4439
4440    #[inline]
4441    unsafe fn from_value(value: &'a glib::Value) -> Self {
4442        skip_assert_initialized!();
4443        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
4444    }
4445}
4446
4447#[cfg(feature = "v1_34")]
4448#[cfg_attr(docsrs, doc(cfg(feature = "v1_34")))]
4449impl ToValue for SettingConnectionDnsOverTls {
4450    #[inline]
4451    fn to_value(&self) -> glib::Value {
4452        let mut value = glib::Value::for_value_type::<Self>();
4453        unsafe {
4454            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
4455        }
4456        value
4457    }
4458
4459    #[inline]
4460    fn value_type(&self) -> glib::Type {
4461        Self::static_type()
4462    }
4463}
4464
4465#[cfg(feature = "v1_34")]
4466#[cfg_attr(docsrs, doc(cfg(feature = "v1_34")))]
4467impl From<SettingConnectionDnsOverTls> for glib::Value {
4468    #[inline]
4469    fn from(v: SettingConnectionDnsOverTls) -> Self {
4470        skip_assert_initialized!();
4471        ToValue::to_value(&v)
4472    }
4473}
4474
4475/// #NMSettingConnectionDownOnPoweroff indicates whether the connection will be
4476/// brought down before the system is powered off.
4477#[cfg(feature = "v1_48")]
4478#[cfg_attr(docsrs, doc(cfg(feature = "v1_48")))]
4479#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
4480#[non_exhaustive]
4481#[doc(alias = "NMSettingConnectionDownOnPoweroff")]
4482pub enum SettingConnectionDownOnPoweroff {
4483    /// default value
4484    #[doc(alias = "NM_SETTING_CONNECTION_DOWN_ON_POWEROFF_DEFAULT")]
4485    Default,
4486    /// disable down-on-poweroff
4487    #[doc(alias = "NM_SETTING_CONNECTION_DOWN_ON_POWEROFF_NO")]
4488    No,
4489    /// enable down-on-poweroff
4490    #[doc(alias = "NM_SETTING_CONNECTION_DOWN_ON_POWEROFF_YES")]
4491    Yes,
4492    #[doc(hidden)]
4493    __Unknown(i32),
4494}
4495
4496#[cfg(feature = "v1_48")]
4497#[cfg_attr(docsrs, doc(cfg(feature = "v1_48")))]
4498#[doc(hidden)]
4499impl IntoGlib for SettingConnectionDownOnPoweroff {
4500    type GlibType = ffi::NMSettingConnectionDownOnPoweroff;
4501
4502    #[inline]
4503    fn into_glib(self) -> ffi::NMSettingConnectionDownOnPoweroff {
4504        match self {
4505            Self::Default => ffi::NM_SETTING_CONNECTION_DOWN_ON_POWEROFF_DEFAULT,
4506            Self::No => ffi::NM_SETTING_CONNECTION_DOWN_ON_POWEROFF_NO,
4507            Self::Yes => ffi::NM_SETTING_CONNECTION_DOWN_ON_POWEROFF_YES,
4508            Self::__Unknown(value) => value,
4509        }
4510    }
4511}
4512
4513#[cfg(feature = "v1_48")]
4514#[cfg_attr(docsrs, doc(cfg(feature = "v1_48")))]
4515#[doc(hidden)]
4516impl FromGlib<ffi::NMSettingConnectionDownOnPoweroff> for SettingConnectionDownOnPoweroff {
4517    #[inline]
4518    unsafe fn from_glib(value: ffi::NMSettingConnectionDownOnPoweroff) -> Self {
4519        skip_assert_initialized!();
4520
4521        match value {
4522            ffi::NM_SETTING_CONNECTION_DOWN_ON_POWEROFF_DEFAULT => Self::Default,
4523            ffi::NM_SETTING_CONNECTION_DOWN_ON_POWEROFF_NO => Self::No,
4524            ffi::NM_SETTING_CONNECTION_DOWN_ON_POWEROFF_YES => Self::Yes,
4525            value => Self::__Unknown(value),
4526        }
4527    }
4528}
4529
4530#[cfg(feature = "v1_48")]
4531#[cfg_attr(docsrs, doc(cfg(feature = "v1_48")))]
4532impl StaticType for SettingConnectionDownOnPoweroff {
4533    #[inline]
4534    #[doc(alias = "nm_setting_connection_down_on_poweroff_get_type")]
4535    fn static_type() -> glib::Type {
4536        unsafe { from_glib(ffi::nm_setting_connection_down_on_poweroff_get_type()) }
4537    }
4538}
4539
4540#[cfg(feature = "v1_48")]
4541#[cfg_attr(docsrs, doc(cfg(feature = "v1_48")))]
4542impl glib::HasParamSpec for SettingConnectionDownOnPoweroff {
4543    type ParamSpec = glib::ParamSpecEnum;
4544    type SetValue = Self;
4545    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
4546
4547    fn param_spec_builder() -> Self::BuilderFn {
4548        Self::ParamSpec::builder_with_default
4549    }
4550}
4551
4552#[cfg(feature = "v1_48")]
4553#[cfg_attr(docsrs, doc(cfg(feature = "v1_48")))]
4554impl glib::value::ValueType for SettingConnectionDownOnPoweroff {
4555    type Type = Self;
4556}
4557
4558#[cfg(feature = "v1_48")]
4559#[cfg_attr(docsrs, doc(cfg(feature = "v1_48")))]
4560unsafe impl<'a> glib::value::FromValue<'a> for SettingConnectionDownOnPoweroff {
4561    type Checker = glib::value::GenericValueTypeChecker<Self>;
4562
4563    #[inline]
4564    unsafe fn from_value(value: &'a glib::Value) -> Self {
4565        skip_assert_initialized!();
4566        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
4567    }
4568}
4569
4570#[cfg(feature = "v1_48")]
4571#[cfg_attr(docsrs, doc(cfg(feature = "v1_48")))]
4572impl ToValue for SettingConnectionDownOnPoweroff {
4573    #[inline]
4574    fn to_value(&self) -> glib::Value {
4575        let mut value = glib::Value::for_value_type::<Self>();
4576        unsafe {
4577            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
4578        }
4579        value
4580    }
4581
4582    #[inline]
4583    fn value_type(&self) -> glib::Type {
4584        Self::static_type()
4585    }
4586}
4587
4588#[cfg(feature = "v1_48")]
4589#[cfg_attr(docsrs, doc(cfg(feature = "v1_48")))]
4590impl From<SettingConnectionDownOnPoweroff> for glib::Value {
4591    #[inline]
4592    fn from(v: SettingConnectionDownOnPoweroff) -> Self {
4593        skip_assert_initialized!();
4594        ToValue::to_value(&v)
4595    }
4596}
4597
4598/// #NMSettingConnectionLldp values indicate whether LLDP should be enabled.
4599#[cfg(feature = "v1_2")]
4600#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
4601#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
4602#[non_exhaustive]
4603#[doc(alias = "NMSettingConnectionLldp")]
4604pub enum SettingConnectionLldp {
4605    /// default value
4606    #[doc(alias = "NM_SETTING_CONNECTION_LLDP_DEFAULT")]
4607    Default,
4608    /// disable LLDP
4609    #[doc(alias = "NM_SETTING_CONNECTION_LLDP_DISABLE")]
4610    Disable,
4611    /// enable reception of LLDP frames
4612    #[doc(alias = "NM_SETTING_CONNECTION_LLDP_ENABLE_RX")]
4613    EnableRx,
4614    #[doc(hidden)]
4615    __Unknown(i32),
4616}
4617
4618#[cfg(feature = "v1_2")]
4619#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
4620#[doc(hidden)]
4621impl IntoGlib for SettingConnectionLldp {
4622    type GlibType = ffi::NMSettingConnectionLldp;
4623
4624    #[inline]
4625    fn into_glib(self) -> ffi::NMSettingConnectionLldp {
4626        match self {
4627            Self::Default => ffi::NM_SETTING_CONNECTION_LLDP_DEFAULT,
4628            Self::Disable => ffi::NM_SETTING_CONNECTION_LLDP_DISABLE,
4629            Self::EnableRx => ffi::NM_SETTING_CONNECTION_LLDP_ENABLE_RX,
4630            Self::__Unknown(value) => value,
4631        }
4632    }
4633}
4634
4635#[cfg(feature = "v1_2")]
4636#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
4637#[doc(hidden)]
4638impl FromGlib<ffi::NMSettingConnectionLldp> for SettingConnectionLldp {
4639    #[inline]
4640    unsafe fn from_glib(value: ffi::NMSettingConnectionLldp) -> Self {
4641        skip_assert_initialized!();
4642
4643        match value {
4644            ffi::NM_SETTING_CONNECTION_LLDP_DEFAULT => Self::Default,
4645            ffi::NM_SETTING_CONNECTION_LLDP_DISABLE => Self::Disable,
4646            ffi::NM_SETTING_CONNECTION_LLDP_ENABLE_RX => Self::EnableRx,
4647            value => Self::__Unknown(value),
4648        }
4649    }
4650}
4651
4652#[cfg(feature = "v1_2")]
4653#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
4654impl StaticType for SettingConnectionLldp {
4655    #[inline]
4656    #[doc(alias = "nm_setting_connection_lldp_get_type")]
4657    fn static_type() -> glib::Type {
4658        unsafe { from_glib(ffi::nm_setting_connection_lldp_get_type()) }
4659    }
4660}
4661
4662#[cfg(feature = "v1_2")]
4663#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
4664impl glib::HasParamSpec for SettingConnectionLldp {
4665    type ParamSpec = glib::ParamSpecEnum;
4666    type SetValue = Self;
4667    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
4668
4669    fn param_spec_builder() -> Self::BuilderFn {
4670        Self::ParamSpec::builder_with_default
4671    }
4672}
4673
4674#[cfg(feature = "v1_2")]
4675#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
4676impl glib::value::ValueType for SettingConnectionLldp {
4677    type Type = Self;
4678}
4679
4680#[cfg(feature = "v1_2")]
4681#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
4682unsafe impl<'a> glib::value::FromValue<'a> for SettingConnectionLldp {
4683    type Checker = glib::value::GenericValueTypeChecker<Self>;
4684
4685    #[inline]
4686    unsafe fn from_value(value: &'a glib::Value) -> Self {
4687        skip_assert_initialized!();
4688        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
4689    }
4690}
4691
4692#[cfg(feature = "v1_2")]
4693#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
4694impl ToValue for SettingConnectionLldp {
4695    #[inline]
4696    fn to_value(&self) -> glib::Value {
4697        let mut value = glib::Value::for_value_type::<Self>();
4698        unsafe {
4699            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
4700        }
4701        value
4702    }
4703
4704    #[inline]
4705    fn value_type(&self) -> glib::Type {
4706        Self::static_type()
4707    }
4708}
4709
4710#[cfg(feature = "v1_2")]
4711#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
4712impl From<SettingConnectionLldp> for glib::Value {
4713    #[inline]
4714    fn from(v: SettingConnectionLldp) -> Self {
4715        skip_assert_initialized!();
4716        ToValue::to_value(&v)
4717    }
4718}
4719
4720/// #NMSettingConnectionLlmnr values indicate whether LLMNR should be enabled.
4721#[cfg(feature = "v1_14")]
4722#[cfg_attr(docsrs, doc(cfg(feature = "v1_14")))]
4723#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
4724#[non_exhaustive]
4725#[doc(alias = "NMSettingConnectionLlmnr")]
4726pub enum SettingConnectionLlmnr {
4727    /// default value
4728    #[doc(alias = "NM_SETTING_CONNECTION_LLMNR_DEFAULT")]
4729    Default,
4730    /// disable LLMNR
4731    #[doc(alias = "NM_SETTING_CONNECTION_LLMNR_NO")]
4732    No,
4733    /// support only resolving, do not register hostname
4734    #[doc(alias = "NM_SETTING_CONNECTION_LLMNR_RESOLVE")]
4735    Resolve,
4736    /// enable LLMNR
4737    #[doc(alias = "NM_SETTING_CONNECTION_LLMNR_YES")]
4738    Yes,
4739    #[doc(hidden)]
4740    __Unknown(i32),
4741}
4742
4743#[cfg(feature = "v1_14")]
4744#[cfg_attr(docsrs, doc(cfg(feature = "v1_14")))]
4745#[doc(hidden)]
4746impl IntoGlib for SettingConnectionLlmnr {
4747    type GlibType = ffi::NMSettingConnectionLlmnr;
4748
4749    #[inline]
4750    fn into_glib(self) -> ffi::NMSettingConnectionLlmnr {
4751        match self {
4752            Self::Default => ffi::NM_SETTING_CONNECTION_LLMNR_DEFAULT,
4753            Self::No => ffi::NM_SETTING_CONNECTION_LLMNR_NO,
4754            Self::Resolve => ffi::NM_SETTING_CONNECTION_LLMNR_RESOLVE,
4755            Self::Yes => ffi::NM_SETTING_CONNECTION_LLMNR_YES,
4756            Self::__Unknown(value) => value,
4757        }
4758    }
4759}
4760
4761#[cfg(feature = "v1_14")]
4762#[cfg_attr(docsrs, doc(cfg(feature = "v1_14")))]
4763#[doc(hidden)]
4764impl FromGlib<ffi::NMSettingConnectionLlmnr> for SettingConnectionLlmnr {
4765    #[inline]
4766    unsafe fn from_glib(value: ffi::NMSettingConnectionLlmnr) -> Self {
4767        skip_assert_initialized!();
4768
4769        match value {
4770            ffi::NM_SETTING_CONNECTION_LLMNR_DEFAULT => Self::Default,
4771            ffi::NM_SETTING_CONNECTION_LLMNR_NO => Self::No,
4772            ffi::NM_SETTING_CONNECTION_LLMNR_RESOLVE => Self::Resolve,
4773            ffi::NM_SETTING_CONNECTION_LLMNR_YES => Self::Yes,
4774            value => Self::__Unknown(value),
4775        }
4776    }
4777}
4778
4779#[cfg(feature = "v1_14")]
4780#[cfg_attr(docsrs, doc(cfg(feature = "v1_14")))]
4781impl StaticType for SettingConnectionLlmnr {
4782    #[inline]
4783    #[doc(alias = "nm_setting_connection_llmnr_get_type")]
4784    fn static_type() -> glib::Type {
4785        unsafe { from_glib(ffi::nm_setting_connection_llmnr_get_type()) }
4786    }
4787}
4788
4789#[cfg(feature = "v1_14")]
4790#[cfg_attr(docsrs, doc(cfg(feature = "v1_14")))]
4791impl glib::HasParamSpec for SettingConnectionLlmnr {
4792    type ParamSpec = glib::ParamSpecEnum;
4793    type SetValue = Self;
4794    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
4795
4796    fn param_spec_builder() -> Self::BuilderFn {
4797        Self::ParamSpec::builder_with_default
4798    }
4799}
4800
4801#[cfg(feature = "v1_14")]
4802#[cfg_attr(docsrs, doc(cfg(feature = "v1_14")))]
4803impl glib::value::ValueType for SettingConnectionLlmnr {
4804    type Type = Self;
4805}
4806
4807#[cfg(feature = "v1_14")]
4808#[cfg_attr(docsrs, doc(cfg(feature = "v1_14")))]
4809unsafe impl<'a> glib::value::FromValue<'a> for SettingConnectionLlmnr {
4810    type Checker = glib::value::GenericValueTypeChecker<Self>;
4811
4812    #[inline]
4813    unsafe fn from_value(value: &'a glib::Value) -> Self {
4814        skip_assert_initialized!();
4815        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
4816    }
4817}
4818
4819#[cfg(feature = "v1_14")]
4820#[cfg_attr(docsrs, doc(cfg(feature = "v1_14")))]
4821impl ToValue for SettingConnectionLlmnr {
4822    #[inline]
4823    fn to_value(&self) -> glib::Value {
4824        let mut value = glib::Value::for_value_type::<Self>();
4825        unsafe {
4826            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
4827        }
4828        value
4829    }
4830
4831    #[inline]
4832    fn value_type(&self) -> glib::Type {
4833        Self::static_type()
4834    }
4835}
4836
4837#[cfg(feature = "v1_14")]
4838#[cfg_attr(docsrs, doc(cfg(feature = "v1_14")))]
4839impl From<SettingConnectionLlmnr> for glib::Value {
4840    #[inline]
4841    fn from(v: SettingConnectionLlmnr) -> Self {
4842        skip_assert_initialized!();
4843        ToValue::to_value(&v)
4844    }
4845}
4846
4847/// #NMSettingConnectionMdns values indicate whether mDNS should be enabled.
4848#[cfg(feature = "v1_12")]
4849#[cfg_attr(docsrs, doc(cfg(feature = "v1_12")))]
4850#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
4851#[non_exhaustive]
4852#[doc(alias = "NMSettingConnectionMdns")]
4853pub enum SettingConnectionMdns {
4854    /// default value
4855    #[doc(alias = "NM_SETTING_CONNECTION_MDNS_DEFAULT")]
4856    Default,
4857    /// disable mDNS
4858    #[doc(alias = "NM_SETTING_CONNECTION_MDNS_NO")]
4859    No,
4860    /// support only resolving, do not register hostname
4861    #[doc(alias = "NM_SETTING_CONNECTION_MDNS_RESOLVE")]
4862    Resolve,
4863    /// enable mDNS
4864    #[doc(alias = "NM_SETTING_CONNECTION_MDNS_YES")]
4865    Yes,
4866    #[doc(hidden)]
4867    __Unknown(i32),
4868}
4869
4870#[cfg(feature = "v1_12")]
4871#[cfg_attr(docsrs, doc(cfg(feature = "v1_12")))]
4872#[doc(hidden)]
4873impl IntoGlib for SettingConnectionMdns {
4874    type GlibType = ffi::NMSettingConnectionMdns;
4875
4876    #[inline]
4877    fn into_glib(self) -> ffi::NMSettingConnectionMdns {
4878        match self {
4879            Self::Default => ffi::NM_SETTING_CONNECTION_MDNS_DEFAULT,
4880            Self::No => ffi::NM_SETTING_CONNECTION_MDNS_NO,
4881            Self::Resolve => ffi::NM_SETTING_CONNECTION_MDNS_RESOLVE,
4882            Self::Yes => ffi::NM_SETTING_CONNECTION_MDNS_YES,
4883            Self::__Unknown(value) => value,
4884        }
4885    }
4886}
4887
4888#[cfg(feature = "v1_12")]
4889#[cfg_attr(docsrs, doc(cfg(feature = "v1_12")))]
4890#[doc(hidden)]
4891impl FromGlib<ffi::NMSettingConnectionMdns> for SettingConnectionMdns {
4892    #[inline]
4893    unsafe fn from_glib(value: ffi::NMSettingConnectionMdns) -> Self {
4894        skip_assert_initialized!();
4895
4896        match value {
4897            ffi::NM_SETTING_CONNECTION_MDNS_DEFAULT => Self::Default,
4898            ffi::NM_SETTING_CONNECTION_MDNS_NO => Self::No,
4899            ffi::NM_SETTING_CONNECTION_MDNS_RESOLVE => Self::Resolve,
4900            ffi::NM_SETTING_CONNECTION_MDNS_YES => Self::Yes,
4901            value => Self::__Unknown(value),
4902        }
4903    }
4904}
4905
4906#[cfg(feature = "v1_12")]
4907#[cfg_attr(docsrs, doc(cfg(feature = "v1_12")))]
4908impl StaticType for SettingConnectionMdns {
4909    #[inline]
4910    #[doc(alias = "nm_setting_connection_mdns_get_type")]
4911    fn static_type() -> glib::Type {
4912        unsafe { from_glib(ffi::nm_setting_connection_mdns_get_type()) }
4913    }
4914}
4915
4916#[cfg(feature = "v1_12")]
4917#[cfg_attr(docsrs, doc(cfg(feature = "v1_12")))]
4918impl glib::HasParamSpec for SettingConnectionMdns {
4919    type ParamSpec = glib::ParamSpecEnum;
4920    type SetValue = Self;
4921    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
4922
4923    fn param_spec_builder() -> Self::BuilderFn {
4924        Self::ParamSpec::builder_with_default
4925    }
4926}
4927
4928#[cfg(feature = "v1_12")]
4929#[cfg_attr(docsrs, doc(cfg(feature = "v1_12")))]
4930impl glib::value::ValueType for SettingConnectionMdns {
4931    type Type = Self;
4932}
4933
4934#[cfg(feature = "v1_12")]
4935#[cfg_attr(docsrs, doc(cfg(feature = "v1_12")))]
4936unsafe impl<'a> glib::value::FromValue<'a> for SettingConnectionMdns {
4937    type Checker = glib::value::GenericValueTypeChecker<Self>;
4938
4939    #[inline]
4940    unsafe fn from_value(value: &'a glib::Value) -> Self {
4941        skip_assert_initialized!();
4942        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
4943    }
4944}
4945
4946#[cfg(feature = "v1_12")]
4947#[cfg_attr(docsrs, doc(cfg(feature = "v1_12")))]
4948impl ToValue for SettingConnectionMdns {
4949    #[inline]
4950    fn to_value(&self) -> glib::Value {
4951        let mut value = glib::Value::for_value_type::<Self>();
4952        unsafe {
4953            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
4954        }
4955        value
4956    }
4957
4958    #[inline]
4959    fn value_type(&self) -> glib::Type {
4960        Self::static_type()
4961    }
4962}
4963
4964#[cfg(feature = "v1_12")]
4965#[cfg_attr(docsrs, doc(cfg(feature = "v1_12")))]
4966impl From<SettingConnectionMdns> for glib::Value {
4967    #[inline]
4968    fn from(v: SettingConnectionMdns) -> Self {
4969        skip_assert_initialized!();
4970        ToValue::to_value(&v)
4971    }
4972}
4973
4974/// These values indicate the result of a setting difference operation.
4975#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
4976#[non_exhaustive]
4977#[doc(alias = "NMSettingDiffResult")]
4978pub enum SettingDiffResult {
4979    /// unknown result
4980    #[doc(alias = "NM_SETTING_DIFF_RESULT_UNKNOWN")]
4981    Unknown,
4982    /// the property is present in setting A
4983    #[doc(alias = "NM_SETTING_DIFF_RESULT_IN_A")]
4984    InA,
4985    /// the property is present in setting B
4986    #[doc(alias = "NM_SETTING_DIFF_RESULT_IN_B")]
4987    InB,
4988    /// the property is present in
4989    /// setting A but is set to the default value. This flag is only set,
4990    /// if you specify @NM_SETTING_COMPARE_FLAG_DIFF_RESULT_WITH_DEFAULT.
4991    #[doc(alias = "NM_SETTING_DIFF_RESULT_IN_A_DEFAULT")]
4992    InADefault,
4993    /// analog to @NM_SETTING_DIFF_RESULT_IN_A_DEFAULT.
4994    #[doc(alias = "NM_SETTING_DIFF_RESULT_IN_B_DEFAULT")]
4995    InBDefault,
4996    #[doc(hidden)]
4997    __Unknown(i32),
4998}
4999
5000#[doc(hidden)]
5001impl IntoGlib for SettingDiffResult {
5002    type GlibType = ffi::NMSettingDiffResult;
5003
5004    #[inline]
5005    fn into_glib(self) -> ffi::NMSettingDiffResult {
5006        match self {
5007            Self::Unknown => ffi::NM_SETTING_DIFF_RESULT_UNKNOWN,
5008            Self::InA => ffi::NM_SETTING_DIFF_RESULT_IN_A,
5009            Self::InB => ffi::NM_SETTING_DIFF_RESULT_IN_B,
5010            Self::InADefault => ffi::NM_SETTING_DIFF_RESULT_IN_A_DEFAULT,
5011            Self::InBDefault => ffi::NM_SETTING_DIFF_RESULT_IN_B_DEFAULT,
5012            Self::__Unknown(value) => value,
5013        }
5014    }
5015}
5016
5017#[doc(hidden)]
5018impl FromGlib<ffi::NMSettingDiffResult> for SettingDiffResult {
5019    #[inline]
5020    unsafe fn from_glib(value: ffi::NMSettingDiffResult) -> Self {
5021        skip_assert_initialized!();
5022
5023        match value {
5024            ffi::NM_SETTING_DIFF_RESULT_UNKNOWN => Self::Unknown,
5025            ffi::NM_SETTING_DIFF_RESULT_IN_A => Self::InA,
5026            ffi::NM_SETTING_DIFF_RESULT_IN_B => Self::InB,
5027            ffi::NM_SETTING_DIFF_RESULT_IN_A_DEFAULT => Self::InADefault,
5028            ffi::NM_SETTING_DIFF_RESULT_IN_B_DEFAULT => Self::InBDefault,
5029            value => Self::__Unknown(value),
5030        }
5031    }
5032}
5033
5034impl StaticType for SettingDiffResult {
5035    #[inline]
5036    #[doc(alias = "nm_setting_diff_result_get_type")]
5037    fn static_type() -> glib::Type {
5038        unsafe { from_glib(ffi::nm_setting_diff_result_get_type()) }
5039    }
5040}
5041
5042impl glib::HasParamSpec for SettingDiffResult {
5043    type ParamSpec = glib::ParamSpecEnum;
5044    type SetValue = Self;
5045    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
5046
5047    fn param_spec_builder() -> Self::BuilderFn {
5048        Self::ParamSpec::builder_with_default
5049    }
5050}
5051
5052impl glib::value::ValueType for SettingDiffResult {
5053    type Type = Self;
5054}
5055
5056unsafe impl<'a> glib::value::FromValue<'a> for SettingDiffResult {
5057    type Checker = glib::value::GenericValueTypeChecker<Self>;
5058
5059    #[inline]
5060    unsafe fn from_value(value: &'a glib::Value) -> Self {
5061        skip_assert_initialized!();
5062        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
5063    }
5064}
5065
5066impl ToValue for SettingDiffResult {
5067    #[inline]
5068    fn to_value(&self) -> glib::Value {
5069        let mut value = glib::Value::for_value_type::<Self>();
5070        unsafe {
5071            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
5072        }
5073        value
5074    }
5075
5076    #[inline]
5077    fn value_type(&self) -> glib::Type {
5078        Self::static_type()
5079    }
5080}
5081
5082impl From<SettingDiffResult> for glib::Value {
5083    #[inline]
5084    fn from(v: SettingDiffResult) -> Self {
5085        skip_assert_initialized!();
5086        ToValue::to_value(&v)
5087    }
5088}
5089
5090/// #NMSettingIP4DhcpIpv6OnlyPreferred values specify if the "IPv6-Only Preferred"
5091/// option (RFC 8925) for DHCPv4 is enabled.
5092#[cfg(feature = "v1_52")]
5093#[cfg_attr(docsrs, doc(cfg(feature = "v1_52")))]
5094#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
5095#[non_exhaustive]
5096#[doc(alias = "NMSettingIP4DhcpIpv6OnlyPreferred")]
5097pub enum SettingIP4DhcpIpv6OnlyPreferred {
5098    /// use the global default value
5099    #[doc(alias = "NM_SETTING_IP4_DHCP_IPV6_ONLY_PREFERRED_DEFAULT")]
5100    Default,
5101    /// the option is disabled
5102    #[doc(alias = "NM_SETTING_IP4_DHCP_IPV6_ONLY_PREFERRED_NO")]
5103    No,
5104    /// the option is enabled
5105    #[doc(alias = "NM_SETTING_IP4_DHCP_IPV6_ONLY_PREFERRED_YES")]
5106    Yes,
5107    #[doc(hidden)]
5108    __Unknown(i32),
5109}
5110
5111#[cfg(feature = "v1_52")]
5112#[cfg_attr(docsrs, doc(cfg(feature = "v1_52")))]
5113#[doc(hidden)]
5114impl IntoGlib for SettingIP4DhcpIpv6OnlyPreferred {
5115    type GlibType = ffi::NMSettingIP4DhcpIpv6OnlyPreferred;
5116
5117    #[inline]
5118    fn into_glib(self) -> ffi::NMSettingIP4DhcpIpv6OnlyPreferred {
5119        match self {
5120            Self::Default => ffi::NM_SETTING_IP4_DHCP_IPV6_ONLY_PREFERRED_DEFAULT,
5121            Self::No => ffi::NM_SETTING_IP4_DHCP_IPV6_ONLY_PREFERRED_NO,
5122            Self::Yes => ffi::NM_SETTING_IP4_DHCP_IPV6_ONLY_PREFERRED_YES,
5123            Self::__Unknown(value) => value,
5124        }
5125    }
5126}
5127
5128#[cfg(feature = "v1_52")]
5129#[cfg_attr(docsrs, doc(cfg(feature = "v1_52")))]
5130#[doc(hidden)]
5131impl FromGlib<ffi::NMSettingIP4DhcpIpv6OnlyPreferred> for SettingIP4DhcpIpv6OnlyPreferred {
5132    #[inline]
5133    unsafe fn from_glib(value: ffi::NMSettingIP4DhcpIpv6OnlyPreferred) -> Self {
5134        skip_assert_initialized!();
5135
5136        match value {
5137            ffi::NM_SETTING_IP4_DHCP_IPV6_ONLY_PREFERRED_DEFAULT => Self::Default,
5138            ffi::NM_SETTING_IP4_DHCP_IPV6_ONLY_PREFERRED_NO => Self::No,
5139            ffi::NM_SETTING_IP4_DHCP_IPV6_ONLY_PREFERRED_YES => Self::Yes,
5140            value => Self::__Unknown(value),
5141        }
5142    }
5143}
5144
5145#[cfg(feature = "v1_52")]
5146#[cfg_attr(docsrs, doc(cfg(feature = "v1_52")))]
5147impl StaticType for SettingIP4DhcpIpv6OnlyPreferred {
5148    #[inline]
5149    #[doc(alias = "nm_setting_ip4_dhcp_ipv6_only_preferred_get_type")]
5150    fn static_type() -> glib::Type {
5151        unsafe { from_glib(ffi::nm_setting_ip4_dhcp_ipv6_only_preferred_get_type()) }
5152    }
5153}
5154
5155#[cfg(feature = "v1_52")]
5156#[cfg_attr(docsrs, doc(cfg(feature = "v1_52")))]
5157impl glib::HasParamSpec for SettingIP4DhcpIpv6OnlyPreferred {
5158    type ParamSpec = glib::ParamSpecEnum;
5159    type SetValue = Self;
5160    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
5161
5162    fn param_spec_builder() -> Self::BuilderFn {
5163        Self::ParamSpec::builder_with_default
5164    }
5165}
5166
5167#[cfg(feature = "v1_52")]
5168#[cfg_attr(docsrs, doc(cfg(feature = "v1_52")))]
5169impl glib::value::ValueType for SettingIP4DhcpIpv6OnlyPreferred {
5170    type Type = Self;
5171}
5172
5173#[cfg(feature = "v1_52")]
5174#[cfg_attr(docsrs, doc(cfg(feature = "v1_52")))]
5175unsafe impl<'a> glib::value::FromValue<'a> for SettingIP4DhcpIpv6OnlyPreferred {
5176    type Checker = glib::value::GenericValueTypeChecker<Self>;
5177
5178    #[inline]
5179    unsafe fn from_value(value: &'a glib::Value) -> Self {
5180        skip_assert_initialized!();
5181        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
5182    }
5183}
5184
5185#[cfg(feature = "v1_52")]
5186#[cfg_attr(docsrs, doc(cfg(feature = "v1_52")))]
5187impl ToValue for SettingIP4DhcpIpv6OnlyPreferred {
5188    #[inline]
5189    fn to_value(&self) -> glib::Value {
5190        let mut value = glib::Value::for_value_type::<Self>();
5191        unsafe {
5192            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
5193        }
5194        value
5195    }
5196
5197    #[inline]
5198    fn value_type(&self) -> glib::Type {
5199        Self::static_type()
5200    }
5201}
5202
5203#[cfg(feature = "v1_52")]
5204#[cfg_attr(docsrs, doc(cfg(feature = "v1_52")))]
5205impl From<SettingIP4DhcpIpv6OnlyPreferred> for glib::Value {
5206    #[inline]
5207    fn from(v: SettingIP4DhcpIpv6OnlyPreferred) -> Self {
5208        skip_assert_initialized!();
5209        ToValue::to_value(&v)
5210    }
5211}
5212
5213/// #NMSettingIP4LinkLocal values indicate whether IPv4 link-local address protocol should be enabled.
5214#[cfg(feature = "v1_40")]
5215#[cfg_attr(docsrs, doc(cfg(feature = "v1_40")))]
5216#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
5217#[non_exhaustive]
5218#[doc(alias = "NMSettingIP4LinkLocal")]
5219pub enum SettingIP4LinkLocal {
5220    /// Allow fallback to a globally configured default. If unspecified,
5221    ///   fallback to "auto". Note that if "ipv4.method" is "disabled", this always implies link-local
5222    ///   addresses disabled too.
5223    #[doc(alias = "NM_SETTING_IP4_LL_DEFAULT")]
5224    Default,
5225    /// Special value which enables LL if "ipv4.method" is set to
5226    ///   "link-local".
5227    #[doc(alias = "NM_SETTING_IP4_LL_AUTO")]
5228    Auto,
5229    /// Disable IPv4 link-local protocol.
5230    #[doc(alias = "NM_SETTING_IP4_LL_DISABLED")]
5231    Disabled,
5232    /// Enable the IPv4 link-local protocol regardless what other protocols
5233    ///   such as DHCP or manually assigned IP addresses might be active.
5234    #[doc(alias = "NM_SETTING_IP4_LL_ENABLED")]
5235    Enabled,
5236    /// Since 1.52. This sets an IPv4 link-local address if no other IPv4
5237    ///   address is set, dynamically removing/re-adding it depending on DHCP leases.
5238    #[doc(alias = "NM_SETTING_IP4_LL_FALLBACK")]
5239    Fallback,
5240    #[doc(hidden)]
5241    __Unknown(i32),
5242}
5243
5244#[cfg(feature = "v1_40")]
5245#[cfg_attr(docsrs, doc(cfg(feature = "v1_40")))]
5246#[doc(hidden)]
5247impl IntoGlib for SettingIP4LinkLocal {
5248    type GlibType = ffi::NMSettingIP4LinkLocal;
5249
5250    #[inline]
5251    fn into_glib(self) -> ffi::NMSettingIP4LinkLocal {
5252        match self {
5253            Self::Default => ffi::NM_SETTING_IP4_LL_DEFAULT,
5254            Self::Auto => ffi::NM_SETTING_IP4_LL_AUTO,
5255            Self::Disabled => ffi::NM_SETTING_IP4_LL_DISABLED,
5256            Self::Enabled => ffi::NM_SETTING_IP4_LL_ENABLED,
5257            Self::Fallback => ffi::NM_SETTING_IP4_LL_FALLBACK,
5258            Self::__Unknown(value) => value,
5259        }
5260    }
5261}
5262
5263#[cfg(feature = "v1_40")]
5264#[cfg_attr(docsrs, doc(cfg(feature = "v1_40")))]
5265#[doc(hidden)]
5266impl FromGlib<ffi::NMSettingIP4LinkLocal> for SettingIP4LinkLocal {
5267    #[inline]
5268    unsafe fn from_glib(value: ffi::NMSettingIP4LinkLocal) -> Self {
5269        skip_assert_initialized!();
5270
5271        match value {
5272            ffi::NM_SETTING_IP4_LL_DEFAULT => Self::Default,
5273            ffi::NM_SETTING_IP4_LL_AUTO => Self::Auto,
5274            ffi::NM_SETTING_IP4_LL_DISABLED => Self::Disabled,
5275            ffi::NM_SETTING_IP4_LL_ENABLED => Self::Enabled,
5276            ffi::NM_SETTING_IP4_LL_FALLBACK => Self::Fallback,
5277            value => Self::__Unknown(value),
5278        }
5279    }
5280}
5281
5282#[cfg(feature = "v1_40")]
5283#[cfg_attr(docsrs, doc(cfg(feature = "v1_40")))]
5284impl StaticType for SettingIP4LinkLocal {
5285    #[inline]
5286    #[doc(alias = "nm_setting_ip4_link_local_get_type")]
5287    fn static_type() -> glib::Type {
5288        unsafe { from_glib(ffi::nm_setting_ip4_link_local_get_type()) }
5289    }
5290}
5291
5292#[cfg(feature = "v1_40")]
5293#[cfg_attr(docsrs, doc(cfg(feature = "v1_40")))]
5294impl glib::HasParamSpec for SettingIP4LinkLocal {
5295    type ParamSpec = glib::ParamSpecEnum;
5296    type SetValue = Self;
5297    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
5298
5299    fn param_spec_builder() -> Self::BuilderFn {
5300        Self::ParamSpec::builder_with_default
5301    }
5302}
5303
5304#[cfg(feature = "v1_40")]
5305#[cfg_attr(docsrs, doc(cfg(feature = "v1_40")))]
5306impl glib::value::ValueType for SettingIP4LinkLocal {
5307    type Type = Self;
5308}
5309
5310#[cfg(feature = "v1_40")]
5311#[cfg_attr(docsrs, doc(cfg(feature = "v1_40")))]
5312unsafe impl<'a> glib::value::FromValue<'a> for SettingIP4LinkLocal {
5313    type Checker = glib::value::GenericValueTypeChecker<Self>;
5314
5315    #[inline]
5316    unsafe fn from_value(value: &'a glib::Value) -> Self {
5317        skip_assert_initialized!();
5318        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
5319    }
5320}
5321
5322#[cfg(feature = "v1_40")]
5323#[cfg_attr(docsrs, doc(cfg(feature = "v1_40")))]
5324impl ToValue for SettingIP4LinkLocal {
5325    #[inline]
5326    fn to_value(&self) -> glib::Value {
5327        let mut value = glib::Value::for_value_type::<Self>();
5328        unsafe {
5329            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
5330        }
5331        value
5332    }
5333
5334    #[inline]
5335    fn value_type(&self) -> glib::Type {
5336        Self::static_type()
5337    }
5338}
5339
5340#[cfg(feature = "v1_40")]
5341#[cfg_attr(docsrs, doc(cfg(feature = "v1_40")))]
5342impl From<SettingIP4LinkLocal> for glib::Value {
5343    #[inline]
5344    fn from(v: SettingIP4LinkLocal) -> Self {
5345        skip_assert_initialized!();
5346        ToValue::to_value(&v)
5347    }
5348}
5349
5350/// #NMSettingIP6ConfigAddrGenMode controls how the Interface Identifier for
5351/// RFC4862 Stateless Address Autoconfiguration is created.
5352#[cfg(feature = "v1_2")]
5353#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
5354#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
5355#[non_exhaustive]
5356#[doc(alias = "NMSettingIP6ConfigAddrGenMode")]
5357pub enum SettingIP6ConfigAddrGenMode {
5358    /// The Interface Identifier is derived
5359    /// from the interface hardware address.
5360    #[doc(alias = "NM_SETTING_IP6_CONFIG_ADDR_GEN_MODE_EUI64")]
5361    Eui64,
5362    /// The Interface Identifier
5363    /// is created by using a cryptographically secure hash of a secret host-specific
5364    /// key along with the connection identification and the network address as
5365    /// specified by RFC7217.
5366    #[doc(alias = "NM_SETTING_IP6_CONFIG_ADDR_GEN_MODE_STABLE_PRIVACY")]
5367    StablePrivacy,
5368    /// Fallback to the global
5369    ///   default, and if unspecified use "eui64". Since: 1.40.
5370    #[doc(alias = "NM_SETTING_IP6_CONFIG_ADDR_GEN_MODE_DEFAULT_OR_EUI64")]
5371    DefaultOrEui64,
5372    /// Fallback to the global
5373    ///   default, and if unspecified use "stable-privacy". Since: 1.40.
5374    #[doc(alias = "NM_SETTING_IP6_CONFIG_ADDR_GEN_MODE_DEFAULT")]
5375    Default,
5376    #[doc(hidden)]
5377    __Unknown(i32),
5378}
5379
5380#[cfg(feature = "v1_2")]
5381#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
5382#[doc(hidden)]
5383impl IntoGlib for SettingIP6ConfigAddrGenMode {
5384    type GlibType = ffi::NMSettingIP6ConfigAddrGenMode;
5385
5386    #[inline]
5387    fn into_glib(self) -> ffi::NMSettingIP6ConfigAddrGenMode {
5388        match self {
5389            Self::Eui64 => ffi::NM_SETTING_IP6_CONFIG_ADDR_GEN_MODE_EUI64,
5390            Self::StablePrivacy => ffi::NM_SETTING_IP6_CONFIG_ADDR_GEN_MODE_STABLE_PRIVACY,
5391            Self::DefaultOrEui64 => ffi::NM_SETTING_IP6_CONFIG_ADDR_GEN_MODE_DEFAULT_OR_EUI64,
5392            Self::Default => ffi::NM_SETTING_IP6_CONFIG_ADDR_GEN_MODE_DEFAULT,
5393            Self::__Unknown(value) => value,
5394        }
5395    }
5396}
5397
5398#[cfg(feature = "v1_2")]
5399#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
5400#[doc(hidden)]
5401impl FromGlib<ffi::NMSettingIP6ConfigAddrGenMode> for SettingIP6ConfigAddrGenMode {
5402    #[inline]
5403    unsafe fn from_glib(value: ffi::NMSettingIP6ConfigAddrGenMode) -> Self {
5404        skip_assert_initialized!();
5405
5406        match value {
5407            ffi::NM_SETTING_IP6_CONFIG_ADDR_GEN_MODE_EUI64 => Self::Eui64,
5408            ffi::NM_SETTING_IP6_CONFIG_ADDR_GEN_MODE_STABLE_PRIVACY => Self::StablePrivacy,
5409            ffi::NM_SETTING_IP6_CONFIG_ADDR_GEN_MODE_DEFAULT_OR_EUI64 => Self::DefaultOrEui64,
5410            ffi::NM_SETTING_IP6_CONFIG_ADDR_GEN_MODE_DEFAULT => Self::Default,
5411            value => Self::__Unknown(value),
5412        }
5413    }
5414}
5415
5416#[cfg(feature = "v1_2")]
5417#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
5418impl StaticType for SettingIP6ConfigAddrGenMode {
5419    #[inline]
5420    #[doc(alias = "nm_setting_ip6_config_addr_gen_mode_get_type")]
5421    fn static_type() -> glib::Type {
5422        unsafe { from_glib(ffi::nm_setting_ip6_config_addr_gen_mode_get_type()) }
5423    }
5424}
5425
5426#[cfg(feature = "v1_2")]
5427#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
5428impl glib::HasParamSpec for SettingIP6ConfigAddrGenMode {
5429    type ParamSpec = glib::ParamSpecEnum;
5430    type SetValue = Self;
5431    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
5432
5433    fn param_spec_builder() -> Self::BuilderFn {
5434        Self::ParamSpec::builder_with_default
5435    }
5436}
5437
5438#[cfg(feature = "v1_2")]
5439#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
5440impl glib::value::ValueType for SettingIP6ConfigAddrGenMode {
5441    type Type = Self;
5442}
5443
5444#[cfg(feature = "v1_2")]
5445#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
5446unsafe impl<'a> glib::value::FromValue<'a> for SettingIP6ConfigAddrGenMode {
5447    type Checker = glib::value::GenericValueTypeChecker<Self>;
5448
5449    #[inline]
5450    unsafe fn from_value(value: &'a glib::Value) -> Self {
5451        skip_assert_initialized!();
5452        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
5453    }
5454}
5455
5456#[cfg(feature = "v1_2")]
5457#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
5458impl ToValue for SettingIP6ConfigAddrGenMode {
5459    #[inline]
5460    fn to_value(&self) -> glib::Value {
5461        let mut value = glib::Value::for_value_type::<Self>();
5462        unsafe {
5463            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
5464        }
5465        value
5466    }
5467
5468    #[inline]
5469    fn value_type(&self) -> glib::Type {
5470        Self::static_type()
5471    }
5472}
5473
5474#[cfg(feature = "v1_2")]
5475#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
5476impl From<SettingIP6ConfigAddrGenMode> for glib::Value {
5477    #[inline]
5478    fn from(v: SettingIP6ConfigAddrGenMode) -> Self {
5479        skip_assert_initialized!();
5480        ToValue::to_value(&v)
5481    }
5482}
5483
5484/// #NMSettingIP6ConfigPrivacy values indicate if and how IPv6 Privacy
5485/// Extensions are used (RFC4941).
5486#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
5487#[non_exhaustive]
5488#[doc(alias = "NMSettingIP6ConfigPrivacy")]
5489pub enum SettingIP6ConfigPrivacy {
5490    /// unknown or no value specified
5491    #[doc(alias = "NM_SETTING_IP6_CONFIG_PRIVACY_UNKNOWN")]
5492    Unknown,
5493    /// IPv6 Privacy Extensions are disabled
5494    #[doc(alias = "NM_SETTING_IP6_CONFIG_PRIVACY_DISABLED")]
5495    Disabled,
5496    /// IPv6 Privacy Extensions
5497    /// are enabled, but public addresses are preferred over temporary addresses
5498    #[doc(alias = "NM_SETTING_IP6_CONFIG_PRIVACY_PREFER_PUBLIC_ADDR")]
5499    PreferPublicAddr,
5500    /// IPv6 Privacy Extensions
5501    /// are enabled and temporary addresses are preferred over public addresses
5502    #[doc(alias = "NM_SETTING_IP6_CONFIG_PRIVACY_PREFER_TEMP_ADDR")]
5503    PreferTempAddr,
5504    #[doc(hidden)]
5505    __Unknown(i32),
5506}
5507
5508#[doc(hidden)]
5509impl IntoGlib for SettingIP6ConfigPrivacy {
5510    type GlibType = ffi::NMSettingIP6ConfigPrivacy;
5511
5512    #[inline]
5513    fn into_glib(self) -> ffi::NMSettingIP6ConfigPrivacy {
5514        match self {
5515            Self::Unknown => ffi::NM_SETTING_IP6_CONFIG_PRIVACY_UNKNOWN,
5516            Self::Disabled => ffi::NM_SETTING_IP6_CONFIG_PRIVACY_DISABLED,
5517            Self::PreferPublicAddr => ffi::NM_SETTING_IP6_CONFIG_PRIVACY_PREFER_PUBLIC_ADDR,
5518            Self::PreferTempAddr => ffi::NM_SETTING_IP6_CONFIG_PRIVACY_PREFER_TEMP_ADDR,
5519            Self::__Unknown(value) => value,
5520        }
5521    }
5522}
5523
5524#[doc(hidden)]
5525impl FromGlib<ffi::NMSettingIP6ConfigPrivacy> for SettingIP6ConfigPrivacy {
5526    #[inline]
5527    unsafe fn from_glib(value: ffi::NMSettingIP6ConfigPrivacy) -> Self {
5528        skip_assert_initialized!();
5529
5530        match value {
5531            ffi::NM_SETTING_IP6_CONFIG_PRIVACY_UNKNOWN => Self::Unknown,
5532            ffi::NM_SETTING_IP6_CONFIG_PRIVACY_DISABLED => Self::Disabled,
5533            ffi::NM_SETTING_IP6_CONFIG_PRIVACY_PREFER_PUBLIC_ADDR => Self::PreferPublicAddr,
5534            ffi::NM_SETTING_IP6_CONFIG_PRIVACY_PREFER_TEMP_ADDR => Self::PreferTempAddr,
5535            value => Self::__Unknown(value),
5536        }
5537    }
5538}
5539
5540impl StaticType for SettingIP6ConfigPrivacy {
5541    #[inline]
5542    #[doc(alias = "nm_setting_ip6_config_privacy_get_type")]
5543    fn static_type() -> glib::Type {
5544        unsafe { from_glib(ffi::nm_setting_ip6_config_privacy_get_type()) }
5545    }
5546}
5547
5548impl glib::HasParamSpec for SettingIP6ConfigPrivacy {
5549    type ParamSpec = glib::ParamSpecEnum;
5550    type SetValue = Self;
5551    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
5552
5553    fn param_spec_builder() -> Self::BuilderFn {
5554        Self::ParamSpec::builder_with_default
5555    }
5556}
5557
5558impl glib::value::ValueType for SettingIP6ConfigPrivacy {
5559    type Type = Self;
5560}
5561
5562unsafe impl<'a> glib::value::FromValue<'a> for SettingIP6ConfigPrivacy {
5563    type Checker = glib::value::GenericValueTypeChecker<Self>;
5564
5565    #[inline]
5566    unsafe fn from_value(value: &'a glib::Value) -> Self {
5567        skip_assert_initialized!();
5568        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
5569    }
5570}
5571
5572impl ToValue for SettingIP6ConfigPrivacy {
5573    #[inline]
5574    fn to_value(&self) -> glib::Value {
5575        let mut value = glib::Value::for_value_type::<Self>();
5576        unsafe {
5577            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
5578        }
5579        value
5580    }
5581
5582    #[inline]
5583    fn value_type(&self) -> glib::Type {
5584        Self::static_type()
5585    }
5586}
5587
5588impl From<SettingIP6ConfigPrivacy> for glib::Value {
5589    #[inline]
5590    fn from(v: SettingIP6ConfigPrivacy) -> Self {
5591        skip_assert_initialized!();
5592        ToValue::to_value(&v)
5593    }
5594}
5595
5596/// #NMSettingIPConfigForwarding indicates whether to configure sysctl
5597/// interface-specific forwarding. When enabled, the interface will act
5598/// as a router to forward the packet from one interface to another.
5599#[cfg(feature = "v1_54")]
5600#[cfg_attr(docsrs, doc(cfg(feature = "v1_54")))]
5601#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
5602#[non_exhaustive]
5603#[doc(alias = "NMSettingIPConfigForwarding")]
5604pub enum SettingIPConfigForwarding {
5605    /// use the global default value
5606    #[doc(alias = "NM_SETTING_IP_CONFIG_FORWARDING_DEFAULT")]
5607    Default,
5608    /// disable forwarding
5609    #[doc(alias = "NM_SETTING_IP_CONFIG_FORWARDING_NO")]
5610    No,
5611    /// enable forwarding
5612    #[doc(alias = "NM_SETTING_IP_CONFIG_FORWARDING_YES")]
5613    Yes,
5614    /// enable forwarding if any shared
5615    ///  connection is active, use kernel default otherwise
5616    #[doc(alias = "NM_SETTING_IP_CONFIG_FORWARDING_AUTO")]
5617    Auto,
5618    #[doc(hidden)]
5619    __Unknown(i32),
5620}
5621
5622#[cfg(feature = "v1_54")]
5623#[cfg_attr(docsrs, doc(cfg(feature = "v1_54")))]
5624#[doc(hidden)]
5625impl IntoGlib for SettingIPConfigForwarding {
5626    type GlibType = ffi::NMSettingIPConfigForwarding;
5627
5628    #[inline]
5629    fn into_glib(self) -> ffi::NMSettingIPConfigForwarding {
5630        match self {
5631            Self::Default => ffi::NM_SETTING_IP_CONFIG_FORWARDING_DEFAULT,
5632            Self::No => ffi::NM_SETTING_IP_CONFIG_FORWARDING_NO,
5633            Self::Yes => ffi::NM_SETTING_IP_CONFIG_FORWARDING_YES,
5634            Self::Auto => ffi::NM_SETTING_IP_CONFIG_FORWARDING_AUTO,
5635            Self::__Unknown(value) => value,
5636        }
5637    }
5638}
5639
5640#[cfg(feature = "v1_54")]
5641#[cfg_attr(docsrs, doc(cfg(feature = "v1_54")))]
5642#[doc(hidden)]
5643impl FromGlib<ffi::NMSettingIPConfigForwarding> for SettingIPConfigForwarding {
5644    #[inline]
5645    unsafe fn from_glib(value: ffi::NMSettingIPConfigForwarding) -> Self {
5646        skip_assert_initialized!();
5647
5648        match value {
5649            ffi::NM_SETTING_IP_CONFIG_FORWARDING_DEFAULT => Self::Default,
5650            ffi::NM_SETTING_IP_CONFIG_FORWARDING_NO => Self::No,
5651            ffi::NM_SETTING_IP_CONFIG_FORWARDING_YES => Self::Yes,
5652            ffi::NM_SETTING_IP_CONFIG_FORWARDING_AUTO => Self::Auto,
5653            value => Self::__Unknown(value),
5654        }
5655    }
5656}
5657
5658#[cfg(feature = "v1_54")]
5659#[cfg_attr(docsrs, doc(cfg(feature = "v1_54")))]
5660impl StaticType for SettingIPConfigForwarding {
5661    #[inline]
5662    #[doc(alias = "nm_setting_ip_config_forwarding_get_type")]
5663    fn static_type() -> glib::Type {
5664        unsafe { from_glib(ffi::nm_setting_ip_config_forwarding_get_type()) }
5665    }
5666}
5667
5668#[cfg(feature = "v1_54")]
5669#[cfg_attr(docsrs, doc(cfg(feature = "v1_54")))]
5670impl glib::HasParamSpec for SettingIPConfigForwarding {
5671    type ParamSpec = glib::ParamSpecEnum;
5672    type SetValue = Self;
5673    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
5674
5675    fn param_spec_builder() -> Self::BuilderFn {
5676        Self::ParamSpec::builder_with_default
5677    }
5678}
5679
5680#[cfg(feature = "v1_54")]
5681#[cfg_attr(docsrs, doc(cfg(feature = "v1_54")))]
5682impl glib::value::ValueType for SettingIPConfigForwarding {
5683    type Type = Self;
5684}
5685
5686#[cfg(feature = "v1_54")]
5687#[cfg_attr(docsrs, doc(cfg(feature = "v1_54")))]
5688unsafe impl<'a> glib::value::FromValue<'a> for SettingIPConfigForwarding {
5689    type Checker = glib::value::GenericValueTypeChecker<Self>;
5690
5691    #[inline]
5692    unsafe fn from_value(value: &'a glib::Value) -> Self {
5693        skip_assert_initialized!();
5694        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
5695    }
5696}
5697
5698#[cfg(feature = "v1_54")]
5699#[cfg_attr(docsrs, doc(cfg(feature = "v1_54")))]
5700impl ToValue for SettingIPConfigForwarding {
5701    #[inline]
5702    fn to_value(&self) -> glib::Value {
5703        let mut value = glib::Value::for_value_type::<Self>();
5704        unsafe {
5705            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
5706        }
5707        value
5708    }
5709
5710    #[inline]
5711    fn value_type(&self) -> glib::Type {
5712        Self::static_type()
5713    }
5714}
5715
5716#[cfg(feature = "v1_54")]
5717#[cfg_attr(docsrs, doc(cfg(feature = "v1_54")))]
5718impl From<SettingIPConfigForwarding> for glib::Value {
5719    #[inline]
5720    fn from(v: SettingIPConfigForwarding) -> Self {
5721        skip_assert_initialized!();
5722        ToValue::to_value(&v)
5723    }
5724}
5725
5726/// #NMSettingIPConfigRoutedDns indicates whether routes are added
5727/// automatically for each DNS that is associated with this connection.
5728#[cfg(feature = "v1_52")]
5729#[cfg_attr(docsrs, doc(cfg(feature = "v1_52")))]
5730#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
5731#[non_exhaustive]
5732#[doc(alias = "NMSettingIPConfigRoutedDns")]
5733pub enum SettingIPConfigRoutedDns {
5734    /// use the global default value
5735    #[doc(alias = "NM_SETTING_IP_CONFIG_ROUTED_DNS_DEFAULT")]
5736    Default,
5737    /// do not add DNS routes
5738    #[doc(alias = "NM_SETTING_IP_CONFIG_ROUTED_DNS_NO")]
5739    No,
5740    /// do add DNS routes
5741    #[doc(alias = "NM_SETTING_IP_CONFIG_ROUTED_DNS_YES")]
5742    Yes,
5743    #[doc(hidden)]
5744    __Unknown(i32),
5745}
5746
5747#[cfg(feature = "v1_52")]
5748#[cfg_attr(docsrs, doc(cfg(feature = "v1_52")))]
5749#[doc(hidden)]
5750impl IntoGlib for SettingIPConfigRoutedDns {
5751    type GlibType = ffi::NMSettingIPConfigRoutedDns;
5752
5753    #[inline]
5754    fn into_glib(self) -> ffi::NMSettingIPConfigRoutedDns {
5755        match self {
5756            Self::Default => ffi::NM_SETTING_IP_CONFIG_ROUTED_DNS_DEFAULT,
5757            Self::No => ffi::NM_SETTING_IP_CONFIG_ROUTED_DNS_NO,
5758            Self::Yes => ffi::NM_SETTING_IP_CONFIG_ROUTED_DNS_YES,
5759            Self::__Unknown(value) => value,
5760        }
5761    }
5762}
5763
5764#[cfg(feature = "v1_52")]
5765#[cfg_attr(docsrs, doc(cfg(feature = "v1_52")))]
5766#[doc(hidden)]
5767impl FromGlib<ffi::NMSettingIPConfigRoutedDns> for SettingIPConfigRoutedDns {
5768    #[inline]
5769    unsafe fn from_glib(value: ffi::NMSettingIPConfigRoutedDns) -> Self {
5770        skip_assert_initialized!();
5771
5772        match value {
5773            ffi::NM_SETTING_IP_CONFIG_ROUTED_DNS_DEFAULT => Self::Default,
5774            ffi::NM_SETTING_IP_CONFIG_ROUTED_DNS_NO => Self::No,
5775            ffi::NM_SETTING_IP_CONFIG_ROUTED_DNS_YES => Self::Yes,
5776            value => Self::__Unknown(value),
5777        }
5778    }
5779}
5780
5781#[cfg(feature = "v1_52")]
5782#[cfg_attr(docsrs, doc(cfg(feature = "v1_52")))]
5783impl StaticType for SettingIPConfigRoutedDns {
5784    #[inline]
5785    #[doc(alias = "nm_setting_ip_config_routed_dns_get_type")]
5786    fn static_type() -> glib::Type {
5787        unsafe { from_glib(ffi::nm_setting_ip_config_routed_dns_get_type()) }
5788    }
5789}
5790
5791#[cfg(feature = "v1_52")]
5792#[cfg_attr(docsrs, doc(cfg(feature = "v1_52")))]
5793impl glib::HasParamSpec for SettingIPConfigRoutedDns {
5794    type ParamSpec = glib::ParamSpecEnum;
5795    type SetValue = Self;
5796    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
5797
5798    fn param_spec_builder() -> Self::BuilderFn {
5799        Self::ParamSpec::builder_with_default
5800    }
5801}
5802
5803#[cfg(feature = "v1_52")]
5804#[cfg_attr(docsrs, doc(cfg(feature = "v1_52")))]
5805impl glib::value::ValueType for SettingIPConfigRoutedDns {
5806    type Type = Self;
5807}
5808
5809#[cfg(feature = "v1_52")]
5810#[cfg_attr(docsrs, doc(cfg(feature = "v1_52")))]
5811unsafe impl<'a> glib::value::FromValue<'a> for SettingIPConfigRoutedDns {
5812    type Checker = glib::value::GenericValueTypeChecker<Self>;
5813
5814    #[inline]
5815    unsafe fn from_value(value: &'a glib::Value) -> Self {
5816        skip_assert_initialized!();
5817        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
5818    }
5819}
5820
5821#[cfg(feature = "v1_52")]
5822#[cfg_attr(docsrs, doc(cfg(feature = "v1_52")))]
5823impl ToValue for SettingIPConfigRoutedDns {
5824    #[inline]
5825    fn to_value(&self) -> glib::Value {
5826        let mut value = glib::Value::for_value_type::<Self>();
5827        unsafe {
5828            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
5829        }
5830        value
5831    }
5832
5833    #[inline]
5834    fn value_type(&self) -> glib::Type {
5835        Self::static_type()
5836    }
5837}
5838
5839#[cfg(feature = "v1_52")]
5840#[cfg_attr(docsrs, doc(cfg(feature = "v1_52")))]
5841impl From<SettingIPConfigRoutedDns> for glib::Value {
5842    #[inline]
5843    fn from(v: SettingIPConfigRoutedDns) -> Self {
5844        skip_assert_initialized!();
5845        ToValue::to_value(&v)
5846    }
5847}
5848
5849#[cfg(feature = "v1_52")]
5850#[cfg_attr(docsrs, doc(cfg(feature = "v1_52")))]
5851#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
5852#[non_exhaustive]
5853#[doc(alias = "NMSettingIpvlanMode")]
5854pub enum SettingIpvlanMode {
5855    /// unknown/unset mode
5856    #[doc(alias = "NM_SETTING_IPVLAN_MODE_UNKNOWN")]
5857    Unknown,
5858    /// L2 mode, device receives and responds to ARP.
5859    #[doc(alias = "NM_SETTING_IPVLAN_MODE_L2")]
5860    L2,
5861    /// L3 mode, device process only L3 traffic and above.
5862    #[doc(alias = "NM_SETTING_IPVLAN_MODE_L3")]
5863    L3,
5864    /// L3S mode, same way as L3 mode but egress and ingress
5865    /// lands on netfilter chain.
5866    #[doc(alias = "NM_SETTING_IPVLAN_MODE_L3S")]
5867    L3s,
5868    #[doc(hidden)]
5869    __Unknown(i32),
5870}
5871
5872#[cfg(feature = "v1_52")]
5873#[cfg_attr(docsrs, doc(cfg(feature = "v1_52")))]
5874#[doc(hidden)]
5875impl IntoGlib for SettingIpvlanMode {
5876    type GlibType = ffi::NMSettingIpvlanMode;
5877
5878    #[inline]
5879    fn into_glib(self) -> ffi::NMSettingIpvlanMode {
5880        match self {
5881            Self::Unknown => ffi::NM_SETTING_IPVLAN_MODE_UNKNOWN,
5882            Self::L2 => ffi::NM_SETTING_IPVLAN_MODE_L2,
5883            Self::L3 => ffi::NM_SETTING_IPVLAN_MODE_L3,
5884            Self::L3s => ffi::NM_SETTING_IPVLAN_MODE_L3S,
5885            Self::__Unknown(value) => value,
5886        }
5887    }
5888}
5889
5890#[cfg(feature = "v1_52")]
5891#[cfg_attr(docsrs, doc(cfg(feature = "v1_52")))]
5892#[doc(hidden)]
5893impl FromGlib<ffi::NMSettingIpvlanMode> for SettingIpvlanMode {
5894    #[inline]
5895    unsafe fn from_glib(value: ffi::NMSettingIpvlanMode) -> Self {
5896        skip_assert_initialized!();
5897
5898        match value {
5899            ffi::NM_SETTING_IPVLAN_MODE_UNKNOWN => Self::Unknown,
5900            ffi::NM_SETTING_IPVLAN_MODE_L2 => Self::L2,
5901            ffi::NM_SETTING_IPVLAN_MODE_L3 => Self::L3,
5902            ffi::NM_SETTING_IPVLAN_MODE_L3S => Self::L3s,
5903            value => Self::__Unknown(value),
5904        }
5905    }
5906}
5907
5908#[cfg(feature = "v1_52")]
5909#[cfg_attr(docsrs, doc(cfg(feature = "v1_52")))]
5910impl StaticType for SettingIpvlanMode {
5911    #[inline]
5912    #[doc(alias = "nm_setting_ipvlan_mode_get_type")]
5913    fn static_type() -> glib::Type {
5914        unsafe { from_glib(ffi::nm_setting_ipvlan_mode_get_type()) }
5915    }
5916}
5917
5918#[cfg(feature = "v1_52")]
5919#[cfg_attr(docsrs, doc(cfg(feature = "v1_52")))]
5920impl glib::HasParamSpec for SettingIpvlanMode {
5921    type ParamSpec = glib::ParamSpecEnum;
5922    type SetValue = Self;
5923    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
5924
5925    fn param_spec_builder() -> Self::BuilderFn {
5926        Self::ParamSpec::builder_with_default
5927    }
5928}
5929
5930#[cfg(feature = "v1_52")]
5931#[cfg_attr(docsrs, doc(cfg(feature = "v1_52")))]
5932impl glib::value::ValueType for SettingIpvlanMode {
5933    type Type = Self;
5934}
5935
5936#[cfg(feature = "v1_52")]
5937#[cfg_attr(docsrs, doc(cfg(feature = "v1_52")))]
5938unsafe impl<'a> glib::value::FromValue<'a> for SettingIpvlanMode {
5939    type Checker = glib::value::GenericValueTypeChecker<Self>;
5940
5941    #[inline]
5942    unsafe fn from_value(value: &'a glib::Value) -> Self {
5943        skip_assert_initialized!();
5944        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
5945    }
5946}
5947
5948#[cfg(feature = "v1_52")]
5949#[cfg_attr(docsrs, doc(cfg(feature = "v1_52")))]
5950impl ToValue for SettingIpvlanMode {
5951    #[inline]
5952    fn to_value(&self) -> glib::Value {
5953        let mut value = glib::Value::for_value_type::<Self>();
5954        unsafe {
5955            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
5956        }
5957        value
5958    }
5959
5960    #[inline]
5961    fn value_type(&self) -> glib::Type {
5962        Self::static_type()
5963    }
5964}
5965
5966#[cfg(feature = "v1_52")]
5967#[cfg_attr(docsrs, doc(cfg(feature = "v1_52")))]
5968impl From<SettingIpvlanMode> for glib::Value {
5969    #[inline]
5970    fn from(v: SettingIpvlanMode) -> Self {
5971        skip_assert_initialized!();
5972        ToValue::to_value(&v)
5973    }
5974}
5975
5976/// Controls if and how the MAC address of a device is randomzied.
5977#[cfg(feature = "v1_2")]
5978#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
5979#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
5980#[non_exhaustive]
5981#[doc(alias = "NMSettingMacRandomization")]
5982pub enum SettingMacRandomization {
5983    /// the default value, which unless
5984    /// overridden by user-controlled defaults configuration, is "never".
5985    #[doc(alias = "NM_SETTING_MAC_RANDOMIZATION_DEFAULT")]
5986    Default,
5987    /// the device's MAC address is always used.
5988    #[doc(alias = "NM_SETTING_MAC_RANDOMIZATION_NEVER")]
5989    Never,
5990    /// a random MAC address is used.
5991    #[doc(alias = "NM_SETTING_MAC_RANDOMIZATION_ALWAYS")]
5992    Always,
5993    #[doc(hidden)]
5994    __Unknown(i32),
5995}
5996
5997#[cfg(feature = "v1_2")]
5998#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
5999#[doc(hidden)]
6000impl IntoGlib for SettingMacRandomization {
6001    type GlibType = ffi::NMSettingMacRandomization;
6002
6003    #[inline]
6004    fn into_glib(self) -> ffi::NMSettingMacRandomization {
6005        match self {
6006            Self::Default => ffi::NM_SETTING_MAC_RANDOMIZATION_DEFAULT,
6007            Self::Never => ffi::NM_SETTING_MAC_RANDOMIZATION_NEVER,
6008            Self::Always => ffi::NM_SETTING_MAC_RANDOMIZATION_ALWAYS,
6009            Self::__Unknown(value) => value,
6010        }
6011    }
6012}
6013
6014#[cfg(feature = "v1_2")]
6015#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
6016#[doc(hidden)]
6017impl FromGlib<ffi::NMSettingMacRandomization> for SettingMacRandomization {
6018    #[inline]
6019    unsafe fn from_glib(value: ffi::NMSettingMacRandomization) -> Self {
6020        skip_assert_initialized!();
6021
6022        match value {
6023            ffi::NM_SETTING_MAC_RANDOMIZATION_DEFAULT => Self::Default,
6024            ffi::NM_SETTING_MAC_RANDOMIZATION_NEVER => Self::Never,
6025            ffi::NM_SETTING_MAC_RANDOMIZATION_ALWAYS => Self::Always,
6026            value => Self::__Unknown(value),
6027        }
6028    }
6029}
6030
6031#[cfg(feature = "v1_2")]
6032#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
6033impl StaticType for SettingMacRandomization {
6034    #[inline]
6035    #[doc(alias = "nm_setting_mac_randomization_get_type")]
6036    fn static_type() -> glib::Type {
6037        unsafe { from_glib(ffi::nm_setting_mac_randomization_get_type()) }
6038    }
6039}
6040
6041#[cfg(feature = "v1_2")]
6042#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
6043impl glib::HasParamSpec for SettingMacRandomization {
6044    type ParamSpec = glib::ParamSpecEnum;
6045    type SetValue = Self;
6046    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
6047
6048    fn param_spec_builder() -> Self::BuilderFn {
6049        Self::ParamSpec::builder_with_default
6050    }
6051}
6052
6053#[cfg(feature = "v1_2")]
6054#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
6055impl glib::value::ValueType for SettingMacRandomization {
6056    type Type = Self;
6057}
6058
6059#[cfg(feature = "v1_2")]
6060#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
6061unsafe impl<'a> glib::value::FromValue<'a> for SettingMacRandomization {
6062    type Checker = glib::value::GenericValueTypeChecker<Self>;
6063
6064    #[inline]
6065    unsafe fn from_value(value: &'a glib::Value) -> Self {
6066        skip_assert_initialized!();
6067        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
6068    }
6069}
6070
6071#[cfg(feature = "v1_2")]
6072#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
6073impl ToValue for SettingMacRandomization {
6074    #[inline]
6075    fn to_value(&self) -> glib::Value {
6076        let mut value = glib::Value::for_value_type::<Self>();
6077        unsafe {
6078            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
6079        }
6080        value
6081    }
6082
6083    #[inline]
6084    fn value_type(&self) -> glib::Type {
6085        Self::static_type()
6086    }
6087}
6088
6089#[cfg(feature = "v1_2")]
6090#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
6091impl From<SettingMacRandomization> for glib::Value {
6092    #[inline]
6093    fn from(v: SettingMacRandomization) -> Self {
6094        skip_assert_initialized!();
6095        ToValue::to_value(&v)
6096    }
6097}
6098
6099/// #NMSettingMacsecMode controls how the CAK (Connectivity Association Key) used
6100/// in MKA (MACsec Key Agreement) is obtained.
6101#[cfg(feature = "v1_6")]
6102#[cfg_attr(docsrs, doc(cfg(feature = "v1_6")))]
6103#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
6104#[non_exhaustive]
6105#[doc(alias = "NMSettingMacsecMode")]
6106pub enum SettingMacsecMode {
6107    /// The CAK is pre-shared
6108    #[doc(alias = "NM_SETTING_MACSEC_MODE_PSK")]
6109    Psk,
6110    /// The CAK is the result of participation in EAP
6111    #[doc(alias = "NM_SETTING_MACSEC_MODE_EAP")]
6112    Eap,
6113    #[doc(hidden)]
6114    __Unknown(i32),
6115}
6116
6117#[cfg(feature = "v1_6")]
6118#[cfg_attr(docsrs, doc(cfg(feature = "v1_6")))]
6119#[doc(hidden)]
6120impl IntoGlib for SettingMacsecMode {
6121    type GlibType = ffi::NMSettingMacsecMode;
6122
6123    #[inline]
6124    fn into_glib(self) -> ffi::NMSettingMacsecMode {
6125        match self {
6126            Self::Psk => ffi::NM_SETTING_MACSEC_MODE_PSK,
6127            Self::Eap => ffi::NM_SETTING_MACSEC_MODE_EAP,
6128            Self::__Unknown(value) => value,
6129        }
6130    }
6131}
6132
6133#[cfg(feature = "v1_6")]
6134#[cfg_attr(docsrs, doc(cfg(feature = "v1_6")))]
6135#[doc(hidden)]
6136impl FromGlib<ffi::NMSettingMacsecMode> for SettingMacsecMode {
6137    #[inline]
6138    unsafe fn from_glib(value: ffi::NMSettingMacsecMode) -> Self {
6139        skip_assert_initialized!();
6140
6141        match value {
6142            ffi::NM_SETTING_MACSEC_MODE_PSK => Self::Psk,
6143            ffi::NM_SETTING_MACSEC_MODE_EAP => Self::Eap,
6144            value => Self::__Unknown(value),
6145        }
6146    }
6147}
6148
6149#[cfg(feature = "v1_6")]
6150#[cfg_attr(docsrs, doc(cfg(feature = "v1_6")))]
6151impl StaticType for SettingMacsecMode {
6152    #[inline]
6153    #[doc(alias = "nm_setting_macsec_mode_get_type")]
6154    fn static_type() -> glib::Type {
6155        unsafe { from_glib(ffi::nm_setting_macsec_mode_get_type()) }
6156    }
6157}
6158
6159#[cfg(feature = "v1_6")]
6160#[cfg_attr(docsrs, doc(cfg(feature = "v1_6")))]
6161impl glib::HasParamSpec for SettingMacsecMode {
6162    type ParamSpec = glib::ParamSpecEnum;
6163    type SetValue = Self;
6164    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
6165
6166    fn param_spec_builder() -> Self::BuilderFn {
6167        Self::ParamSpec::builder_with_default
6168    }
6169}
6170
6171#[cfg(feature = "v1_6")]
6172#[cfg_attr(docsrs, doc(cfg(feature = "v1_6")))]
6173impl glib::value::ValueType for SettingMacsecMode {
6174    type Type = Self;
6175}
6176
6177#[cfg(feature = "v1_6")]
6178#[cfg_attr(docsrs, doc(cfg(feature = "v1_6")))]
6179unsafe impl<'a> glib::value::FromValue<'a> for SettingMacsecMode {
6180    type Checker = glib::value::GenericValueTypeChecker<Self>;
6181
6182    #[inline]
6183    unsafe fn from_value(value: &'a glib::Value) -> Self {
6184        skip_assert_initialized!();
6185        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
6186    }
6187}
6188
6189#[cfg(feature = "v1_6")]
6190#[cfg_attr(docsrs, doc(cfg(feature = "v1_6")))]
6191impl ToValue for SettingMacsecMode {
6192    #[inline]
6193    fn to_value(&self) -> glib::Value {
6194        let mut value = glib::Value::for_value_type::<Self>();
6195        unsafe {
6196            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
6197        }
6198        value
6199    }
6200
6201    #[inline]
6202    fn value_type(&self) -> glib::Type {
6203        Self::static_type()
6204    }
6205}
6206
6207#[cfg(feature = "v1_6")]
6208#[cfg_attr(docsrs, doc(cfg(feature = "v1_6")))]
6209impl From<SettingMacsecMode> for glib::Value {
6210    #[inline]
6211    fn from(v: SettingMacsecMode) -> Self {
6212        skip_assert_initialized!();
6213        ToValue::to_value(&v)
6214    }
6215}
6216
6217/// These flags control the MACsec offload mode.
6218#[cfg(feature = "v1_46")]
6219#[cfg_attr(docsrs, doc(cfg(feature = "v1_46")))]
6220#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
6221#[non_exhaustive]
6222#[doc(alias = "NMSettingMacsecOffload")]
6223pub enum SettingMacsecOffload {
6224    /// use the global default; disable if not defined
6225    #[doc(alias = "NM_SETTING_MACSEC_OFFLOAD_DEFAULT")]
6226    Default,
6227    /// disable offload
6228    #[doc(alias = "NM_SETTING_MACSEC_OFFLOAD_OFF")]
6229    Off,
6230    /// request offload to the PHY
6231    #[doc(alias = "NM_SETTING_MACSEC_OFFLOAD_PHY")]
6232    Phy,
6233    /// request offload to the MAC
6234    #[doc(alias = "NM_SETTING_MACSEC_OFFLOAD_MAC")]
6235    Mac,
6236    #[doc(hidden)]
6237    __Unknown(i32),
6238}
6239
6240#[cfg(feature = "v1_46")]
6241#[cfg_attr(docsrs, doc(cfg(feature = "v1_46")))]
6242#[doc(hidden)]
6243impl IntoGlib for SettingMacsecOffload {
6244    type GlibType = ffi::NMSettingMacsecOffload;
6245
6246    #[inline]
6247    fn into_glib(self) -> ffi::NMSettingMacsecOffload {
6248        match self {
6249            Self::Default => ffi::NM_SETTING_MACSEC_OFFLOAD_DEFAULT,
6250            Self::Off => ffi::NM_SETTING_MACSEC_OFFLOAD_OFF,
6251            Self::Phy => ffi::NM_SETTING_MACSEC_OFFLOAD_PHY,
6252            Self::Mac => ffi::NM_SETTING_MACSEC_OFFLOAD_MAC,
6253            Self::__Unknown(value) => value,
6254        }
6255    }
6256}
6257
6258#[cfg(feature = "v1_46")]
6259#[cfg_attr(docsrs, doc(cfg(feature = "v1_46")))]
6260#[doc(hidden)]
6261impl FromGlib<ffi::NMSettingMacsecOffload> for SettingMacsecOffload {
6262    #[inline]
6263    unsafe fn from_glib(value: ffi::NMSettingMacsecOffload) -> Self {
6264        skip_assert_initialized!();
6265
6266        match value {
6267            ffi::NM_SETTING_MACSEC_OFFLOAD_DEFAULT => Self::Default,
6268            ffi::NM_SETTING_MACSEC_OFFLOAD_OFF => Self::Off,
6269            ffi::NM_SETTING_MACSEC_OFFLOAD_PHY => Self::Phy,
6270            ffi::NM_SETTING_MACSEC_OFFLOAD_MAC => Self::Mac,
6271            value => Self::__Unknown(value),
6272        }
6273    }
6274}
6275
6276#[cfg(feature = "v1_46")]
6277#[cfg_attr(docsrs, doc(cfg(feature = "v1_46")))]
6278impl StaticType for SettingMacsecOffload {
6279    #[inline]
6280    #[doc(alias = "nm_setting_macsec_offload_get_type")]
6281    fn static_type() -> glib::Type {
6282        unsafe { from_glib(ffi::nm_setting_macsec_offload_get_type()) }
6283    }
6284}
6285
6286#[cfg(feature = "v1_46")]
6287#[cfg_attr(docsrs, doc(cfg(feature = "v1_46")))]
6288impl glib::HasParamSpec for SettingMacsecOffload {
6289    type ParamSpec = glib::ParamSpecEnum;
6290    type SetValue = Self;
6291    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
6292
6293    fn param_spec_builder() -> Self::BuilderFn {
6294        Self::ParamSpec::builder_with_default
6295    }
6296}
6297
6298#[cfg(feature = "v1_46")]
6299#[cfg_attr(docsrs, doc(cfg(feature = "v1_46")))]
6300impl glib::value::ValueType for SettingMacsecOffload {
6301    type Type = Self;
6302}
6303
6304#[cfg(feature = "v1_46")]
6305#[cfg_attr(docsrs, doc(cfg(feature = "v1_46")))]
6306unsafe impl<'a> glib::value::FromValue<'a> for SettingMacsecOffload {
6307    type Checker = glib::value::GenericValueTypeChecker<Self>;
6308
6309    #[inline]
6310    unsafe fn from_value(value: &'a glib::Value) -> Self {
6311        skip_assert_initialized!();
6312        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
6313    }
6314}
6315
6316#[cfg(feature = "v1_46")]
6317#[cfg_attr(docsrs, doc(cfg(feature = "v1_46")))]
6318impl ToValue for SettingMacsecOffload {
6319    #[inline]
6320    fn to_value(&self) -> glib::Value {
6321        let mut value = glib::Value::for_value_type::<Self>();
6322        unsafe {
6323            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
6324        }
6325        value
6326    }
6327
6328    #[inline]
6329    fn value_type(&self) -> glib::Type {
6330        Self::static_type()
6331    }
6332}
6333
6334#[cfg(feature = "v1_46")]
6335#[cfg_attr(docsrs, doc(cfg(feature = "v1_46")))]
6336impl From<SettingMacsecOffload> for glib::Value {
6337    #[inline]
6338    fn from(v: SettingMacsecOffload) -> Self {
6339        skip_assert_initialized!();
6340        ToValue::to_value(&v)
6341    }
6342}
6343
6344/// #NMSettingMacsecValidation specifies a validation mode for incoming frames.
6345#[cfg(feature = "v1_6")]
6346#[cfg_attr(docsrs, doc(cfg(feature = "v1_6")))]
6347#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
6348#[non_exhaustive]
6349#[doc(alias = "NMSettingMacsecValidation")]
6350pub enum SettingMacsecValidation {
6351    /// All incoming frames are accepted if
6352    ///   possible
6353    #[doc(alias = "NM_SETTING_MACSEC_VALIDATION_DISABLE")]
6354    Disable,
6355    /// Non protected, invalid, or impossible to
6356    ///   verify frames are accepted and counted as "invalid"
6357    #[doc(alias = "NM_SETTING_MACSEC_VALIDATION_CHECK")]
6358    Check,
6359    /// Non protected, invalid, or impossible to
6360    ///   verify frames are dropped
6361    #[doc(alias = "NM_SETTING_MACSEC_VALIDATION_STRICT")]
6362    Strict,
6363    #[doc(hidden)]
6364    __Unknown(i32),
6365}
6366
6367#[cfg(feature = "v1_6")]
6368#[cfg_attr(docsrs, doc(cfg(feature = "v1_6")))]
6369#[doc(hidden)]
6370impl IntoGlib for SettingMacsecValidation {
6371    type GlibType = ffi::NMSettingMacsecValidation;
6372
6373    #[inline]
6374    fn into_glib(self) -> ffi::NMSettingMacsecValidation {
6375        match self {
6376            Self::Disable => ffi::NM_SETTING_MACSEC_VALIDATION_DISABLE,
6377            Self::Check => ffi::NM_SETTING_MACSEC_VALIDATION_CHECK,
6378            Self::Strict => ffi::NM_SETTING_MACSEC_VALIDATION_STRICT,
6379            Self::__Unknown(value) => value,
6380        }
6381    }
6382}
6383
6384#[cfg(feature = "v1_6")]
6385#[cfg_attr(docsrs, doc(cfg(feature = "v1_6")))]
6386#[doc(hidden)]
6387impl FromGlib<ffi::NMSettingMacsecValidation> for SettingMacsecValidation {
6388    #[inline]
6389    unsafe fn from_glib(value: ffi::NMSettingMacsecValidation) -> Self {
6390        skip_assert_initialized!();
6391
6392        match value {
6393            ffi::NM_SETTING_MACSEC_VALIDATION_DISABLE => Self::Disable,
6394            ffi::NM_SETTING_MACSEC_VALIDATION_CHECK => Self::Check,
6395            ffi::NM_SETTING_MACSEC_VALIDATION_STRICT => Self::Strict,
6396            value => Self::__Unknown(value),
6397        }
6398    }
6399}
6400
6401#[cfg(feature = "v1_6")]
6402#[cfg_attr(docsrs, doc(cfg(feature = "v1_6")))]
6403impl StaticType for SettingMacsecValidation {
6404    #[inline]
6405    #[doc(alias = "nm_setting_macsec_validation_get_type")]
6406    fn static_type() -> glib::Type {
6407        unsafe { from_glib(ffi::nm_setting_macsec_validation_get_type()) }
6408    }
6409}
6410
6411#[cfg(feature = "v1_6")]
6412#[cfg_attr(docsrs, doc(cfg(feature = "v1_6")))]
6413impl glib::HasParamSpec for SettingMacsecValidation {
6414    type ParamSpec = glib::ParamSpecEnum;
6415    type SetValue = Self;
6416    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
6417
6418    fn param_spec_builder() -> Self::BuilderFn {
6419        Self::ParamSpec::builder_with_default
6420    }
6421}
6422
6423#[cfg(feature = "v1_6")]
6424#[cfg_attr(docsrs, doc(cfg(feature = "v1_6")))]
6425impl glib::value::ValueType for SettingMacsecValidation {
6426    type Type = Self;
6427}
6428
6429#[cfg(feature = "v1_6")]
6430#[cfg_attr(docsrs, doc(cfg(feature = "v1_6")))]
6431unsafe impl<'a> glib::value::FromValue<'a> for SettingMacsecValidation {
6432    type Checker = glib::value::GenericValueTypeChecker<Self>;
6433
6434    #[inline]
6435    unsafe fn from_value(value: &'a glib::Value) -> Self {
6436        skip_assert_initialized!();
6437        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
6438    }
6439}
6440
6441#[cfg(feature = "v1_6")]
6442#[cfg_attr(docsrs, doc(cfg(feature = "v1_6")))]
6443impl ToValue for SettingMacsecValidation {
6444    #[inline]
6445    fn to_value(&self) -> glib::Value {
6446        let mut value = glib::Value::for_value_type::<Self>();
6447        unsafe {
6448            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
6449        }
6450        value
6451    }
6452
6453    #[inline]
6454    fn value_type(&self) -> glib::Type {
6455        Self::static_type()
6456    }
6457}
6458
6459#[cfg(feature = "v1_6")]
6460#[cfg_attr(docsrs, doc(cfg(feature = "v1_6")))]
6461impl From<SettingMacsecValidation> for glib::Value {
6462    #[inline]
6463    fn from(v: SettingMacsecValidation) -> Self {
6464        skip_assert_initialized!();
6465        ToValue::to_value(&v)
6466    }
6467}
6468
6469#[cfg(feature = "v1_2")]
6470#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
6471#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
6472#[non_exhaustive]
6473#[doc(alias = "NMSettingMacvlanMode")]
6474pub enum SettingMacvlanMode {
6475    /// unknown/unset mode
6476    #[doc(alias = "NM_SETTING_MACVLAN_MODE_UNKNOWN")]
6477    Unknown,
6478    /// Virtual Ethernet Port Aggregator mode
6479    #[doc(alias = "NM_SETTING_MACVLAN_MODE_VEPA")]
6480    Vepa,
6481    /// bridge mode
6482    #[doc(alias = "NM_SETTING_MACVLAN_MODE_BRIDGE")]
6483    Bridge,
6484    /// private mode
6485    #[doc(alias = "NM_SETTING_MACVLAN_MODE_PRIVATE")]
6486    Private,
6487    /// passthru mode
6488    #[doc(alias = "NM_SETTING_MACVLAN_MODE_PASSTHRU")]
6489    Passthru,
6490    /// source mode
6491    #[doc(alias = "NM_SETTING_MACVLAN_MODE_SOURCE")]
6492    Source,
6493    #[doc(hidden)]
6494    __Unknown(i32),
6495}
6496
6497#[cfg(feature = "v1_2")]
6498#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
6499#[doc(hidden)]
6500impl IntoGlib for SettingMacvlanMode {
6501    type GlibType = ffi::NMSettingMacvlanMode;
6502
6503    #[inline]
6504    fn into_glib(self) -> ffi::NMSettingMacvlanMode {
6505        match self {
6506            Self::Unknown => ffi::NM_SETTING_MACVLAN_MODE_UNKNOWN,
6507            Self::Vepa => ffi::NM_SETTING_MACVLAN_MODE_VEPA,
6508            Self::Bridge => ffi::NM_SETTING_MACVLAN_MODE_BRIDGE,
6509            Self::Private => ffi::NM_SETTING_MACVLAN_MODE_PRIVATE,
6510            Self::Passthru => ffi::NM_SETTING_MACVLAN_MODE_PASSTHRU,
6511            Self::Source => ffi::NM_SETTING_MACVLAN_MODE_SOURCE,
6512            Self::__Unknown(value) => value,
6513        }
6514    }
6515}
6516
6517#[cfg(feature = "v1_2")]
6518#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
6519#[doc(hidden)]
6520impl FromGlib<ffi::NMSettingMacvlanMode> for SettingMacvlanMode {
6521    #[inline]
6522    unsafe fn from_glib(value: ffi::NMSettingMacvlanMode) -> Self {
6523        skip_assert_initialized!();
6524
6525        match value {
6526            ffi::NM_SETTING_MACVLAN_MODE_UNKNOWN => Self::Unknown,
6527            ffi::NM_SETTING_MACVLAN_MODE_VEPA => Self::Vepa,
6528            ffi::NM_SETTING_MACVLAN_MODE_BRIDGE => Self::Bridge,
6529            ffi::NM_SETTING_MACVLAN_MODE_PRIVATE => Self::Private,
6530            ffi::NM_SETTING_MACVLAN_MODE_PASSTHRU => Self::Passthru,
6531            ffi::NM_SETTING_MACVLAN_MODE_SOURCE => Self::Source,
6532            value => Self::__Unknown(value),
6533        }
6534    }
6535}
6536
6537#[cfg(feature = "v1_2")]
6538#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
6539impl StaticType for SettingMacvlanMode {
6540    #[inline]
6541    #[doc(alias = "nm_setting_macvlan_mode_get_type")]
6542    fn static_type() -> glib::Type {
6543        unsafe { from_glib(ffi::nm_setting_macvlan_mode_get_type()) }
6544    }
6545}
6546
6547#[cfg(feature = "v1_2")]
6548#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
6549impl glib::HasParamSpec for SettingMacvlanMode {
6550    type ParamSpec = glib::ParamSpecEnum;
6551    type SetValue = Self;
6552    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
6553
6554    fn param_spec_builder() -> Self::BuilderFn {
6555        Self::ParamSpec::builder_with_default
6556    }
6557}
6558
6559#[cfg(feature = "v1_2")]
6560#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
6561impl glib::value::ValueType for SettingMacvlanMode {
6562    type Type = Self;
6563}
6564
6565#[cfg(feature = "v1_2")]
6566#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
6567unsafe impl<'a> glib::value::FromValue<'a> for SettingMacvlanMode {
6568    type Checker = glib::value::GenericValueTypeChecker<Self>;
6569
6570    #[inline]
6571    unsafe fn from_value(value: &'a glib::Value) -> Self {
6572        skip_assert_initialized!();
6573        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
6574    }
6575}
6576
6577#[cfg(feature = "v1_2")]
6578#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
6579impl ToValue for SettingMacvlanMode {
6580    #[inline]
6581    fn to_value(&self) -> glib::Value {
6582        let mut value = glib::Value::for_value_type::<Self>();
6583        unsafe {
6584            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
6585        }
6586        value
6587    }
6588
6589    #[inline]
6590    fn value_type(&self) -> glib::Type {
6591        Self::static_type()
6592    }
6593}
6594
6595#[cfg(feature = "v1_2")]
6596#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
6597impl From<SettingMacvlanMode> for glib::Value {
6598    #[inline]
6599    fn from(v: SettingMacvlanMode) -> Self {
6600        skip_assert_initialized!();
6601        ToValue::to_value(&v)
6602    }
6603}
6604
6605/// #NMSettingOvsDpdkLscInterrupt indicates whether the interface uses interrupts
6606/// or poll mode for Link State Change (LSC) detection on the OVS DPDK interface.
6607#[cfg(feature = "v1_54")]
6608#[cfg_attr(docsrs, doc(cfg(feature = "v1_54")))]
6609#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
6610#[non_exhaustive]
6611#[doc(alias = "NMSettingOvsDpdkLscInterrupt")]
6612pub enum SettingOvsDpdkLscInterrupt {
6613    /// leave the value set to Open vSwitch default
6614    #[doc(alias = "NM_SETTING_OVS_DPDK_LSC_INTERRUPT_IGNORE")]
6615    Ignore,
6616    /// interrupt disabled (poll mode)
6617    #[doc(alias = "NM_SETTING_OVS_DPDK_LSC_INTERRUPT_DISABLED")]
6618    Disabled,
6619    /// interrupt enabled
6620    #[doc(alias = "NM_SETTING_OVS_DPDK_LSC_INTERRUPT_ENABLED")]
6621    Enabled,
6622    #[doc(hidden)]
6623    __Unknown(i32),
6624}
6625
6626#[cfg(feature = "v1_54")]
6627#[cfg_attr(docsrs, doc(cfg(feature = "v1_54")))]
6628#[doc(hidden)]
6629impl IntoGlib for SettingOvsDpdkLscInterrupt {
6630    type GlibType = ffi::NMSettingOvsDpdkLscInterrupt;
6631
6632    #[inline]
6633    fn into_glib(self) -> ffi::NMSettingOvsDpdkLscInterrupt {
6634        match self {
6635            Self::Ignore => ffi::NM_SETTING_OVS_DPDK_LSC_INTERRUPT_IGNORE,
6636            Self::Disabled => ffi::NM_SETTING_OVS_DPDK_LSC_INTERRUPT_DISABLED,
6637            Self::Enabled => ffi::NM_SETTING_OVS_DPDK_LSC_INTERRUPT_ENABLED,
6638            Self::__Unknown(value) => value,
6639        }
6640    }
6641}
6642
6643#[cfg(feature = "v1_54")]
6644#[cfg_attr(docsrs, doc(cfg(feature = "v1_54")))]
6645#[doc(hidden)]
6646impl FromGlib<ffi::NMSettingOvsDpdkLscInterrupt> for SettingOvsDpdkLscInterrupt {
6647    #[inline]
6648    unsafe fn from_glib(value: ffi::NMSettingOvsDpdkLscInterrupt) -> Self {
6649        skip_assert_initialized!();
6650
6651        match value {
6652            ffi::NM_SETTING_OVS_DPDK_LSC_INTERRUPT_IGNORE => Self::Ignore,
6653            ffi::NM_SETTING_OVS_DPDK_LSC_INTERRUPT_DISABLED => Self::Disabled,
6654            ffi::NM_SETTING_OVS_DPDK_LSC_INTERRUPT_ENABLED => Self::Enabled,
6655            value => Self::__Unknown(value),
6656        }
6657    }
6658}
6659
6660#[cfg(feature = "v1_54")]
6661#[cfg_attr(docsrs, doc(cfg(feature = "v1_54")))]
6662impl StaticType for SettingOvsDpdkLscInterrupt {
6663    #[inline]
6664    #[doc(alias = "nm_setting_ovs_dpdk_lsc_interrupt_get_type")]
6665    fn static_type() -> glib::Type {
6666        unsafe { from_glib(ffi::nm_setting_ovs_dpdk_lsc_interrupt_get_type()) }
6667    }
6668}
6669
6670#[cfg(feature = "v1_54")]
6671#[cfg_attr(docsrs, doc(cfg(feature = "v1_54")))]
6672impl glib::HasParamSpec for SettingOvsDpdkLscInterrupt {
6673    type ParamSpec = glib::ParamSpecEnum;
6674    type SetValue = Self;
6675    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
6676
6677    fn param_spec_builder() -> Self::BuilderFn {
6678        Self::ParamSpec::builder_with_default
6679    }
6680}
6681
6682#[cfg(feature = "v1_54")]
6683#[cfg_attr(docsrs, doc(cfg(feature = "v1_54")))]
6684impl glib::value::ValueType for SettingOvsDpdkLscInterrupt {
6685    type Type = Self;
6686}
6687
6688#[cfg(feature = "v1_54")]
6689#[cfg_attr(docsrs, doc(cfg(feature = "v1_54")))]
6690unsafe impl<'a> glib::value::FromValue<'a> for SettingOvsDpdkLscInterrupt {
6691    type Checker = glib::value::GenericValueTypeChecker<Self>;
6692
6693    #[inline]
6694    unsafe fn from_value(value: &'a glib::Value) -> Self {
6695        skip_assert_initialized!();
6696        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
6697    }
6698}
6699
6700#[cfg(feature = "v1_54")]
6701#[cfg_attr(docsrs, doc(cfg(feature = "v1_54")))]
6702impl ToValue for SettingOvsDpdkLscInterrupt {
6703    #[inline]
6704    fn to_value(&self) -> glib::Value {
6705        let mut value = glib::Value::for_value_type::<Self>();
6706        unsafe {
6707            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
6708        }
6709        value
6710    }
6711
6712    #[inline]
6713    fn value_type(&self) -> glib::Type {
6714        Self::static_type()
6715    }
6716}
6717
6718#[cfg(feature = "v1_54")]
6719#[cfg_attr(docsrs, doc(cfg(feature = "v1_54")))]
6720impl From<SettingOvsDpdkLscInterrupt> for glib::Value {
6721    #[inline]
6722    fn from(v: SettingOvsDpdkLscInterrupt) -> Self {
6723        skip_assert_initialized!();
6724        ToValue::to_value(&v)
6725    }
6726}
6727
6728/// The Proxy method.
6729#[cfg(feature = "v1_6")]
6730#[cfg_attr(docsrs, doc(cfg(feature = "v1_6")))]
6731#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
6732#[non_exhaustive]
6733#[doc(alias = "NMSettingProxyMethod")]
6734pub enum SettingProxyMethod {
6735    /// No Proxy for the Connection
6736    #[doc(alias = "NM_SETTING_PROXY_METHOD_NONE")]
6737    None,
6738    /// DHCP obtained Proxy/ Manual override
6739    #[doc(alias = "NM_SETTING_PROXY_METHOD_AUTO")]
6740    Auto,
6741    #[doc(hidden)]
6742    __Unknown(i32),
6743}
6744
6745#[cfg(feature = "v1_6")]
6746#[cfg_attr(docsrs, doc(cfg(feature = "v1_6")))]
6747#[doc(hidden)]
6748impl IntoGlib for SettingProxyMethod {
6749    type GlibType = ffi::NMSettingProxyMethod;
6750
6751    #[inline]
6752    fn into_glib(self) -> ffi::NMSettingProxyMethod {
6753        match self {
6754            Self::None => ffi::NM_SETTING_PROXY_METHOD_NONE,
6755            Self::Auto => ffi::NM_SETTING_PROXY_METHOD_AUTO,
6756            Self::__Unknown(value) => value,
6757        }
6758    }
6759}
6760
6761#[cfg(feature = "v1_6")]
6762#[cfg_attr(docsrs, doc(cfg(feature = "v1_6")))]
6763#[doc(hidden)]
6764impl FromGlib<ffi::NMSettingProxyMethod> for SettingProxyMethod {
6765    #[inline]
6766    unsafe fn from_glib(value: ffi::NMSettingProxyMethod) -> Self {
6767        skip_assert_initialized!();
6768
6769        match value {
6770            ffi::NM_SETTING_PROXY_METHOD_NONE => Self::None,
6771            ffi::NM_SETTING_PROXY_METHOD_AUTO => Self::Auto,
6772            value => Self::__Unknown(value),
6773        }
6774    }
6775}
6776
6777#[cfg(feature = "v1_6")]
6778#[cfg_attr(docsrs, doc(cfg(feature = "v1_6")))]
6779impl StaticType for SettingProxyMethod {
6780    #[inline]
6781    #[doc(alias = "nm_setting_proxy_method_get_type")]
6782    fn static_type() -> glib::Type {
6783        unsafe { from_glib(ffi::nm_setting_proxy_method_get_type()) }
6784    }
6785}
6786
6787#[cfg(feature = "v1_6")]
6788#[cfg_attr(docsrs, doc(cfg(feature = "v1_6")))]
6789impl glib::HasParamSpec for SettingProxyMethod {
6790    type ParamSpec = glib::ParamSpecEnum;
6791    type SetValue = Self;
6792    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
6793
6794    fn param_spec_builder() -> Self::BuilderFn {
6795        Self::ParamSpec::builder_with_default
6796    }
6797}
6798
6799#[cfg(feature = "v1_6")]
6800#[cfg_attr(docsrs, doc(cfg(feature = "v1_6")))]
6801impl glib::value::ValueType for SettingProxyMethod {
6802    type Type = Self;
6803}
6804
6805#[cfg(feature = "v1_6")]
6806#[cfg_attr(docsrs, doc(cfg(feature = "v1_6")))]
6807unsafe impl<'a> glib::value::FromValue<'a> for SettingProxyMethod {
6808    type Checker = glib::value::GenericValueTypeChecker<Self>;
6809
6810    #[inline]
6811    unsafe fn from_value(value: &'a glib::Value) -> Self {
6812        skip_assert_initialized!();
6813        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
6814    }
6815}
6816
6817#[cfg(feature = "v1_6")]
6818#[cfg_attr(docsrs, doc(cfg(feature = "v1_6")))]
6819impl ToValue for SettingProxyMethod {
6820    #[inline]
6821    fn to_value(&self) -> glib::Value {
6822        let mut value = glib::Value::for_value_type::<Self>();
6823        unsafe {
6824            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
6825        }
6826        value
6827    }
6828
6829    #[inline]
6830    fn value_type(&self) -> glib::Type {
6831        Self::static_type()
6832    }
6833}
6834
6835#[cfg(feature = "v1_6")]
6836#[cfg_attr(docsrs, doc(cfg(feature = "v1_6")))]
6837impl From<SettingProxyMethod> for glib::Value {
6838    #[inline]
6839    fn from(v: SettingProxyMethod) -> Self {
6840        skip_assert_initialized!();
6841        ToValue::to_value(&v)
6842    }
6843}
6844
6845/// The parity setting of a serial port.
6846#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
6847#[non_exhaustive]
6848#[doc(alias = "NMSettingSerialParity")]
6849pub enum SettingSerialParity {
6850    /// No parity bits (default)
6851    #[doc(alias = "NM_SETTING_SERIAL_PARITY_NONE")]
6852    None,
6853    /// Even parity
6854    #[doc(alias = "NM_SETTING_SERIAL_PARITY_EVEN")]
6855    Even,
6856    /// Odd parity
6857    #[doc(alias = "NM_SETTING_SERIAL_PARITY_ODD")]
6858    Odd,
6859    #[doc(hidden)]
6860    __Unknown(i32),
6861}
6862
6863#[doc(hidden)]
6864impl IntoGlib for SettingSerialParity {
6865    type GlibType = ffi::NMSettingSerialParity;
6866
6867    #[inline]
6868    fn into_glib(self) -> ffi::NMSettingSerialParity {
6869        match self {
6870            Self::None => ffi::NM_SETTING_SERIAL_PARITY_NONE,
6871            Self::Even => ffi::NM_SETTING_SERIAL_PARITY_EVEN,
6872            Self::Odd => ffi::NM_SETTING_SERIAL_PARITY_ODD,
6873            Self::__Unknown(value) => value,
6874        }
6875    }
6876}
6877
6878#[doc(hidden)]
6879impl FromGlib<ffi::NMSettingSerialParity> for SettingSerialParity {
6880    #[inline]
6881    unsafe fn from_glib(value: ffi::NMSettingSerialParity) -> Self {
6882        skip_assert_initialized!();
6883
6884        match value {
6885            ffi::NM_SETTING_SERIAL_PARITY_NONE => Self::None,
6886            ffi::NM_SETTING_SERIAL_PARITY_EVEN => Self::Even,
6887            ffi::NM_SETTING_SERIAL_PARITY_ODD => Self::Odd,
6888            value => Self::__Unknown(value),
6889        }
6890    }
6891}
6892
6893impl StaticType for SettingSerialParity {
6894    #[inline]
6895    #[doc(alias = "nm_setting_serial_parity_get_type")]
6896    fn static_type() -> glib::Type {
6897        unsafe { from_glib(ffi::nm_setting_serial_parity_get_type()) }
6898    }
6899}
6900
6901impl glib::HasParamSpec for SettingSerialParity {
6902    type ParamSpec = glib::ParamSpecEnum;
6903    type SetValue = Self;
6904    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
6905
6906    fn param_spec_builder() -> Self::BuilderFn {
6907        Self::ParamSpec::builder_with_default
6908    }
6909}
6910
6911impl glib::value::ValueType for SettingSerialParity {
6912    type Type = Self;
6913}
6914
6915unsafe impl<'a> glib::value::FromValue<'a> for SettingSerialParity {
6916    type Checker = glib::value::GenericValueTypeChecker<Self>;
6917
6918    #[inline]
6919    unsafe fn from_value(value: &'a glib::Value) -> Self {
6920        skip_assert_initialized!();
6921        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
6922    }
6923}
6924
6925impl ToValue for SettingSerialParity {
6926    #[inline]
6927    fn to_value(&self) -> glib::Value {
6928        let mut value = glib::Value::for_value_type::<Self>();
6929        unsafe {
6930            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
6931        }
6932        value
6933    }
6934
6935    #[inline]
6936    fn value_type(&self) -> glib::Type {
6937        Self::static_type()
6938    }
6939}
6940
6941impl From<SettingSerialParity> for glib::Value {
6942    #[inline]
6943    fn from(v: SettingSerialParity) -> Self {
6944        skip_assert_initialized!();
6945        ToValue::to_value(&v)
6946    }
6947}
6948
6949/// #NMSettingTunMode values indicate the device type (TUN/TAP)
6950#[cfg(feature = "v1_2")]
6951#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
6952#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
6953#[non_exhaustive]
6954#[doc(alias = "NMSettingTunMode")]
6955pub enum SettingTunMode {
6956    /// an unknown device type
6957    #[doc(alias = "NM_SETTING_TUN_MODE_UNKNOWN")]
6958    Unknown,
6959    /// a TUN device
6960    #[doc(alias = "NM_SETTING_TUN_MODE_TUN")]
6961    Tun,
6962    /// a TAP device
6963    #[doc(alias = "NM_SETTING_TUN_MODE_TAP")]
6964    Tap,
6965    #[doc(hidden)]
6966    __Unknown(i32),
6967}
6968
6969#[cfg(feature = "v1_2")]
6970#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
6971#[doc(hidden)]
6972impl IntoGlib for SettingTunMode {
6973    type GlibType = ffi::NMSettingTunMode;
6974
6975    #[inline]
6976    fn into_glib(self) -> ffi::NMSettingTunMode {
6977        match self {
6978            Self::Unknown => ffi::NM_SETTING_TUN_MODE_UNKNOWN,
6979            Self::Tun => ffi::NM_SETTING_TUN_MODE_TUN,
6980            Self::Tap => ffi::NM_SETTING_TUN_MODE_TAP,
6981            Self::__Unknown(value) => value,
6982        }
6983    }
6984}
6985
6986#[cfg(feature = "v1_2")]
6987#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
6988#[doc(hidden)]
6989impl FromGlib<ffi::NMSettingTunMode> for SettingTunMode {
6990    #[inline]
6991    unsafe fn from_glib(value: ffi::NMSettingTunMode) -> Self {
6992        skip_assert_initialized!();
6993
6994        match value {
6995            ffi::NM_SETTING_TUN_MODE_UNKNOWN => Self::Unknown,
6996            ffi::NM_SETTING_TUN_MODE_TUN => Self::Tun,
6997            ffi::NM_SETTING_TUN_MODE_TAP => Self::Tap,
6998            value => Self::__Unknown(value),
6999        }
7000    }
7001}
7002
7003#[cfg(feature = "v1_2")]
7004#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
7005impl StaticType for SettingTunMode {
7006    #[inline]
7007    #[doc(alias = "nm_setting_tun_mode_get_type")]
7008    fn static_type() -> glib::Type {
7009        unsafe { from_glib(ffi::nm_setting_tun_mode_get_type()) }
7010    }
7011}
7012
7013#[cfg(feature = "v1_2")]
7014#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
7015impl glib::HasParamSpec for SettingTunMode {
7016    type ParamSpec = glib::ParamSpecEnum;
7017    type SetValue = Self;
7018    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
7019
7020    fn param_spec_builder() -> Self::BuilderFn {
7021        Self::ParamSpec::builder_with_default
7022    }
7023}
7024
7025#[cfg(feature = "v1_2")]
7026#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
7027impl glib::value::ValueType for SettingTunMode {
7028    type Type = Self;
7029}
7030
7031#[cfg(feature = "v1_2")]
7032#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
7033unsafe impl<'a> glib::value::FromValue<'a> for SettingTunMode {
7034    type Checker = glib::value::GenericValueTypeChecker<Self>;
7035
7036    #[inline]
7037    unsafe fn from_value(value: &'a glib::Value) -> Self {
7038        skip_assert_initialized!();
7039        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
7040    }
7041}
7042
7043#[cfg(feature = "v1_2")]
7044#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
7045impl ToValue for SettingTunMode {
7046    #[inline]
7047    fn to_value(&self) -> glib::Value {
7048        let mut value = glib::Value::for_value_type::<Self>();
7049        unsafe {
7050            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
7051        }
7052        value
7053    }
7054
7055    #[inline]
7056    fn value_type(&self) -> glib::Type {
7057        Self::static_type()
7058    }
7059}
7060
7061#[cfg(feature = "v1_2")]
7062#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
7063impl From<SettingTunMode> for glib::Value {
7064    #[inline]
7065    fn from(v: SettingTunMode) -> Self {
7066        skip_assert_initialized!();
7067        ToValue::to_value(&v)
7068    }
7069}
7070
7071/// Indicates the wireless channel width.
7072#[cfg(feature = "v1_50")]
7073#[cfg_attr(docsrs, doc(cfg(feature = "v1_50")))]
7074#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
7075#[non_exhaustive]
7076#[doc(alias = "NMSettingWirelessChannelWidth")]
7077pub enum SettingWirelessChannelWidth {
7078    /// automatically determine the width
7079    #[doc(alias = "NM_SETTING_WIRELESS_CHANNEL_WIDTH_AUTO")]
7080    Auto,
7081    /// use a 20MHz channel width
7082    #[doc(alias = "NM_SETTING_WIRELESS_CHANNEL_WIDTH_20MHZ")]
7083    _20mhz,
7084    /// use a 40MHz channel width
7085    #[doc(alias = "NM_SETTING_WIRELESS_CHANNEL_WIDTH_40MHZ")]
7086    _40mhz,
7087    /// use a 80MHz channel width
7088    #[doc(alias = "NM_SETTING_WIRELESS_CHANNEL_WIDTH_80MHZ")]
7089    _80mhz,
7090    #[doc(hidden)]
7091    __Unknown(i32),
7092}
7093
7094#[cfg(feature = "v1_50")]
7095#[cfg_attr(docsrs, doc(cfg(feature = "v1_50")))]
7096#[doc(hidden)]
7097impl IntoGlib for SettingWirelessChannelWidth {
7098    type GlibType = ffi::NMSettingWirelessChannelWidth;
7099
7100    #[inline]
7101    fn into_glib(self) -> ffi::NMSettingWirelessChannelWidth {
7102        match self {
7103            Self::Auto => ffi::NM_SETTING_WIRELESS_CHANNEL_WIDTH_AUTO,
7104            Self::_20mhz => ffi::NM_SETTING_WIRELESS_CHANNEL_WIDTH_20MHZ,
7105            Self::_40mhz => ffi::NM_SETTING_WIRELESS_CHANNEL_WIDTH_40MHZ,
7106            Self::_80mhz => ffi::NM_SETTING_WIRELESS_CHANNEL_WIDTH_80MHZ,
7107            Self::__Unknown(value) => value,
7108        }
7109    }
7110}
7111
7112#[cfg(feature = "v1_50")]
7113#[cfg_attr(docsrs, doc(cfg(feature = "v1_50")))]
7114#[doc(hidden)]
7115impl FromGlib<ffi::NMSettingWirelessChannelWidth> for SettingWirelessChannelWidth {
7116    #[inline]
7117    unsafe fn from_glib(value: ffi::NMSettingWirelessChannelWidth) -> Self {
7118        skip_assert_initialized!();
7119
7120        match value {
7121            ffi::NM_SETTING_WIRELESS_CHANNEL_WIDTH_AUTO => Self::Auto,
7122            ffi::NM_SETTING_WIRELESS_CHANNEL_WIDTH_20MHZ => Self::_20mhz,
7123            ffi::NM_SETTING_WIRELESS_CHANNEL_WIDTH_40MHZ => Self::_40mhz,
7124            ffi::NM_SETTING_WIRELESS_CHANNEL_WIDTH_80MHZ => Self::_80mhz,
7125            value => Self::__Unknown(value),
7126        }
7127    }
7128}
7129
7130#[cfg(feature = "v1_50")]
7131#[cfg_attr(docsrs, doc(cfg(feature = "v1_50")))]
7132impl StaticType for SettingWirelessChannelWidth {
7133    #[inline]
7134    #[doc(alias = "nm_setting_wireless_channel_width_get_type")]
7135    fn static_type() -> glib::Type {
7136        unsafe { from_glib(ffi::nm_setting_wireless_channel_width_get_type()) }
7137    }
7138}
7139
7140#[cfg(feature = "v1_50")]
7141#[cfg_attr(docsrs, doc(cfg(feature = "v1_50")))]
7142impl glib::HasParamSpec for SettingWirelessChannelWidth {
7143    type ParamSpec = glib::ParamSpecEnum;
7144    type SetValue = Self;
7145    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
7146
7147    fn param_spec_builder() -> Self::BuilderFn {
7148        Self::ParamSpec::builder_with_default
7149    }
7150}
7151
7152#[cfg(feature = "v1_50")]
7153#[cfg_attr(docsrs, doc(cfg(feature = "v1_50")))]
7154impl glib::value::ValueType for SettingWirelessChannelWidth {
7155    type Type = Self;
7156}
7157
7158#[cfg(feature = "v1_50")]
7159#[cfg_attr(docsrs, doc(cfg(feature = "v1_50")))]
7160unsafe impl<'a> glib::value::FromValue<'a> for SettingWirelessChannelWidth {
7161    type Checker = glib::value::GenericValueTypeChecker<Self>;
7162
7163    #[inline]
7164    unsafe fn from_value(value: &'a glib::Value) -> Self {
7165        skip_assert_initialized!();
7166        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
7167    }
7168}
7169
7170#[cfg(feature = "v1_50")]
7171#[cfg_attr(docsrs, doc(cfg(feature = "v1_50")))]
7172impl ToValue for SettingWirelessChannelWidth {
7173    #[inline]
7174    fn to_value(&self) -> glib::Value {
7175        let mut value = glib::Value::for_value_type::<Self>();
7176        unsafe {
7177            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
7178        }
7179        value
7180    }
7181
7182    #[inline]
7183    fn value_type(&self) -> glib::Type {
7184        Self::static_type()
7185    }
7186}
7187
7188#[cfg(feature = "v1_50")]
7189#[cfg_attr(docsrs, doc(cfg(feature = "v1_50")))]
7190impl From<SettingWirelessChannelWidth> for glib::Value {
7191    #[inline]
7192    fn from(v: SettingWirelessChannelWidth) -> Self {
7193        skip_assert_initialized!();
7194        ToValue::to_value(&v)
7195    }
7196}
7197
7198/// These flags indicate whether wireless powersave must be enabled.
7199#[cfg(feature = "v1_2")]
7200#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
7201#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
7202#[non_exhaustive]
7203#[doc(alias = "NMSettingWirelessPowersave")]
7204pub enum SettingWirelessPowersave {
7205    /// use the default value
7206    #[doc(alias = "NM_SETTING_WIRELESS_POWERSAVE_DEFAULT")]
7207    Default,
7208    /// don't touch existing setting
7209    #[doc(alias = "NM_SETTING_WIRELESS_POWERSAVE_IGNORE")]
7210    Ignore,
7211    /// disable powersave
7212    #[doc(alias = "NM_SETTING_WIRELESS_POWERSAVE_DISABLE")]
7213    Disable,
7214    /// enable powersave
7215    #[doc(alias = "NM_SETTING_WIRELESS_POWERSAVE_ENABLE")]
7216    Enable,
7217    #[doc(hidden)]
7218    __Unknown(i32),
7219}
7220
7221#[cfg(feature = "v1_2")]
7222#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
7223#[doc(hidden)]
7224impl IntoGlib for SettingWirelessPowersave {
7225    type GlibType = ffi::NMSettingWirelessPowersave;
7226
7227    #[inline]
7228    fn into_glib(self) -> ffi::NMSettingWirelessPowersave {
7229        match self {
7230            Self::Default => ffi::NM_SETTING_WIRELESS_POWERSAVE_DEFAULT,
7231            Self::Ignore => ffi::NM_SETTING_WIRELESS_POWERSAVE_IGNORE,
7232            Self::Disable => ffi::NM_SETTING_WIRELESS_POWERSAVE_DISABLE,
7233            Self::Enable => ffi::NM_SETTING_WIRELESS_POWERSAVE_ENABLE,
7234            Self::__Unknown(value) => value,
7235        }
7236    }
7237}
7238
7239#[cfg(feature = "v1_2")]
7240#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
7241#[doc(hidden)]
7242impl FromGlib<ffi::NMSettingWirelessPowersave> for SettingWirelessPowersave {
7243    #[inline]
7244    unsafe fn from_glib(value: ffi::NMSettingWirelessPowersave) -> Self {
7245        skip_assert_initialized!();
7246
7247        match value {
7248            ffi::NM_SETTING_WIRELESS_POWERSAVE_DEFAULT => Self::Default,
7249            ffi::NM_SETTING_WIRELESS_POWERSAVE_IGNORE => Self::Ignore,
7250            ffi::NM_SETTING_WIRELESS_POWERSAVE_DISABLE => Self::Disable,
7251            ffi::NM_SETTING_WIRELESS_POWERSAVE_ENABLE => Self::Enable,
7252            value => Self::__Unknown(value),
7253        }
7254    }
7255}
7256
7257#[cfg(feature = "v1_2")]
7258#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
7259impl StaticType for SettingWirelessPowersave {
7260    #[inline]
7261    #[doc(alias = "nm_setting_wireless_powersave_get_type")]
7262    fn static_type() -> glib::Type {
7263        unsafe { from_glib(ffi::nm_setting_wireless_powersave_get_type()) }
7264    }
7265}
7266
7267#[cfg(feature = "v1_2")]
7268#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
7269impl glib::HasParamSpec for SettingWirelessPowersave {
7270    type ParamSpec = glib::ParamSpecEnum;
7271    type SetValue = Self;
7272    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
7273
7274    fn param_spec_builder() -> Self::BuilderFn {
7275        Self::ParamSpec::builder_with_default
7276    }
7277}
7278
7279#[cfg(feature = "v1_2")]
7280#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
7281impl glib::value::ValueType for SettingWirelessPowersave {
7282    type Type = Self;
7283}
7284
7285#[cfg(feature = "v1_2")]
7286#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
7287unsafe impl<'a> glib::value::FromValue<'a> for SettingWirelessPowersave {
7288    type Checker = glib::value::GenericValueTypeChecker<Self>;
7289
7290    #[inline]
7291    unsafe fn from_value(value: &'a glib::Value) -> Self {
7292        skip_assert_initialized!();
7293        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
7294    }
7295}
7296
7297#[cfg(feature = "v1_2")]
7298#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
7299impl ToValue for SettingWirelessPowersave {
7300    #[inline]
7301    fn to_value(&self) -> glib::Value {
7302        let mut value = glib::Value::for_value_type::<Self>();
7303        unsafe {
7304            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
7305        }
7306        value
7307    }
7308
7309    #[inline]
7310    fn value_type(&self) -> glib::Type {
7311        Self::static_type()
7312    }
7313}
7314
7315#[cfg(feature = "v1_2")]
7316#[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
7317impl From<SettingWirelessPowersave> for glib::Value {
7318    #[inline]
7319    fn from(v: SettingWirelessPowersave) -> Self {
7320        skip_assert_initialized!();
7321        ToValue::to_value(&v)
7322    }
7323}
7324
7325/// These flags indicate whether FILS must be enabled.
7326#[cfg(feature = "v1_12")]
7327#[cfg_attr(docsrs, doc(cfg(feature = "v1_12")))]
7328#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
7329#[non_exhaustive]
7330#[doc(alias = "NMSettingWirelessSecurityFils")]
7331pub enum SettingWirelessSecurityFils {
7332    /// use the default value
7333    #[doc(alias = "NM_SETTING_WIRELESS_SECURITY_FILS_DEFAULT")]
7334    Default,
7335    /// disable FILS
7336    #[doc(alias = "NM_SETTING_WIRELESS_SECURITY_FILS_DISABLE")]
7337    Disable,
7338    /// enable FILS if the supplicant and the AP support it
7339    #[doc(alias = "NM_SETTING_WIRELESS_SECURITY_FILS_OPTIONAL")]
7340    Optional,
7341    /// require FILS and fail if not available
7342    #[doc(alias = "NM_SETTING_WIRELESS_SECURITY_FILS_REQUIRED")]
7343    Required,
7344    #[doc(hidden)]
7345    __Unknown(i32),
7346}
7347
7348#[cfg(feature = "v1_12")]
7349#[cfg_attr(docsrs, doc(cfg(feature = "v1_12")))]
7350#[doc(hidden)]
7351impl IntoGlib for SettingWirelessSecurityFils {
7352    type GlibType = ffi::NMSettingWirelessSecurityFils;
7353
7354    #[inline]
7355    fn into_glib(self) -> ffi::NMSettingWirelessSecurityFils {
7356        match self {
7357            Self::Default => ffi::NM_SETTING_WIRELESS_SECURITY_FILS_DEFAULT,
7358            Self::Disable => ffi::NM_SETTING_WIRELESS_SECURITY_FILS_DISABLE,
7359            Self::Optional => ffi::NM_SETTING_WIRELESS_SECURITY_FILS_OPTIONAL,
7360            Self::Required => ffi::NM_SETTING_WIRELESS_SECURITY_FILS_REQUIRED,
7361            Self::__Unknown(value) => value,
7362        }
7363    }
7364}
7365
7366#[cfg(feature = "v1_12")]
7367#[cfg_attr(docsrs, doc(cfg(feature = "v1_12")))]
7368#[doc(hidden)]
7369impl FromGlib<ffi::NMSettingWirelessSecurityFils> for SettingWirelessSecurityFils {
7370    #[inline]
7371    unsafe fn from_glib(value: ffi::NMSettingWirelessSecurityFils) -> Self {
7372        skip_assert_initialized!();
7373
7374        match value {
7375            ffi::NM_SETTING_WIRELESS_SECURITY_FILS_DEFAULT => Self::Default,
7376            ffi::NM_SETTING_WIRELESS_SECURITY_FILS_DISABLE => Self::Disable,
7377            ffi::NM_SETTING_WIRELESS_SECURITY_FILS_OPTIONAL => Self::Optional,
7378            ffi::NM_SETTING_WIRELESS_SECURITY_FILS_REQUIRED => Self::Required,
7379            value => Self::__Unknown(value),
7380        }
7381    }
7382}
7383
7384#[cfg(feature = "v1_12")]
7385#[cfg_attr(docsrs, doc(cfg(feature = "v1_12")))]
7386impl StaticType for SettingWirelessSecurityFils {
7387    #[inline]
7388    #[doc(alias = "nm_setting_wireless_security_fils_get_type")]
7389    fn static_type() -> glib::Type {
7390        unsafe { from_glib(ffi::nm_setting_wireless_security_fils_get_type()) }
7391    }
7392}
7393
7394#[cfg(feature = "v1_12")]
7395#[cfg_attr(docsrs, doc(cfg(feature = "v1_12")))]
7396impl glib::HasParamSpec for SettingWirelessSecurityFils {
7397    type ParamSpec = glib::ParamSpecEnum;
7398    type SetValue = Self;
7399    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
7400
7401    fn param_spec_builder() -> Self::BuilderFn {
7402        Self::ParamSpec::builder_with_default
7403    }
7404}
7405
7406#[cfg(feature = "v1_12")]
7407#[cfg_attr(docsrs, doc(cfg(feature = "v1_12")))]
7408impl glib::value::ValueType for SettingWirelessSecurityFils {
7409    type Type = Self;
7410}
7411
7412#[cfg(feature = "v1_12")]
7413#[cfg_attr(docsrs, doc(cfg(feature = "v1_12")))]
7414unsafe impl<'a> glib::value::FromValue<'a> for SettingWirelessSecurityFils {
7415    type Checker = glib::value::GenericValueTypeChecker<Self>;
7416
7417    #[inline]
7418    unsafe fn from_value(value: &'a glib::Value) -> Self {
7419        skip_assert_initialized!();
7420        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
7421    }
7422}
7423
7424#[cfg(feature = "v1_12")]
7425#[cfg_attr(docsrs, doc(cfg(feature = "v1_12")))]
7426impl ToValue for SettingWirelessSecurityFils {
7427    #[inline]
7428    fn to_value(&self) -> glib::Value {
7429        let mut value = glib::Value::for_value_type::<Self>();
7430        unsafe {
7431            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
7432        }
7433        value
7434    }
7435
7436    #[inline]
7437    fn value_type(&self) -> glib::Type {
7438        Self::static_type()
7439    }
7440}
7441
7442#[cfg(feature = "v1_12")]
7443#[cfg_attr(docsrs, doc(cfg(feature = "v1_12")))]
7444impl From<SettingWirelessSecurityFils> for glib::Value {
7445    #[inline]
7446    fn from(v: SettingWirelessSecurityFils) -> Self {
7447        skip_assert_initialized!();
7448        ToValue::to_value(&v)
7449    }
7450}
7451
7452/// These flags indicate whether PMF must be enabled.
7453#[cfg(feature = "v1_10")]
7454#[cfg_attr(docsrs, doc(cfg(feature = "v1_10")))]
7455#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
7456#[non_exhaustive]
7457#[doc(alias = "NMSettingWirelessSecurityPmf")]
7458pub enum SettingWirelessSecurityPmf {
7459    /// use the default value
7460    #[doc(alias = "NM_SETTING_WIRELESS_SECURITY_PMF_DEFAULT")]
7461    Default,
7462    /// disable PMF
7463    #[doc(alias = "NM_SETTING_WIRELESS_SECURITY_PMF_DISABLE")]
7464    Disable,
7465    /// enable PMF if the supplicant and the AP support it
7466    #[doc(alias = "NM_SETTING_WIRELESS_SECURITY_PMF_OPTIONAL")]
7467    Optional,
7468    /// require PMF and fail if not available
7469    #[doc(alias = "NM_SETTING_WIRELESS_SECURITY_PMF_REQUIRED")]
7470    Required,
7471    #[doc(hidden)]
7472    __Unknown(i32),
7473}
7474
7475#[cfg(feature = "v1_10")]
7476#[cfg_attr(docsrs, doc(cfg(feature = "v1_10")))]
7477#[doc(hidden)]
7478impl IntoGlib for SettingWirelessSecurityPmf {
7479    type GlibType = ffi::NMSettingWirelessSecurityPmf;
7480
7481    #[inline]
7482    fn into_glib(self) -> ffi::NMSettingWirelessSecurityPmf {
7483        match self {
7484            Self::Default => ffi::NM_SETTING_WIRELESS_SECURITY_PMF_DEFAULT,
7485            Self::Disable => ffi::NM_SETTING_WIRELESS_SECURITY_PMF_DISABLE,
7486            Self::Optional => ffi::NM_SETTING_WIRELESS_SECURITY_PMF_OPTIONAL,
7487            Self::Required => ffi::NM_SETTING_WIRELESS_SECURITY_PMF_REQUIRED,
7488            Self::__Unknown(value) => value,
7489        }
7490    }
7491}
7492
7493#[cfg(feature = "v1_10")]
7494#[cfg_attr(docsrs, doc(cfg(feature = "v1_10")))]
7495#[doc(hidden)]
7496impl FromGlib<ffi::NMSettingWirelessSecurityPmf> for SettingWirelessSecurityPmf {
7497    #[inline]
7498    unsafe fn from_glib(value: ffi::NMSettingWirelessSecurityPmf) -> Self {
7499        skip_assert_initialized!();
7500
7501        match value {
7502            ffi::NM_SETTING_WIRELESS_SECURITY_PMF_DEFAULT => Self::Default,
7503            ffi::NM_SETTING_WIRELESS_SECURITY_PMF_DISABLE => Self::Disable,
7504            ffi::NM_SETTING_WIRELESS_SECURITY_PMF_OPTIONAL => Self::Optional,
7505            ffi::NM_SETTING_WIRELESS_SECURITY_PMF_REQUIRED => Self::Required,
7506            value => Self::__Unknown(value),
7507        }
7508    }
7509}
7510
7511#[cfg(feature = "v1_10")]
7512#[cfg_attr(docsrs, doc(cfg(feature = "v1_10")))]
7513impl StaticType for SettingWirelessSecurityPmf {
7514    #[inline]
7515    #[doc(alias = "nm_setting_wireless_security_pmf_get_type")]
7516    fn static_type() -> glib::Type {
7517        unsafe { from_glib(ffi::nm_setting_wireless_security_pmf_get_type()) }
7518    }
7519}
7520
7521#[cfg(feature = "v1_10")]
7522#[cfg_attr(docsrs, doc(cfg(feature = "v1_10")))]
7523impl glib::HasParamSpec for SettingWirelessSecurityPmf {
7524    type ParamSpec = glib::ParamSpecEnum;
7525    type SetValue = Self;
7526    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
7527
7528    fn param_spec_builder() -> Self::BuilderFn {
7529        Self::ParamSpec::builder_with_default
7530    }
7531}
7532
7533#[cfg(feature = "v1_10")]
7534#[cfg_attr(docsrs, doc(cfg(feature = "v1_10")))]
7535impl glib::value::ValueType for SettingWirelessSecurityPmf {
7536    type Type = Self;
7537}
7538
7539#[cfg(feature = "v1_10")]
7540#[cfg_attr(docsrs, doc(cfg(feature = "v1_10")))]
7541unsafe impl<'a> glib::value::FromValue<'a> for SettingWirelessSecurityPmf {
7542    type Checker = glib::value::GenericValueTypeChecker<Self>;
7543
7544    #[inline]
7545    unsafe fn from_value(value: &'a glib::Value) -> Self {
7546        skip_assert_initialized!();
7547        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
7548    }
7549}
7550
7551#[cfg(feature = "v1_10")]
7552#[cfg_attr(docsrs, doc(cfg(feature = "v1_10")))]
7553impl ToValue for SettingWirelessSecurityPmf {
7554    #[inline]
7555    fn to_value(&self) -> glib::Value {
7556        let mut value = glib::Value::for_value_type::<Self>();
7557        unsafe {
7558            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
7559        }
7560        value
7561    }
7562
7563    #[inline]
7564    fn value_type(&self) -> glib::Type {
7565        Self::static_type()
7566    }
7567}
7568
7569#[cfg(feature = "v1_10")]
7570#[cfg_attr(docsrs, doc(cfg(feature = "v1_10")))]
7571impl From<SettingWirelessSecurityPmf> for glib::Value {
7572    #[inline]
7573    fn from(v: SettingWirelessSecurityPmf) -> Self {
7574        skip_assert_initialized!();
7575        ToValue::to_value(&v)
7576    }
7577}
7578
7579/// Errors related to the settings/persistent configuration interface of
7580/// NetworkManager.
7581///
7582/// These may be returned from #NMClient methods that invoke D-Bus operations on
7583/// the "org.freedesktop.NetworkManager.Settings" interface, and correspond to
7584/// D-Bus errors in that namespace.
7585#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
7586#[non_exhaustive]
7587#[doc(alias = "NMSettingsError")]
7588pub enum SettingsError {
7589    /// unknown or unclassified error
7590    #[doc(alias = "NM_SETTINGS_ERROR_FAILED")]
7591    Failed,
7592    /// permission denied
7593    #[doc(alias = "NM_SETTINGS_ERROR_PERMISSION_DENIED")]
7594    PermissionDenied,
7595    /// the requested operation is not supported by any
7596    ///   active settings backend
7597    #[doc(alias = "NM_SETTINGS_ERROR_NOT_SUPPORTED")]
7598    NotSupported,
7599    /// the connection was invalid
7600    #[doc(alias = "NM_SETTINGS_ERROR_INVALID_CONNECTION")]
7601    InvalidConnection,
7602    /// attempted to modify a read-only connection
7603    #[doc(alias = "NM_SETTINGS_ERROR_READ_ONLY_CONNECTION")]
7604    ReadOnlyConnection,
7605    /// a connection with that UUID already exists
7606    #[doc(alias = "NM_SETTINGS_ERROR_UUID_EXISTS")]
7607    UuidExists,
7608    /// attempted to set an invalid hostname
7609    #[doc(alias = "NM_SETTINGS_ERROR_INVALID_HOSTNAME")]
7610    InvalidHostname,
7611    /// invalid arguments
7612    #[doc(alias = "NM_SETTINGS_ERROR_INVALID_ARGUMENTS")]
7613    InvalidArguments,
7614    /// The profile's VersionId mismatched
7615    ///   and the update is rejected. See the "version-id" argument to Update2()
7616    ///   method. Since 1.44.
7617    #[doc(alias = "NM_SETTINGS_ERROR_VERSION_ID_MISMATCH")]
7618    VersionIdMismatch,
7619    /// the requested operation is not
7620    ///   supported by the settings plugin currently in use for the specified object.
7621    ///   Since: 1.44.
7622    #[doc(alias = "NM_SETTINGS_ERROR_NOT_SUPPORTED_BY_PLUGIN")]
7623    NotSupportedByPlugin,
7624    #[doc(hidden)]
7625    __Unknown(i32),
7626}
7627
7628#[doc(hidden)]
7629impl IntoGlib for SettingsError {
7630    type GlibType = ffi::NMSettingsError;
7631
7632    #[inline]
7633    fn into_glib(self) -> ffi::NMSettingsError {
7634        match self {
7635            Self::Failed => ffi::NM_SETTINGS_ERROR_FAILED,
7636            Self::PermissionDenied => ffi::NM_SETTINGS_ERROR_PERMISSION_DENIED,
7637            Self::NotSupported => ffi::NM_SETTINGS_ERROR_NOT_SUPPORTED,
7638            Self::InvalidConnection => ffi::NM_SETTINGS_ERROR_INVALID_CONNECTION,
7639            Self::ReadOnlyConnection => ffi::NM_SETTINGS_ERROR_READ_ONLY_CONNECTION,
7640            Self::UuidExists => ffi::NM_SETTINGS_ERROR_UUID_EXISTS,
7641            Self::InvalidHostname => ffi::NM_SETTINGS_ERROR_INVALID_HOSTNAME,
7642            Self::InvalidArguments => ffi::NM_SETTINGS_ERROR_INVALID_ARGUMENTS,
7643            Self::VersionIdMismatch => ffi::NM_SETTINGS_ERROR_VERSION_ID_MISMATCH,
7644            Self::NotSupportedByPlugin => ffi::NM_SETTINGS_ERROR_NOT_SUPPORTED_BY_PLUGIN,
7645            Self::__Unknown(value) => value,
7646        }
7647    }
7648}
7649
7650#[doc(hidden)]
7651impl FromGlib<ffi::NMSettingsError> for SettingsError {
7652    #[inline]
7653    unsafe fn from_glib(value: ffi::NMSettingsError) -> Self {
7654        skip_assert_initialized!();
7655
7656        match value {
7657            ffi::NM_SETTINGS_ERROR_FAILED => Self::Failed,
7658            ffi::NM_SETTINGS_ERROR_PERMISSION_DENIED => Self::PermissionDenied,
7659            ffi::NM_SETTINGS_ERROR_NOT_SUPPORTED => Self::NotSupported,
7660            ffi::NM_SETTINGS_ERROR_INVALID_CONNECTION => Self::InvalidConnection,
7661            ffi::NM_SETTINGS_ERROR_READ_ONLY_CONNECTION => Self::ReadOnlyConnection,
7662            ffi::NM_SETTINGS_ERROR_UUID_EXISTS => Self::UuidExists,
7663            ffi::NM_SETTINGS_ERROR_INVALID_HOSTNAME => Self::InvalidHostname,
7664            ffi::NM_SETTINGS_ERROR_INVALID_ARGUMENTS => Self::InvalidArguments,
7665            ffi::NM_SETTINGS_ERROR_VERSION_ID_MISMATCH => Self::VersionIdMismatch,
7666            ffi::NM_SETTINGS_ERROR_NOT_SUPPORTED_BY_PLUGIN => Self::NotSupportedByPlugin,
7667            value => Self::__Unknown(value),
7668        }
7669    }
7670}
7671
7672impl glib::error::ErrorDomain for SettingsError {
7673    #[inline]
7674    fn domain() -> glib::Quark {
7675        skip_assert_initialized!();
7676
7677        unsafe { from_glib(ffi::nm_settings_error_quark()) }
7678    }
7679
7680    #[inline]
7681    fn code(self) -> i32 {
7682        self.into_glib()
7683    }
7684
7685    #[inline]
7686    #[allow(clippy::match_single_binding)]
7687    fn from(code: i32) -> Option<Self> {
7688        skip_assert_initialized!();
7689        match unsafe { from_glib(code) } {
7690            Self::__Unknown(_) => Some(Self::Failed),
7691            value => Some(value),
7692        }
7693    }
7694}
7695
7696impl StaticType for SettingsError {
7697    #[inline]
7698    #[doc(alias = "nm_settings_error_get_type")]
7699    fn static_type() -> glib::Type {
7700        unsafe { from_glib(ffi::nm_settings_error_get_type()) }
7701    }
7702}
7703
7704impl glib::HasParamSpec for SettingsError {
7705    type ParamSpec = glib::ParamSpecEnum;
7706    type SetValue = Self;
7707    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
7708
7709    fn param_spec_builder() -> Self::BuilderFn {
7710        Self::ParamSpec::builder_with_default
7711    }
7712}
7713
7714impl glib::value::ValueType for SettingsError {
7715    type Type = Self;
7716}
7717
7718unsafe impl<'a> glib::value::FromValue<'a> for SettingsError {
7719    type Checker = glib::value::GenericValueTypeChecker<Self>;
7720
7721    #[inline]
7722    unsafe fn from_value(value: &'a glib::Value) -> Self {
7723        skip_assert_initialized!();
7724        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
7725    }
7726}
7727
7728impl ToValue for SettingsError {
7729    #[inline]
7730    fn to_value(&self) -> glib::Value {
7731        let mut value = glib::Value::for_value_type::<Self>();
7732        unsafe {
7733            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
7734        }
7735        value
7736    }
7737
7738    #[inline]
7739    fn value_type(&self) -> glib::Type {
7740        Self::static_type()
7741    }
7742}
7743
7744impl From<SettingsError> for glib::Value {
7745    #[inline]
7746    fn from(v: SettingsError) -> Self {
7747        skip_assert_initialized!();
7748        ToValue::to_value(&v)
7749    }
7750}
7751
7752#[cfg(feature = "v1_46")]
7753#[cfg_attr(docsrs, doc(cfg(feature = "v1_46")))]
7754#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
7755#[non_exhaustive]
7756#[doc(alias = "NMSriovEswitchEncapMode")]
7757pub enum SriovEswitchEncapMode {
7758    /// don't modify current encap-mode
7759    #[doc(alias = "NM_SRIOV_ESWITCH_ENCAP_MODE_PRESERVE")]
7760    Preserve,
7761    /// disable encapsulation mode
7762    #[doc(alias = "NM_SRIOV_ESWITCH_ENCAP_MODE_NONE")]
7763    None,
7764    /// enable encapsulation mode
7765    #[doc(alias = "NM_SRIOV_ESWITCH_ENCAP_MODE_BASIC")]
7766    Basic,
7767    #[doc(hidden)]
7768    __Unknown(i32),
7769}
7770
7771#[cfg(feature = "v1_46")]
7772#[cfg_attr(docsrs, doc(cfg(feature = "v1_46")))]
7773#[doc(hidden)]
7774impl IntoGlib for SriovEswitchEncapMode {
7775    type GlibType = ffi::NMSriovEswitchEncapMode;
7776
7777    #[inline]
7778    fn into_glib(self) -> ffi::NMSriovEswitchEncapMode {
7779        match self {
7780            Self::Preserve => ffi::NM_SRIOV_ESWITCH_ENCAP_MODE_PRESERVE,
7781            Self::None => ffi::NM_SRIOV_ESWITCH_ENCAP_MODE_NONE,
7782            Self::Basic => ffi::NM_SRIOV_ESWITCH_ENCAP_MODE_BASIC,
7783            Self::__Unknown(value) => value,
7784        }
7785    }
7786}
7787
7788#[cfg(feature = "v1_46")]
7789#[cfg_attr(docsrs, doc(cfg(feature = "v1_46")))]
7790#[doc(hidden)]
7791impl FromGlib<ffi::NMSriovEswitchEncapMode> for SriovEswitchEncapMode {
7792    #[inline]
7793    unsafe fn from_glib(value: ffi::NMSriovEswitchEncapMode) -> Self {
7794        skip_assert_initialized!();
7795
7796        match value {
7797            ffi::NM_SRIOV_ESWITCH_ENCAP_MODE_PRESERVE => Self::Preserve,
7798            ffi::NM_SRIOV_ESWITCH_ENCAP_MODE_NONE => Self::None,
7799            ffi::NM_SRIOV_ESWITCH_ENCAP_MODE_BASIC => Self::Basic,
7800            value => Self::__Unknown(value),
7801        }
7802    }
7803}
7804
7805#[cfg(feature = "v1_46")]
7806#[cfg_attr(docsrs, doc(cfg(feature = "v1_46")))]
7807impl StaticType for SriovEswitchEncapMode {
7808    #[inline]
7809    #[doc(alias = "nm_sriov_eswitch_encap_mode_get_type")]
7810    fn static_type() -> glib::Type {
7811        unsafe { from_glib(ffi::nm_sriov_eswitch_encap_mode_get_type()) }
7812    }
7813}
7814
7815#[cfg(feature = "v1_46")]
7816#[cfg_attr(docsrs, doc(cfg(feature = "v1_46")))]
7817impl glib::HasParamSpec for SriovEswitchEncapMode {
7818    type ParamSpec = glib::ParamSpecEnum;
7819    type SetValue = Self;
7820    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
7821
7822    fn param_spec_builder() -> Self::BuilderFn {
7823        Self::ParamSpec::builder_with_default
7824    }
7825}
7826
7827#[cfg(feature = "v1_46")]
7828#[cfg_attr(docsrs, doc(cfg(feature = "v1_46")))]
7829impl glib::value::ValueType for SriovEswitchEncapMode {
7830    type Type = Self;
7831}
7832
7833#[cfg(feature = "v1_46")]
7834#[cfg_attr(docsrs, doc(cfg(feature = "v1_46")))]
7835unsafe impl<'a> glib::value::FromValue<'a> for SriovEswitchEncapMode {
7836    type Checker = glib::value::GenericValueTypeChecker<Self>;
7837
7838    #[inline]
7839    unsafe fn from_value(value: &'a glib::Value) -> Self {
7840        skip_assert_initialized!();
7841        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
7842    }
7843}
7844
7845#[cfg(feature = "v1_46")]
7846#[cfg_attr(docsrs, doc(cfg(feature = "v1_46")))]
7847impl ToValue for SriovEswitchEncapMode {
7848    #[inline]
7849    fn to_value(&self) -> glib::Value {
7850        let mut value = glib::Value::for_value_type::<Self>();
7851        unsafe {
7852            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
7853        }
7854        value
7855    }
7856
7857    #[inline]
7858    fn value_type(&self) -> glib::Type {
7859        Self::static_type()
7860    }
7861}
7862
7863#[cfg(feature = "v1_46")]
7864#[cfg_attr(docsrs, doc(cfg(feature = "v1_46")))]
7865impl From<SriovEswitchEncapMode> for glib::Value {
7866    #[inline]
7867    fn from(v: SriovEswitchEncapMode) -> Self {
7868        skip_assert_initialized!();
7869        ToValue::to_value(&v)
7870    }
7871}
7872
7873#[cfg(feature = "v1_46")]
7874#[cfg_attr(docsrs, doc(cfg(feature = "v1_46")))]
7875#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
7876#[non_exhaustive]
7877#[doc(alias = "NMSriovEswitchInlineMode")]
7878pub enum SriovEswitchInlineMode {
7879    /// don't modify current inline-mode
7880    #[doc(alias = "NM_SRIOV_ESWITCH_INLINE_MODE_PRESERVE")]
7881    Preserve,
7882    /// don't use inline mode
7883    #[doc(alias = "NM_SRIOV_ESWITCH_INLINE_MODE_NONE")]
7884    None,
7885    /// L2 mode
7886    #[doc(alias = "NM_SRIOV_ESWITCH_INLINE_MODE_LINK")]
7887    Link,
7888    /// L3 mode
7889    #[doc(alias = "NM_SRIOV_ESWITCH_INLINE_MODE_NETWORK")]
7890    Network,
7891    /// L4 mode
7892    #[doc(alias = "NM_SRIOV_ESWITCH_INLINE_MODE_TRANSPORT")]
7893    Transport,
7894    #[doc(hidden)]
7895    __Unknown(i32),
7896}
7897
7898#[cfg(feature = "v1_46")]
7899#[cfg_attr(docsrs, doc(cfg(feature = "v1_46")))]
7900#[doc(hidden)]
7901impl IntoGlib for SriovEswitchInlineMode {
7902    type GlibType = ffi::NMSriovEswitchInlineMode;
7903
7904    #[inline]
7905    fn into_glib(self) -> ffi::NMSriovEswitchInlineMode {
7906        match self {
7907            Self::Preserve => ffi::NM_SRIOV_ESWITCH_INLINE_MODE_PRESERVE,
7908            Self::None => ffi::NM_SRIOV_ESWITCH_INLINE_MODE_NONE,
7909            Self::Link => ffi::NM_SRIOV_ESWITCH_INLINE_MODE_LINK,
7910            Self::Network => ffi::NM_SRIOV_ESWITCH_INLINE_MODE_NETWORK,
7911            Self::Transport => ffi::NM_SRIOV_ESWITCH_INLINE_MODE_TRANSPORT,
7912            Self::__Unknown(value) => value,
7913        }
7914    }
7915}
7916
7917#[cfg(feature = "v1_46")]
7918#[cfg_attr(docsrs, doc(cfg(feature = "v1_46")))]
7919#[doc(hidden)]
7920impl FromGlib<ffi::NMSriovEswitchInlineMode> for SriovEswitchInlineMode {
7921    #[inline]
7922    unsafe fn from_glib(value: ffi::NMSriovEswitchInlineMode) -> Self {
7923        skip_assert_initialized!();
7924
7925        match value {
7926            ffi::NM_SRIOV_ESWITCH_INLINE_MODE_PRESERVE => Self::Preserve,
7927            ffi::NM_SRIOV_ESWITCH_INLINE_MODE_NONE => Self::None,
7928            ffi::NM_SRIOV_ESWITCH_INLINE_MODE_LINK => Self::Link,
7929            ffi::NM_SRIOV_ESWITCH_INLINE_MODE_NETWORK => Self::Network,
7930            ffi::NM_SRIOV_ESWITCH_INLINE_MODE_TRANSPORT => Self::Transport,
7931            value => Self::__Unknown(value),
7932        }
7933    }
7934}
7935
7936#[cfg(feature = "v1_46")]
7937#[cfg_attr(docsrs, doc(cfg(feature = "v1_46")))]
7938impl StaticType for SriovEswitchInlineMode {
7939    #[inline]
7940    #[doc(alias = "nm_sriov_eswitch_inline_mode_get_type")]
7941    fn static_type() -> glib::Type {
7942        unsafe { from_glib(ffi::nm_sriov_eswitch_inline_mode_get_type()) }
7943    }
7944}
7945
7946#[cfg(feature = "v1_46")]
7947#[cfg_attr(docsrs, doc(cfg(feature = "v1_46")))]
7948impl glib::HasParamSpec for SriovEswitchInlineMode {
7949    type ParamSpec = glib::ParamSpecEnum;
7950    type SetValue = Self;
7951    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
7952
7953    fn param_spec_builder() -> Self::BuilderFn {
7954        Self::ParamSpec::builder_with_default
7955    }
7956}
7957
7958#[cfg(feature = "v1_46")]
7959#[cfg_attr(docsrs, doc(cfg(feature = "v1_46")))]
7960impl glib::value::ValueType for SriovEswitchInlineMode {
7961    type Type = Self;
7962}
7963
7964#[cfg(feature = "v1_46")]
7965#[cfg_attr(docsrs, doc(cfg(feature = "v1_46")))]
7966unsafe impl<'a> glib::value::FromValue<'a> for SriovEswitchInlineMode {
7967    type Checker = glib::value::GenericValueTypeChecker<Self>;
7968
7969    #[inline]
7970    unsafe fn from_value(value: &'a glib::Value) -> Self {
7971        skip_assert_initialized!();
7972        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
7973    }
7974}
7975
7976#[cfg(feature = "v1_46")]
7977#[cfg_attr(docsrs, doc(cfg(feature = "v1_46")))]
7978impl ToValue for SriovEswitchInlineMode {
7979    #[inline]
7980    fn to_value(&self) -> glib::Value {
7981        let mut value = glib::Value::for_value_type::<Self>();
7982        unsafe {
7983            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
7984        }
7985        value
7986    }
7987
7988    #[inline]
7989    fn value_type(&self) -> glib::Type {
7990        Self::static_type()
7991    }
7992}
7993
7994#[cfg(feature = "v1_46")]
7995#[cfg_attr(docsrs, doc(cfg(feature = "v1_46")))]
7996impl From<SriovEswitchInlineMode> for glib::Value {
7997    #[inline]
7998    fn from(v: SriovEswitchInlineMode) -> Self {
7999        skip_assert_initialized!();
8000        ToValue::to_value(&v)
8001    }
8002}
8003
8004#[cfg(feature = "v1_46")]
8005#[cfg_attr(docsrs, doc(cfg(feature = "v1_46")))]
8006#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
8007#[non_exhaustive]
8008#[doc(alias = "NMSriovEswitchMode")]
8009pub enum SriovEswitchMode {
8010    /// don't modify current eswitch mode
8011    #[doc(alias = "NM_SRIOV_ESWITCH_MODE_PRESERVE")]
8012    Preserve,
8013    /// use legacy SRIOV
8014    #[doc(alias = "NM_SRIOV_ESWITCH_MODE_LEGACY")]
8015    Legacy,
8016    /// use switchdev mode
8017    #[doc(alias = "NM_SRIOV_ESWITCH_MODE_SWITCHDEV")]
8018    Switchdev,
8019    #[doc(hidden)]
8020    __Unknown(i32),
8021}
8022
8023#[cfg(feature = "v1_46")]
8024#[cfg_attr(docsrs, doc(cfg(feature = "v1_46")))]
8025#[doc(hidden)]
8026impl IntoGlib for SriovEswitchMode {
8027    type GlibType = ffi::NMSriovEswitchMode;
8028
8029    #[inline]
8030    fn into_glib(self) -> ffi::NMSriovEswitchMode {
8031        match self {
8032            Self::Preserve => ffi::NM_SRIOV_ESWITCH_MODE_PRESERVE,
8033            Self::Legacy => ffi::NM_SRIOV_ESWITCH_MODE_LEGACY,
8034            Self::Switchdev => ffi::NM_SRIOV_ESWITCH_MODE_SWITCHDEV,
8035            Self::__Unknown(value) => value,
8036        }
8037    }
8038}
8039
8040#[cfg(feature = "v1_46")]
8041#[cfg_attr(docsrs, doc(cfg(feature = "v1_46")))]
8042#[doc(hidden)]
8043impl FromGlib<ffi::NMSriovEswitchMode> for SriovEswitchMode {
8044    #[inline]
8045    unsafe fn from_glib(value: ffi::NMSriovEswitchMode) -> Self {
8046        skip_assert_initialized!();
8047
8048        match value {
8049            ffi::NM_SRIOV_ESWITCH_MODE_PRESERVE => Self::Preserve,
8050            ffi::NM_SRIOV_ESWITCH_MODE_LEGACY => Self::Legacy,
8051            ffi::NM_SRIOV_ESWITCH_MODE_SWITCHDEV => Self::Switchdev,
8052            value => Self::__Unknown(value),
8053        }
8054    }
8055}
8056
8057#[cfg(feature = "v1_46")]
8058#[cfg_attr(docsrs, doc(cfg(feature = "v1_46")))]
8059impl StaticType for SriovEswitchMode {
8060    #[inline]
8061    #[doc(alias = "nm_sriov_eswitch_mode_get_type")]
8062    fn static_type() -> glib::Type {
8063        unsafe { from_glib(ffi::nm_sriov_eswitch_mode_get_type()) }
8064    }
8065}
8066
8067#[cfg(feature = "v1_46")]
8068#[cfg_attr(docsrs, doc(cfg(feature = "v1_46")))]
8069impl glib::HasParamSpec for SriovEswitchMode {
8070    type ParamSpec = glib::ParamSpecEnum;
8071    type SetValue = Self;
8072    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
8073
8074    fn param_spec_builder() -> Self::BuilderFn {
8075        Self::ParamSpec::builder_with_default
8076    }
8077}
8078
8079#[cfg(feature = "v1_46")]
8080#[cfg_attr(docsrs, doc(cfg(feature = "v1_46")))]
8081impl glib::value::ValueType for SriovEswitchMode {
8082    type Type = Self;
8083}
8084
8085#[cfg(feature = "v1_46")]
8086#[cfg_attr(docsrs, doc(cfg(feature = "v1_46")))]
8087unsafe impl<'a> glib::value::FromValue<'a> for SriovEswitchMode {
8088    type Checker = glib::value::GenericValueTypeChecker<Self>;
8089
8090    #[inline]
8091    unsafe fn from_value(value: &'a glib::Value) -> Self {
8092        skip_assert_initialized!();
8093        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
8094    }
8095}
8096
8097#[cfg(feature = "v1_46")]
8098#[cfg_attr(docsrs, doc(cfg(feature = "v1_46")))]
8099impl ToValue for SriovEswitchMode {
8100    #[inline]
8101    fn to_value(&self) -> glib::Value {
8102        let mut value = glib::Value::for_value_type::<Self>();
8103        unsafe {
8104            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
8105        }
8106        value
8107    }
8108
8109    #[inline]
8110    fn value_type(&self) -> glib::Type {
8111        Self::static_type()
8112    }
8113}
8114
8115#[cfg(feature = "v1_46")]
8116#[cfg_attr(docsrs, doc(cfg(feature = "v1_46")))]
8117impl From<SriovEswitchMode> for glib::Value {
8118    #[inline]
8119    fn from(v: SriovEswitchMode) -> Self {
8120        skip_assert_initialized!();
8121        ToValue::to_value(&v)
8122    }
8123}
8124
8125#[cfg(feature = "v1_54")]
8126#[cfg_attr(docsrs, doc(cfg(feature = "v1_54")))]
8127#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
8128#[non_exhaustive]
8129#[doc(alias = "NMSriovPreserveOnDown")]
8130pub enum SriovPreserveOnDown {
8131    /// use the default value
8132    #[doc(alias = "NM_SRIOV_PRESERVE_ON_DOWN_DEFAULT")]
8133    Default,
8134    /// reset the SR-IOV parameters when the
8135    ///     connection is deactivated
8136    #[doc(alias = "NM_SRIOV_PRESERVE_ON_DOWN_NO")]
8137    No,
8138    /// preserve the SR-IOV parameters set on
8139    /// the device when the connection is deactivated
8140    #[doc(alias = "NM_SRIOV_PRESERVE_ON_DOWN_YES")]
8141    Yes,
8142    #[doc(hidden)]
8143    __Unknown(i32),
8144}
8145
8146#[cfg(feature = "v1_54")]
8147#[cfg_attr(docsrs, doc(cfg(feature = "v1_54")))]
8148#[doc(hidden)]
8149impl IntoGlib for SriovPreserveOnDown {
8150    type GlibType = ffi::NMSriovPreserveOnDown;
8151
8152    #[inline]
8153    fn into_glib(self) -> ffi::NMSriovPreserveOnDown {
8154        match self {
8155            Self::Default => ffi::NM_SRIOV_PRESERVE_ON_DOWN_DEFAULT,
8156            Self::No => ffi::NM_SRIOV_PRESERVE_ON_DOWN_NO,
8157            Self::Yes => ffi::NM_SRIOV_PRESERVE_ON_DOWN_YES,
8158            Self::__Unknown(value) => value,
8159        }
8160    }
8161}
8162
8163#[cfg(feature = "v1_54")]
8164#[cfg_attr(docsrs, doc(cfg(feature = "v1_54")))]
8165#[doc(hidden)]
8166impl FromGlib<ffi::NMSriovPreserveOnDown> for SriovPreserveOnDown {
8167    #[inline]
8168    unsafe fn from_glib(value: ffi::NMSriovPreserveOnDown) -> Self {
8169        skip_assert_initialized!();
8170
8171        match value {
8172            ffi::NM_SRIOV_PRESERVE_ON_DOWN_DEFAULT => Self::Default,
8173            ffi::NM_SRIOV_PRESERVE_ON_DOWN_NO => Self::No,
8174            ffi::NM_SRIOV_PRESERVE_ON_DOWN_YES => Self::Yes,
8175            value => Self::__Unknown(value),
8176        }
8177    }
8178}
8179
8180#[cfg(feature = "v1_54")]
8181#[cfg_attr(docsrs, doc(cfg(feature = "v1_54")))]
8182impl StaticType for SriovPreserveOnDown {
8183    #[inline]
8184    #[doc(alias = "nm_sriov_preserve_on_down_get_type")]
8185    fn static_type() -> glib::Type {
8186        unsafe { from_glib(ffi::nm_sriov_preserve_on_down_get_type()) }
8187    }
8188}
8189
8190#[cfg(feature = "v1_54")]
8191#[cfg_attr(docsrs, doc(cfg(feature = "v1_54")))]
8192impl glib::HasParamSpec for SriovPreserveOnDown {
8193    type ParamSpec = glib::ParamSpecEnum;
8194    type SetValue = Self;
8195    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
8196
8197    fn param_spec_builder() -> Self::BuilderFn {
8198        Self::ParamSpec::builder_with_default
8199    }
8200}
8201
8202#[cfg(feature = "v1_54")]
8203#[cfg_attr(docsrs, doc(cfg(feature = "v1_54")))]
8204impl glib::value::ValueType for SriovPreserveOnDown {
8205    type Type = Self;
8206}
8207
8208#[cfg(feature = "v1_54")]
8209#[cfg_attr(docsrs, doc(cfg(feature = "v1_54")))]
8210unsafe impl<'a> glib::value::FromValue<'a> for SriovPreserveOnDown {
8211    type Checker = glib::value::GenericValueTypeChecker<Self>;
8212
8213    #[inline]
8214    unsafe fn from_value(value: &'a glib::Value) -> Self {
8215        skip_assert_initialized!();
8216        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
8217    }
8218}
8219
8220#[cfg(feature = "v1_54")]
8221#[cfg_attr(docsrs, doc(cfg(feature = "v1_54")))]
8222impl ToValue for SriovPreserveOnDown {
8223    #[inline]
8224    fn to_value(&self) -> glib::Value {
8225        let mut value = glib::Value::for_value_type::<Self>();
8226        unsafe {
8227            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
8228        }
8229        value
8230    }
8231
8232    #[inline]
8233    fn value_type(&self) -> glib::Type {
8234        Self::static_type()
8235    }
8236}
8237
8238#[cfg(feature = "v1_54")]
8239#[cfg_attr(docsrs, doc(cfg(feature = "v1_54")))]
8240impl From<SriovPreserveOnDown> for glib::Value {
8241    #[inline]
8242    fn from(v: SriovPreserveOnDown) -> Self {
8243        skip_assert_initialized!();
8244        ToValue::to_value(&v)
8245    }
8246}
8247
8248/// #NMSriovVFVlanProtocol indicates the VLAN protocol to use.
8249#[cfg(feature = "v1_14")]
8250#[cfg_attr(docsrs, doc(cfg(feature = "v1_14")))]
8251#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
8252#[non_exhaustive]
8253#[doc(alias = "NMSriovVFVlanProtocol")]
8254pub enum SriovVFVlanProtocol {
8255    /// use 802.1Q
8256    #[doc(alias = "NM_SRIOV_VF_VLAN_PROTOCOL_802_1Q")]
8257    _1q,
8258    /// use 802.1ad
8259    #[doc(alias = "NM_SRIOV_VF_VLAN_PROTOCOL_802_1AD")]
8260    _1ad,
8261    #[doc(hidden)]
8262    __Unknown(i32),
8263}
8264
8265#[cfg(feature = "v1_14")]
8266#[cfg_attr(docsrs, doc(cfg(feature = "v1_14")))]
8267#[doc(hidden)]
8268impl IntoGlib for SriovVFVlanProtocol {
8269    type GlibType = ffi::NMSriovVFVlanProtocol;
8270
8271    #[inline]
8272    fn into_glib(self) -> ffi::NMSriovVFVlanProtocol {
8273        match self {
8274            Self::_1q => ffi::NM_SRIOV_VF_VLAN_PROTOCOL_802_1Q,
8275            Self::_1ad => ffi::NM_SRIOV_VF_VLAN_PROTOCOL_802_1AD,
8276            Self::__Unknown(value) => value,
8277        }
8278    }
8279}
8280
8281#[cfg(feature = "v1_14")]
8282#[cfg_attr(docsrs, doc(cfg(feature = "v1_14")))]
8283#[doc(hidden)]
8284impl FromGlib<ffi::NMSriovVFVlanProtocol> for SriovVFVlanProtocol {
8285    #[inline]
8286    unsafe fn from_glib(value: ffi::NMSriovVFVlanProtocol) -> Self {
8287        skip_assert_initialized!();
8288
8289        match value {
8290            ffi::NM_SRIOV_VF_VLAN_PROTOCOL_802_1Q => Self::_1q,
8291            ffi::NM_SRIOV_VF_VLAN_PROTOCOL_802_1AD => Self::_1ad,
8292            value => Self::__Unknown(value),
8293        }
8294    }
8295}
8296
8297#[cfg(feature = "v1_14")]
8298#[cfg_attr(docsrs, doc(cfg(feature = "v1_14")))]
8299impl StaticType for SriovVFVlanProtocol {
8300    #[inline]
8301    #[doc(alias = "nm_sriov_vf_vlan_protocol_get_type")]
8302    fn static_type() -> glib::Type {
8303        unsafe { from_glib(ffi::nm_sriov_vf_vlan_protocol_get_type()) }
8304    }
8305}
8306
8307#[cfg(feature = "v1_14")]
8308#[cfg_attr(docsrs, doc(cfg(feature = "v1_14")))]
8309impl glib::HasParamSpec for SriovVFVlanProtocol {
8310    type ParamSpec = glib::ParamSpecEnum;
8311    type SetValue = Self;
8312    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
8313
8314    fn param_spec_builder() -> Self::BuilderFn {
8315        Self::ParamSpec::builder_with_default
8316    }
8317}
8318
8319#[cfg(feature = "v1_14")]
8320#[cfg_attr(docsrs, doc(cfg(feature = "v1_14")))]
8321impl glib::value::ValueType for SriovVFVlanProtocol {
8322    type Type = Self;
8323}
8324
8325#[cfg(feature = "v1_14")]
8326#[cfg_attr(docsrs, doc(cfg(feature = "v1_14")))]
8327unsafe impl<'a> glib::value::FromValue<'a> for SriovVFVlanProtocol {
8328    type Checker = glib::value::GenericValueTypeChecker<Self>;
8329
8330    #[inline]
8331    unsafe fn from_value(value: &'a glib::Value) -> Self {
8332        skip_assert_initialized!();
8333        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
8334    }
8335}
8336
8337#[cfg(feature = "v1_14")]
8338#[cfg_attr(docsrs, doc(cfg(feature = "v1_14")))]
8339impl ToValue for SriovVFVlanProtocol {
8340    #[inline]
8341    fn to_value(&self) -> glib::Value {
8342        let mut value = glib::Value::for_value_type::<Self>();
8343        unsafe {
8344            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
8345        }
8346        value
8347    }
8348
8349    #[inline]
8350    fn value_type(&self) -> glib::Type {
8351        Self::static_type()
8352    }
8353}
8354
8355#[cfg(feature = "v1_14")]
8356#[cfg_attr(docsrs, doc(cfg(feature = "v1_14")))]
8357impl From<SriovVFVlanProtocol> for glib::Value {
8358    #[inline]
8359    fn from(v: SriovVFVlanProtocol) -> Self {
8360        skip_assert_initialized!();
8361        ToValue::to_value(&v)
8362    }
8363}
8364
8365/// #NMState values indicate the current overall networking state.
8366#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
8367#[non_exhaustive]
8368#[doc(alias = "NMState")]
8369pub enum State {
8370    /// Networking state is unknown. This indicates a daemon error
8371    ///    that makes it unable to reasonably assess the state. In such event the
8372    ///    applications are expected to assume Internet connectivity might be present
8373    ///    and not disable controls that require network access.
8374    ///    The graphical shells may hide the network accessibility indicator altogether
8375    ///    since no meaningful status indication can be provided.
8376    #[doc(alias = "NM_STATE_UNKNOWN")]
8377    Unknown,
8378    /// Networking is not enabled, the system is being suspended or
8379    ///    resumed from suspend.
8380    #[doc(alias = "NM_STATE_ASLEEP")]
8381    Asleep,
8382    /// There is no active network connection.
8383    ///    The graphical shell should indicate  no network connectivity and the
8384    ///    applications should not attempt to access the network.
8385    #[doc(alias = "NM_STATE_DISCONNECTED")]
8386    Disconnected,
8387    /// Network connections are being cleaned up.
8388    ///    The applications should tear down their network sessions.
8389    #[doc(alias = "NM_STATE_DISCONNECTING")]
8390    Disconnecting,
8391    /// A network connection is being started
8392    ///    The graphical shell should indicate the network is being connected while
8393    ///    the applications should still make no attempts to connect the network.
8394    #[doc(alias = "NM_STATE_CONNECTING")]
8395    Connecting,
8396    /// There is only local IPv4 and/or IPv6 connectivity,
8397    ///    but no default route to access the Internet. The graphical shell should
8398    ///    indicate no network connectivity.
8399    #[doc(alias = "NM_STATE_CONNECTED_LOCAL")]
8400    ConnectedLocal,
8401    /// There is only site-wide IPv4 and/or IPv6 connectivity.
8402    ///    This means a default route is available, but the Internet connectivity check
8403    ///    (see "Connectivity" property) did not succeed. The graphical shell should
8404    ///    indicate limited network connectivity.
8405    #[doc(alias = "NM_STATE_CONNECTED_SITE")]
8406    ConnectedSite,
8407    /// There is global IPv4 and/or IPv6 Internet connectivity
8408    ///    This means the Internet connectivity check succeeded, the graphical shell should
8409    ///    indicate full network connectivity.
8410    #[doc(alias = "NM_STATE_CONNECTED_GLOBAL")]
8411    ConnectedGlobal,
8412    #[doc(hidden)]
8413    __Unknown(i32),
8414}
8415
8416#[doc(hidden)]
8417impl IntoGlib for State {
8418    type GlibType = ffi::NMState;
8419
8420    #[inline]
8421    fn into_glib(self) -> ffi::NMState {
8422        match self {
8423            Self::Unknown => ffi::NM_STATE_UNKNOWN,
8424            Self::Asleep => ffi::NM_STATE_ASLEEP,
8425            Self::Disconnected => ffi::NM_STATE_DISCONNECTED,
8426            Self::Disconnecting => ffi::NM_STATE_DISCONNECTING,
8427            Self::Connecting => ffi::NM_STATE_CONNECTING,
8428            Self::ConnectedLocal => ffi::NM_STATE_CONNECTED_LOCAL,
8429            Self::ConnectedSite => ffi::NM_STATE_CONNECTED_SITE,
8430            Self::ConnectedGlobal => ffi::NM_STATE_CONNECTED_GLOBAL,
8431            Self::__Unknown(value) => value,
8432        }
8433    }
8434}
8435
8436#[doc(hidden)]
8437impl FromGlib<ffi::NMState> for State {
8438    #[inline]
8439    unsafe fn from_glib(value: ffi::NMState) -> Self {
8440        skip_assert_initialized!();
8441
8442        match value {
8443            ffi::NM_STATE_UNKNOWN => Self::Unknown,
8444            ffi::NM_STATE_ASLEEP => Self::Asleep,
8445            ffi::NM_STATE_DISCONNECTED => Self::Disconnected,
8446            ffi::NM_STATE_DISCONNECTING => Self::Disconnecting,
8447            ffi::NM_STATE_CONNECTING => Self::Connecting,
8448            ffi::NM_STATE_CONNECTED_LOCAL => Self::ConnectedLocal,
8449            ffi::NM_STATE_CONNECTED_SITE => Self::ConnectedSite,
8450            ffi::NM_STATE_CONNECTED_GLOBAL => Self::ConnectedGlobal,
8451            value => Self::__Unknown(value),
8452        }
8453    }
8454}
8455
8456impl StaticType for State {
8457    #[inline]
8458    #[doc(alias = "nm_state_get_type")]
8459    fn static_type() -> glib::Type {
8460        unsafe { from_glib(ffi::nm_state_get_type()) }
8461    }
8462}
8463
8464impl glib::HasParamSpec for State {
8465    type ParamSpec = glib::ParamSpecEnum;
8466    type SetValue = Self;
8467    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
8468
8469    fn param_spec_builder() -> Self::BuilderFn {
8470        Self::ParamSpec::builder_with_default
8471    }
8472}
8473
8474impl glib::value::ValueType for State {
8475    type Type = Self;
8476}
8477
8478unsafe impl<'a> glib::value::FromValue<'a> for State {
8479    type Checker = glib::value::GenericValueTypeChecker<Self>;
8480
8481    #[inline]
8482    unsafe fn from_value(value: &'a glib::Value) -> Self {
8483        skip_assert_initialized!();
8484        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
8485    }
8486}
8487
8488impl ToValue for State {
8489    #[inline]
8490    fn to_value(&self) -> glib::Value {
8491        let mut value = glib::Value::for_value_type::<Self>();
8492        unsafe {
8493            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
8494        }
8495        value
8496    }
8497
8498    #[inline]
8499    fn value_type(&self) -> glib::Type {
8500        Self::static_type()
8501    }
8502}
8503
8504impl From<State> for glib::Value {
8505    #[inline]
8506    fn from(v: State) -> Self {
8507        skip_assert_initialized!();
8508        ToValue::to_value(&v)
8509    }
8510}
8511
8512/// An boolean value that can be overridden by a default.
8513#[cfg(feature = "v1_14")]
8514#[cfg_attr(docsrs, doc(cfg(feature = "v1_14")))]
8515#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
8516#[non_exhaustive]
8517#[doc(alias = "NMTernary")]
8518pub enum Ternary {
8519    /// use the globally-configured default value.
8520    #[doc(alias = "NM_TERNARY_DEFAULT")]
8521    Default,
8522    /// the option is disabled.
8523    #[doc(alias = "NM_TERNARY_FALSE")]
8524    False,
8525    /// the option is enabled.
8526    #[doc(alias = "NM_TERNARY_TRUE")]
8527    True,
8528    #[doc(hidden)]
8529    __Unknown(i32),
8530}
8531
8532#[cfg(feature = "v1_14")]
8533#[cfg_attr(docsrs, doc(cfg(feature = "v1_14")))]
8534#[doc(hidden)]
8535impl IntoGlib for Ternary {
8536    type GlibType = ffi::NMTernary;
8537
8538    #[inline]
8539    fn into_glib(self) -> ffi::NMTernary {
8540        match self {
8541            Self::Default => ffi::NM_TERNARY_DEFAULT,
8542            Self::False => ffi::NM_TERNARY_FALSE,
8543            Self::True => ffi::NM_TERNARY_TRUE,
8544            Self::__Unknown(value) => value,
8545        }
8546    }
8547}
8548
8549#[cfg(feature = "v1_14")]
8550#[cfg_attr(docsrs, doc(cfg(feature = "v1_14")))]
8551#[doc(hidden)]
8552impl FromGlib<ffi::NMTernary> for Ternary {
8553    #[inline]
8554    unsafe fn from_glib(value: ffi::NMTernary) -> Self {
8555        skip_assert_initialized!();
8556
8557        match value {
8558            ffi::NM_TERNARY_DEFAULT => Self::Default,
8559            ffi::NM_TERNARY_FALSE => Self::False,
8560            ffi::NM_TERNARY_TRUE => Self::True,
8561            value => Self::__Unknown(value),
8562        }
8563    }
8564}
8565
8566#[cfg(feature = "v1_14")]
8567#[cfg_attr(docsrs, doc(cfg(feature = "v1_14")))]
8568impl StaticType for Ternary {
8569    #[inline]
8570    #[doc(alias = "nm_ternary_get_type")]
8571    fn static_type() -> glib::Type {
8572        unsafe { from_glib(ffi::nm_ternary_get_type()) }
8573    }
8574}
8575
8576#[cfg(feature = "v1_14")]
8577#[cfg_attr(docsrs, doc(cfg(feature = "v1_14")))]
8578impl glib::HasParamSpec for Ternary {
8579    type ParamSpec = glib::ParamSpecEnum;
8580    type SetValue = Self;
8581    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
8582
8583    fn param_spec_builder() -> Self::BuilderFn {
8584        Self::ParamSpec::builder_with_default
8585    }
8586}
8587
8588#[cfg(feature = "v1_14")]
8589#[cfg_attr(docsrs, doc(cfg(feature = "v1_14")))]
8590impl glib::value::ValueType for Ternary {
8591    type Type = Self;
8592}
8593
8594#[cfg(feature = "v1_14")]
8595#[cfg_attr(docsrs, doc(cfg(feature = "v1_14")))]
8596unsafe impl<'a> glib::value::FromValue<'a> for Ternary {
8597    type Checker = glib::value::GenericValueTypeChecker<Self>;
8598
8599    #[inline]
8600    unsafe fn from_value(value: &'a glib::Value) -> Self {
8601        skip_assert_initialized!();
8602        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
8603    }
8604}
8605
8606#[cfg(feature = "v1_14")]
8607#[cfg_attr(docsrs, doc(cfg(feature = "v1_14")))]
8608impl ToValue for Ternary {
8609    #[inline]
8610    fn to_value(&self) -> glib::Value {
8611        let mut value = glib::Value::for_value_type::<Self>();
8612        unsafe {
8613            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
8614        }
8615        value
8616    }
8617
8618    #[inline]
8619    fn value_type(&self) -> glib::Type {
8620        Self::static_type()
8621    }
8622}
8623
8624#[cfg(feature = "v1_14")]
8625#[cfg_attr(docsrs, doc(cfg(feature = "v1_14")))]
8626impl From<Ternary> for glib::Value {
8627    #[inline]
8628    fn from(v: Ternary) -> Self {
8629        skip_assert_initialized!();
8630        ToValue::to_value(&v)
8631    }
8632}
8633
8634/// Describes generic security mechanisms that 802.11 access points may offer.
8635/// Used with nm_utils_security_valid() for checking whether a given access
8636/// point is compatible with a network device.
8637#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
8638#[non_exhaustive]
8639#[doc(alias = "NMUtilsSecurityType")]
8640pub enum UtilsSecurityType {
8641    /// unknown or invalid security, placeholder and not used
8642    #[doc(alias = "NMU_SEC_INVALID")]
8643    Invalid,
8644    /// unencrypted and open
8645    #[doc(alias = "NMU_SEC_NONE")]
8646    None,
8647    /// static WEP keys are used for encryption
8648    #[doc(alias = "NMU_SEC_STATIC_WEP")]
8649    StaticWep,
8650    /// Cisco LEAP is used for authentication and for generating the
8651    /// dynamic WEP keys automatically
8652    #[doc(alias = "NMU_SEC_LEAP")]
8653    Leap,
8654    /// standard 802.1x is used for authentication and
8655    /// generating the dynamic WEP keys automatically
8656    #[doc(alias = "NMU_SEC_DYNAMIC_WEP")]
8657    DynamicWep,
8658    /// WPA1 is used with Pre-Shared Keys (PSK)
8659    #[doc(alias = "NMU_SEC_WPA_PSK")]
8660    WpaPsk,
8661    /// WPA1 is used with 802.1x authentication
8662    #[doc(alias = "NMU_SEC_WPA_ENTERPRISE")]
8663    WpaEnterprise,
8664    /// WPA2/RSN is used with Pre-Shared Keys (PSK)
8665    #[doc(alias = "NMU_SEC_WPA2_PSK")]
8666    Wpa2Psk,
8667    /// WPA2 is used with 802.1x authentication
8668    #[doc(alias = "NMU_SEC_WPA2_ENTERPRISE")]
8669    Wpa2Enterprise,
8670    /// is used with WPA3 Enterprise
8671    #[doc(alias = "NMU_SEC_SAE")]
8672    Sae,
8673    /// is used with Enhanced Open
8674    #[doc(alias = "NMU_SEC_OWE")]
8675    Owe,
8676    /// is used with WPA3 Enterprise Suite-B 192 bit mode. Since: 1.30.
8677    #[doc(alias = "NMU_SEC_WPA3_SUITE_B_192")]
8678    Wpa3SuiteB192,
8679    #[doc(hidden)]
8680    __Unknown(i32),
8681}
8682
8683#[doc(hidden)]
8684impl IntoGlib for UtilsSecurityType {
8685    type GlibType = ffi::NMUtilsSecurityType;
8686
8687    #[inline]
8688    fn into_glib(self) -> ffi::NMUtilsSecurityType {
8689        match self {
8690            Self::Invalid => ffi::NMU_SEC_INVALID,
8691            Self::None => ffi::NMU_SEC_NONE,
8692            Self::StaticWep => ffi::NMU_SEC_STATIC_WEP,
8693            Self::Leap => ffi::NMU_SEC_LEAP,
8694            Self::DynamicWep => ffi::NMU_SEC_DYNAMIC_WEP,
8695            Self::WpaPsk => ffi::NMU_SEC_WPA_PSK,
8696            Self::WpaEnterprise => ffi::NMU_SEC_WPA_ENTERPRISE,
8697            Self::Wpa2Psk => ffi::NMU_SEC_WPA2_PSK,
8698            Self::Wpa2Enterprise => ffi::NMU_SEC_WPA2_ENTERPRISE,
8699            Self::Sae => ffi::NMU_SEC_SAE,
8700            Self::Owe => ffi::NMU_SEC_OWE,
8701            Self::Wpa3SuiteB192 => ffi::NMU_SEC_WPA3_SUITE_B_192,
8702            Self::__Unknown(value) => value,
8703        }
8704    }
8705}
8706
8707#[doc(hidden)]
8708impl FromGlib<ffi::NMUtilsSecurityType> for UtilsSecurityType {
8709    #[inline]
8710    unsafe fn from_glib(value: ffi::NMUtilsSecurityType) -> Self {
8711        skip_assert_initialized!();
8712
8713        match value {
8714            ffi::NMU_SEC_INVALID => Self::Invalid,
8715            ffi::NMU_SEC_NONE => Self::None,
8716            ffi::NMU_SEC_STATIC_WEP => Self::StaticWep,
8717            ffi::NMU_SEC_LEAP => Self::Leap,
8718            ffi::NMU_SEC_DYNAMIC_WEP => Self::DynamicWep,
8719            ffi::NMU_SEC_WPA_PSK => Self::WpaPsk,
8720            ffi::NMU_SEC_WPA_ENTERPRISE => Self::WpaEnterprise,
8721            ffi::NMU_SEC_WPA2_PSK => Self::Wpa2Psk,
8722            ffi::NMU_SEC_WPA2_ENTERPRISE => Self::Wpa2Enterprise,
8723            ffi::NMU_SEC_SAE => Self::Sae,
8724            ffi::NMU_SEC_OWE => Self::Owe,
8725            ffi::NMU_SEC_WPA3_SUITE_B_192 => Self::Wpa3SuiteB192,
8726            value => Self::__Unknown(value),
8727        }
8728    }
8729}
8730
8731impl StaticType for UtilsSecurityType {
8732    #[inline]
8733    #[doc(alias = "nm_utils_security_type_get_type")]
8734    fn static_type() -> glib::Type {
8735        unsafe { from_glib(ffi::nm_utils_security_type_get_type()) }
8736    }
8737}
8738
8739impl glib::HasParamSpec for UtilsSecurityType {
8740    type ParamSpec = glib::ParamSpecEnum;
8741    type SetValue = Self;
8742    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
8743
8744    fn param_spec_builder() -> Self::BuilderFn {
8745        Self::ParamSpec::builder_with_default
8746    }
8747}
8748
8749impl glib::value::ValueType for UtilsSecurityType {
8750    type Type = Self;
8751}
8752
8753unsafe impl<'a> glib::value::FromValue<'a> for UtilsSecurityType {
8754    type Checker = glib::value::GenericValueTypeChecker<Self>;
8755
8756    #[inline]
8757    unsafe fn from_value(value: &'a glib::Value) -> Self {
8758        skip_assert_initialized!();
8759        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
8760    }
8761}
8762
8763impl ToValue for UtilsSecurityType {
8764    #[inline]
8765    fn to_value(&self) -> glib::Value {
8766        let mut value = glib::Value::for_value_type::<Self>();
8767        unsafe {
8768            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
8769        }
8770        value
8771    }
8772
8773    #[inline]
8774    fn value_type(&self) -> glib::Type {
8775        Self::static_type()
8776    }
8777}
8778
8779impl From<UtilsSecurityType> for glib::Value {
8780    #[inline]
8781    fn from(v: UtilsSecurityType) -> Self {
8782        skip_assert_initialized!();
8783        ToValue::to_value(&v)
8784    }
8785}
8786
8787/// The numeric values represent the bit index of the capability. These capabilities
8788/// can be queried in the "VersionInfo" D-Bus property.
8789#[cfg(feature = "v1_42")]
8790#[cfg_attr(docsrs, doc(cfg(feature = "v1_42")))]
8791#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
8792#[non_exhaustive]
8793#[doc(alias = "NMVersionInfoCapability")]
8794pub enum VersionInfoCapability {
8795    /// Contains the fix to a bug that
8796    ///   caused that routes in table other than main were not removed on reapply nor
8797    ///   on connection down.
8798    ///   https://issues.redhat.com/browse/RHEL-66262
8799    ///   https://issues.redhat.com/browse/RHEL-67324
8800    #[doc(alias = "NM_VERSION_INFO_CAPABILITY_SYNC_ROUTE_WITH_TABLE")]
8801    SyncRouteWithTable,
8802    /// Indicates that NetworkManager supports
8803    /// configuring per-device IPv4 sysctl forwarding setting. Since: 1.54.
8804    #[doc(alias = "NM_VERSION_INFO_CAPABILITY_IP4_FORWARDING")]
8805    Ip4Forwarding,
8806    /// NetworkManager supports the
8807    ///   "sriov.preserve-on-down" property. Since: 1.54
8808    #[doc(alias = "NM_VERSION_INFO_CAPABILITY_SRIOV_PRESERVE_ON_DOWN")]
8809    SriovPreserveOnDown,
8810    #[doc(hidden)]
8811    __Unknown(i32),
8812}
8813
8814#[cfg(feature = "v1_42")]
8815#[cfg_attr(docsrs, doc(cfg(feature = "v1_42")))]
8816#[doc(hidden)]
8817impl IntoGlib for VersionInfoCapability {
8818    type GlibType = ffi::NMVersionInfoCapability;
8819
8820    #[inline]
8821    fn into_glib(self) -> ffi::NMVersionInfoCapability {
8822        match self {
8823            Self::SyncRouteWithTable => ffi::NM_VERSION_INFO_CAPABILITY_SYNC_ROUTE_WITH_TABLE,
8824            Self::Ip4Forwarding => ffi::NM_VERSION_INFO_CAPABILITY_IP4_FORWARDING,
8825            Self::SriovPreserveOnDown => ffi::NM_VERSION_INFO_CAPABILITY_SRIOV_PRESERVE_ON_DOWN,
8826            Self::__Unknown(value) => value,
8827        }
8828    }
8829}
8830
8831#[cfg(feature = "v1_42")]
8832#[cfg_attr(docsrs, doc(cfg(feature = "v1_42")))]
8833#[doc(hidden)]
8834impl FromGlib<ffi::NMVersionInfoCapability> for VersionInfoCapability {
8835    #[inline]
8836    unsafe fn from_glib(value: ffi::NMVersionInfoCapability) -> Self {
8837        skip_assert_initialized!();
8838
8839        match value {
8840            ffi::NM_VERSION_INFO_CAPABILITY_SYNC_ROUTE_WITH_TABLE => Self::SyncRouteWithTable,
8841            ffi::NM_VERSION_INFO_CAPABILITY_IP4_FORWARDING => Self::Ip4Forwarding,
8842            ffi::NM_VERSION_INFO_CAPABILITY_SRIOV_PRESERVE_ON_DOWN => Self::SriovPreserveOnDown,
8843            value => Self::__Unknown(value),
8844        }
8845    }
8846}
8847
8848#[cfg(feature = "v1_42")]
8849#[cfg_attr(docsrs, doc(cfg(feature = "v1_42")))]
8850impl StaticType for VersionInfoCapability {
8851    #[inline]
8852    #[doc(alias = "nm_version_info_capability_get_type")]
8853    fn static_type() -> glib::Type {
8854        unsafe { from_glib(ffi::nm_version_info_capability_get_type()) }
8855    }
8856}
8857
8858#[cfg(feature = "v1_42")]
8859#[cfg_attr(docsrs, doc(cfg(feature = "v1_42")))]
8860impl glib::HasParamSpec for VersionInfoCapability {
8861    type ParamSpec = glib::ParamSpecEnum;
8862    type SetValue = Self;
8863    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
8864
8865    fn param_spec_builder() -> Self::BuilderFn {
8866        Self::ParamSpec::builder_with_default
8867    }
8868}
8869
8870#[cfg(feature = "v1_42")]
8871#[cfg_attr(docsrs, doc(cfg(feature = "v1_42")))]
8872impl glib::value::ValueType for VersionInfoCapability {
8873    type Type = Self;
8874}
8875
8876#[cfg(feature = "v1_42")]
8877#[cfg_attr(docsrs, doc(cfg(feature = "v1_42")))]
8878unsafe impl<'a> glib::value::FromValue<'a> for VersionInfoCapability {
8879    type Checker = glib::value::GenericValueTypeChecker<Self>;
8880
8881    #[inline]
8882    unsafe fn from_value(value: &'a glib::Value) -> Self {
8883        skip_assert_initialized!();
8884        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
8885    }
8886}
8887
8888#[cfg(feature = "v1_42")]
8889#[cfg_attr(docsrs, doc(cfg(feature = "v1_42")))]
8890impl ToValue for VersionInfoCapability {
8891    #[inline]
8892    fn to_value(&self) -> glib::Value {
8893        let mut value = glib::Value::for_value_type::<Self>();
8894        unsafe {
8895            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
8896        }
8897        value
8898    }
8899
8900    #[inline]
8901    fn value_type(&self) -> glib::Type {
8902        Self::static_type()
8903    }
8904}
8905
8906#[cfg(feature = "v1_42")]
8907#[cfg_attr(docsrs, doc(cfg(feature = "v1_42")))]
8908impl From<VersionInfoCapability> for glib::Value {
8909    #[inline]
8910    fn from(v: VersionInfoCapability) -> Self {
8911        skip_assert_initialized!();
8912        ToValue::to_value(&v)
8913    }
8914}
8915
8916/// A selector for traffic priority maps; these map Linux SKB priorities
8917/// to 802.1p priorities used in VLANs.
8918#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
8919#[non_exhaustive]
8920#[doc(alias = "NMVlanPriorityMap")]
8921pub enum VlanPriorityMap {
8922    /// map for incoming data
8923    #[doc(alias = "NM_VLAN_INGRESS_MAP")]
8924    IngressMap,
8925    /// map for outgoing data
8926    #[doc(alias = "NM_VLAN_EGRESS_MAP")]
8927    EgressMap,
8928    #[doc(hidden)]
8929    __Unknown(i32),
8930}
8931
8932#[doc(hidden)]
8933impl IntoGlib for VlanPriorityMap {
8934    type GlibType = ffi::NMVlanPriorityMap;
8935
8936    #[inline]
8937    fn into_glib(self) -> ffi::NMVlanPriorityMap {
8938        match self {
8939            Self::IngressMap => ffi::NM_VLAN_INGRESS_MAP,
8940            Self::EgressMap => ffi::NM_VLAN_EGRESS_MAP,
8941            Self::__Unknown(value) => value,
8942        }
8943    }
8944}
8945
8946#[doc(hidden)]
8947impl FromGlib<ffi::NMVlanPriorityMap> for VlanPriorityMap {
8948    #[inline]
8949    unsafe fn from_glib(value: ffi::NMVlanPriorityMap) -> Self {
8950        skip_assert_initialized!();
8951
8952        match value {
8953            ffi::NM_VLAN_INGRESS_MAP => Self::IngressMap,
8954            ffi::NM_VLAN_EGRESS_MAP => Self::EgressMap,
8955            value => Self::__Unknown(value),
8956        }
8957    }
8958}
8959
8960impl StaticType for VlanPriorityMap {
8961    #[inline]
8962    #[doc(alias = "nm_vlan_priority_map_get_type")]
8963    fn static_type() -> glib::Type {
8964        unsafe { from_glib(ffi::nm_vlan_priority_map_get_type()) }
8965    }
8966}
8967
8968impl glib::HasParamSpec for VlanPriorityMap {
8969    type ParamSpec = glib::ParamSpecEnum;
8970    type SetValue = Self;
8971    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
8972
8973    fn param_spec_builder() -> Self::BuilderFn {
8974        Self::ParamSpec::builder_with_default
8975    }
8976}
8977
8978impl glib::value::ValueType for VlanPriorityMap {
8979    type Type = Self;
8980}
8981
8982unsafe impl<'a> glib::value::FromValue<'a> for VlanPriorityMap {
8983    type Checker = glib::value::GenericValueTypeChecker<Self>;
8984
8985    #[inline]
8986    unsafe fn from_value(value: &'a glib::Value) -> Self {
8987        skip_assert_initialized!();
8988        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
8989    }
8990}
8991
8992impl ToValue for VlanPriorityMap {
8993    #[inline]
8994    fn to_value(&self) -> glib::Value {
8995        let mut value = glib::Value::for_value_type::<Self>();
8996        unsafe {
8997            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
8998        }
8999        value
9000    }
9001
9002    #[inline]
9003    fn value_type(&self) -> glib::Type {
9004        Self::static_type()
9005    }
9006}
9007
9008impl From<VlanPriorityMap> for glib::Value {
9009    #[inline]
9010    fn from(v: VlanPriorityMap) -> Self {
9011        skip_assert_initialized!();
9012        ToValue::to_value(&v)
9013    }
9014}
9015
9016/// VPN connection states
9017#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
9018#[non_exhaustive]
9019#[doc(alias = "NMVpnConnectionState")]
9020pub enum VpnConnectionState {
9021    /// The state of the VPN connection is
9022    ///   unknown.
9023    #[doc(alias = "NM_VPN_CONNECTION_STATE_UNKNOWN")]
9024    Unknown,
9025    /// The VPN connection is preparing to
9026    ///   connect.
9027    #[doc(alias = "NM_VPN_CONNECTION_STATE_PREPARE")]
9028    Prepare,
9029    /// The VPN connection needs authorization
9030    ///   credentials.
9031    #[doc(alias = "NM_VPN_CONNECTION_STATE_NEED_AUTH")]
9032    NeedAuth,
9033    /// The VPN connection is being established.
9034    #[doc(alias = "NM_VPN_CONNECTION_STATE_CONNECT")]
9035    Connect,
9036    /// The VPN connection is getting an IP
9037    ///   address.
9038    #[doc(alias = "NM_VPN_CONNECTION_STATE_IP_CONFIG_GET")]
9039    IpConfigGet,
9040    /// The VPN connection is active.
9041    #[doc(alias = "NM_VPN_CONNECTION_STATE_ACTIVATED")]
9042    Activated,
9043    /// The VPN connection failed.
9044    #[doc(alias = "NM_VPN_CONNECTION_STATE_FAILED")]
9045    Failed,
9046    /// The VPN connection is disconnected.
9047    #[doc(alias = "NM_VPN_CONNECTION_STATE_DISCONNECTED")]
9048    Disconnected,
9049    #[doc(hidden)]
9050    __Unknown(i32),
9051}
9052
9053#[doc(hidden)]
9054impl IntoGlib for VpnConnectionState {
9055    type GlibType = ffi::NMVpnConnectionState;
9056
9057    #[inline]
9058    fn into_glib(self) -> ffi::NMVpnConnectionState {
9059        match self {
9060            Self::Unknown => ffi::NM_VPN_CONNECTION_STATE_UNKNOWN,
9061            Self::Prepare => ffi::NM_VPN_CONNECTION_STATE_PREPARE,
9062            Self::NeedAuth => ffi::NM_VPN_CONNECTION_STATE_NEED_AUTH,
9063            Self::Connect => ffi::NM_VPN_CONNECTION_STATE_CONNECT,
9064            Self::IpConfigGet => ffi::NM_VPN_CONNECTION_STATE_IP_CONFIG_GET,
9065            Self::Activated => ffi::NM_VPN_CONNECTION_STATE_ACTIVATED,
9066            Self::Failed => ffi::NM_VPN_CONNECTION_STATE_FAILED,
9067            Self::Disconnected => ffi::NM_VPN_CONNECTION_STATE_DISCONNECTED,
9068            Self::__Unknown(value) => value,
9069        }
9070    }
9071}
9072
9073#[doc(hidden)]
9074impl FromGlib<ffi::NMVpnConnectionState> for VpnConnectionState {
9075    #[inline]
9076    unsafe fn from_glib(value: ffi::NMVpnConnectionState) -> Self {
9077        skip_assert_initialized!();
9078
9079        match value {
9080            ffi::NM_VPN_CONNECTION_STATE_UNKNOWN => Self::Unknown,
9081            ffi::NM_VPN_CONNECTION_STATE_PREPARE => Self::Prepare,
9082            ffi::NM_VPN_CONNECTION_STATE_NEED_AUTH => Self::NeedAuth,
9083            ffi::NM_VPN_CONNECTION_STATE_CONNECT => Self::Connect,
9084            ffi::NM_VPN_CONNECTION_STATE_IP_CONFIG_GET => Self::IpConfigGet,
9085            ffi::NM_VPN_CONNECTION_STATE_ACTIVATED => Self::Activated,
9086            ffi::NM_VPN_CONNECTION_STATE_FAILED => Self::Failed,
9087            ffi::NM_VPN_CONNECTION_STATE_DISCONNECTED => Self::Disconnected,
9088            value => Self::__Unknown(value),
9089        }
9090    }
9091}
9092
9093impl StaticType for VpnConnectionState {
9094    #[inline]
9095    #[doc(alias = "nm_vpn_connection_state_get_type")]
9096    fn static_type() -> glib::Type {
9097        unsafe { from_glib(ffi::nm_vpn_connection_state_get_type()) }
9098    }
9099}
9100
9101impl glib::HasParamSpec for VpnConnectionState {
9102    type ParamSpec = glib::ParamSpecEnum;
9103    type SetValue = Self;
9104    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
9105
9106    fn param_spec_builder() -> Self::BuilderFn {
9107        Self::ParamSpec::builder_with_default
9108    }
9109}
9110
9111impl glib::value::ValueType for VpnConnectionState {
9112    type Type = Self;
9113}
9114
9115unsafe impl<'a> glib::value::FromValue<'a> for VpnConnectionState {
9116    type Checker = glib::value::GenericValueTypeChecker<Self>;
9117
9118    #[inline]
9119    unsafe fn from_value(value: &'a glib::Value) -> Self {
9120        skip_assert_initialized!();
9121        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
9122    }
9123}
9124
9125impl ToValue for VpnConnectionState {
9126    #[inline]
9127    fn to_value(&self) -> glib::Value {
9128        let mut value = glib::Value::for_value_type::<Self>();
9129        unsafe {
9130            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
9131        }
9132        value
9133    }
9134
9135    #[inline]
9136    fn value_type(&self) -> glib::Type {
9137        Self::static_type()
9138    }
9139}
9140
9141impl From<VpnConnectionState> for glib::Value {
9142    #[inline]
9143    fn from(v: VpnConnectionState) -> Self {
9144        skip_assert_initialized!();
9145        ToValue::to_value(&v)
9146    }
9147}
9148
9149/// VPN connection state reasons
9150#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
9151#[non_exhaustive]
9152#[doc(alias = "NMVpnConnectionStateReason")]
9153pub enum VpnConnectionStateReason {
9154    /// The reason for the VPN connection
9155    ///   state change is unknown.
9156    #[doc(alias = "NM_VPN_CONNECTION_STATE_REASON_UNKNOWN")]
9157    Unknown,
9158    /// No reason was given for the VPN
9159    ///   connection state change.
9160    #[doc(alias = "NM_VPN_CONNECTION_STATE_REASON_NONE")]
9161    None,
9162    /// The VPN connection changed
9163    ///   state because the user disconnected it.
9164    #[doc(alias = "NM_VPN_CONNECTION_STATE_REASON_USER_DISCONNECTED")]
9165    UserDisconnected,
9166    /// The VPN connection
9167    ///   changed state because the device it was using was disconnected.
9168    #[doc(alias = "NM_VPN_CONNECTION_STATE_REASON_DEVICE_DISCONNECTED")]
9169    DeviceDisconnected,
9170    /// The service providing the
9171    ///   VPN connection was stopped.
9172    #[doc(alias = "NM_VPN_CONNECTION_STATE_REASON_SERVICE_STOPPED")]
9173    ServiceStopped,
9174    /// The IP config of the VPN
9175    ///   connection was invalid.
9176    #[doc(alias = "NM_VPN_CONNECTION_STATE_REASON_IP_CONFIG_INVALID")]
9177    IpConfigInvalid,
9178    /// The connection attempt to
9179    ///   the VPN service timed out.
9180    #[doc(alias = "NM_VPN_CONNECTION_STATE_REASON_CONNECT_TIMEOUT")]
9181    ConnectTimeout,
9182    /// A timeout occurred
9183    ///   while starting the service providing the VPN connection.
9184    #[doc(alias = "NM_VPN_CONNECTION_STATE_REASON_SERVICE_START_TIMEOUT")]
9185    ServiceStartTimeout,
9186    /// Starting the service
9187    ///   starting the service providing the VPN connection failed.
9188    #[doc(alias = "NM_VPN_CONNECTION_STATE_REASON_SERVICE_START_FAILED")]
9189    ServiceStartFailed,
9190    /// Necessary secrets for the VPN
9191    ///   connection were not provided.
9192    #[doc(alias = "NM_VPN_CONNECTION_STATE_REASON_NO_SECRETS")]
9193    NoSecrets,
9194    /// Authentication to the VPN
9195    ///   server failed.
9196    #[doc(alias = "NM_VPN_CONNECTION_STATE_REASON_LOGIN_FAILED")]
9197    LoginFailed,
9198    /// The connection was
9199    ///   deleted from settings.
9200    #[doc(alias = "NM_VPN_CONNECTION_STATE_REASON_CONNECTION_REMOVED")]
9201    ConnectionRemoved,
9202    #[doc(hidden)]
9203    __Unknown(i32),
9204}
9205
9206#[doc(hidden)]
9207impl IntoGlib for VpnConnectionStateReason {
9208    type GlibType = ffi::NMVpnConnectionStateReason;
9209
9210    #[inline]
9211    fn into_glib(self) -> ffi::NMVpnConnectionStateReason {
9212        match self {
9213            Self::Unknown => ffi::NM_VPN_CONNECTION_STATE_REASON_UNKNOWN,
9214            Self::None => ffi::NM_VPN_CONNECTION_STATE_REASON_NONE,
9215            Self::UserDisconnected => ffi::NM_VPN_CONNECTION_STATE_REASON_USER_DISCONNECTED,
9216            Self::DeviceDisconnected => ffi::NM_VPN_CONNECTION_STATE_REASON_DEVICE_DISCONNECTED,
9217            Self::ServiceStopped => ffi::NM_VPN_CONNECTION_STATE_REASON_SERVICE_STOPPED,
9218            Self::IpConfigInvalid => ffi::NM_VPN_CONNECTION_STATE_REASON_IP_CONFIG_INVALID,
9219            Self::ConnectTimeout => ffi::NM_VPN_CONNECTION_STATE_REASON_CONNECT_TIMEOUT,
9220            Self::ServiceStartTimeout => ffi::NM_VPN_CONNECTION_STATE_REASON_SERVICE_START_TIMEOUT,
9221            Self::ServiceStartFailed => ffi::NM_VPN_CONNECTION_STATE_REASON_SERVICE_START_FAILED,
9222            Self::NoSecrets => ffi::NM_VPN_CONNECTION_STATE_REASON_NO_SECRETS,
9223            Self::LoginFailed => ffi::NM_VPN_CONNECTION_STATE_REASON_LOGIN_FAILED,
9224            Self::ConnectionRemoved => ffi::NM_VPN_CONNECTION_STATE_REASON_CONNECTION_REMOVED,
9225            Self::__Unknown(value) => value,
9226        }
9227    }
9228}
9229
9230#[doc(hidden)]
9231impl FromGlib<ffi::NMVpnConnectionStateReason> for VpnConnectionStateReason {
9232    #[inline]
9233    unsafe fn from_glib(value: ffi::NMVpnConnectionStateReason) -> Self {
9234        skip_assert_initialized!();
9235
9236        match value {
9237            ffi::NM_VPN_CONNECTION_STATE_REASON_UNKNOWN => Self::Unknown,
9238            ffi::NM_VPN_CONNECTION_STATE_REASON_NONE => Self::None,
9239            ffi::NM_VPN_CONNECTION_STATE_REASON_USER_DISCONNECTED => Self::UserDisconnected,
9240            ffi::NM_VPN_CONNECTION_STATE_REASON_DEVICE_DISCONNECTED => Self::DeviceDisconnected,
9241            ffi::NM_VPN_CONNECTION_STATE_REASON_SERVICE_STOPPED => Self::ServiceStopped,
9242            ffi::NM_VPN_CONNECTION_STATE_REASON_IP_CONFIG_INVALID => Self::IpConfigInvalid,
9243            ffi::NM_VPN_CONNECTION_STATE_REASON_CONNECT_TIMEOUT => Self::ConnectTimeout,
9244            ffi::NM_VPN_CONNECTION_STATE_REASON_SERVICE_START_TIMEOUT => Self::ServiceStartTimeout,
9245            ffi::NM_VPN_CONNECTION_STATE_REASON_SERVICE_START_FAILED => Self::ServiceStartFailed,
9246            ffi::NM_VPN_CONNECTION_STATE_REASON_NO_SECRETS => Self::NoSecrets,
9247            ffi::NM_VPN_CONNECTION_STATE_REASON_LOGIN_FAILED => Self::LoginFailed,
9248            ffi::NM_VPN_CONNECTION_STATE_REASON_CONNECTION_REMOVED => Self::ConnectionRemoved,
9249            value => Self::__Unknown(value),
9250        }
9251    }
9252}
9253
9254impl StaticType for VpnConnectionStateReason {
9255    #[inline]
9256    #[doc(alias = "nm_vpn_connection_state_reason_get_type")]
9257    fn static_type() -> glib::Type {
9258        unsafe { from_glib(ffi::nm_vpn_connection_state_reason_get_type()) }
9259    }
9260}
9261
9262impl glib::HasParamSpec for VpnConnectionStateReason {
9263    type ParamSpec = glib::ParamSpecEnum;
9264    type SetValue = Self;
9265    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
9266
9267    fn param_spec_builder() -> Self::BuilderFn {
9268        Self::ParamSpec::builder_with_default
9269    }
9270}
9271
9272impl glib::value::ValueType for VpnConnectionStateReason {
9273    type Type = Self;
9274}
9275
9276unsafe impl<'a> glib::value::FromValue<'a> for VpnConnectionStateReason {
9277    type Checker = glib::value::GenericValueTypeChecker<Self>;
9278
9279    #[inline]
9280    unsafe fn from_value(value: &'a glib::Value) -> Self {
9281        skip_assert_initialized!();
9282        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
9283    }
9284}
9285
9286impl ToValue for VpnConnectionStateReason {
9287    #[inline]
9288    fn to_value(&self) -> glib::Value {
9289        let mut value = glib::Value::for_value_type::<Self>();
9290        unsafe {
9291            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
9292        }
9293        value
9294    }
9295
9296    #[inline]
9297    fn value_type(&self) -> glib::Type {
9298        Self::static_type()
9299    }
9300}
9301
9302impl From<VpnConnectionStateReason> for glib::Value {
9303    #[inline]
9304    fn from(v: VpnConnectionStateReason) -> Self {
9305        skip_assert_initialized!();
9306        ToValue::to_value(&v)
9307    }
9308}
9309
9310/// Returned by the VPN service plugin to indicate errors. These codes correspond
9311/// to errors in the "org.freedesktop.NetworkManager.VPN.Error" namespace.
9312#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
9313#[non_exhaustive]
9314#[doc(alias = "NMVpnPluginError")]
9315pub enum VpnPluginError {
9316    /// unknown or unclassified error
9317    #[doc(alias = "NM_VPN_PLUGIN_ERROR_FAILED")]
9318    Failed,
9319    /// the plugin is already starting,
9320    ///   and another connect request was received
9321    #[doc(alias = "NM_VPN_PLUGIN_ERROR_STARTING_IN_PROGRESS")]
9322    StartingInProgress,
9323    /// the plugin is already connected, and
9324    ///   another connect request was received
9325    #[doc(alias = "NM_VPN_PLUGIN_ERROR_ALREADY_STARTED")]
9326    AlreadyStarted,
9327    /// the plugin is already stopping,
9328    ///   and another stop request was received
9329    #[doc(alias = "NM_VPN_PLUGIN_ERROR_STOPPING_IN_PROGRESS")]
9330    StoppingInProgress,
9331    /// the plugin is already stopped, and
9332    ///   another disconnect request was received
9333    #[doc(alias = "NM_VPN_PLUGIN_ERROR_ALREADY_STOPPED")]
9334    AlreadyStopped,
9335    /// the operation could not be performed in
9336    ///   this state
9337    #[doc(alias = "NM_VPN_PLUGIN_ERROR_WRONG_STATE")]
9338    WrongState,
9339    /// the operation could not be performed as
9340    ///   the request contained malformed arguments, or arguments of unexpected type.
9341    ///   Usually means that one of the VPN setting data items or secrets was not of
9342    ///   the expected type (ie int, string, bool, etc).
9343    #[doc(alias = "NM_VPN_PLUGIN_ERROR_BAD_ARGUMENTS")]
9344    BadArguments,
9345    /// a child process failed to launch
9346    #[doc(alias = "NM_VPN_PLUGIN_ERROR_LAUNCH_FAILED")]
9347    LaunchFailed,
9348    /// the operation could not be performed
9349    ///   because the connection was invalid.  Usually means that the connection's
9350    ///   VPN setting was missing some required data item or secret.
9351    #[doc(alias = "NM_VPN_PLUGIN_ERROR_INVALID_CONNECTION")]
9352    InvalidConnection,
9353    /// the operation could not be
9354    ///   performed as the plugin does not support interactive operations, such as
9355    ///   ConnectInteractive() or NewSecrets()
9356    #[doc(alias = "NM_VPN_PLUGIN_ERROR_INTERACTIVE_NOT_SUPPORTED")]
9357    InteractiveNotSupported,
9358    #[doc(hidden)]
9359    __Unknown(i32),
9360}
9361
9362#[doc(hidden)]
9363impl IntoGlib for VpnPluginError {
9364    type GlibType = ffi::NMVpnPluginError;
9365
9366    #[inline]
9367    fn into_glib(self) -> ffi::NMVpnPluginError {
9368        match self {
9369            Self::Failed => ffi::NM_VPN_PLUGIN_ERROR_FAILED,
9370            Self::StartingInProgress => ffi::NM_VPN_PLUGIN_ERROR_STARTING_IN_PROGRESS,
9371            Self::AlreadyStarted => ffi::NM_VPN_PLUGIN_ERROR_ALREADY_STARTED,
9372            Self::StoppingInProgress => ffi::NM_VPN_PLUGIN_ERROR_STOPPING_IN_PROGRESS,
9373            Self::AlreadyStopped => ffi::NM_VPN_PLUGIN_ERROR_ALREADY_STOPPED,
9374            Self::WrongState => ffi::NM_VPN_PLUGIN_ERROR_WRONG_STATE,
9375            Self::BadArguments => ffi::NM_VPN_PLUGIN_ERROR_BAD_ARGUMENTS,
9376            Self::LaunchFailed => ffi::NM_VPN_PLUGIN_ERROR_LAUNCH_FAILED,
9377            Self::InvalidConnection => ffi::NM_VPN_PLUGIN_ERROR_INVALID_CONNECTION,
9378            Self::InteractiveNotSupported => ffi::NM_VPN_PLUGIN_ERROR_INTERACTIVE_NOT_SUPPORTED,
9379            Self::__Unknown(value) => value,
9380        }
9381    }
9382}
9383
9384#[doc(hidden)]
9385impl FromGlib<ffi::NMVpnPluginError> for VpnPluginError {
9386    #[inline]
9387    unsafe fn from_glib(value: ffi::NMVpnPluginError) -> Self {
9388        skip_assert_initialized!();
9389
9390        match value {
9391            ffi::NM_VPN_PLUGIN_ERROR_FAILED => Self::Failed,
9392            ffi::NM_VPN_PLUGIN_ERROR_STARTING_IN_PROGRESS => Self::StartingInProgress,
9393            ffi::NM_VPN_PLUGIN_ERROR_ALREADY_STARTED => Self::AlreadyStarted,
9394            ffi::NM_VPN_PLUGIN_ERROR_STOPPING_IN_PROGRESS => Self::StoppingInProgress,
9395            ffi::NM_VPN_PLUGIN_ERROR_ALREADY_STOPPED => Self::AlreadyStopped,
9396            ffi::NM_VPN_PLUGIN_ERROR_WRONG_STATE => Self::WrongState,
9397            ffi::NM_VPN_PLUGIN_ERROR_BAD_ARGUMENTS => Self::BadArguments,
9398            ffi::NM_VPN_PLUGIN_ERROR_LAUNCH_FAILED => Self::LaunchFailed,
9399            ffi::NM_VPN_PLUGIN_ERROR_INVALID_CONNECTION => Self::InvalidConnection,
9400            ffi::NM_VPN_PLUGIN_ERROR_INTERACTIVE_NOT_SUPPORTED => Self::InteractiveNotSupported,
9401            value => Self::__Unknown(value),
9402        }
9403    }
9404}
9405
9406impl glib::error::ErrorDomain for VpnPluginError {
9407    #[inline]
9408    fn domain() -> glib::Quark {
9409        skip_assert_initialized!();
9410
9411        unsafe { from_glib(ffi::nm_vpn_plugin_error_quark()) }
9412    }
9413
9414    #[inline]
9415    fn code(self) -> i32 {
9416        self.into_glib()
9417    }
9418
9419    #[inline]
9420    #[allow(clippy::match_single_binding)]
9421    fn from(code: i32) -> Option<Self> {
9422        skip_assert_initialized!();
9423        match unsafe { from_glib(code) } {
9424            Self::__Unknown(_) => Some(Self::Failed),
9425            value => Some(value),
9426        }
9427    }
9428}
9429
9430impl StaticType for VpnPluginError {
9431    #[inline]
9432    #[doc(alias = "nm_vpn_plugin_error_get_type")]
9433    fn static_type() -> glib::Type {
9434        unsafe { from_glib(ffi::nm_vpn_plugin_error_get_type()) }
9435    }
9436}
9437
9438impl glib::HasParamSpec for VpnPluginError {
9439    type ParamSpec = glib::ParamSpecEnum;
9440    type SetValue = Self;
9441    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
9442
9443    fn param_spec_builder() -> Self::BuilderFn {
9444        Self::ParamSpec::builder_with_default
9445    }
9446}
9447
9448impl glib::value::ValueType for VpnPluginError {
9449    type Type = Self;
9450}
9451
9452unsafe impl<'a> glib::value::FromValue<'a> for VpnPluginError {
9453    type Checker = glib::value::GenericValueTypeChecker<Self>;
9454
9455    #[inline]
9456    unsafe fn from_value(value: &'a glib::Value) -> Self {
9457        skip_assert_initialized!();
9458        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
9459    }
9460}
9461
9462impl ToValue for VpnPluginError {
9463    #[inline]
9464    fn to_value(&self) -> glib::Value {
9465        let mut value = glib::Value::for_value_type::<Self>();
9466        unsafe {
9467            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
9468        }
9469        value
9470    }
9471
9472    #[inline]
9473    fn value_type(&self) -> glib::Type {
9474        Self::static_type()
9475    }
9476}
9477
9478impl From<VpnPluginError> for glib::Value {
9479    #[inline]
9480    fn from(v: VpnPluginError) -> Self {
9481        skip_assert_initialized!();
9482        ToValue::to_value(&v)
9483    }
9484}
9485
9486/// VPN plugin failure reasons
9487#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
9488#[non_exhaustive]
9489#[doc(alias = "NMVpnPluginFailure")]
9490pub enum VpnPluginFailure {
9491    /// Login failed.
9492    #[doc(alias = "NM_VPN_PLUGIN_FAILURE_LOGIN_FAILED")]
9493    LoginFailed,
9494    /// Connect failed.
9495    #[doc(alias = "NM_VPN_PLUGIN_FAILURE_CONNECT_FAILED")]
9496    ConnectFailed,
9497    /// Invalid IP configuration returned from
9498    ///   the VPN plugin.
9499    #[doc(alias = "NM_VPN_PLUGIN_FAILURE_BAD_IP_CONFIG")]
9500    BadIpConfig,
9501    #[doc(hidden)]
9502    __Unknown(i32),
9503}
9504
9505#[doc(hidden)]
9506impl IntoGlib for VpnPluginFailure {
9507    type GlibType = ffi::NMVpnPluginFailure;
9508
9509    #[inline]
9510    fn into_glib(self) -> ffi::NMVpnPluginFailure {
9511        match self {
9512            Self::LoginFailed => ffi::NM_VPN_PLUGIN_FAILURE_LOGIN_FAILED,
9513            Self::ConnectFailed => ffi::NM_VPN_PLUGIN_FAILURE_CONNECT_FAILED,
9514            Self::BadIpConfig => ffi::NM_VPN_PLUGIN_FAILURE_BAD_IP_CONFIG,
9515            Self::__Unknown(value) => value,
9516        }
9517    }
9518}
9519
9520#[doc(hidden)]
9521impl FromGlib<ffi::NMVpnPluginFailure> for VpnPluginFailure {
9522    #[inline]
9523    unsafe fn from_glib(value: ffi::NMVpnPluginFailure) -> Self {
9524        skip_assert_initialized!();
9525
9526        match value {
9527            ffi::NM_VPN_PLUGIN_FAILURE_LOGIN_FAILED => Self::LoginFailed,
9528            ffi::NM_VPN_PLUGIN_FAILURE_CONNECT_FAILED => Self::ConnectFailed,
9529            ffi::NM_VPN_PLUGIN_FAILURE_BAD_IP_CONFIG => Self::BadIpConfig,
9530            value => Self::__Unknown(value),
9531        }
9532    }
9533}
9534
9535impl StaticType for VpnPluginFailure {
9536    #[inline]
9537    #[doc(alias = "nm_vpn_plugin_failure_get_type")]
9538    fn static_type() -> glib::Type {
9539        unsafe { from_glib(ffi::nm_vpn_plugin_failure_get_type()) }
9540    }
9541}
9542
9543impl glib::HasParamSpec for VpnPluginFailure {
9544    type ParamSpec = glib::ParamSpecEnum;
9545    type SetValue = Self;
9546    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
9547
9548    fn param_spec_builder() -> Self::BuilderFn {
9549        Self::ParamSpec::builder_with_default
9550    }
9551}
9552
9553impl glib::value::ValueType for VpnPluginFailure {
9554    type Type = Self;
9555}
9556
9557unsafe impl<'a> glib::value::FromValue<'a> for VpnPluginFailure {
9558    type Checker = glib::value::GenericValueTypeChecker<Self>;
9559
9560    #[inline]
9561    unsafe fn from_value(value: &'a glib::Value) -> Self {
9562        skip_assert_initialized!();
9563        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
9564    }
9565}
9566
9567impl ToValue for VpnPluginFailure {
9568    #[inline]
9569    fn to_value(&self) -> glib::Value {
9570        let mut value = glib::Value::for_value_type::<Self>();
9571        unsafe {
9572            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
9573        }
9574        value
9575    }
9576
9577    #[inline]
9578    fn value_type(&self) -> glib::Type {
9579        Self::static_type()
9580    }
9581}
9582
9583impl From<VpnPluginFailure> for glib::Value {
9584    #[inline]
9585    fn from(v: VpnPluginFailure) -> Self {
9586        skip_assert_initialized!();
9587        ToValue::to_value(&v)
9588    }
9589}
9590
9591/// VPN daemon states
9592#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
9593#[non_exhaustive]
9594#[doc(alias = "NMVpnServiceState")]
9595pub enum VpnServiceState {
9596    /// The state of the VPN plugin is unknown.
9597    #[doc(alias = "NM_VPN_SERVICE_STATE_UNKNOWN")]
9598    Unknown,
9599    /// The VPN plugin is initialized.
9600    #[doc(alias = "NM_VPN_SERVICE_STATE_INIT")]
9601    Init,
9602    /// Not used.
9603    #[doc(alias = "NM_VPN_SERVICE_STATE_SHUTDOWN")]
9604    Shutdown,
9605    /// The plugin is attempting to connect to a VPN server.
9606    #[doc(alias = "NM_VPN_SERVICE_STATE_STARTING")]
9607    Starting,
9608    /// The plugin has connected to a VPN server.
9609    #[doc(alias = "NM_VPN_SERVICE_STATE_STARTED")]
9610    Started,
9611    /// The plugin is disconnecting from the VPN server.
9612    #[doc(alias = "NM_VPN_SERVICE_STATE_STOPPING")]
9613    Stopping,
9614    /// The plugin has disconnected from the VPN server.
9615    #[doc(alias = "NM_VPN_SERVICE_STATE_STOPPED")]
9616    Stopped,
9617    #[doc(hidden)]
9618    __Unknown(i32),
9619}
9620
9621#[doc(hidden)]
9622impl IntoGlib for VpnServiceState {
9623    type GlibType = ffi::NMVpnServiceState;
9624
9625    #[inline]
9626    fn into_glib(self) -> ffi::NMVpnServiceState {
9627        match self {
9628            Self::Unknown => ffi::NM_VPN_SERVICE_STATE_UNKNOWN,
9629            Self::Init => ffi::NM_VPN_SERVICE_STATE_INIT,
9630            Self::Shutdown => ffi::NM_VPN_SERVICE_STATE_SHUTDOWN,
9631            Self::Starting => ffi::NM_VPN_SERVICE_STATE_STARTING,
9632            Self::Started => ffi::NM_VPN_SERVICE_STATE_STARTED,
9633            Self::Stopping => ffi::NM_VPN_SERVICE_STATE_STOPPING,
9634            Self::Stopped => ffi::NM_VPN_SERVICE_STATE_STOPPED,
9635            Self::__Unknown(value) => value,
9636        }
9637    }
9638}
9639
9640#[doc(hidden)]
9641impl FromGlib<ffi::NMVpnServiceState> for VpnServiceState {
9642    #[inline]
9643    unsafe fn from_glib(value: ffi::NMVpnServiceState) -> Self {
9644        skip_assert_initialized!();
9645
9646        match value {
9647            ffi::NM_VPN_SERVICE_STATE_UNKNOWN => Self::Unknown,
9648            ffi::NM_VPN_SERVICE_STATE_INIT => Self::Init,
9649            ffi::NM_VPN_SERVICE_STATE_SHUTDOWN => Self::Shutdown,
9650            ffi::NM_VPN_SERVICE_STATE_STARTING => Self::Starting,
9651            ffi::NM_VPN_SERVICE_STATE_STARTED => Self::Started,
9652            ffi::NM_VPN_SERVICE_STATE_STOPPING => Self::Stopping,
9653            ffi::NM_VPN_SERVICE_STATE_STOPPED => Self::Stopped,
9654            value => Self::__Unknown(value),
9655        }
9656    }
9657}
9658
9659impl StaticType for VpnServiceState {
9660    #[inline]
9661    #[doc(alias = "nm_vpn_service_state_get_type")]
9662    fn static_type() -> glib::Type {
9663        unsafe { from_glib(ffi::nm_vpn_service_state_get_type()) }
9664    }
9665}
9666
9667impl glib::HasParamSpec for VpnServiceState {
9668    type ParamSpec = glib::ParamSpecEnum;
9669    type SetValue = Self;
9670    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
9671
9672    fn param_spec_builder() -> Self::BuilderFn {
9673        Self::ParamSpec::builder_with_default
9674    }
9675}
9676
9677impl glib::value::ValueType for VpnServiceState {
9678    type Type = Self;
9679}
9680
9681unsafe impl<'a> glib::value::FromValue<'a> for VpnServiceState {
9682    type Checker = glib::value::GenericValueTypeChecker<Self>;
9683
9684    #[inline]
9685    unsafe fn from_value(value: &'a glib::Value) -> Self {
9686        skip_assert_initialized!();
9687        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
9688    }
9689}
9690
9691impl ToValue for VpnServiceState {
9692    #[inline]
9693    fn to_value(&self) -> glib::Value {
9694        let mut value = glib::Value::for_value_type::<Self>();
9695        unsafe {
9696            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
9697        }
9698        value
9699    }
9700
9701    #[inline]
9702    fn value_type(&self) -> glib::Type {
9703        Self::static_type()
9704    }
9705}
9706
9707impl From<VpnServiceState> for glib::Value {
9708    #[inline]
9709    fn from(v: VpnServiceState) -> Self {
9710        skip_assert_initialized!();
9711        ToValue::to_value(&v)
9712    }
9713}
9714
9715/// The #NMWepKeyType values specify how any WEP keys present in the setting
9716/// are interpreted.  There are no standards governing how to hash the various WEP
9717/// key/passphrase formats into the actual WEP key.  Unfortunately some WEP keys
9718/// can be interpreted in multiple ways, requiring the setting to specify how to
9719/// interpret the any WEP keys.  For example, the key "732f2d712e4a394a375d366931"
9720/// is both a valid Hexadecimal WEP key and a WEP passphrase.  Further, many
9721/// ASCII keys are also valid WEP passphrases, but since passphrases and ASCII
9722/// keys are hashed differently to determine the actual WEP key the type must be
9723/// specified.
9724#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
9725#[non_exhaustive]
9726#[doc(alias = "NMWepKeyType")]
9727pub enum WepKeyType {
9728    /// unknown WEP key type
9729    #[doc(alias = "NM_WEP_KEY_TYPE_UNKNOWN")]
9730    Unknown,
9731    /// indicates a hexadecimal or ASCII formatted WEP key.
9732    /// Hex keys are either 10 or 26 hexadecimal characters (ie "5f782f2f5f" or
9733    /// "732f2d712e4a394a375d366931"), while ASCII keys are either 5 or 13 ASCII
9734    /// characters (ie "abcde" or "blahblah99$*1").
9735    #[doc(alias = "NM_WEP_KEY_TYPE_KEY")]
9736    Key,
9737    /// indicates a WEP passphrase (ex "I bought a duck
9738    /// on my way back from the market 235Q&^%^*%") instead of a hexadecimal or ASCII
9739    /// key.  Passphrases are between 8 and 64 characters inclusive and are hashed
9740    /// the actual WEP key using the MD5 hash algorithm.
9741    #[doc(alias = "NM_WEP_KEY_TYPE_PASSPHRASE")]
9742    Passphrase,
9743    #[doc(hidden)]
9744    __Unknown(i32),
9745}
9746
9747#[doc(hidden)]
9748impl IntoGlib for WepKeyType {
9749    type GlibType = ffi::NMWepKeyType;
9750
9751    #[inline]
9752    fn into_glib(self) -> ffi::NMWepKeyType {
9753        match self {
9754            Self::Unknown => ffi::NM_WEP_KEY_TYPE_UNKNOWN,
9755            Self::Key => ffi::NM_WEP_KEY_TYPE_KEY,
9756            Self::Passphrase => ffi::NM_WEP_KEY_TYPE_PASSPHRASE,
9757            Self::__Unknown(value) => value,
9758        }
9759    }
9760}
9761
9762#[doc(hidden)]
9763impl FromGlib<ffi::NMWepKeyType> for WepKeyType {
9764    #[inline]
9765    unsafe fn from_glib(value: ffi::NMWepKeyType) -> Self {
9766        skip_assert_initialized!();
9767
9768        match value {
9769            ffi::NM_WEP_KEY_TYPE_UNKNOWN => Self::Unknown,
9770            ffi::NM_WEP_KEY_TYPE_KEY => Self::Key,
9771            ffi::NM_WEP_KEY_TYPE_PASSPHRASE => Self::Passphrase,
9772            value => Self::__Unknown(value),
9773        }
9774    }
9775}
9776
9777impl StaticType for WepKeyType {
9778    #[inline]
9779    #[doc(alias = "nm_wep_key_type_get_type")]
9780    fn static_type() -> glib::Type {
9781        unsafe { from_glib(ffi::nm_wep_key_type_get_type()) }
9782    }
9783}
9784
9785impl glib::HasParamSpec for WepKeyType {
9786    type ParamSpec = glib::ParamSpecEnum;
9787    type SetValue = Self;
9788    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
9789
9790    fn param_spec_builder() -> Self::BuilderFn {
9791        Self::ParamSpec::builder_with_default
9792    }
9793}
9794
9795impl glib::value::ValueType for WepKeyType {
9796    type Type = Self;
9797}
9798
9799unsafe impl<'a> glib::value::FromValue<'a> for WepKeyType {
9800    type Checker = glib::value::GenericValueTypeChecker<Self>;
9801
9802    #[inline]
9803    unsafe fn from_value(value: &'a glib::Value) -> Self {
9804        skip_assert_initialized!();
9805        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
9806    }
9807}
9808
9809impl ToValue for WepKeyType {
9810    #[inline]
9811    fn to_value(&self) -> glib::Value {
9812        let mut value = glib::Value::for_value_type::<Self>();
9813        unsafe {
9814            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
9815        }
9816        value
9817    }
9818
9819    #[inline]
9820    fn value_type(&self) -> glib::Type {
9821        Self::static_type()
9822    }
9823}
9824
9825impl From<WepKeyType> for glib::Value {
9826    #[inline]
9827    fn from(v: WepKeyType) -> Self {
9828        skip_assert_initialized!();
9829        ToValue::to_value(&v)
9830    }
9831}
9832
9833/// WiMAX network type.
9834#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
9835#[non_exhaustive]
9836#[doc(alias = "NMWimaxNspNetworkType")]
9837pub enum WimaxNspNetworkType {
9838    /// unknown network type
9839    #[doc(alias = "NM_WIMAX_NSP_NETWORK_TYPE_UNKNOWN")]
9840    Unknown,
9841    /// home network
9842    #[doc(alias = "NM_WIMAX_NSP_NETWORK_TYPE_HOME")]
9843    Home,
9844    /// partner network
9845    #[doc(alias = "NM_WIMAX_NSP_NETWORK_TYPE_PARTNER")]
9846    Partner,
9847    /// roaming partner network
9848    #[doc(alias = "NM_WIMAX_NSP_NETWORK_TYPE_ROAMING_PARTNER")]
9849    RoamingPartner,
9850    #[doc(hidden)]
9851    __Unknown(i32),
9852}
9853
9854#[doc(hidden)]
9855impl IntoGlib for WimaxNspNetworkType {
9856    type GlibType = ffi::NMWimaxNspNetworkType;
9857
9858    #[inline]
9859    fn into_glib(self) -> ffi::NMWimaxNspNetworkType {
9860        match self {
9861            Self::Unknown => ffi::NM_WIMAX_NSP_NETWORK_TYPE_UNKNOWN,
9862            Self::Home => ffi::NM_WIMAX_NSP_NETWORK_TYPE_HOME,
9863            Self::Partner => ffi::NM_WIMAX_NSP_NETWORK_TYPE_PARTNER,
9864            Self::RoamingPartner => ffi::NM_WIMAX_NSP_NETWORK_TYPE_ROAMING_PARTNER,
9865            Self::__Unknown(value) => value,
9866        }
9867    }
9868}
9869
9870#[doc(hidden)]
9871impl FromGlib<ffi::NMWimaxNspNetworkType> for WimaxNspNetworkType {
9872    #[inline]
9873    unsafe fn from_glib(value: ffi::NMWimaxNspNetworkType) -> Self {
9874        skip_assert_initialized!();
9875
9876        match value {
9877            ffi::NM_WIMAX_NSP_NETWORK_TYPE_UNKNOWN => Self::Unknown,
9878            ffi::NM_WIMAX_NSP_NETWORK_TYPE_HOME => Self::Home,
9879            ffi::NM_WIMAX_NSP_NETWORK_TYPE_PARTNER => Self::Partner,
9880            ffi::NM_WIMAX_NSP_NETWORK_TYPE_ROAMING_PARTNER => Self::RoamingPartner,
9881            value => Self::__Unknown(value),
9882        }
9883    }
9884}
9885
9886impl StaticType for WimaxNspNetworkType {
9887    #[inline]
9888    #[doc(alias = "nm_wimax_nsp_network_type_get_type")]
9889    fn static_type() -> glib::Type {
9890        unsafe { from_glib(ffi::nm_wimax_nsp_network_type_get_type()) }
9891    }
9892}
9893
9894impl glib::HasParamSpec for WimaxNspNetworkType {
9895    type ParamSpec = glib::ParamSpecEnum;
9896    type SetValue = Self;
9897    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
9898
9899    fn param_spec_builder() -> Self::BuilderFn {
9900        Self::ParamSpec::builder_with_default
9901    }
9902}
9903
9904impl glib::value::ValueType for WimaxNspNetworkType {
9905    type Type = Self;
9906}
9907
9908unsafe impl<'a> glib::value::FromValue<'a> for WimaxNspNetworkType {
9909    type Checker = glib::value::GenericValueTypeChecker<Self>;
9910
9911    #[inline]
9912    unsafe fn from_value(value: &'a glib::Value) -> Self {
9913        skip_assert_initialized!();
9914        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
9915    }
9916}
9917
9918impl ToValue for WimaxNspNetworkType {
9919    #[inline]
9920    fn to_value(&self) -> glib::Value {
9921        let mut value = glib::Value::for_value_type::<Self>();
9922        unsafe {
9923            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
9924        }
9925        value
9926    }
9927
9928    #[inline]
9929    fn value_type(&self) -> glib::Type {
9930        Self::static_type()
9931    }
9932}
9933
9934impl From<WimaxNspNetworkType> for glib::Value {
9935    #[inline]
9936    fn from(v: WimaxNspNetworkType) -> Self {
9937        skip_assert_initialized!();
9938        ToValue::to_value(&v)
9939    }
9940}