nm-manager.h 9.82 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
/* NetworkManager -- Network link manager
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License along
 * with this program; if not, write to the Free Software Foundation, Inc.,
 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 * Copyright (C) 2007 - 2008 Novell, Inc.
19
 * Copyright (C) 2007 - 2010 Red Hat, Inc.
20 21
 */

22 23
#ifndef __NETWORKMANAGER_MANAGER_H__
#define __NETWORKMANAGER_MANAGER_H__
24

25
#include "settings/nm-settings-connection.h"
26
#include "c-list/src/c-list.h"
27
#include "nm-dbus-manager.h"
28 29 30 31 32

#define NM_TYPE_MANAGER            (nm_manager_get_type ())
#define NM_MANAGER(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), NM_TYPE_MANAGER, NMManager))
#define NM_MANAGER_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), NM_TYPE_MANAGER, NMManagerClass))
#define NM_IS_MANAGER(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NM_TYPE_MANAGER))
33
#define NM_IS_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NM_TYPE_MANAGER))
34 35
#define NM_MANAGER_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_MANAGER, NMManagerClass))

36
#define NM_MANAGER_VERSION "version"
37
#define NM_MANAGER_CAPABILITIES "capabilities"
38
#define NM_MANAGER_STATE "state"
39
#define NM_MANAGER_STARTUP "startup"
40 41 42 43 44
#define NM_MANAGER_NETWORKING_ENABLED "networking-enabled"
#define NM_MANAGER_WIRELESS_ENABLED "wireless-enabled"
#define NM_MANAGER_WIRELESS_HARDWARE_ENABLED "wireless-hardware-enabled"
#define NM_MANAGER_WWAN_ENABLED "wwan-enabled"
#define NM_MANAGER_WWAN_HARDWARE_ENABLED "wwan-hardware-enabled"
45 46
#define NM_MANAGER_WIMAX_ENABLED "wimax-enabled"
#define NM_MANAGER_WIMAX_HARDWARE_ENABLED "wimax-hardware-enabled"
47
#define NM_MANAGER_ACTIVE_CONNECTIONS "active-connections"
48
#define NM_MANAGER_CONNECTIVITY "connectivity"
49 50
#define NM_MANAGER_CONNECTIVITY_CHECK_AVAILABLE "connectivity-check-available"
#define NM_MANAGER_CONNECTIVITY_CHECK_ENABLED "connectivity-check-enabled"
51
#define NM_MANAGER_PRIMARY_CONNECTION "primary-connection"
52
#define NM_MANAGER_PRIMARY_CONNECTION_TYPE "primary-connection-type"
53
#define NM_MANAGER_ACTIVATING_CONNECTION "activating-connection"
54
#define NM_MANAGER_DEVICES "devices"
55
#define NM_MANAGER_METERED "metered"
56
#define NM_MANAGER_GLOBAL_DNS_CONFIGURATION "global-dns-configuration"
57
#define NM_MANAGER_ALL_DEVICES "all-devices"
58
#define NM_MANAGER_CHECKPOINTS "checkpoints"
59

60
/* Not exported */
61
#define NM_MANAGER_SLEEPING "sleeping"
62

63
/* Signals */
64 65 66 67
#define NM_MANAGER_DEVICE_ADDED              "device-added"
#define NM_MANAGER_DEVICE_REMOVED            "device-removed"
#define NM_MANAGER_USER_PERMISSIONS_CHANGED  "user-permissions-changed"

68 69
#define NM_MANAGER_ACTIVE_CONNECTION_ADDED   "active-connection-added"
#define NM_MANAGER_ACTIVE_CONNECTION_REMOVED "active-connection-removed"
70
#define NM_MANAGER_CONFIGURE_QUIT            "configure-quit"
71 72
#define NM_MANAGER_INTERNAL_DEVICE_ADDED     "internal-device-added"
#define NM_MANAGER_INTERNAL_DEVICE_REMOVED   "internal-device-removed"
73

74 75
GType nm_manager_get_type (void);

76
/* nm_manager_setup() should only be used by main.c */
77
NMManager *   nm_manager_setup                         (void);
78

79
NMManager *   nm_manager_get                           (void);
80

81 82
gboolean      nm_manager_start                         (NMManager *manager,
                                                        GError **error);
83
void          nm_manager_stop                          (NMManager *manager);
84
NMState       nm_manager_get_state                     (NMManager *manager);
85

86 87 88 89 90 91
const CList * nm_manager_get_active_connections        (NMManager *manager);

#define nm_manager_for_each_active_connection(manager, iter, tmp_list) \
	for (tmp_list = nm_manager_get_active_connections (manager), \
	     iter = c_list_entry (tmp_list->next, NMActiveConnection, active_connections_lst); \
	     ({ \
92
	         const gboolean _has_next = (&iter->active_connections_lst != tmp_list); \
93 94 95 96 97 98
	         \
	         if (!_has_next) \
	             iter = NULL; \
	         _has_next; \
	    }); \
	    iter = c_list_entry (iter->active_connections_lst.next, NMActiveConnection, active_connections_lst))
