summary refs log tree commit diff
path: root/src/libnm-base
diff options
context:
space:
mode:
authorMichael Biebl <biebl@debian.org>2022-01-13 22:30:39 +0100
committerMichael Biebl <biebl@debian.org>2022-01-13 22:30:39 +0100
commit88c227d90a6b7b388c5c85d72802a0ca8f05ed5c (patch)
tree71f32df6617802270e8a78574bd8e1637dc532f4 /src/libnm-base
parente74c568b07b50b97873fb4ee1d776dedefbd54d6 (diff)
New upstream version 1.34.0 upstream/1.34.0
Diffstat (limited to 'src/libnm-base')
-rw-r--r--src/libnm-base/meson.build1
-rw-r--r--src/libnm-base/nm-base.h7
-rw-r--r--src/libnm-base/nm-priv-helper-utils.c56
-rw-r--r--src/libnm-base/nm-priv-helper-utils.h23
4 files changed, 87 insertions, 0 deletions
diff --git a/src/libnm-base/meson.build b/src/libnm-base/meson.build
index d7e7a1b8..1bb61020 100644
--- a/src/libnm-base/meson.build
+++ b/src/libnm-base/meson.build
@@ -5,6 +5,7 @@ libnm_base = static_library(
   sources: files(
     'nm-ethtool-base.c',
     'nm-net-aux.c',
+    'nm-priv-helper-utils.c',
   ),
   include_directories: [
     src_inc,
diff --git a/src/libnm-base/nm-base.h b/src/libnm-base/nm-base.h
index 3257b3f0..0363e3b6 100644
--- a/src/libnm-base/nm-base.h
+++ b/src/libnm-base/nm-base.h
@@ -13,6 +13,11 @@
 
 #define _NM_MAX_CLIENT_ID_LEN (sizeof(guint32) + 128)
 
+enum {
+    NM_DNS_PRIORITY_DEFAULT_NORMAL = 100,
+    NM_DNS_PRIORITY_DEFAULT_VPN    = 50,
+};
+
 /*****************************************************************************/
 
 typedef enum {
@@ -386,4 +391,6 @@ typedef struct {
 
 /****************************************************************************/
 
+#define NM_BOND_PORT_QUEUE_ID_DEF 0
+
 #endif /* __NM_LIBNM_BASE_H__ */
diff --git a/src/libnm-base/nm-priv-helper-utils.c b/src/libnm-base/nm-priv-helper-utils.c
new file mode 100644
index 00000000..8e6e4075
--- /dev/null
+++ b/src/libnm-base/nm-priv-helper-utils.c
@@ -0,0 +1,56 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+
+#include "libnm-glib-aux/nm-default-glib-i18n-lib.h"
+
+#include "nm-priv-helper-utils.h"
+
+#include <sys/socket.h>
+#include <sys/un.h>
+
+#include "libnm-glib-aux/nm-io-utils.h"
+
+/*****************************************************************************/
+
+int
+nm_priv_helper_utils_open_fd(NMPrivHelperGetFDType fd_type, GError **error)
+{
+    nm_auto_close int fd = -1;
+    int               r;
+    int               errsv;
+
+    switch (fd_type) {
+    case NM_PRIV_HELPER_GET_FD_TYPE_OVSDB_SOCKET:
+    {
+        struct sockaddr_un sock;
+        int                sock_len;
+
+        G_STATIC_ASSERT_EXPR(NM_STRLEN(NM_OVSDB_SOCKET) + 1 < sizeof(sock.sun_path));
+        sock_len = nm_io_sockaddr_un_set(&sock, FALSE, NM_OVSDB_SOCKET);
+        nm_assert(sock_len > 0);
+
+        fd = socket(AF_UNIX, SOCK_STREAM | SOCK_CLOEXEC, 0);
+        if (fd < 0) {
+            errsv = NM_ERRNO_NATIVE(errno);
+            g_set_error(error, G_IO_ERROR, g_io_error_from_errno(errsv), "error creating socket");
+            return -errsv;
+        }
+
+        r = connect(fd, (const struct sockaddr *) &sock, sock_len);
+        if (r != 0) {
+            errsv = NM_ERRNO_NATIVE(errno);
+            g_set_error(error,
+                        G_IO_ERROR,
+                        g_io_error_from_errno(errsv),
+                        "error connecting socket (%s)",
+                        nm_strerror_native(errsv));
+            return -errsv;
+        }
+
+        return nm_steal_fd(&fd);
+    }
+    case NM_PRIV_HELPER_GET_FD_TYPE_NONE:
+    default:
+        nm_utils_error_set(error, NM_UTILS_ERROR_UNKNOWN, "invalid fd_type");
+        return -EINVAL;
+    }
+}
diff --git a/src/libnm-base/nm-priv-helper-utils.h b/src/libnm-base/nm-priv-helper-utils.h
new file mode 100644
index 00000000..22387cff
--- /dev/null
+++ b/src/libnm-base/nm-priv-helper-utils.h
@@ -0,0 +1,23 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+
+#ifndef __NM_PRIV_HELPER_UTILS_H__
+#define __NM_PRIV_HELPER_UTILS_H__
+
+/*****************************************************************************/
+
+#define NM_PRIV_HELPER_DBUS_BUS_NAME    "org.freedesktop.nm-priv-helper"
+#define NM_PRIV_HELPER_DBUS_OBJECT_PATH "/org/freedesktop/nm-priv-helper"
+#define NM_PRIV_HELPER_DBUS_IFACE_NAME  "org.freedesktop.nm-priv-helper"
+
+/*****************************************************************************/
+
+#define NM_OVSDB_SOCKET RUNSTATEDIR "/openvswitch/db.sock"
+
+typedef enum {
+    NM_PRIV_HELPER_GET_FD_TYPE_NONE         = 0,
+    NM_PRIV_HELPER_GET_FD_TYPE_OVSDB_SOCKET = 1,
+} NMPrivHelperGetFDType;
+
+int nm_priv_helper_utils_open_fd(NMPrivHelperGetFDType fd_type, GError **error);
+
+#endif /* __NM_PRIV_HELPER_UTILS_H__ */