summary refs log tree commit diff
path: root/src/libnm-core-impl/nm-setting-link.c
diff options
context:
space:
mode:
authorMichael Biebl <biebl@debian.org>2023-08-09 21:55:35 +0200
committerMichael Biebl <biebl@debian.org>2023-08-09 21:55:35 +0200
commit05e4a733f2141995181a551854d5df929f084adf (patch)
tree83bb937740a6667525ba0df046748ecaa829c269 /src/libnm-core-impl/nm-setting-link.c
parent14b0f3a9dc9ea90d60a3b057350fd4d637dc021a (diff)
New upstream version 1.44.0 upstream/1.44.0
Diffstat (limited to 'src/libnm-core-impl/nm-setting-link.c')
-rw-r--r--src/libnm-core-impl/nm-setting-link.c241
1 files changed, 241 insertions, 0 deletions
diff --git a/src/libnm-core-impl/nm-setting-link.c b/src/libnm-core-impl/nm-setting-link.c
new file mode 100644
index 00000000..29d56d67
--- /dev/null
+++ b/src/libnm-core-impl/nm-setting-link.c
@@ -0,0 +1,241 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+/*
+ * Copyright (C) 2023 Red Hat, Inc.
+ */
+
+#include "libnm-core-impl/nm-default-libnm-core.h"
+
+#include "nm-setting-link.h"
+
+#include "nm-setting-private.h"
+#include "nm-utils-private.h"
+
+/**
+ * SECTION:nm-setting-link
+ * @short_description: Contains properties related to the link
+ * @include: nm-setting-link.h
+ **/
+
+/*****************************************************************************/
+
+NM_GOBJECT_PROPERTIES_DEFINE(NMSettingLink,
+                             PROP_TX_QUEUE_LENGTH,
+                             PROP_GSO_MAX_SIZE,
+                             PROP_GSO_MAX_SEGMENTS,
+                             PROP_GRO_MAX_SIZE, );
+
+/**
+ * NMSettingLink:
+ *
+ * Link settings
+ *
+ * Since: 1.44
+ */
+struct _NMSettingLink {
+    NMSetting parent;
+    gint64    tx_queue_length;
+    gint64    gso_max_size;
+    gint64    gso_max_segments;
+    gint64    gro_max_size;
+};
+
+struct _NMSettingLinkClass {
+    NMSettingClass parent;
+};
+
+G_DEFINE_TYPE(NMSettingLink, nm_setting_link, NM_TYPE_SETTING)
+
+/**
+ * nm_setting_link_get_tx_queue_length:
+ * @setting: the #NMSettingLink
+ *
+ * Returns the value contained in the #NMSettingLink:tx-queue-length
+ * property.
+ *
+ * Returns: the 'tx-queue-length' property value
+ *
+ * Since: 1.44
+ **/
+gint64
+nm_setting_link_get_tx_queue_length(NMSettingLink *setting)
+{
+    g_return_val_if_fail(NM_IS_SETTING_LINK(setting), 0);
+
+    return setting->tx_queue_length;
+}
+
+/**
+ * nm_setting_link_get_gso_max_size:
+ * @setting: the #NMSettingLink
+ *
+ * Returns the value contained in the #NMSettingLink:gso-max-size
+ * property.
+ *
+ * Returns: the 'gso-max-size' property value
+ *
+ * Since: 1.44
+ **/
+gint64
+nm_setting_link_get_gso_max_size(NMSettingLink *setting)
+{
+    g_return_val_if_fail(NM_IS_SETTING_LINK(setting), 0);
+
+    return setting->gso_max_size;
+}
+
+/**
+ * nm_setting_link_get_gso_max_segments:
+ * @setting: the #NMSettingLink
+ *
+ * Returns the value contained in the #NMSettingLink:gso-max-segments
+ * property.
+ *
+ * Returns: the 'gso-max-segments' property value
+ *
+ * Since: 1.44
+ **/
+gint64
+nm_setting_link_get_gso_max_segments(NMSettingLink *setting)
+{
+    g_return_val_if_fail(NM_IS_SETTING_LINK(setting), 0);
+
+    return setting->gso_max_segments;
+}
+
+/**
+ * nm_setting_link_get_gro_max_size:
+ * @setting: the #NMSettingLink
+ *
+ * Returns the value contained in the #NMSettingLink:gro-max-size
+ * property.
+ *
+ * Returns: the 'gro-max-size' property value
+ *
+ * Since: 1.44
+ **/
+gint64
+nm_setting_link_get_gro_max_size(NMSettingLink *setting)
+{
+    g_return_val_if_fail(NM_IS_SETTING_LINK(setting), 0);
+
+    return setting->gro_max_size;
+}
+
+/*****************************************************************************/
+
+static void
+nm_setting_link_init(NMSettingLink *setting)
+{}
+
+/**
+ * nm_setting_link_new:
+ *
+ * Creates a new #NMSettingLink object with default values.
+ *
+ * Returns: (transfer full): the new empty #NMSettingLink object
+ *
+ * Since: 1.44
+ **/
+NMSetting *
+nm_setting_link_new(void)
+{
+    return g_object_new(NM_TYPE_SETTING_LINK, NULL);
+}
+
+static void
+nm_setting_link_class_init(NMSettingLinkClass *klass)
+{
+    GObjectClass   *object_class        = G_OBJECT_CLASS(klass);
+    NMSettingClass *setting_class       = NM_SETTING_CLASS(klass);
+    GArray         *properties_override = _nm_sett_info_property_override_create_array();
+
+    object_class->get_property = _nm_setting_property_get_property_direct;
+    object_class->set_property = _nm_setting_property_set_property_direct;
+
+    /**
+     * NMSettingLink:tx-queue-length
+     *
+     * The size of the transmit queue for the device, in number of packets. The value
+     * must be between 0 and 4294967295. When set to -1, the existing value is preserved.
+     *
+     * Since: 1.44
+     **/
+    _nm_setting_property_define_direct_int64(properties_override,
+                                             obj_properties,
+                                             NM_SETTING_LINK_TX_QUEUE_LENGTH,
+                                             PROP_TX_QUEUE_LENGTH,
+                                             -1,
+                                             G_MAXUINT32,
+                                             -1,
+                                             NM_SETTING_PARAM_NONE,
+                                             NMSettingLink,
+                                             tx_queue_length);
+
+    /**
+     * NMSettingLink:gso-max-size
+     *
+     * The maximum size of a Generic Segment Offload packet the device should accept.
+     * The value must be between 0 and 4294967295. When set to -1, the existing value
+     * is preserved.
+     *
+     * Since: 1.44
+     **/
+    _nm_setting_property_define_direct_int64(properties_override,
+                                             obj_properties,
+                                             NM_SETTING_LINK_GSO_MAX_SIZE,
+                                             PROP_GSO_MAX_SIZE,
+                                             -1,
+                                             G_MAXUINT32,
+                                             -1,
+                                             NM_SETTING_PARAM_NONE,
+                                             NMSettingLink,
+                                             gso_max_size);
+
+    /**
+     * NMSettingLink:gso-max-segments
+     *
+     * The maximum segments of a Generic Segment Offload packet the device should accept.
+     * The value must be between 0 and 4294967295. When set to -1, the existing value
+     * is preserved.
+     *
+     * Since: 1.44
+     **/
+    _nm_setting_property_define_direct_int64(properties_override,
+                                             obj_properties,
+                                             NM_SETTING_LINK_GSO_MAX_SEGMENTS,
+                                             PROP_GSO_MAX_SEGMENTS,
+                                             -1,
+                                             G_MAXUINT32,
+                                             -1,
+                                             NM_SETTING_PARAM_NONE,
+                                             NMSettingLink,
+                                             gso_max_segments);
+
+    /**
+     * NMSettingLink:gro-max-size
+     *
+     * The maximum size of a packet built by the Generic Receive Offload stack for
+     * this device. The value must be between 0 and 4294967295. When set to -1, the
+     * existing value is preserved.
+     *
+     * Since: 1.44
+     **/
+    _nm_setting_property_define_direct_int64(properties_override,
+                                             obj_properties,
+                                             NM_SETTING_LINK_GRO_MAX_SIZE,
+                                             PROP_GRO_MAX_SIZE,
+                                             -1,
+                                             G_MAXUINT32,
+                                             -1,
+                                             NM_SETTING_PARAM_NONE,
+                                             NMSettingLink,
+                                             gro_max_size);
+
+    g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
+
+    _nm_setting_class_commit(setting_class,
+                             NM_META_SETTING_TYPE_LINK,
+                             NULL,
+                             properties_override,
+                             0);
+}