
```bash readarray -d '' FILES < <( git ls-files -z \ ':(exclude)po' \ ':(exclude)shared/c-rbtree' \ ':(exclude)shared/c-list' \ ':(exclude)shared/c-siphash' \ ':(exclude)shared/c-stdaux' \ ':(exclude)shared/n-acd' \ ':(exclude)shared/n-dhcp4' \ ':(exclude)src/systemd/src' \ ':(exclude)shared/systemd/src' \ ':(exclude)m4' \ ':(exclude)COPYING*' ) sed \ -e 's/^\(--\|#\| \*\) *\(([cC]) *\)\?Copyright \+\(\(([cC])\) \+\)\?\(\(20\|19\)[0-9][0-9]\) *[-–] *\(\(20\|19\)[0-9][0-9]\) \+\([^ ].*\)$/\1 C1pyright#\5 - \7#\9/' \ -e 's/^\(--\|#\| \*\) *\(([cC]) *\)\?Copyright \+\(\(([cC])\) \+\)\?\(\(20\|19\)[0-9][0-9]\) *[,] *\(\(20\|19\)[0-9][0-9]\) \+\([^ ].*\)$/\1 C2pyright#\5, \7#\9/' \ -e 's/^\(--\|#\| \*\) *\(([cC]) *\)\?Copyright \+\(\(([cC])\) \+\)\?\(\(20\|19\)[0-9][0-9]\) \+\([^ ].*\)$/\1 C3pyright#\5#\7/' \ -e 's/^Copyright \(\(20\|19\)[0-9][0-9]\) \+\([^ ].*\)$/C4pyright#\1#\3/' \ -i \ "${FILES[@]}" echo ">>> untouched Copyright lines" git grep Copyright "${FILES[@]}" echo ">>> Copyright lines with unusual extra" git grep '\<C[0-9]pyright#' "${FILES[@]}" | grep -i reserved sed \ -e 's/\<C[0-9]pyright#\([^#]*\)#\(.*\)$/Copyright (C) \1 \2/' \ -i \ "${FILES[@]}" ``` https://gitlab.freedesktop.org/NetworkManager/NetworkManager/merge_requests/298
138 lines
6.0 KiB
C
138 lines
6.0 KiB
C
// SPDX-License-Identifier: GPL-2.0+
|
|
/*
|
|
* Copyright (C) 2004 - 2016 Red Hat, Inc.
|
|
* Copyright (C) 2005 - 2008 Novell, Inc.
|
|
*/
|
|
|
|
#ifndef __NETWORKMANAGER_UTILS_H__
|
|
#define __NETWORKMANAGER_UTILS_H__
|
|
|
|
#include "nm-core-utils.h"
|
|
|
|
#include "nm-setting-ip-config.h"
|
|
#include "platform/nm-platform.h"
|
|
|
|
/*****************************************************************************/
|
|
|
|
const char *nm_utils_get_ip_config_method (NMConnection *connection,
|
|
int addr_family);
|
|
|
|
const char *nm_utils_get_shared_wifi_permission (NMConnection *connection);
|
|
|
|
void nm_utils_complete_generic (NMPlatform *platform,
|
|
NMConnection *connection,
|
|
const char *ctype,
|
|
NMConnection *const*existing_connections,
|
|
const char *preferred_id,
|
|
const char *fallback_id_prefix,
|
|
const char *ifname_prefix,
|
|
const char *ifname,
|
|
gboolean default_enable_ipv6);
|
|
|
|
typedef gboolean (NMUtilsMatchFilterFunc) (NMConnection *connection, gpointer user_data);
|
|
|
|
NMConnection *nm_utils_match_connection (NMConnection *const*connections,
|
|
NMConnection *original,
|
|
gboolean indicated,
|
|
gboolean device_has_carrier,
|
|
gint64 default_v4_metric,
|
|
gint64 default_v6_metric,
|
|
NMUtilsMatchFilterFunc match_filter_func,
|
|
gpointer match_filter_data);
|
|
|
|
int nm_match_spec_device_by_pllink (const NMPlatformLink *pllink,
|
|
const char *match_device_type,
|
|
const char *match_dhcp_plugin,
|
|
const GSList *specs,
|
|
int no_match_value);
|
|
|
|
|
|
/*****************************************************************************/
|
|
|
|
NMPlatformRoutingRule *nm_ip_routing_rule_to_platform (const NMIPRoutingRule *rule,
|
|
NMPlatformRoutingRule *out_pl);
|
|
|
|
/*****************************************************************************/
|
|
|
|
/* during shutdown, there are two relevant timeouts. One is
|
|
* NM_SHUTDOWN_TIMEOUT_MS which is plenty of time, that we give for all
|
|
* actions to complete. Of course, during shutdown components should hurry
|
|
* to cleanup.
|
|
*
|
|
* When we initiate shutdown, we should start killing child processes
|
|
* with SIGTERM. If they don't complete within NM_SHUTDOWN_TIMEOUT_MS, we send
|
|
* SIGKILL.
|
|
*
|
|
* After NM_SHUTDOWN_TIMEOUT_MS, NetworkManager will however not yet terminate right
|
|
* away. It iterates the mainloop for another NM_SHUTDOWN_TIMEOUT_MS_WATCHDOG. This
|
|
* should give time to reap the child process (after SIGKILL).
|
|
*
|
|
* So, the maximum time we should wait before sending SIGKILL should be at most
|
|
* NM_SHUTDOWN_TIMEOUT_MS.
|
|
*/
|
|
#define NM_SHUTDOWN_TIMEOUT_MS 1500
|
|
#define NM_SHUTDOWN_TIMEOUT_MS_WATCHDOG 500
|
|
|
|
typedef enum {
|
|
/* There is no watched_obj argument, and the shutdown is delayed until the user
|
|
* explicitly calls unregister on the returned handle. */
|
|
NM_SHUTDOWN_WAIT_TYPE_HANDLE,
|
|
|
|
/* The watched_obj argument is a GObject, and shutdown is delayed until the object
|
|
* gets destroyed (or unregistered). */
|
|
NM_SHUTDOWN_WAIT_TYPE_OBJECT,
|
|
|
|
/* The watched_obj argument is a GCancellable, and shutdown is delayed until the object
|
|
* gets destroyed (or unregistered). Note that after NM_SHUTDOWN_TIMEOUT_MS, the
|
|
* cancellable will be cancelled to notify listeners about the shutdown. */
|
|
NM_SHUTDOWN_WAIT_TYPE_CANCELLABLE,
|
|
} NMShutdownWaitType;
|
|
|
|
typedef struct _NMShutdownWaitObjHandle NMShutdownWaitObjHandle;
|
|
|
|
NMShutdownWaitObjHandle *nm_shutdown_wait_obj_register_full (gpointer watched_obj,
|
|
NMShutdownWaitType wait_type,
|
|
char *msg_reason,
|
|
gboolean free_msg_reason);
|
|
|
|
static inline NMShutdownWaitObjHandle *
|
|
nm_shutdown_wait_obj_register_object_full (gpointer watched_obj,
|
|
char *msg_reason,
|
|
gboolean free_msg_reason)
|
|
{
|
|
return nm_shutdown_wait_obj_register_full (watched_obj, NM_SHUTDOWN_WAIT_TYPE_OBJECT, msg_reason, free_msg_reason);
|
|
}
|
|
|
|
#define nm_shutdown_wait_obj_register_object(watched_obj, msg_reason) nm_shutdown_wait_obj_register_object_full((watched_obj), (""msg_reason""), FALSE)
|
|
|
|
static inline NMShutdownWaitObjHandle *
|
|
nm_shutdown_wait_obj_register_handle_full (char *msg_reason,
|
|
gboolean free_msg_reason)
|
|
{
|
|
return nm_shutdown_wait_obj_register_full (NULL, NM_SHUTDOWN_WAIT_TYPE_HANDLE, msg_reason, free_msg_reason);
|
|
}
|
|
|
|
#define nm_shutdown_wait_obj_register_handle(msg_reason) nm_shutdown_wait_obj_register_handle_full((""msg_reason""), FALSE)
|
|
|
|
static inline NMShutdownWaitObjHandle *
|
|
nm_shutdown_wait_obj_register_cancellable_full (GCancellable *watched_obj,
|
|
char *msg_reason,
|
|
gboolean free_msg_reason)
|
|
{
|
|
return nm_shutdown_wait_obj_register_full (watched_obj, NM_SHUTDOWN_WAIT_TYPE_CANCELLABLE, msg_reason, free_msg_reason);
|
|
}
|
|
|
|
#define nm_shutdown_wait_obj_register_cancellable(watched_obj, msg_reason) nm_shutdown_wait_obj_register_cancellable_full((watched_obj), (""msg_reason""), FALSE)
|
|
|
|
void nm_shutdown_wait_obj_unregister (NMShutdownWaitObjHandle *handle);
|
|
|
|
/*****************************************************************************/
|
|
|
|
const char *
|
|
nm_utils_file_is_in_path (const char *abs_filename,
|
|
const char *abs_path);
|
|
|
|
/*****************************************************************************/
|
|
|
|
#endif /* __NETWORKMANAGER_UTILS_H__ */
|