99

100 101 102 103 104 105 106 107 108 109 110 111 112
#define nm_manager_for_each_active_connection_safe(manager, iter, tmp_list, iter_safe) \
	for (tmp_list = nm_manager_get_active_connections (manager), \
	     iter_safe = tmp_list->next; \
	     ({ \
	        if (iter_safe != tmp_list) { \
	            iter = c_list_entry (iter_safe, NMActiveConnection, active_connections_lst); \
	            iter_safe = iter_safe->next; \
	        } else \
	            iter = NULL; \
	        (iter != NULL); \
	     }); \
	    )

113
NMSettingsConnection **nm_manager_get_activatable_connections (NMManager *manager,
114 115 116
                                                               gboolean for_auto_activation,
                                                               gboolean sort,
                                                               guint *out_len);
117

118 119
void          nm_manager_write_device_state_all (NMManager *manager);
gboolean      nm_manager_write_device_state (NMManager *manager, NMDevice *device);
120

121 122
/* Device handling */

123
const CList *       nm_manager_get_devices             (NMManager *manager);
124

125 126 127 128 129 130 131 132 133 134 135 136
#define nm_manager_for_each_device(manager, iter, tmp_list) \
	for (tmp_list = nm_manager_get_devices (manager), \
	     iter = c_list_entry (tmp_list->next, NMDevice, devices_lst); \
	     ({ \
	         const gboolean _has_next = (&iter->devices_lst != tmp_list); \
	         \
	         if (!_has_next) \
	             iter = NULL; \
	         _has_next; \
	    }); \
	    iter = c_list_entry (iter->devices_lst.next, NMDevice, devices_lst))

137 138 139 140 141 142 143 144 145 146 147 148 149
#define nm_manager_for_each_device_safe(manager, iter, tmp_list, iter_safe) \
	for (tmp_list = nm_manager_get_devices (manager), \
	     iter_safe = tmp_list->next; \
	     ({ \
	        if (iter_safe != tmp_list) { \
	            iter = c_list_entry (iter_safe, NMDevice, devices_lst); \
	            iter_safe = iter_safe->next; \
	        } else \
	            iter = NULL; \
	        (iter != NULL); \
	     }); \
	    )

150 151
NMDevice *          nm_manager_get_device_by_ifindex   (NMManager *manager,
                                                        int ifindex);
152 153
NMDevice *          nm_manager_get_device_by_path      (NMManager *manager,
                                                        const char *path);
154

155 156 157 158 159 160 161
guint32             nm_manager_device_route_metric_reserve (NMManager *self,
                                                            int ifindex,
                                                            NMDeviceType device_type);

void                nm_manager_device_route_metric_clear (NMManager *self,
                                                          int ifindex);

162 163 164 165 166
char *              nm_manager_get_connection_iface (NMManager *self,
                                                     NMConnection *connection,
                                                     NMDevice **out_parent,
                                                     GError **error);

167 168 169
const char *        nm_manager_iface_for_uuid          (NMManager *self,
                                                        const char *uuid);

170
NMActiveConnection *nm_manager_activate_connection     (NMManager *manager,
171
                                                        NMSettingsConnection *connection,
172
                                                        NMConnection *applied_connection,
173 174 175
                                                        const char *specific_object,
                                                        NMDevice *device,
                                                        NMAuthSubject *subject,
176
                                                        NMActivationType activation_type,
177
                                                        NMActivationReason activation_reason,
178
                                                        NMActivationStateFlags initial_state_flags,
179
                                                        GError **error);
180

181
gboolean            nm_manager_deactivate_connection   (NMManager *manager,
182
                                                        NMActiveConnection *active,
183 184
                                                        NMDeviceStateReason reason,
                                                        GError **error);
185

186
void                nm_manager_set_capability   (NMManager *self, NMCapability cap);
187

188 189 190 191 192 193
NMDevice *          nm_manager_get_device    (NMManager *self,
                                              const char *ifname,
                                              NMDeviceType device_type);
gboolean            nm_manager_remove_device (NMManager *self,
                                              const char *ifname,
                                              NMDeviceType device_type);
194

195 196 197 198 199 200 201 202 203
void nm_manager_dbus_set_property_handle (NMDBusObject *obj,
                                          const NMDBusInterfaceInfoExtended *interface_info,
                                          const NMDBusPropertyInfoExtended *property_info,
                                          GDBusConnection *connection,
                                          const char *sender,
                                          GDBusMethodInvocation *invocation,
                                          GVariant *value,
                                          gpointer user_data);

204 205
NMMetered nm_manager_get_metered (NMManager *self);

206
#endif /* __NETWORKMANAGER_MANAGER_H__ */