mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-04-19 06:40:39 +02:00
Merge remote branch 'origin/master' into cli-output
This commit is contained in:
commit
3ccd948f3a
44 changed files with 8801 additions and 1553 deletions
|
|
@ -241,133 +241,136 @@ typedef enum {
|
|||
NM_DEVICE_STATE_REASON_NONE = 0,
|
||||
|
||||
/* Unknown error */
|
||||
NM_DEVICE_STATE_REASON_UNKNOWN,
|
||||
NM_DEVICE_STATE_REASON_UNKNOWN = 1,
|
||||
|
||||
/* Device is now managed */
|
||||
NM_DEVICE_STATE_REASON_NOW_MANAGED,
|
||||
NM_DEVICE_STATE_REASON_NOW_MANAGED = 2,
|
||||
|
||||
/* Device is now managed unmanaged */
|
||||
NM_DEVICE_STATE_REASON_NOW_UNMANAGED,
|
||||
NM_DEVICE_STATE_REASON_NOW_UNMANAGED = 3,
|
||||
|
||||
/* The device could not be readied for configuration */
|
||||
NM_DEVICE_STATE_REASON_CONFIG_FAILED,
|
||||
NM_DEVICE_STATE_REASON_CONFIG_FAILED = 4,
|
||||
|
||||
/* IP configuration could not be reserved (no available address, timeout, etc) */
|
||||
NM_DEVICE_STATE_REASON_IP_CONFIG_UNAVAILABLE,
|
||||
NM_DEVICE_STATE_REASON_IP_CONFIG_UNAVAILABLE = 5,
|
||||
|
||||
/* The IP config is no longer valid */
|
||||
NM_DEVICE_STATE_REASON_IP_CONFIG_EXPIRED,
|
||||
NM_DEVICE_STATE_REASON_IP_CONFIG_EXPIRED = 6,
|
||||
|
||||
/* Secrets were required, but not provided */
|
||||
NM_DEVICE_STATE_REASON_NO_SECRETS,
|
||||
NM_DEVICE_STATE_REASON_NO_SECRETS = 7,
|
||||
|
||||
/* 802.1x supplicant disconnected */
|
||||
NM_DEVICE_STATE_REASON_SUPPLICANT_DISCONNECT,
|
||||
NM_DEVICE_STATE_REASON_SUPPLICANT_DISCONNECT = 8,
|
||||
|
||||
/* 802.1x supplicant configuration failed */
|
||||
NM_DEVICE_STATE_REASON_SUPPLICANT_CONFIG_FAILED,
|
||||
NM_DEVICE_STATE_REASON_SUPPLICANT_CONFIG_FAILED = 9,
|
||||
|
||||
/* 802.1x supplicant failed */
|
||||
NM_DEVICE_STATE_REASON_SUPPLICANT_FAILED,
|
||||
NM_DEVICE_STATE_REASON_SUPPLICANT_FAILED = 10,
|
||||
|
||||
/* 802.1x supplicant took too long to authenticate */
|
||||
NM_DEVICE_STATE_REASON_SUPPLICANT_TIMEOUT,
|
||||
NM_DEVICE_STATE_REASON_SUPPLICANT_TIMEOUT = 11,
|
||||
|
||||
/* PPP service failed to start */
|
||||
NM_DEVICE_STATE_REASON_PPP_START_FAILED,
|
||||
NM_DEVICE_STATE_REASON_PPP_START_FAILED = 12,
|
||||
|
||||
/* PPP service disconnected */
|
||||
NM_DEVICE_STATE_REASON_PPP_DISCONNECT,
|
||||
NM_DEVICE_STATE_REASON_PPP_DISCONNECT = 13,
|
||||
|
||||
/* PPP failed */
|
||||
NM_DEVICE_STATE_REASON_PPP_FAILED,
|
||||
NM_DEVICE_STATE_REASON_PPP_FAILED = 14,
|
||||
|
||||
/* DHCP client failed to start */
|
||||
NM_DEVICE_STATE_REASON_DHCP_START_FAILED,
|
||||
NM_DEVICE_STATE_REASON_DHCP_START_FAILED = 15,
|
||||
|
||||
/* DHCP client error */
|
||||
NM_DEVICE_STATE_REASON_DHCP_ERROR,
|
||||
NM_DEVICE_STATE_REASON_DHCP_ERROR = 16,
|
||||
|
||||
/* DHCP client failed */
|
||||
NM_DEVICE_STATE_REASON_DHCP_FAILED,
|
||||
NM_DEVICE_STATE_REASON_DHCP_FAILED = 17,
|
||||
|
||||
/* Shared connection service failed to start */
|
||||
NM_DEVICE_STATE_REASON_SHARED_START_FAILED,
|
||||
NM_DEVICE_STATE_REASON_SHARED_START_FAILED = 18,
|
||||
|
||||
/* Shared connection service failed */
|
||||
NM_DEVICE_STATE_REASON_SHARED_FAILED,
|
||||
NM_DEVICE_STATE_REASON_SHARED_FAILED = 19,
|
||||
|
||||
/* AutoIP service failed to start */
|
||||
NM_DEVICE_STATE_REASON_AUTOIP_START_FAILED,
|
||||
NM_DEVICE_STATE_REASON_AUTOIP_START_FAILED = 20,
|
||||
|
||||
/* AutoIP service error */
|
||||
NM_DEVICE_STATE_REASON_AUTOIP_ERROR,
|
||||
NM_DEVICE_STATE_REASON_AUTOIP_ERROR = 21,
|
||||
|
||||
/* AutoIP service failed */
|
||||
NM_DEVICE_STATE_REASON_AUTOIP_FAILED,
|
||||
NM_DEVICE_STATE_REASON_AUTOIP_FAILED = 22,
|
||||
|
||||
/* The line is busy */
|
||||
NM_DEVICE_STATE_REASON_MODEM_BUSY,
|
||||
NM_DEVICE_STATE_REASON_MODEM_BUSY = 23,
|
||||
|
||||
/* No dial tone */
|
||||
NM_DEVICE_STATE_REASON_MODEM_NO_DIAL_TONE,
|
||||
NM_DEVICE_STATE_REASON_MODEM_NO_DIAL_TONE = 24,
|
||||
|
||||
/* No carrier could be established */
|
||||
NM_DEVICE_STATE_REASON_MODEM_NO_CARRIER,
|
||||
NM_DEVICE_STATE_REASON_MODEM_NO_CARRIER = 25,
|
||||
|
||||
/* The dialing request timed out */
|
||||
NM_DEVICE_STATE_REASON_MODEM_DIAL_TIMEOUT,
|
||||
NM_DEVICE_STATE_REASON_MODEM_DIAL_TIMEOUT = 26,
|
||||
|
||||
/* The dialing attempt failed */
|
||||
NM_DEVICE_STATE_REASON_MODEM_DIAL_FAILED,
|
||||
NM_DEVICE_STATE_REASON_MODEM_DIAL_FAILED = 27,
|
||||
|
||||
/* Modem initialization failed */
|
||||
NM_DEVICE_STATE_REASON_MODEM_INIT_FAILED,
|
||||
NM_DEVICE_STATE_REASON_MODEM_INIT_FAILED = 28,
|
||||
|
||||
/* Failed to select the specified APN */
|
||||
NM_DEVICE_STATE_REASON_GSM_APN_FAILED,
|
||||
NM_DEVICE_STATE_REASON_GSM_APN_FAILED = 29,
|
||||
|
||||
/* Not searching for networks */
|
||||
NM_DEVICE_STATE_REASON_GSM_REGISTRATION_NOT_SEARCHING,
|
||||
NM_DEVICE_STATE_REASON_GSM_REGISTRATION_NOT_SEARCHING = 30,
|
||||
|
||||
/* Network registration denied */
|
||||
NM_DEVICE_STATE_REASON_GSM_REGISTRATION_DENIED,
|
||||
NM_DEVICE_STATE_REASON_GSM_REGISTRATION_DENIED = 31,
|
||||
|
||||
/* Network registration timed out */
|
||||
NM_DEVICE_STATE_REASON_GSM_REGISTRATION_TIMEOUT,
|
||||
NM_DEVICE_STATE_REASON_GSM_REGISTRATION_TIMEOUT = 32,
|
||||
|
||||
/* Failed to register with the requested network */
|
||||
NM_DEVICE_STATE_REASON_GSM_REGISTRATION_FAILED,
|
||||
NM_DEVICE_STATE_REASON_GSM_REGISTRATION_FAILED = 33,
|
||||
|
||||
/* PIN check failed */
|
||||
NM_DEVICE_STATE_REASON_GSM_PIN_CHECK_FAILED,
|
||||
NM_DEVICE_STATE_REASON_GSM_PIN_CHECK_FAILED = 34,
|
||||
|
||||
/* Necessary firmware for the device may be missing */
|
||||
NM_DEVICE_STATE_REASON_FIRMWARE_MISSING,
|
||||
NM_DEVICE_STATE_REASON_FIRMWARE_MISSING = 35,
|
||||
|
||||
/* The device was removed */
|
||||
NM_DEVICE_STATE_REASON_REMOVED,
|
||||
NM_DEVICE_STATE_REASON_REMOVED = 36,
|
||||
|
||||
/* NetworkManager went to sleep */
|
||||
NM_DEVICE_STATE_REASON_SLEEPING,
|
||||
NM_DEVICE_STATE_REASON_SLEEPING = 37,
|
||||
|
||||
/* The device's active connection disappeared */
|
||||
NM_DEVICE_STATE_REASON_CONNECTION_REMOVED,
|
||||
NM_DEVICE_STATE_REASON_CONNECTION_REMOVED = 38,
|
||||
|
||||
/* Device disconnected by user or client */
|
||||
NM_DEVICE_STATE_REASON_USER_REQUESTED,
|
||||
NM_DEVICE_STATE_REASON_USER_REQUESTED = 39,
|
||||
|
||||
/* Carrier/link changed */
|
||||
NM_DEVICE_STATE_REASON_CARRIER,
|
||||
NM_DEVICE_STATE_REASON_CARRIER = 40,
|
||||
|
||||
/* The device's existing connection was assumed */
|
||||
NM_DEVICE_STATE_REASON_CONNECTION_ASSUMED,
|
||||
NM_DEVICE_STATE_REASON_CONNECTION_ASSUMED = 41,
|
||||
|
||||
/* The supplicant is now available */
|
||||
NM_DEVICE_STATE_REASON_SUPPLICANT_AVAILABLE,
|
||||
NM_DEVICE_STATE_REASON_SUPPLICANT_AVAILABLE = 42,
|
||||
|
||||
/* The modem could not be found */
|
||||
NM_DEVICE_STATE_REASON_MODEM_NOT_FOUND,
|
||||
NM_DEVICE_STATE_REASON_MODEM_NOT_FOUND = 43,
|
||||
|
||||
/* The Bluetooth connection failed or timed out */
|
||||
NM_DEVICE_STATE_REASON_BT_FAILED = 44,
|
||||
|
||||
/* Unused */
|
||||
NM_DEVICE_STATE_REASON_LAST = 0xFFFF
|
||||
|
|
|
|||
|
|
@ -397,6 +397,11 @@
|
|||
The modem could not be found.
|
||||
</tp:docstring>
|
||||
</tp:enumvalue>
|
||||
<tp:enumvalue suffix="BT_FAILED" value="44">
|
||||
<tp:docstring>
|
||||
The Bluetooth connection timed out or failed.
|
||||
</tp:docstring>
|
||||
</tp:enumvalue>
|
||||
</tp:enum>
|
||||
|
||||
</interface>
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@
|
|||
</tp:docstring>
|
||||
<arg name="settings" type="a{sa{sv}}" tp:type="String_String_Variant_Map_Map">
|
||||
<tp:docstring>
|
||||
Contains the changed settings.
|
||||
Contains complete connection setting parameters, including changes.
|
||||
</tp:docstring>
|
||||
</arg>
|
||||
</signal>
|
||||
|
|
|
|||
|
|
@ -59,7 +59,7 @@ libnm_util_la_SOURCES= \
|
|||
libnm_util_la_LIBADD = $(GLIB_LIBS) $(DBUS_LIBS) $(UUID_LIBS)
|
||||
|
||||
libnm_util_la_LDFLAGS = -Wl,--version-script=$(srcdir)/libnm-util.ver \
|
||||
-version-info "3:0:2"
|
||||
-version-info "4:2:3"
|
||||
|
||||
if WITH_GNUTLS
|
||||
libnm_util_la_SOURCES += crypto_gnutls.c
|
||||
|
|
|
|||
|
|
@ -132,9 +132,11 @@ global:
|
|||
nm_setting_gsm_get_apn;
|
||||
nm_setting_gsm_get_network_id;
|
||||
nm_setting_gsm_get_network_type;
|
||||
nm_setting_gsm_get_allowed_bands;
|
||||
nm_setting_gsm_get_band;
|
||||
nm_setting_gsm_get_pin;
|
||||
nm_setting_gsm_get_puk;
|
||||
nm_setting_gsm_get_home_only;
|
||||
nm_setting_ip4_config_error_get_type;
|
||||
nm_setting_ip4_config_error_quark;
|
||||
nm_setting_ip4_config_get_type;
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@
|
|||
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
* Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* (C) Copyright 2007 - 2008 Red Hat, Inc.
|
||||
* (C) Copyright 2007 - 2010 Red Hat, Inc.
|
||||
* (C) Copyright 2007 - 2008 Novell, Inc.
|
||||
*/
|
||||
|
||||
|
|
@ -80,6 +80,8 @@ typedef struct {
|
|||
guint32 allowed_bands; /* A bitfield of NM_SETTING_GSM_BAND_* */
|
||||
|
||||
char *pin;
|
||||
|
||||
gboolean home_only;
|
||||
} NMSettingGsmPrivate;
|
||||
|
||||
enum {
|
||||
|
|
@ -94,6 +96,7 @@ enum {
|
|||
PROP_PIN,
|
||||
PROP_PUK,
|
||||
PROP_ALLOWED_BANDS,
|
||||
PROP_HOME_ONLY,
|
||||
|
||||
LAST_PROP
|
||||
};
|
||||
|
|
@ -191,6 +194,14 @@ nm_setting_gsm_get_puk (NMSettingGsm *setting)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
gboolean
|
||||
nm_setting_gsm_get_home_only (NMSettingGsm *setting)
|
||||
{
|
||||
g_return_val_if_fail (NM_IS_SETTING_GSM (setting), FALSE);
|
||||
|
||||
return NM_SETTING_GSM_GET_PRIVATE (setting)->home_only;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
verify (NMSetting *setting, GSList *all_settings, GError **error)
|
||||
{
|
||||
|
|
@ -356,6 +367,9 @@ set_property (GObject *object, guint prop_id,
|
|||
if (str && strlen (str))
|
||||
g_warning ("Tried to set deprecated property " NM_SETTING_GSM_SETTING_NAME "/" NM_SETTING_GSM_PUK);
|
||||
break;
|
||||
case PROP_HOME_ONLY:
|
||||
priv->home_only = g_value_get_boolean (value);
|
||||
break;
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||
break;
|
||||
|
|
@ -401,6 +415,9 @@ get_property (GObject *object, guint prop_id,
|
|||
/* deprecated */
|
||||
g_value_set_int (value, -1);
|
||||
break;
|
||||
case PROP_HOME_ONLY:
|
||||
g_value_set_boolean (value, nm_setting_gsm_get_home_only (setting));
|
||||
break;
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||
break;
|
||||
|
|
@ -572,7 +589,8 @@ nm_setting_gsm_class_init (NMSettingGsmClass *setting_class)
|
|||
|| NM_SETTING_GSM_BAND_U800
|
||||
|| NM_SETTING_GSM_BAND_U850
|
||||
|| NM_SETTING_GSM_BAND_U900
|
||||
|| NM_SETTING_GSM_BAND_U17IX,
|
||||
|| NM_SETTING_GSM_BAND_U17IX
|
||||
|| NM_SETTING_GSM_BAND_U1900,
|
||||
NM_SETTING_GSM_BAND_ANY,
|
||||
G_PARAM_READWRITE | G_PARAM_CONSTRUCT | NM_SETTING_PARAM_SERIALIZE));
|
||||
|
||||
|
|
@ -593,6 +611,22 @@ nm_setting_gsm_class_init (NMSettingGsmClass *setting_class)
|
|||
NULL,
|
||||
G_PARAM_READWRITE | NM_SETTING_PARAM_SERIALIZE | NM_SETTING_PARAM_SECRET));
|
||||
|
||||
/**
|
||||
* NMSettingGsm:home-only:
|
||||
*
|
||||
* When TRUE, only connections to the home network will be allowed.
|
||||
* Connections to roaming networks will not be made.
|
||||
**/
|
||||
g_object_class_install_property
|
||||
(object_class, PROP_HOME_ONLY,
|
||||
g_param_spec_boolean (NM_SETTING_GSM_HOME_ONLY,
|
||||
"PIN",
|
||||
"When TRUE, only connections to the home network will "
|
||||
"be allowed. Connections to roaming networks will "
|
||||
"not be made.",
|
||||
FALSE,
|
||||
G_PARAM_READWRITE | NM_SETTING_PARAM_SERIALIZE));
|
||||
|
||||
/* Deprecated properties */
|
||||
/**
|
||||
* NMSettingGsm:puk:
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@
|
|||
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
* Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* (C) Copyright 2007 - 2008 Red Hat, Inc.
|
||||
* (C) Copyright 2007 - 2010 Red Hat, Inc.
|
||||
* (C) Copyright 2007 - 2008 Novell, Inc.
|
||||
*/
|
||||
|
||||
|
|
@ -61,6 +61,7 @@ GQuark nm_setting_gsm_error_quark (void);
|
|||
#define NM_SETTING_GSM_NETWORK_TYPE "network-type"
|
||||
#define NM_SETTING_GSM_ALLOWED_BANDS "allowed-bands"
|
||||
#define NM_SETTING_GSM_PIN "pin"
|
||||
#define NM_SETTING_GSM_HOME_ONLY "home-only"
|
||||
|
||||
/* DEPRECATED & UNUSED */
|
||||
#define NM_SETTING_GSM_PUK "puk"
|
||||
|
|
@ -95,6 +96,7 @@ typedef enum {
|
|||
NM_SETTING_GSM_BAND_U850 = 0x00000200, /* WCDMA 3GPP UMTS 850 MHz (Class V) */
|
||||
NM_SETTING_GSM_BAND_U900 = 0x00000400, /* WCDMA 3GPP UMTS 900 MHz (Class VIII) */
|
||||
NM_SETTING_GSM_BAND_U17IX = 0x00000800, /* WCDMA 3GPP UMTS 1700 MHz (Class IX) */
|
||||
NM_SETTING_GSM_BAND_U1900 = 0x00001000, /* WCDMA 3GPP UMTS 1900 MHz (Class II) */
|
||||
} NMSettingGsmNetworkBand;
|
||||
|
||||
typedef struct {
|
||||
|
|
@ -122,6 +124,7 @@ const char *nm_setting_gsm_get_network_id (NMSettingGsm *setting);
|
|||
int nm_setting_gsm_get_network_type (NMSettingGsm *setting);
|
||||
guint32 nm_setting_gsm_get_allowed_bands (NMSettingGsm *setting);
|
||||
const char *nm_setting_gsm_get_pin (NMSettingGsm *setting);
|
||||
gboolean nm_setting_gsm_get_home_only (NMSettingGsm *setting);
|
||||
|
||||
/* DEPRECATED & UNUSED */
|
||||
const char *nm_setting_gsm_get_puk (NMSettingGsm *setting);
|
||||
|
|
|
|||
|
|
@ -879,7 +879,7 @@ nm_setting_ip4_config_class_init (NMSettingIP4ConfigClass *setting_class)
|
|||
* NMSettingIP4Config:ignore-auto-dns:
|
||||
*
|
||||
* When the method is set to 'auto' and this property to TRUE, automatically
|
||||
* configured nameservers and search domains are ignored and only namservers
|
||||
* configured nameservers and search domains are ignored and only nameservers
|
||||
* and search domains specified in #NMSettingIP4Config:dns and
|
||||
* #NMSettingIP4Config:dns-search, if any, are used.
|
||||
**/
|
||||
|
|
@ -889,7 +889,7 @@ nm_setting_ip4_config_class_init (NMSettingIP4ConfigClass *setting_class)
|
|||
"Ignore automatic DNS",
|
||||
"When the method is set to 'auto' and this property "
|
||||
"to TRUE, automatically configured nameservers and "
|
||||
"search domains are ignored and only namservers and "
|
||||
"search domains are ignored and only nameservers and "
|
||||
"search domains specified in the 'dns' and 'dns-search' "
|
||||
"properties, if any, are used.",
|
||||
FALSE,
|
||||
|
|
|
|||
|
|
@ -763,7 +763,7 @@ nm_setting_ip6_config_class_init (NMSettingIP6ConfigClass *setting_class)
|
|||
*
|
||||
* When the method is set to 'auto' or 'dhcp' and this property is set to
|
||||
* TRUE, automatically configured nameservers and search domains are ignored
|
||||
* and only namservers and search domains specified in
|
||||
* and only nameservers and search domains specified in
|
||||
* #NMSettingIP6Config:dns and #NMSettingIP6Config:dns-search, if any, are
|
||||
* used.
|
||||
**/
|
||||
|
|
@ -774,7 +774,7 @@ nm_setting_ip6_config_class_init (NMSettingIP6ConfigClass *setting_class)
|
|||
"When the method is set to 'auto' or 'dhcp' and this "
|
||||
"property is set to TRUE, automatically configured "
|
||||
"nameservers and search domains are ignored and only "
|
||||
"namservers and search domains specified in the 'dns' "
|
||||
"nameservers and search domains specified in the 'dns' "
|
||||
"and 'dns-search' properties, if any, are used.",
|
||||
FALSE,
|
||||
G_PARAM_READWRITE | G_PARAM_CONSTRUCT | NM_SETTING_PARAM_SERIALIZE));
|
||||
|
|
|
|||
|
|
@ -624,7 +624,7 @@ nm_utils_convert_uint_array_to_string (const GValue *src_value, GValue *dest_val
|
|||
}
|
||||
|
||||
static void
|
||||
nm_utils_convert_ip4_addr_struct_array_to_string (const GValue *src_value, GValue *dest_value)
|
||||
nm_utils_convert_ip4_addr_route_struct_array_to_string (const GValue *src_value, GValue *dest_value)
|
||||
{
|
||||
GPtrArray *ptr_array;
|
||||
GString *printable;
|
||||
|
|
@ -639,6 +639,7 @@ nm_utils_convert_ip4_addr_struct_array_to_string (const GValue *src_value, GValu
|
|||
GArray *array;
|
||||
char buf[INET_ADDRSTRLEN + 1];
|
||||
struct in_addr addr;
|
||||
gboolean is_addr; /* array contains address x route */
|
||||
|
||||
if (i > 0)
|
||||
g_string_append (printable, ", ");
|
||||
|
|
@ -649,13 +650,17 @@ nm_utils_convert_ip4_addr_struct_array_to_string (const GValue *src_value, GValu
|
|||
g_string_append (printable, "invalid");
|
||||
continue;
|
||||
}
|
||||
is_addr = (array->len < 4);
|
||||
|
||||
memset (buf, 0, sizeof (buf));
|
||||
addr.s_addr = g_array_index (array, guint32, 0);
|
||||
if (!inet_ntop (AF_INET, &addr, buf, INET_ADDRSTRLEN))
|
||||
nm_warning ("%s: error converting IP4 address 0x%X",
|
||||
__func__, ntohl (addr.s_addr));
|
||||
g_string_append_printf (printable, "ip = %s", buf);
|
||||
if (is_addr)
|
||||
g_string_append_printf (printable, "ip = %s", buf);
|
||||
else
|
||||
g_string_append_printf (printable, "dst = %s", buf);
|
||||
g_string_append (printable, ", ");
|
||||
|
||||
memset (buf, 0, sizeof (buf));
|
||||
|
|
@ -670,7 +675,18 @@ nm_utils_convert_ip4_addr_struct_array_to_string (const GValue *src_value, GValu
|
|||
if (!inet_ntop (AF_INET, &addr, buf, INET_ADDRSTRLEN))
|
||||
nm_warning ("%s: error converting IP4 address 0x%X",
|
||||
__func__, ntohl (addr.s_addr));
|
||||
g_string_append_printf (printable, "gw = %s", buf);
|
||||
if (is_addr)
|
||||
g_string_append_printf (printable, "gw = %s", buf);
|
||||
else
|
||||
g_string_append_printf (printable, "nh = %s", buf);
|
||||
}
|
||||
|
||||
if (array->len > 3) {
|
||||
g_string_append (printable, ", ");
|
||||
|
||||
memset (buf, 0, sizeof (buf));
|
||||
g_string_append_printf (printable, "mt = %u",
|
||||
g_array_index (array, guint32, 3));
|
||||
}
|
||||
|
||||
g_string_append (printable, " }");
|
||||
|
|
@ -764,6 +780,203 @@ nm_utils_convert_byte_array_to_string (const GValue *src_value, GValue *dest_val
|
|||
g_string_free (printable, FALSE);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
nm_utils_inet6_ntop (struct in6_addr *addr, char *buf)
|
||||
{
|
||||
if (!inet_ntop (AF_INET6, addr, buf, INET6_ADDRSTRLEN)) {
|
||||
int i;
|
||||
GString *ip6_str = g_string_new (NULL);
|
||||
g_string_append_printf (ip6_str, "%02X", addr->s6_addr[0]);
|
||||
for (i = 1; i < 16; i++)
|
||||
g_string_append_printf (ip6_str, " %02X", addr->s6_addr[i]);
|
||||
nm_warning ("%s: error converting IP6 address %s",
|
||||
__func__, ip6_str->str);
|
||||
g_string_free (ip6_str, TRUE);
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static void
|
||||
nm_utils_convert_ip6_dns_array_to_string (const GValue *src_value, GValue *dest_value)
|
||||
{
|
||||
GPtrArray *ptr_array;
|
||||
GString *printable;
|
||||
guint i = 0;
|
||||
|
||||
g_return_if_fail (g_type_is_a (G_VALUE_TYPE (src_value), DBUS_TYPE_G_ARRAY_OF_ARRAY_OF_UCHAR));
|
||||
|
||||
ptr_array = (GPtrArray *) g_value_get_boxed (src_value);
|
||||
|
||||
printable = g_string_new ("[");
|
||||
while (ptr_array && (i < ptr_array->len)) {
|
||||
GByteArray *bytearray;
|
||||
char buf[INET6_ADDRSTRLEN];
|
||||
struct in6_addr *addr;
|
||||
|
||||
if (i > 0)
|
||||
g_string_append (printable, ", ");
|
||||
|
||||
bytearray = (GByteArray *) g_ptr_array_index (ptr_array, i++);
|
||||
if (bytearray->len != 16) {
|
||||
g_string_append (printable, "invalid");
|
||||
continue;
|
||||
}
|
||||
addr = (struct in6_addr *) bytearray->data;
|
||||
memset (buf, 0, sizeof (buf));
|
||||
nm_utils_inet6_ntop (addr, buf);
|
||||
g_string_append_printf (printable, "%s", buf);
|
||||
}
|
||||
g_string_append_c (printable, ']');
|
||||
|
||||
g_value_take_string (dest_value, printable->str);
|
||||
g_string_free (printable, FALSE);
|
||||
}
|
||||
|
||||
static void
|
||||
nm_utils_convert_ip6_addr_struct_array_to_string (const GValue *src_value, GValue *dest_value)
|
||||
{
|
||||
GPtrArray *ptr_array;
|
||||
GString *printable;
|
||||
guint i = 0;
|
||||
|
||||
g_return_if_fail (g_type_is_a (G_VALUE_TYPE (src_value), DBUS_TYPE_G_ARRAY_OF_IP6_ADDRESS));
|
||||
|
||||
ptr_array = (GPtrArray *) g_value_get_boxed (src_value);
|
||||
|
||||
printable = g_string_new ("[");
|
||||
while (ptr_array && (i < ptr_array->len)) {
|
||||
GValueArray *elements;
|
||||
GValue *tmp;
|
||||
GByteArray *ba_addr;
|
||||
char buf[INET6_ADDRSTRLEN];
|
||||
struct in6_addr *addr;
|
||||
guint32 prefix;
|
||||
|
||||
if (i > 0)
|
||||
g_string_append (printable, ", ");
|
||||
|
||||
g_string_append (printable, "{ ");
|
||||
elements = (GValueArray *) g_ptr_array_index (ptr_array, i++);
|
||||
if ( (elements->n_values != 2)
|
||||
|| (G_VALUE_TYPE (g_value_array_get_nth (elements, 0)) != DBUS_TYPE_G_UCHAR_ARRAY)
|
||||
|| (G_VALUE_TYPE (g_value_array_get_nth (elements, 1)) != G_TYPE_UINT)) {
|
||||
g_string_append (printable, "invalid");
|
||||
continue;
|
||||
}
|
||||
|
||||
/* IPv6 address */
|
||||
tmp = g_value_array_get_nth (elements, 0);
|
||||
ba_addr = g_value_get_boxed (tmp);
|
||||
if (ba_addr->len != 16) {
|
||||
g_string_append (printable, "invalid");
|
||||
continue;
|
||||
}
|
||||
addr = (struct in6_addr *) ba_addr->data;
|
||||
memset (buf, 0, sizeof (buf));
|
||||
nm_utils_inet6_ntop (addr, buf);
|
||||
g_string_append_printf (printable, "ip = %s", buf);
|
||||
g_string_append (printable, ", ");
|
||||
|
||||
/* Prefix */
|
||||
tmp = g_value_array_get_nth (elements, 1);
|
||||
prefix = g_value_get_uint (tmp);
|
||||
if (prefix > 128) {
|
||||
g_string_append (printable, "invalid");
|
||||
continue;
|
||||
}
|
||||
g_string_append_printf (printable, "px = %u", prefix);
|
||||
g_string_append (printable, " }");
|
||||
}
|
||||
g_string_append_c (printable, ']');
|
||||
|
||||
g_value_take_string (dest_value, printable->str);
|
||||
g_string_free (printable, FALSE);
|
||||
}
|
||||
|
||||
static void
|
||||
nm_utils_convert_ip6_route_struct_array_to_string (const GValue *src_value, GValue *dest_value)
|
||||
{
|
||||
GPtrArray *ptr_array;
|
||||
GString *printable;
|
||||
guint i = 0;
|
||||
|
||||
g_return_if_fail (g_type_is_a (G_VALUE_TYPE (src_value), DBUS_TYPE_G_ARRAY_OF_IP6_ROUTE));
|
||||
|
||||
ptr_array = (GPtrArray *) g_value_get_boxed (src_value);
|
||||
|
||||
printable = g_string_new ("[");
|
||||
while (ptr_array && (i < ptr_array->len)) {
|
||||
GValueArray *elements;
|
||||
GValue *tmp;
|
||||
GByteArray *ba_addr;
|
||||
char buf[INET6_ADDRSTRLEN];
|
||||
struct in6_addr *addr;
|
||||
guint32 prefix, metric;
|
||||
|
||||
if (i > 0)
|
||||
g_string_append (printable, ", ");
|
||||
|
||||
g_string_append (printable, "{ ");
|
||||
elements = (GValueArray *) g_ptr_array_index (ptr_array, i++);
|
||||
if ( (elements->n_values != 4)
|
||||
|| (G_VALUE_TYPE (g_value_array_get_nth (elements, 0)) != DBUS_TYPE_G_UCHAR_ARRAY)
|
||||
|| (G_VALUE_TYPE (g_value_array_get_nth (elements, 1)) != G_TYPE_UINT)
|
||||
|| (G_VALUE_TYPE (g_value_array_get_nth (elements, 2)) != DBUS_TYPE_G_UCHAR_ARRAY)
|
||||
|| (G_VALUE_TYPE (g_value_array_get_nth (elements, 3)) != G_TYPE_UINT)) {
|
||||
g_string_append (printable, "invalid");
|
||||
continue;
|
||||
}
|
||||
|
||||
/* Destination address */
|
||||
tmp = g_value_array_get_nth (elements, 0);
|
||||
ba_addr = g_value_get_boxed (tmp);
|
||||
if (ba_addr->len != 16) {
|
||||
g_string_append (printable, "invalid");
|
||||
continue;
|
||||
}
|
||||
addr = (struct in6_addr *) ba_addr->data;
|
||||
memset (buf, 0, sizeof (buf));
|
||||
nm_utils_inet6_ntop (addr, buf);
|
||||
g_string_append_printf (printable, "dst = %s", buf);
|
||||
g_string_append (printable, ", ");
|
||||
|
||||
/* Prefix */
|
||||
tmp = g_value_array_get_nth (elements, 1);
|
||||
prefix = g_value_get_uint (tmp);
|
||||
if (prefix > 128) {
|
||||
g_string_append (printable, "invalid");
|
||||
continue;
|
||||
}
|
||||
g_string_append_printf (printable, "px = %u", prefix);
|
||||
g_string_append (printable, ", ");
|
||||
|
||||
/* Next hop addresses */
|
||||
tmp = g_value_array_get_nth (elements, 2);
|
||||
ba_addr = g_value_get_boxed (tmp);
|
||||
if (ba_addr->len != 16) {
|
||||
g_string_append (printable, "invalid");
|
||||
continue;
|
||||
}
|
||||
addr = (struct in6_addr *) ba_addr->data;
|
||||
memset (buf, 0, sizeof (buf));
|
||||
nm_utils_inet6_ntop (addr, buf);
|
||||
g_string_append_printf (printable, "nh = %s", buf);
|
||||
g_string_append (printable, ", ");
|
||||
|
||||
/* Metric */
|
||||
tmp = g_value_array_get_nth (elements, 3);
|
||||
metric = g_value_get_uint (tmp);
|
||||
g_string_append_printf (printable, "mt = %u", metric);
|
||||
|
||||
g_string_append (printable, " }");
|
||||
}
|
||||
g_string_append_c (printable, ']');
|
||||
|
||||
g_value_take_string (dest_value, printable->str);
|
||||
g_string_free (printable, FALSE);
|
||||
}
|
||||
|
||||
void
|
||||
_nm_utils_register_value_transformations (void)
|
||||
{
|
||||
|
|
@ -781,7 +994,7 @@ _nm_utils_register_value_transformations (void)
|
|||
nm_utils_convert_uint_array_to_string);
|
||||
g_value_register_transform_func (DBUS_TYPE_G_ARRAY_OF_ARRAY_OF_UINT,
|
||||
G_TYPE_STRING,
|
||||
nm_utils_convert_ip4_addr_struct_array_to_string);
|
||||
nm_utils_convert_ip4_addr_route_struct_array_to_string);
|
||||
g_value_register_transform_func (DBUS_TYPE_G_MAP_OF_VARIANT,
|
||||
G_TYPE_STRING,
|
||||
nm_utils_convert_gvalue_hash_to_string);
|
||||
|
|
@ -791,6 +1004,15 @@ _nm_utils_register_value_transformations (void)
|
|||
g_value_register_transform_func (DBUS_TYPE_G_UCHAR_ARRAY,
|
||||
G_TYPE_STRING,
|
||||
nm_utils_convert_byte_array_to_string);
|
||||
g_value_register_transform_func (DBUS_TYPE_G_ARRAY_OF_ARRAY_OF_UCHAR,
|
||||
G_TYPE_STRING,
|
||||
nm_utils_convert_ip6_dns_array_to_string);
|
||||
g_value_register_transform_func (DBUS_TYPE_G_ARRAY_OF_IP6_ADDRESS,
|
||||
G_TYPE_STRING,
|
||||
nm_utils_convert_ip6_addr_struct_array_to_string);
|
||||
g_value_register_transform_func (DBUS_TYPE_G_ARRAY_OF_IP6_ROUTE,
|
||||
G_TYPE_STRING,
|
||||
nm_utils_convert_ip6_route_struct_array_to_string);
|
||||
registered = TRUE;
|
||||
}
|
||||
}
|
||||
|
|
@ -1232,6 +1454,18 @@ nm_utils_ip4_get_default_prefix (guint32 ip)
|
|||
return 24; /* Class C - 255.255.255.0 */
|
||||
}
|
||||
|
||||
/**
|
||||
* nm_utils_ip6_addresses_from_gvalue:
|
||||
* @value: gvalue containing a GPtrArray of GValueArrays of (GArray of guchars) and guint32
|
||||
*
|
||||
* Utility function to convert a #GPtrArray of #GValueArrays of (#GArray of guchars) and guint32
|
||||
* representing a list of NetworkManager IPv6 addresses (which is a pair of address
|
||||
* and prefix), into a GSList of #NMIP6Address objects. The specific format of
|
||||
* this serialization is not guaranteed to be stable and the #GValueArray may be
|
||||
* extended in the future.
|
||||
*
|
||||
* Returns: a newly allocated #GSList of #NMIP6Address objects
|
||||
**/
|
||||
GSList *
|
||||
nm_utils_ip6_addresses_from_gvalue (const GValue *value)
|
||||
{
|
||||
|
|
@ -1280,6 +1514,19 @@ nm_utils_ip6_addresses_from_gvalue (const GValue *value)
|
|||
return g_slist_reverse (list);
|
||||
}
|
||||
|
||||
/**
|
||||
* nm_utils_ip6_addresses_to_gvalue:
|
||||
* @list: a list of #NMIP6Address objects
|
||||
* @value: a pointer to a #GValue into which to place the converted addresses,
|
||||
* which should be unset by the caller (when no longer needed) with
|
||||
* g_value_unset().
|
||||
*
|
||||
* Utility function to convert a #GSList of #NMIP6Address objects into a
|
||||
* GPtrArray of GValueArrays of (GArray or guchars) and guint32 representing a list
|
||||
* of NetworkManager IPv6 addresses (which is a pair of address and prefix).
|
||||
* The specific format of this serialization is not guaranteed to be stable and may be
|
||||
* extended in the future.
|
||||
**/
|
||||
void
|
||||
nm_utils_ip6_addresses_to_gvalue (GSList *list, GValue *value)
|
||||
{
|
||||
|
|
@ -1314,6 +1561,19 @@ nm_utils_ip6_addresses_to_gvalue (GSList *list, GValue *value)
|
|||
g_value_take_boxed (value, addresses);
|
||||
}
|
||||
|
||||
/**
|
||||
* nm_utils_ip6_routes_from_gvalue:
|
||||
* @value: gvalue containing a GPtrArray of GValueArrays of (GArray or guchars), guint32,
|
||||
* (GArray of guchars), and guint32
|
||||
*
|
||||
* Utility function GPtrArray of GValueArrays of (GArray or guchars), guint32,
|
||||
* (GArray of guchars), and guint32 representing a list of NetworkManager IPv6
|
||||
* routes (which is a tuple of destination, prefix, next hop, and metric)
|
||||
* into a GSList of #NMIP6Route objects. The specific format of this serialization
|
||||
* is not guaranteed to be stable and may be extended in the future.
|
||||
*
|
||||
* Returns: a newly allocated #GSList of #NMIP6Route objects
|
||||
**/
|
||||
GSList *
|
||||
nm_utils_ip6_routes_from_gvalue (const GValue *value)
|
||||
{
|
||||
|
|
@ -1366,6 +1626,19 @@ nm_utils_ip6_routes_from_gvalue (const GValue *value)
|
|||
return g_slist_reverse (list);
|
||||
}
|
||||
|
||||
/**
|
||||
* nm_utils_ip6_routes_to_gvalue:
|
||||
* @list: a list of #NMIP6Route objects
|
||||
* @value: a pointer to a #GValue into which to place the converted routes,
|
||||
* which should be unset by the caller (when no longer needed) with
|
||||
* g_value_unset().
|
||||
*
|
||||
* Utility function to convert a #GSList of #NMIP6Route objects into a GPtrArray of
|
||||
* GValueArrays of (GArray or guchars), guint32, (GArray of guchars), and guint32
|
||||
* representing a list of NetworkManager IPv6 routes (which is a tuple of destination,
|
||||
* prefix, next hop, and metric). The specific format of this serialization is not
|
||||
* guaranteed to be stable and may be extended in the future.
|
||||
**/
|
||||
void
|
||||
nm_utils_ip6_routes_to_gvalue (GSList *list, GValue *value)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -35,6 +35,7 @@ ku
|
|||
lt
|
||||
lv
|
||||
mk
|
||||
ml
|
||||
mr
|
||||
nb
|
||||
ne
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ libnm-util/nm-utils.c
|
|||
src/nm-netlink-monitor.c
|
||||
src/main.c
|
||||
src/dhcp-manager/nm-dhcp-dhclient.c
|
||||
src/dhcp-manager/nm-dhcp-manager.c
|
||||
src/ip6-manager/nm-netlink-listener.c
|
||||
src/named-manager/nm-named-manager.c
|
||||
src/system-settings/nm-default-wired-connection.c
|
||||
|
|
|
|||
885
po/de.po
885
po/de.po
|
|
@ -7,20 +7,867 @@
|
|||
# Thomas Gier <info@thomasgier.de>, 2007.
|
||||
# Andre Klapper <ak-47@gmx.net>, 2007.
|
||||
# Hauke Mehrtens <hauke@hauke-m.de>, 2008.
|
||||
# Christian Kirbach <Christian.Kirbach@googlemail.com>, 2009.
|
||||
#
|
||||
# Christian Kirbach <Christian.Kirbach@googlemail.com>, 2009, 2010.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: NetworkManager HEAD\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2009-10-15 23:02+0200\n"
|
||||
"PO-Revision-Date: 2009-10-14 11:27+0200\n"
|
||||
"POT-Creation-Date: 2010-03-12 08:15+0100\n"
|
||||
"PO-Revision-Date: 2010-03-12 08:17+0100\n"
|
||||
"Last-Translator: Christian Kirbach <Christian.Kirbach@googlemail.com>\n"
|
||||
"Language-Team: German <gnome-de@gnome.org>\n"
|
||||
"Language-Team: Deutsch <gnome-de@gnome.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||
|
||||
#: ../cli/src/connections.c:86
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Usage: nmcli con { COMMAND | help }\n"
|
||||
" COMMAND := { list | status | up | down }\n"
|
||||
"\n"
|
||||
" list [id <id> | uuid <id> | system | user]\n"
|
||||
" status\n"
|
||||
" up id <id> | uuid <id> [iface <iface>] [ap <hwaddr>] [--nowait] [--timeout "
|
||||
"<timeout>]\n"
|
||||
" down id <id> | uuid <id>\n"
|
||||
msgstr ""
|
||||
"Aufruf: nmcli con { BEFEHL | help }\n"
|
||||
" BEFEHL := { list | status | up | down }\n"
|
||||
"\n"
|
||||
" list [id <id> | uuid <id> | system | user]\n"
|
||||
" status\n"
|
||||
" up id <id> | uuid <id> [iface <iface>] [ap <hwaddr>] [--nowait] [--timeout "
|
||||
"<timeout>]\n"
|
||||
" down id <id> | uuid <id>\n"
|
||||
|
||||
#: ../cli/src/connections.c:158
|
||||
msgid "Connections"
|
||||
msgstr "Verbindungen"
|
||||
|
||||
#: ../cli/src/connections.c:158 ../cli/src/connections.c:160
|
||||
#: ../cli/src/connections.c:196 ../cli/src/connections.c:198
|
||||
#: ../cli/src/connections.c:205 ../cli/src/connections.c:207
|
||||
#: ../cli/src/devices.c:298 ../cli/src/devices.c:458 ../cli/src/devices.c:460
|
||||
msgid "Type"
|
||||
msgstr "Typ"
|
||||
|
||||
#: ../cli/src/connections.c:158 ../cli/src/connections.c:160
|
||||
#: ../cli/src/connections.c:196 ../cli/src/connections.c:198
|
||||
#: ../cli/src/connections.c:205 ../cli/src/connections.c:207
|
||||
#: ../cli/src/connections.c:297 ../cli/src/connections.c:299
|
||||
msgid "UUID"
|
||||
msgstr "UUID"
|
||||
|
||||
#: ../cli/src/connections.c:158 ../cli/src/connections.c:160
|
||||
#: ../cli/src/connections.c:196 ../cli/src/connections.c:198
|
||||
#: ../cli/src/connections.c:205 ../cli/src/connections.c:207
|
||||
#: ../cli/src/connections.c:297 ../cli/src/connections.c:299
|
||||
msgid "Name"
|
||||
msgstr "Name"
|
||||
|
||||
#: ../cli/src/connections.c:163
|
||||
#, c-format
|
||||
msgid "System connections:\n"
|
||||
msgstr "System-Verbindungen:\n"
|
||||
|
||||
#: ../cli/src/connections.c:167
|
||||
#, c-format
|
||||
msgid "User connections:\n"
|
||||
msgstr "Benutzer-Verbindungen:\n"
|
||||
|
||||
#: ../cli/src/connections.c:178 ../cli/src/connections.c:967
|
||||
#: ../cli/src/connections.c:983 ../cli/src/connections.c:992
|
||||
#: ../cli/src/connections.c:1003 ../cli/src/connections.c:1085
|
||||
#: ../cli/src/devices.c:604 ../cli/src/devices.c:614 ../cli/src/devices.c:699
|
||||
#: ../cli/src/devices.c:785 ../cli/src/devices.c:792
|
||||
#, c-format
|
||||
msgid "Error: %s argument is missing."
|
||||
msgstr "Fehler: %s Argument fehlt."
|
||||
|
||||
#: ../cli/src/connections.c:189
|
||||
#, c-format
|
||||
msgid "Error: %s - no such connection."
|
||||
msgstr "Fehler: %s - keine solche Verbindung."
|
||||
|
||||
#: ../cli/src/connections.c:196
|
||||
msgid "System-wide connections"
|
||||
msgstr "Systemweite Verbindungen"
|
||||
|
||||
#: ../cli/src/connections.c:205
|
||||
msgid "User connections"
|
||||
msgstr "Benutzer-Verbindungen"
|
||||
|
||||
#: ../cli/src/connections.c:212 ../cli/src/connections.c:1016
|
||||
#: ../cli/src/connections.c:1103 ../cli/src/devices.c:446
|
||||
#: ../cli/src/devices.c:494 ../cli/src/devices.c:628 ../cli/src/devices.c:706
|
||||
#: ../cli/src/devices.c:798
|
||||
#, c-format
|
||||
msgid "Unknown parameter: %s\n"
|
||||
msgstr "Unbekannter Parameter: %s\n"
|
||||
|
||||
#: ../cli/src/connections.c:221
|
||||
#, c-format
|
||||
msgid "Error: no valid parameter specified."
|
||||
msgstr "Fehler: Kein gültiger Parameter angegeben."
|
||||
|
||||
#. FIXME: Fix the output
|
||||
#: ../cli/src/connections.c:268 ../cli/src/devices.c:302
|
||||
#: ../cli/src/devices.c:321 ../cli/src/devices.c:353 ../cli/src/devices.c:355
|
||||
#: ../cli/src/devices.c:357 ../cli/src/devices.c:359 ../cli/src/devices.c:361
|
||||
msgid "yes"
|
||||
msgstr "ja"
|
||||
|
||||
#: ../cli/src/connections.c:268 ../cli/src/devices.c:304
|
||||
msgid "no"
|
||||
msgstr "nein"
|
||||
|
||||
#: ../cli/src/connections.c:297
|
||||
msgid "Active connections"
|
||||
msgstr "Aktive Verbindungen "
|
||||
|
||||
#: ../cli/src/connections.c:297 ../cli/src/connections.c:299
|
||||
#: ../cli/src/devices.c:302 ../cli/src/devices.c:304
|
||||
msgid "Default"
|
||||
msgstr "Vorgabe"
|
||||
|
||||
#: ../cli/src/connections.c:297 ../cli/src/connections.c:299
|
||||
msgid "Service"
|
||||
msgstr "Dienst"
|
||||
|
||||
#: ../cli/src/connections.c:297 ../cli/src/connections.c:299
|
||||
msgid "Devices"
|
||||
msgstr "Gerät"
|
||||
|
||||
#: ../cli/src/connections.c:659
|
||||
#, c-format
|
||||
msgid "no active connection on device '%s'"
|
||||
msgstr "keine aktive Verbindung auf Gerät »%s«"
|
||||
|
||||
#: ../cli/src/connections.c:667
|
||||
#, c-format
|
||||
msgid "no active connection or device"
|
||||
msgstr "keine aktive Verbindung auf Gerät"
|
||||
|
||||
#: ../cli/src/connections.c:730
|
||||
msgid "activating"
|
||||
msgstr "wird aktiviert"
|
||||
|
||||
#: ../cli/src/connections.c:732
|
||||
msgid "activated"
|
||||
msgstr "aktiviert"
|
||||
|
||||
#: ../cli/src/connections.c:735 ../cli/src/connections.c:758
|
||||
#: ../cli/src/connections.c:791 ../cli/src/devices.c:111
|
||||
#: ../cli/src/network-manager.c:76 ../cli/src/network-manager.c:98
|
||||
msgid "unknown"
|
||||
msgstr "unbekannt"
|
||||
|
||||
#: ../cli/src/connections.c:744
|
||||
msgid "VPN connecting (prepare)"
|
||||
msgstr "VPN wird verbunden (vorbereiten)"
|
||||
|
||||
#: ../cli/src/connections.c:746
|
||||
msgid "VPN connecting (need authentication)"
|
||||
msgstr "VPN wird verbunden (Legitimierung erforderlich)"
|
||||
|
||||
#: ../cli/src/connections.c:748
|
||||
msgid "VPN connecting"
|
||||
msgstr "VPN wird verbunden"
|
||||
|
||||
#: ../cli/src/connections.c:750
|
||||
msgid "VPN connecting (getting IP configuration)"
|
||||
msgstr "VPN wird verbunden (IP-Konfiguration wird ermittelt)"
|
||||
|
||||
#: ../cli/src/connections.c:752
|
||||
msgid "VPN connected"
|
||||
msgstr "VPN verbunden"
|
||||
|
||||
#: ../cli/src/connections.c:754
|
||||
msgid "VPN connection failed"
|
||||
msgstr "VPN-Verbindung fehlgeschlagen"
|
||||
|
||||
#: ../cli/src/connections.c:756
|
||||
msgid "VPN disconnected"
|
||||
msgstr "VPN getrennt"
|
||||
|
||||
#: ../cli/src/connections.c:767
|
||||
msgid "unknown reason"
|
||||
msgstr "unbekannter Grund"
|
||||
|
||||
#: ../cli/src/connections.c:769
|
||||
msgid "none"
|
||||
msgstr "kein"
|
||||
|
||||
#: ../cli/src/connections.c:771
|
||||
msgid "the user was disconnected"
|
||||
msgstr "der Benutzer wurde getrennt"
|
||||
|
||||
#: ../cli/src/connections.c:773
|
||||
msgid "the base network connection was interrupted"
|
||||
msgstr "die Basisverbindung wurde unterbrochen"
|
||||
|
||||
#: ../cli/src/connections.c:775
|
||||
msgid "the VPN service stopped unexpectedly"
|
||||
msgstr "der VPN-Dienst brach unerwartet ab"
|
||||
|
||||
#: ../cli/src/connections.c:777
|
||||
msgid "the VPN service returned invalid configuration"
|
||||
msgstr "der VPN-Dienst gab eine ungültige Konfiguration zurück"
|
||||
|
||||
#: ../cli/src/connections.c:779
|
||||
msgid "the connection attempt timed out"
|
||||
msgstr "Der Verbindungsversuch ist zeitlich abgelaufen"
|
||||
|
||||
#: ../cli/src/connections.c:781
|
||||
msgid "the VPN service did not start in time"
|
||||
msgstr "der VPN-Dienst ist nicht rechtzeitig gestartet"
|
||||
|
||||
#: ../cli/src/connections.c:783
|
||||
msgid "the VPN service failed to start"
|
||||
msgstr "der VPN-Dienst konnte nicht starten"
|
||||
|
||||
#: ../cli/src/connections.c:785
|
||||
msgid "no valid VPN secrets"
|
||||
msgstr "keine gültigen VPN-Geheimnisse"
|
||||
|
||||
#: ../cli/src/connections.c:787
|
||||
msgid "invalid VPN secrets"
|
||||
msgstr "ungültige VPN-Geheimnisse"
|
||||
|
||||
#: ../cli/src/connections.c:789
|
||||
msgid "the connection was removed"
|
||||
msgstr "Die Verbindung wurde entfernt"
|
||||
|
||||
#: ../cli/src/connections.c:803
|
||||
#, c-format
|
||||
msgid "state: %s\n"
|
||||
msgstr "Zustand: %s\n"
|
||||
|
||||
#: ../cli/src/connections.c:806 ../cli/src/connections.c:832
|
||||
#, c-format
|
||||
msgid "Connection activated\n"
|
||||
msgstr "Verbindung aktiviert\n"
|
||||
|
||||
#: ../cli/src/connections.c:809
|
||||
#, c-format
|
||||
msgid "Error: Connection activation failed."
|
||||
msgstr "Fehler: Aktivierung der Verbindung fehlgeschlagen."
|
||||
|
||||
#: ../cli/src/connections.c:828
|
||||
#, c-format
|
||||
msgid "state: %s (%d)\n"
|
||||
msgstr "Zustand: %s (%d)\n"
|
||||
|
||||
#: ../cli/src/connections.c:838
|
||||
#, c-format
|
||||
msgid "Error: Connection activation failed: %s."
|
||||
msgstr "Fehler: Aktivierung der Verbindung fehlgeschlagen: %s."
|
||||
|
||||
#: ../cli/src/connections.c:855 ../cli/src/devices.c:551
|
||||
#, c-format
|
||||
msgid "Error: Timeout %d sec expired."
|
||||
msgstr "Fehler: Zeitbeschränkung von %d Sekunden abgelaufen."
|
||||
|
||||
#: ../cli/src/connections.c:898
|
||||
#, c-format
|
||||
msgid "Error: Connection activation failed: %s"
|
||||
msgstr "Fehler: Aktivierung der Verbindung fehlgeschlagen: %s"
|
||||
|
||||
#: ../cli/src/connections.c:912
|
||||
#, c-format
|
||||
msgid "Error: Obtaining active connection for '%s' failed."
|
||||
msgstr "Fehler: Erlangen der Verbindung für »%s« ist fehlgeschlagen."
|
||||
|
||||
#: ../cli/src/connections.c:921
|
||||
#, c-format
|
||||
msgid "Active connection state: %s\n"
|
||||
msgstr "Zustand der aktiven Verbindung: %s\n"
|
||||
|
||||
#: ../cli/src/connections.c:922
|
||||
#, c-format
|
||||
msgid "Active connection path: %s\n"
|
||||
msgstr "Pfad der aktiven Verbindung: %s\n"
|
||||
|
||||
#: ../cli/src/connections.c:976 ../cli/src/connections.c:1094
|
||||
#, c-format
|
||||
msgid "Error: Unknown connection: %s."
|
||||
msgstr "Fehler: Unbekannte Verbindung: %s."
|
||||
|
||||
#: ../cli/src/connections.c:1011 ../cli/src/devices.c:622
|
||||
#, c-format
|
||||
msgid "Error: timeout value '%s' is not valid."
|
||||
msgstr "Fehler: Der Wert »%s« für den Zeitablauf ist nicht gültig."
|
||||
|
||||
#: ../cli/src/connections.c:1024 ../cli/src/connections.c:1111
|
||||
#, c-format
|
||||
msgid "Error: id or uuid has to be specified."
|
||||
msgstr "Fehler: id oder uuid muss angegeben werden."
|
||||
|
||||
#: ../cli/src/connections.c:1044
|
||||
#, c-format
|
||||
msgid "Error: No suitable device found: %s."
|
||||
msgstr "Fehler: Kein passendes Gerät gefunden: %s."
|
||||
|
||||
#: ../cli/src/connections.c:1046
|
||||
#, c-format
|
||||
msgid "Error: No suitable device found."
|
||||
msgstr "Fehler: Kein passendes Gerät gefunden."
|
||||
|
||||
#: ../cli/src/connections.c:1138
|
||||
#, c-format
|
||||
msgid "Warning: Connection not active\n"
|
||||
msgstr "Warnung: Verbindung ist derzeit nicht aktiv\n"
|
||||
|
||||
#: ../cli/src/connections.c:1189
|
||||
#, c-format
|
||||
msgid "Error: 'con' command '%s' is not valid."
|
||||
msgstr "Fehler: Der Befehl »%s« für »con« ist nicht gültig."
|
||||
|
||||
#: ../cli/src/connections.c:1216
|
||||
#, c-format
|
||||
msgid "Error: could not connect to D-Bus."
|
||||
msgstr "Fehler: Es konnte nicht mit D-Bus verbunden werden."
|
||||
|
||||
#: ../cli/src/connections.c:1223
|
||||
#, c-format
|
||||
msgid "Error: Could not get system settings."
|
||||
msgstr "Fehler: Systemeinstellungen konnten nicht ermittelt werden"
|
||||
|
||||
#: ../cli/src/connections.c:1231
|
||||
#, c-format
|
||||
msgid "Error: Could not get user settings."
|
||||
msgstr "Fehler: Benutzereinstellungen konnten nicht ermittelt werden."
|
||||
|
||||
#: ../cli/src/connections.c:1241
|
||||
#, c-format
|
||||
msgid "Error: Can't obtain connections: settings services are not running."
|
||||
msgstr ""
|
||||
"Fehler: Verbindungen können nicht erlangt werden: Die Einstellungsdienste "
|
||||
"werden nicht ausgeführt."
|
||||
|
||||
#: ../cli/src/devices.c:73
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Usage: nmcli dev { COMMAND | help }\n"
|
||||
"\n"
|
||||
" COMMAND := { status | list | disconnect | wifi }\n"
|
||||
"\n"
|
||||
" status\n"
|
||||
" list [iface <iface>]\n"
|
||||
" disconnect iface <iface> [--nowait] [--timeout <timeout>]\n"
|
||||
" wifi [list [iface <iface>] | apinfo iface <iface> hwaddr <hwaddr>]\n"
|
||||
"\n"
|
||||
msgstr ""
|
||||
"Aufruf: nmcli dev { BEFEHL | help }\n"
|
||||
"\n"
|
||||
" BEFEHL := { status | list | disconnect | wifi }\n"
|
||||
"\n"
|
||||
" status\n"
|
||||
" list [iface <iface>]\n"
|
||||
" disconnect iface <iface> [--nowait] [--timeout <timeout>]\n"
|
||||
" wifi [list [iface <iface>] | apinfo iface <iface> hwaddr <hwaddr>]\n"
|
||||
"\n"
|
||||
|
||||
#: ../cli/src/devices.c:93
|
||||
msgid "unmanaged"
|
||||
msgstr "nicht verwaltet"
|
||||
|
||||
#: ../cli/src/devices.c:95
|
||||
msgid "unavailable"
|
||||
msgstr "nicht verfügbar"
|
||||
|
||||
#: ../cli/src/devices.c:97 ../cli/src/network-manager.c:73
|
||||
msgid "disconnected"
|
||||
msgstr "getrennt"
|
||||
|
||||
#: ../cli/src/devices.c:99
|
||||
msgid "connecting (prepare)"
|
||||
msgstr "wird verbunden (vorbereiten)"
|
||||
|
||||
#: ../cli/src/devices.c:101
|
||||
msgid "connecting (configuring)"
|
||||
msgstr "wird verbunden (konfigurieren)"
|
||||
|
||||
#: ../cli/src/devices.c:103
|
||||
msgid "connecting (need authentication)"
|
||||
msgstr "wird verbunden (Legitimierung erforderlich)"
|
||||
|
||||
#: ../cli/src/devices.c:105
|
||||
msgid "connecting (getting IP configuration)"
|
||||
msgstr "wird verbunden (IP-Konfiguration wird ermittelt)"
|
||||
|
||||
#: ../cli/src/devices.c:107 ../cli/src/network-manager.c:71
|
||||
msgid "connected"
|
||||
msgstr "verbunden"
|
||||
|
||||
#: ../cli/src/devices.c:109
|
||||
msgid "connection failed"
|
||||
msgstr "Verbindung fehlgeschlagen"
|
||||
|
||||
#: ../cli/src/devices.c:132 ../cli/src/devices.c:876
|
||||
msgid "Unknown"
|
||||
msgstr "Unbekannt"
|
||||
|
||||
#. print them
|
||||
#: ../cli/src/devices.c:164 ../cli/src/devices.c:266 ../cli/src/devices.c:861
|
||||
#: ../cli/src/devices.c:879
|
||||
msgid "(none)"
|
||||
msgstr "(keine)"
|
||||
|
||||
#: ../cli/src/devices.c:209
|
||||
#, c-format
|
||||
msgid "%s: error converting IP4 address 0x%X"
|
||||
msgstr "%s: Fehler bei Umwandlung der IPv4-Addresse 0x%X"
|
||||
|
||||
#: ../cli/src/devices.c:238
|
||||
#, c-format
|
||||
msgid "%s, %s, Freq %d MHz, Rate %d Mb/s, Strength %d"
|
||||
msgstr "%s, %s, Frequenz %d MHz, Durchsatz %d Mb/s, Stärke %d"
|
||||
|
||||
#: ../cli/src/devices.c:239
|
||||
msgid "Ad-Hoc"
|
||||
msgstr "Ad-Hoc"
|
||||
|
||||
#: ../cli/src/devices.c:248
|
||||
msgid ", Encrypted: "
|
||||
msgstr ", Verschlüsselt:"
|
||||
|
||||
#: ../cli/src/devices.c:253
|
||||
msgid " WEP"
|
||||
msgstr " WEP"
|
||||
|
||||
#: ../cli/src/devices.c:255
|
||||
msgid " WPA"
|
||||
msgstr " WPA"
|
||||
|
||||
#: ../cli/src/devices.c:257
|
||||
msgid " WPA2"
|
||||
msgstr " WPA2"
|
||||
|
||||
# Das ergibt z.B. WPA-Enterprise, klingt komisch mit »Unternehmen«
|
||||
#: ../cli/src/devices.c:260
|
||||
msgid " Enterprise"
|
||||
msgstr "Enterprise"
|
||||
|
||||
#: ../cli/src/devices.c:294 ../cli/src/devices.c:458 ../cli/src/devices.c:460
|
||||
msgid "Device"
|
||||
msgstr "Gerät"
|
||||
|
||||
#: ../cli/src/devices.c:299
|
||||
msgid "Driver"
|
||||
msgstr "Treiber"
|
||||
|
||||
#: ../cli/src/devices.c:299 ../cli/src/devices.c:567
|
||||
msgid "(unknown)"
|
||||
msgstr "(unbekannt)"
|
||||
|
||||
#: ../cli/src/devices.c:300 ../cli/src/devices.c:458 ../cli/src/devices.c:460
|
||||
msgid "State"
|
||||
msgstr "Zustand"
|
||||
|
||||
#: ../cli/src/devices.c:313
|
||||
msgid "HW Address"
|
||||
msgstr "Hardware-Adresse"
|
||||
|
||||
#: ../cli/src/devices.c:319
|
||||
#, c-format
|
||||
msgid ""
|
||||
"\n"
|
||||
" Capabilities:\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Fähigkeiten:\n"
|
||||
|
||||
#: ../cli/src/devices.c:321
|
||||
msgid "Carrier Detect"
|
||||
msgstr "Trägersignal erkannt"
|
||||
|
||||
#: ../cli/src/devices.c:336
|
||||
#, c-format
|
||||
msgid "%u Mb/s"
|
||||
msgstr "%u Mb/s"
|
||||
|
||||
#: ../cli/src/devices.c:337
|
||||
msgid "Speed"
|
||||
msgstr "Geschwindigkeit"
|
||||
|
||||
#: ../cli/src/devices.c:348
|
||||
#, c-format
|
||||
msgid ""
|
||||
"\n"
|
||||
" Wireless Properties\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
" Eigenschaften der drahtlosen Verbindung\n"
|
||||
|
||||
#: ../cli/src/devices.c:353
|
||||
msgid "WEP Encryption"
|
||||
msgstr "WEP-Verschlüsselung"
|
||||
|
||||
#: ../cli/src/devices.c:355
|
||||
msgid "WPA Encryption"
|
||||
msgstr "WPA-Verschlüsselung"
|
||||
|
||||
#: ../cli/src/devices.c:357
|
||||
msgid "WPA2 Encryption"
|
||||
msgstr "WPA2-Verschlüsselung"
|
||||
|
||||
#: ../cli/src/devices.c:359
|
||||
msgid "TKIP cipher"
|
||||
msgstr "TKIP-Chiffre"
|
||||
|
||||
#: ../cli/src/devices.c:361
|
||||
msgid "CCMP cipher"
|
||||
msgstr "CCMP-Chiffre"
|
||||
|
||||
#: ../cli/src/devices.c:368
|
||||
#, c-format
|
||||
msgid ""
|
||||
"\n"
|
||||
" Wireless Access Points %s\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
" Zugangspunkte für Drahtlosnetzwerk %s\n"
|
||||
|
||||
#: ../cli/src/devices.c:368
|
||||
msgid "(* = current AP)"
|
||||
msgstr "(* = aktueller Zugangspunkt)"
|
||||
|
||||
#: ../cli/src/devices.c:374
|
||||
#, c-format
|
||||
msgid ""
|
||||
"\n"
|
||||
" Wired Properties\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
" Eigenschaften der kabelgebundenen Verbindung\n"
|
||||
|
||||
#: ../cli/src/devices.c:377 ../cli/src/devices.c:379
|
||||
msgid "Carrier"
|
||||
msgstr "Trägersignal"
|
||||
|
||||
#: ../cli/src/devices.c:377
|
||||
msgid "on"
|
||||
msgstr "an"
|
||||
|
||||
#: ../cli/src/devices.c:379
|
||||
msgid "off"
|
||||
msgstr "aus"
|
||||
|
||||
#: ../cli/src/devices.c:387
|
||||
#, c-format
|
||||
msgid ""
|
||||
"\n"
|
||||
" IPv4 Settings:\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
" IPv4-Einstellungen:\n"
|
||||
|
||||
#: ../cli/src/devices.c:395
|
||||
msgid "Address"
|
||||
msgstr "Adresse"
|
||||
|
||||
#: ../cli/src/devices.c:401
|
||||
msgid "Prefix"
|
||||
msgstr "Präfix"
|
||||
|
||||
#: ../cli/src/devices.c:405
|
||||
msgid "Gateway"
|
||||
msgstr "Gateway"
|
||||
|
||||
#: ../cli/src/devices.c:416
|
||||
msgid "DNS"
|
||||
msgstr "DNS"
|
||||
|
||||
#: ../cli/src/devices.c:458
|
||||
msgid "Status of devices"
|
||||
msgstr "Status von Geräten"
|
||||
|
||||
#: ../cli/src/devices.c:487
|
||||
#, c-format
|
||||
msgid "Error: '%s' argument is missing."
|
||||
msgstr "Fehler: Argument »%s« fehlt."
|
||||
|
||||
#: ../cli/src/devices.c:516 ../cli/src/devices.c:655 ../cli/src/devices.c:729
|
||||
#, c-format
|
||||
msgid "Error: Device '%s' not found."
|
||||
msgstr "Fehler: Gerät »%s« wurde nicht gefunden"
|
||||
|
||||
#: ../cli/src/devices.c:539
|
||||
#, c-format
|
||||
msgid "Success: Device '%s' successfully disconnected."
|
||||
msgstr "Erfolg: Gerät »%s« wurde erfolgreich getrennt."
|
||||
|
||||
#: ../cli/src/devices.c:564
|
||||
#, c-format
|
||||
msgid "Error: Device '%s' (%s) disconnecting failed: %s"
|
||||
msgstr "Fehler: Trennung des Gerätes »%s« (%s) ist fehlgeschlagen: %s"
|
||||
|
||||
#: ../cli/src/devices.c:572
|
||||
#, c-format
|
||||
msgid "Device state: %d (%s)\n"
|
||||
msgstr "Gerätezustand: %d (%s)\n"
|
||||
|
||||
#: ../cli/src/devices.c:636
|
||||
#, c-format
|
||||
msgid "Error: iface has to be specified."
|
||||
msgstr "Fehler: Schnittstelle muss angegeben werden."
|
||||
|
||||
#: ../cli/src/devices.c:736 ../cli/src/devices.c:746
|
||||
msgid "WiFi scan list"
|
||||
msgstr "Suchliste für WiFi"
|
||||
|
||||
#: ../cli/src/devices.c:740
|
||||
#, c-format
|
||||
msgid "Error: Device '%s' is not a WiFi device."
|
||||
msgstr "Fehler: Gerät »%s« ist kein WiFi-Gerät."
|
||||
|
||||
#: ../cli/src/devices.c:754
|
||||
msgid "Device:"
|
||||
msgstr "Gerät:"
|
||||
|
||||
#: ../cli/src/devices.c:806
|
||||
#, c-format
|
||||
msgid "Error: hwaddr has to be specified."
|
||||
msgstr "Fehler: Hardware-Adresse muss angegeben werden."
|
||||
|
||||
#: ../cli/src/devices.c:844
|
||||
#, c-format
|
||||
msgid "Error: Access point with hwaddr '%s' not found."
|
||||
msgstr ""
|
||||
"Fehler: Der Zugangspunkt mit Hardware-Adresse »%s« wurde nicht gefunden."
|
||||
|
||||
#: ../cli/src/devices.c:862
|
||||
#, c-format
|
||||
msgid "%u MHz"
|
||||
msgstr "%u MHz"
|
||||
|
||||
#: ../cli/src/devices.c:863
|
||||
#, c-format
|
||||
msgid "%u MB/s"
|
||||
msgstr "%u MB/s"
|
||||
|
||||
#: ../cli/src/devices.c:869 ../cli/src/devices.c:871
|
||||
msgid "AP parameters"
|
||||
msgstr "Parameter des Zugangspunktes"
|
||||
|
||||
#: ../cli/src/devices.c:873
|
||||
msgid "SSID:"
|
||||
msgstr "SSID:"
|
||||
|
||||
#: ../cli/src/devices.c:874
|
||||
msgid "BSSID:"
|
||||
msgstr "BSSID:"
|
||||
|
||||
#: ../cli/src/devices.c:875
|
||||
msgid "Frequency:"
|
||||
msgstr "Frequenz:"
|
||||
|
||||
#: ../cli/src/devices.c:876
|
||||
msgid "Mode:"
|
||||
msgstr "Modus:"
|
||||
|
||||
#: ../cli/src/devices.c:876
|
||||
msgid "Ad-hoc"
|
||||
msgstr "Ad-hoc"
|
||||
|
||||
#: ../cli/src/devices.c:876
|
||||
msgid "Infrastructure"
|
||||
msgstr "Infrastuktur"
|
||||
|
||||
#: ../cli/src/devices.c:877
|
||||
msgid "Maximal bitrate:"
|
||||
msgstr "Maximale Bitrate:"
|
||||
|
||||
#: ../cli/src/devices.c:878
|
||||
msgid "Strength:"
|
||||
msgstr "Stärke:"
|
||||
|
||||
#: ../cli/src/devices.c:879
|
||||
msgid "Flags:"
|
||||
msgstr "Flags:"
|
||||
|
||||
#: ../cli/src/devices.c:879
|
||||
msgid "privacy"
|
||||
msgstr "Datenschutzmodus"
|
||||
|
||||
#: ../cli/src/devices.c:880
|
||||
msgid "WPA flags:"
|
||||
msgstr "WPA-Flags:"
|
||||
|
||||
#: ../cli/src/devices.c:881
|
||||
msgid "RSN flags:"
|
||||
msgstr "RSN-Flags:"
|
||||
|
||||
#: ../cli/src/devices.c:907
|
||||
#, c-format
|
||||
msgid "Error: 'dev wifi' command '%s' is not valid."
|
||||
msgstr "Fehler: Der Befehl »%s« für »dev wifi« ist nicht gültig."
|
||||
|
||||
#: ../cli/src/devices.c:943
|
||||
#, c-format
|
||||
msgid "Error: 'dev' command '%s' is not valid."
|
||||
msgstr "Fehler: Der Befehl »%s« für »dev« ist nicht gültig."
|
||||
|
||||
#: ../cli/src/network-manager.c:46
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Usage: nmcli nm { COMMAND | help }\n"
|
||||
"\n"
|
||||
" COMMAND := { status | sleep | wakeup | wifi | wwan }\n"
|
||||
"\n"
|
||||
" status\n"
|
||||
" sleep\n"
|
||||
" wakeup\n"
|
||||
" wifi [on|off]\n"
|
||||
" wwan [on|off]\n"
|
||||
"\n"
|
||||
msgstr ""
|
||||
"Aufruf: nmcli nm { BEFEHL | help }\n"
|
||||
"\n"
|
||||
" BEFEHL := { status | sleep | wakeup | wifi | wwan }\n"
|
||||
"\n"
|
||||
" status\n"
|
||||
" sleep\n"
|
||||
" wakeup\n"
|
||||
" wifi [on|off]\n"
|
||||
" wwan [on|off]\n"
|
||||
"\n"
|
||||
|
||||
#: ../cli/src/network-manager.c:67
|
||||
msgid "asleep"
|
||||
msgstr "schlafend"
|
||||
|
||||
#: ../cli/src/network-manager.c:69
|
||||
msgid "connecting"
|
||||
msgstr "wird verbunden"
|
||||
|
||||
#: ../cli/src/network-manager.c:93 ../cli/src/network-manager.c:94
|
||||
#: ../cli/src/network-manager.c:95 ../cli/src/network-manager.c:96
|
||||
#: ../cli/src/network-manager.c:143 ../cli/src/network-manager.c:160
|
||||
msgid "enabled"
|
||||
msgstr "aktiviert"
|
||||
|
||||
#: ../cli/src/network-manager.c:93 ../cli/src/network-manager.c:94
|
||||
#: ../cli/src/network-manager.c:95 ../cli/src/network-manager.c:96
|
||||
#: ../cli/src/network-manager.c:143 ../cli/src/network-manager.c:160
|
||||
msgid "disabled"
|
||||
msgstr "deaktiviert"
|
||||
|
||||
#: ../cli/src/network-manager.c:102
|
||||
msgid "NetworkManager status"
|
||||
msgstr "Status von NetworkManager"
|
||||
|
||||
#: ../cli/src/network-manager.c:104
|
||||
msgid "NM running:"
|
||||
msgstr "NM läuft:"
|
||||
|
||||
#: ../cli/src/network-manager.c:104
|
||||
msgid "running"
|
||||
msgstr "wird ausgeführt"
|
||||
|
||||
#: ../cli/src/network-manager.c:104
|
||||
msgid "not running"
|
||||
msgstr "wird nicht ausgeführt"
|
||||
|
||||
#: ../cli/src/network-manager.c:105
|
||||
msgid "NM state:"
|
||||
msgstr "Status von NM:"
|
||||
|
||||
#: ../cli/src/network-manager.c:106
|
||||
msgid "NM wireless hardware:"
|
||||
msgstr "NM Drahtlos-Hardware:"
|
||||
|
||||
#. no argument, show current state
|
||||
#: ../cli/src/network-manager.c:107 ../cli/src/network-manager.c:143
|
||||
msgid "NM wireless:"
|
||||
msgstr "NM drahtlos:"
|
||||
|
||||
#: ../cli/src/network-manager.c:108
|
||||
msgid "NM WWAN hardware:"
|
||||
msgstr "NM WWAN-Hardware:"
|
||||
|
||||
#. no argument, show current state
|
||||
#: ../cli/src/network-manager.c:109 ../cli/src/network-manager.c:160
|
||||
msgid "NM WWAN:"
|
||||
msgstr "NM WWAN:"
|
||||
|
||||
#: ../cli/src/network-manager.c:150
|
||||
#, c-format
|
||||
msgid "Error: invalid 'wifi' parameter: '%s'."
|
||||
msgstr "Fehler: Ungültiger »wifi«-Parameter: »%s«."
|
||||
|
||||
#: ../cli/src/network-manager.c:167
|
||||
#, c-format
|
||||
msgid "Error: invalid 'wwan' parameter: '%s'."
|
||||
msgstr "Fehler: Ungültiger »wwan«-Parameter: »%s«."
|
||||
|
||||
#: ../cli/src/network-manager.c:178
|
||||
#, c-format
|
||||
msgid "Error: 'nm' command '%s' is not valid."
|
||||
msgstr "Fehler: Der Befehl »%s« für »nm« ist nicht gültig."
|
||||
|
||||
#: ../cli/src/nmcli.c:65
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Usage: %s [OPTIONS] OBJECT { COMMAND | help }\n"
|
||||
"\n"
|
||||
"OPTIONS\n"
|
||||
" -t[erse] terse output\n"
|
||||
" -p[retty] pretty output\n"
|
||||
" -v[ersion] show program version\n"
|
||||
" -h[elp] print this help\n"
|
||||
"\n"
|
||||
"OBJECT\n"
|
||||
" nm NetworkManager status\n"
|
||||
" con NetworkManager connections\n"
|
||||
" dev devices managed by NetworkManager\n"
|
||||
"\n"
|
||||
msgstr ""
|
||||
"Aufruf: %s [OPTIONEN] OBJEKT { BEFEHL | help }\n"
|
||||
"\n"
|
||||
"OPTIONEN\n"
|
||||
" -t[erse] knappe Ausgabe\n"
|
||||
" -p[retty] hübsche Ausgabe\n"
|
||||
" -v[ersion] Programm-Version anzeigen\n"
|
||||
" -h[elp] dies Hilfe ausgeben\n"
|
||||
"\n"
|
||||
"OBJEKT\n"
|
||||
" nm Status von NetworkManager\n"
|
||||
" con Verbindungen von NetworkManager\n"
|
||||
" dev von NetworkManager verwaltete Verbindungen\n"
|
||||
"\n"
|
||||
|
||||
#: ../cli/src/nmcli.c:106
|
||||
#, c-format
|
||||
msgid "Object '%s' is unknown, try 'nmcli help'."
|
||||
msgstr "Objekt »%s« ist unbekannt, versuchen Sie »nmcli help«."
|
||||
|
||||
#: ../cli/src/nmcli.c:139
|
||||
#, c-format
|
||||
msgid "nmcli tool, version %s\n"
|
||||
msgstr "nmcli, Version %s\n"
|
||||
|
||||
#: ../cli/src/nmcli.c:145
|
||||
#, c-format
|
||||
msgid "Option '%s' is unknown, try 'nmcli -help'."
|
||||
msgstr "Option »%s« ist unbekannt, versuchen Sie »nmcli -help«."
|
||||
|
||||
#: ../cli/src/nmcli.c:164
|
||||
#, c-format
|
||||
msgid "Caught signal %d, shutting down..."
|
||||
msgstr "Signal %d wurde empfangen, wird beendet …"
|
||||
|
||||
#: ../cli/src/nmcli.c:189
|
||||
#, c-format
|
||||
msgid "Error: Could not connect to NetworkManager."
|
||||
msgstr "Fehler: Verbindung konnte nicht mit NetworkManager hergestellt werden."
|
||||
|
||||
#: ../cli/src/nmcli.c:205
|
||||
msgid "Success"
|
||||
msgstr "Erfolg"
|
||||
|
||||
#: ../libnm-util/crypto.c:120
|
||||
#, c-format
|
||||
|
|
@ -237,7 +1084,7 @@ msgstr "PKCS#12 konnte nicht decodiert werden: %s"
|
|||
msgid "Couldn't verify PKCS#12 file: %s"
|
||||
msgstr "PKCS#12-Datei konnte nicht überprüft werden: %s"
|
||||
|
||||
#: ../libnm-util/crypto_nss.c:57
|
||||
#: ../libnm-util/crypto_nss.c:56
|
||||
#, c-format
|
||||
msgid "Failed to initialize the crypto engine: %d."
|
||||
msgstr "Fehler beim Initialisieren der Verschlüsselung: %d."
|
||||
|
|
@ -351,38 +1198,38 @@ msgstr "PKCS#12-Datei konnte nicht überprüft werden: %d"
|
|||
msgid "Could not generate random data."
|
||||
msgstr "Zufällige Daten konnten nicht erstellt werden."
|
||||
|
||||
#: ../libnm-util/nm-utils.c:1522
|
||||
#: ../libnm-util/nm-utils.c:1545
|
||||
#, c-format
|
||||
msgid "Not enough memory to make encryption key."
|
||||
msgstr "Nicht genug Speicher zum Erstellen eines Schlüssels."
|
||||
|
||||
#: ../libnm-util/nm-utils.c:1633
|
||||
#: ../libnm-util/nm-utils.c:1655
|
||||
msgid "Could not allocate memory for PEM file creation."
|
||||
msgstr ""
|
||||
"Es konnte kein Speicher zum Erstellen der PEM-Datei angefordert werden."
|
||||
|
||||
#: ../libnm-util/nm-utils.c:1645
|
||||
#: ../libnm-util/nm-utils.c:1667
|
||||
#, c-format
|
||||
msgid "Could not allocate memory for writing IV to PEM file."
|
||||
msgstr ""
|
||||
"Es konnte kein Speicher zum Schreiben des IV in die PEM-Datei angefordert "
|
||||
"werden."
|
||||
|
||||
#: ../libnm-util/nm-utils.c:1657
|
||||
#: ../libnm-util/nm-utils.c:1679
|
||||
#, c-format
|
||||
msgid "Could not allocate memory for writing encrypted key to PEM file."
|
||||
msgstr ""
|
||||
"Es konnte kein Speicher zum Schreiben des IV in die PEM-Datei angefordert "
|
||||
"werden."
|
||||
|
||||
#: ../libnm-util/nm-utils.c:1676
|
||||
#: ../libnm-util/nm-utils.c:1698
|
||||
#, c-format
|
||||
msgid "Could not allocate memory for PEM file data."
|
||||
msgstr ""
|
||||
"Es konnte kein Speicher für die Daten der PEM-Datei angefordert werden."
|
||||
|
||||
#: ../src/nm-netlink-monitor.c:194 ../src/nm-netlink-monitor.c:464
|
||||
#: ../src/nm-netlink-monitor.c:569
|
||||
#: ../src/nm-netlink-monitor.c:582
|
||||
#: ../src/ip6-manager/nm-netlink-listener.c:352
|
||||
#, c-format
|
||||
msgid "error processing netlink message: %s"
|
||||
|
|
@ -421,23 +1268,23 @@ msgstr ""
|
|||
msgid "error occurred while waiting for data on socket"
|
||||
msgstr "Während des Wartens auf Daten am Socket ist ein Fehler aufgetreten"
|
||||
|
||||
#: ../src/nm-netlink-monitor.c:558
|
||||
#: ../src/nm-netlink-monitor.c:558 ../src/nm-netlink-monitor.c:571
|
||||
#, c-format
|
||||
msgid "error updating link cache: %s"
|
||||
msgstr "Fehler beim Aktualisieren des Verbindungs-Cache: %s"
|
||||
|
||||
#: ../src/NetworkManager.c:330
|
||||
#: ../src/main.c:494
|
||||
#, c-format
|
||||
msgid "Invalid option. Please use --help to see a list of valid options.\n"
|
||||
msgstr ""
|
||||
"Ungültige Option. Verwenden Sie Bitte »--help«, um eine Liste der gültigen "
|
||||
"Ungültige Option. Verwenden Sie bitte »--help«, um eine Liste der gültigen "
|
||||
"Optionen zu erhalten.\n"
|
||||
|
||||
#: ../src/dhcp-manager/nm-dhcp-dhclient.c:304
|
||||
#: ../src/dhcp-manager/nm-dhcp-dhclient.c:300
|
||||
msgid "# Created by NetworkManager\n"
|
||||
msgstr "# Erstellt von NetworkManager\n"
|
||||
|
||||
#: ../src/dhcp-manager/nm-dhcp-dhclient.c:310
|
||||
#: ../src/dhcp-manager/nm-dhcp-dhclient.c:316
|
||||
#, c-format
|
||||
msgid ""
|
||||
"# Merged from %s\n"
|
||||
|
|
@ -478,7 +1325,7 @@ msgstr ""
|
|||
msgid "Auto %s"
|
||||
msgstr "Auto %s"
|
||||
|
||||
#: ../system-settings/plugins/ifcfg-rh/reader.c:2406
|
||||
#: ../system-settings/plugins/ifcfg-rh/reader.c:3213
|
||||
msgid "System"
|
||||
msgstr "System"
|
||||
|
||||
|
|
|
|||
287
po/kn.po
287
po/kn.po
|
|
@ -3,19 +3,20 @@
|
|||
# Copyright (C) 2009 NetworkManager's COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the NetworkManager package.
|
||||
#
|
||||
# Shankar Prasad <svenkate@redhat.com>, 2009.
|
||||
# Shankar Prasad <svenkate@redhat.com>, 2009, 2010.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: NetworkManager.po.master.kn\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=NetworkManager&component=general\n"
|
||||
"POT-Creation-Date: 2009-06-15 03:24+0000\n"
|
||||
"PO-Revision-Date: 2009-06-15 14:24+0530\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug."
|
||||
"cgi?product=NetworkManager&component=general\n"
|
||||
"POT-Creation-Date: 2009-09-29 03:25+0000\n"
|
||||
"PO-Revision-Date: 2010-02-10 14:31+0530\n"
|
||||
"Last-Translator: Shankar Prasad <svenkate@redhat.com>\n"
|
||||
"Language-Team: Kannada <en@li.org>\n"
|
||||
"Language-Team: kn-IN <>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: KBabel 1.11.4\n"
|
||||
"X-Generator: Lokalize 1.0\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: ../libnm-util/crypto.c:120
|
||||
|
|
@ -103,8 +104,9 @@ msgstr "IV ಅನ್ನು ಶೇಖರಿಸಿಡಲು ಸಾಕಷ್ಟು
|
|||
msgid "IV contains non-hexadecimal digits."
|
||||
msgstr "IV ಯು ಹೆಕ್ಸಾ-ದಶಮಾಂಶ ಅಲ್ಲದ ಅಂಕೆಗಳನ್ನು ಹೊಂದಿದೆ."
|
||||
|
||||
#: ../libnm-util/crypto.c:382 ../libnm-util/crypto_gnutls.c:143
|
||||
#: ../libnm-util/crypto_nss.c:169
|
||||
#: ../libnm-util/crypto.c:382 ../libnm-util/crypto_gnutls.c:148
|
||||
#: ../libnm-util/crypto_gnutls.c:266 ../libnm-util/crypto_nss.c:171
|
||||
#: ../libnm-util/crypto_nss.c:335
|
||||
#, c-format
|
||||
msgid "Private key cipher '%s' was unknown."
|
||||
msgstr "ಖಾಸಗಿ ಕೀಲಿ ಸಿಫರ್ '%s' ತಿಳಿದಿಲ್ಲ."
|
||||
|
|
@ -124,72 +126,111 @@ msgstr "ಖಾಸಗಿ ಕೀಲಿಯ ಬಗೆಯನ್ನು ನಿರ್ಧ
|
|||
msgid "Not enough memory to store decrypted private key."
|
||||
msgstr "ಡೀಕ್ರಿಪ್ಟ್ ಮಾಡಲಾದ ಖಾಸಗಿ ಕೀಲಿಯನ್ನು ಶೇಖರಿಸಿಡಲು ಸಾಕಷ್ಟು ಮೆಮೊರಿ ಇಲ್ಲ."
|
||||
|
||||
#: ../libnm-util/crypto_gnutls.c:46
|
||||
#: ../libnm-util/crypto_gnutls.c:49
|
||||
msgid "Failed to initialize the crypto engine."
|
||||
msgstr "ಕ್ರಿಪ್ಟೋ ಎಂಜಿನ್ ಅನ್ನು ಆರಂಭಿಸುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ."
|
||||
|
||||
#: ../libnm-util/crypto_gnutls.c:90
|
||||
#: ../libnm-util/crypto_gnutls.c:93
|
||||
#, c-format
|
||||
msgid "Failed to initialize the MD5 engine: %s / %s."
|
||||
msgstr "MD5 ಎಂಜಿನ್ ಅನ್ನು ಆರಂಭಿಸುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ: %s / %s."
|
||||
|
||||
#: ../libnm-util/crypto_gnutls.c:152 ../libnm-util/crypto_nss.c:178
|
||||
#: ../libnm-util/crypto_gnutls.c:156
|
||||
#, c-format
|
||||
msgid "Invalid IV length (must be at least %zd)."
|
||||
msgstr "ಅಮಾನ್ಯವಾದ IV ಗಾತ್ರ (ಕನಿಷ್ಟ %zd ಇರಬೇಕು)."
|
||||
|
||||
#: ../libnm-util/crypto_gnutls.c:165 ../libnm-util/crypto_nss.c:188
|
||||
#, c-format
|
||||
msgid "Not enough memory for decrypted key buffer."
|
||||
msgstr "ಡೀಕ್ರಿಪ್ಟ್ ಮಾಡಲಾದ ಬಫರಿಗಾಗಿ ಸಾಕಷ್ಟು ಮೆಮೊರಿ ಇಲ್ಲ."
|
||||
|
||||
#: ../libnm-util/crypto_gnutls.c:160
|
||||
#: ../libnm-util/crypto_gnutls.c:173
|
||||
#, c-format
|
||||
msgid "Failed to initialize the decryption cipher context: %s / %s."
|
||||
msgstr "ಡೀಕ್ರಿಪ್ಸ್ ಮಾಡುವ ಸಿಫರ್ ಸಂದರ್ಭವನ್ನು ಆರಂಭಗೊಳಿಸುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ: %s / %s."
|
||||
|
||||
#: ../libnm-util/crypto_gnutls.c:169
|
||||
#: ../libnm-util/crypto_gnutls.c:182
|
||||
#, c-format
|
||||
msgid "Failed to set symmetric key for decryption: %s / %s."
|
||||
msgstr "ಡೀಕ್ರಿಪ್ಟ್ ಮಾಡಲು ಸಿಮಿಟ್ರಿಕ್ ಕೀಲಿಯನ್ನು ಹೊಂದಿಸಲು ವಿಫಲಗೊಂಡಿದೆ: %s / %s."
|
||||
|
||||
#: ../libnm-util/crypto_gnutls.c:178
|
||||
#: ../libnm-util/crypto_gnutls.c:191
|
||||
#, c-format
|
||||
msgid "Failed to set IV for decryption: %s / %s."
|
||||
msgstr "ಡೀಕ್ರಿಪ್ಟ್ ಮಾಡಲು IV ಅನ್ನು ಹೊಂದಿಸಲು ವಿಫಲಗೊಂಡಿದೆ: %s / %s."
|
||||
|
||||
#: ../libnm-util/crypto_gnutls.c:187
|
||||
#: ../libnm-util/crypto_gnutls.c:200
|
||||
#, c-format
|
||||
msgid "Failed to decrypt the private key: %s / %s."
|
||||
msgstr "ಖಾಸಗಿ ಕೀಲಿಯನ್ನು ಡೀಕ್ರಿಪ್ಟ್ ಮಾಡುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ: %s / %s."
|
||||
|
||||
#: ../libnm-util/crypto_gnutls.c:200
|
||||
#: ../libnm-util/crypto_gnutls.c:210 ../libnm-util/crypto_nss.c:266
|
||||
#, c-format
|
||||
#| msgid "Failed to decrypt the private key: %d."
|
||||
msgid "Failed to decrypt the private key: unexpected padding length."
|
||||
msgstr "ಖಾಸಗಿ ಕೀಲಿಯನ್ನು ಡೀಕ್ರಿಪ್ಟ್ ಮಾಡುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ: ಅನಿರೀಕ್ಷಿತವಾದ ಪ್ಯಾಡಿಂಗ್ ಗಾತ್ರ"
|
||||
|
||||
#: ../libnm-util/crypto_gnutls.c:221 ../libnm-util/crypto_nss.c:277
|
||||
#, c-format
|
||||
msgid "Failed to decrypt the private key."
|
||||
msgstr "ಖಾಸಗಿ ಕೀಲಿಯನ್ನು ಡೀಕ್ರಿಪ್ಟ್ ಮಾಡುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ."
|
||||
|
||||
#: ../libnm-util/crypto_gnutls.c:235
|
||||
#: ../libnm-util/crypto_gnutls.c:286 ../libnm-util/crypto_nss.c:355
|
||||
#, c-format
|
||||
msgid "Could not allocate memory for encrypting."
|
||||
msgstr "ಗೂಢಲಿಪೀಕರಿಸಲು ಮೆಮೊರಿಯನ್ನು ನಿಯೋಜಸಿಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ."
|
||||
|
||||
#: ../libnm-util/crypto_gnutls.c:294
|
||||
#, c-format
|
||||
#| msgid "Failed to initialize the decryption cipher context: %s / %s."
|
||||
msgid "Failed to initialize the encryption cipher context: %s / %s."
|
||||
msgstr "ಗೂಢಲಿಪೀಕರಣ ಸಿಫರ್ ಸಂದರ್ಭವನ್ನು ಆರಂಭಗೊಳಿಸುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ: %s / %s."
|
||||
|
||||
#: ../libnm-util/crypto_gnutls.c:303
|
||||
#, c-format
|
||||
#| msgid "Failed to set symmetric key for decryption: %s / %s."
|
||||
msgid "Failed to set symmetric key for encryption: %s / %s."
|
||||
msgstr "ಗೂಢಲಿಪೀಕರಿಸಲು ಸಿಮಿಟ್ರಿಕ್ ಕೀಲಿಯನ್ನು ಹೊಂದಿಸಲು ವಿಫಲಗೊಂಡಿದೆ: %s / %s."
|
||||
|
||||
#: ../libnm-util/crypto_gnutls.c:313
|
||||
#, c-format
|
||||
#| msgid "Failed to set IV for decryption: %s / %s."
|
||||
msgid "Failed to set IV for encryption: %s / %s."
|
||||
msgstr "ಗೂಢಲಿಪೀಕರಿಸಲು IV ಅನ್ನು ಹೊಂದಿಸಲು ವಿಫಲಗೊಂಡಿದೆ: %s / %s."
|
||||
|
||||
#: ../libnm-util/crypto_gnutls.c:322
|
||||
#, c-format
|
||||
#| msgid "Failed to decrypt the private key: %s / %s."
|
||||
msgid "Failed to encrypt the data: %s / %s."
|
||||
msgstr "ಖಾಸಗಿ ಕೀಲಿಯನ್ನು ಗೂಢಲಿಪೀಕರಿಸುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ: %s / %s."
|
||||
|
||||
#: ../libnm-util/crypto_gnutls.c:362
|
||||
#, c-format
|
||||
msgid "Error initializing certificate data: %s"
|
||||
msgstr "ಪ್ರಮಾಣಪತ್ರ ದತ್ತಾಂಶವನ್ನು ಆರಂಭಿಸುವಲ್ಲಿ ದೋಷ ಉಂಟಾಗಿದೆ: %s"
|
||||
|
||||
#: ../libnm-util/crypto_gnutls.c:257
|
||||
#: ../libnm-util/crypto_gnutls.c:384
|
||||
#, c-format
|
||||
msgid "Couldn't decode certificate: %s"
|
||||
msgstr "ಪ್ರಮಾಣಪತ್ರವನ್ನು ಡೀಕೋಡ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ: %s"
|
||||
|
||||
#: ../libnm-util/crypto_gnutls.c:281
|
||||
#: ../libnm-util/crypto_gnutls.c:408
|
||||
#, c-format
|
||||
msgid "Couldn't initialize PKCS#12 decoder: %s"
|
||||
msgstr "PKCS#12 ಡೀಕೋಡರ್ ಅನ್ನು ಆರಂಭಿಸಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ: %s"
|
||||
|
||||
#: ../libnm-util/crypto_gnutls.c:294
|
||||
#: ../libnm-util/crypto_gnutls.c:421
|
||||
#, c-format
|
||||
msgid "Couldn't decode PKCS#12 file: %s"
|
||||
msgstr "PKCS#12 ಕಡತವನ್ನು ಡೀಕೋಡ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ: %s"
|
||||
|
||||
#: ../libnm-util/crypto_gnutls.c:306
|
||||
#: ../libnm-util/crypto_gnutls.c:433
|
||||
#, c-format
|
||||
msgid "Couldn't verify PKCS#12 file: %s"
|
||||
msgstr "PKCS#12 ಕಡತವನ್ನು ಪರಿಶೀಲಿಸಲಾಗಿಲ್ಲ: %s"
|
||||
|
||||
#: ../libnm-util/crypto_nss.c:57
|
||||
#: ../system-settings/plugins/ifcfg-rh/crypto.c:52
|
||||
#, c-format
|
||||
msgid "Failed to initialize the crypto engine: %d."
|
||||
msgstr "ಕ್ರಿಪ್ಟೊ ಎಂಜಿನ್ ಅನ್ನು ಆರಂಭಿಸುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ: %d."
|
||||
|
|
@ -199,105 +240,194 @@ msgstr "ಕ್ರಿಪ್ಟೊ ಎಂಜಿನ್ ಅನ್ನು ಆರಂಭ
|
|||
msgid "Failed to initialize the MD5 context: %d."
|
||||
msgstr "MD5 ಸಂದರ್ಭವನ್ನು ಆರಂಭಿಸುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ: %d."
|
||||
|
||||
#: ../libnm-util/crypto_nss.c:186
|
||||
#: ../libnm-util/crypto_nss.c:179
|
||||
#, c-format
|
||||
msgid "Invalid IV length (must be at least %d)."
|
||||
msgstr "ಅಮಾನ್ಯವಾದ IV ಗಾತ್ರ (ಕನಿಷ್ಟ %d ಇರಬೇಕು)."
|
||||
|
||||
#: ../libnm-util/crypto_nss.c:196
|
||||
#, c-format
|
||||
msgid "Failed to initialize the decryption cipher slot."
|
||||
msgstr "ಡೀಕ್ರಪ್ಟ್ ಮಾಡಲಾಗುವ ಸಿಫರ್ ಜಾಗವನ್ನು ಆರಂಭಿಸಲು ವಿಫಲಗೊಂಡಿದೆ."
|
||||
|
||||
#: ../libnm-util/crypto_nss.c:196
|
||||
#: ../libnm-util/crypto_nss.c:206
|
||||
#, c-format
|
||||
msgid "Failed to set symmetric key for decryption."
|
||||
msgstr "ಡೀಕ್ರಿಪ್ಟ್ ಮಾಡಲು ಸಿಮಿಟ್ರಿಕ್ ಕೀಲಿಯನ್ನು ಹೊಂದಿಸುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ."
|
||||
|
||||
#: ../libnm-util/crypto_nss.c:206
|
||||
#: ../libnm-util/crypto_nss.c:216
|
||||
#, c-format
|
||||
msgid "Failed to set IV for decryption."
|
||||
msgstr "ಡೀಕ್ರಿಪ್ಟ್ ಮಾಡಲು IV ಅನ್ನು ಹೊಂದಿಸುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ."
|
||||
|
||||
#: ../libnm-util/crypto_nss.c:214
|
||||
#: ../libnm-util/crypto_nss.c:224
|
||||
#, c-format
|
||||
msgid "Failed to initialize the decryption context."
|
||||
msgstr "ಡೀಕ್ರಿಪ್ಟ್ ಮಾಡುವ ಸನ್ನಿವೇಶವನ್ನು ಆರಂಭಿಸುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ."
|
||||
|
||||
#: ../libnm-util/crypto_nss.c:227
|
||||
#: ../libnm-util/crypto_nss.c:237
|
||||
#, c-format
|
||||
msgid "Failed to decrypt the private key: %d."
|
||||
msgstr "ಖಾಸಗಿ ಕೀಲಿಯನ್ನು ಡೀಕ್ರಿಪ್ಟ್ ಮಾಡುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ: %d."
|
||||
|
||||
#: ../libnm-util/crypto_nss.c:239
|
||||
#: ../libnm-util/crypto_nss.c:245
|
||||
#, c-format
|
||||
#| msgid "Failed to decrypt the private key: %d."
|
||||
msgid "Failed to decrypt the private key: decrypted data too large."
|
||||
msgstr ""
|
||||
"ಖಾಸಗಿ ಕೀಲಿಯನ್ನು ಡೀಕ್ರಿಪ್ಟ್ ಮಾಡುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ: ಡೀಕ್ರಿಪ್ಟ್ ಮಾಡಲಾದ ದತ್ತಾಂಶದ ಗಾತ್ರವು "
|
||||
"ಬಹಳ ದೊಡ್ಡದಾಗಿದೆ."
|
||||
|
||||
#: ../libnm-util/crypto_nss.c:256
|
||||
#, c-format
|
||||
msgid "Failed to finalize decryption of the private key: %d."
|
||||
msgstr "ಖಾಸಗಿ ಕೀಲಿಯನ್ನು ಡೀಕ್ರಿಪ್ಟ್ ಮಾಡುವಿಕೆಯನ್ನು ಪೂರ್ಣಗೊಳಿಸುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ: %d."
|
||||
|
||||
#: ../libnm-util/crypto_nss.c:284
|
||||
#: ../libnm-util/crypto_nss.c:363
|
||||
#, c-format
|
||||
#| msgid "Failed to initialize the decryption cipher slot."
|
||||
msgid "Failed to initialize the encryption cipher slot."
|
||||
msgstr "ಗೂಢಲಿಪೀಕರಿಸಲಾಗುವ ಸಿಫರ್ ಜಾಗವನ್ನು ಆರಂಭಿಸಲು ವಿಫಲಗೊಂಡಿದೆ."
|
||||
|
||||
#: ../libnm-util/crypto_nss.c:371
|
||||
#, c-format
|
||||
#| msgid "Failed to set symmetric key for decryption."
|
||||
msgid "Failed to set symmetric key for encryption."
|
||||
msgstr "ಗೂಢಲಿಪೀಕರಿಸಲು ಸಿಮಿಟ್ರಿಕ್ ಕೀಲಿಯನ್ನು ಹೊಂದಿಸುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ."
|
||||
|
||||
#: ../libnm-util/crypto_nss.c:379
|
||||
#, c-format
|
||||
#| msgid "Failed to set IV for decryption."
|
||||
msgid "Failed to set IV for encryption."
|
||||
msgstr "ಗೂಢಲಿಪೀಕರಿಸಲು IV ಅನ್ನು ಹೊಂದಿಸುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ."
|
||||
|
||||
#: ../libnm-util/crypto_nss.c:387
|
||||
#, c-format
|
||||
#| msgid "Failed to initialize the decryption context."
|
||||
msgid "Failed to initialize the encryption context."
|
||||
msgstr "ಗೂಢಲಿಪೀಕರಿಸುವ ಸನ್ನಿವೇಶವನ್ನು ಆರಂಭಿಸುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ."
|
||||
|
||||
#: ../libnm-util/crypto_nss.c:395
|
||||
#, c-format
|
||||
#| msgid "Failed to decrypt the private key: %d."
|
||||
msgid "Failed to encrypt: %d."
|
||||
msgstr "ಗೂಢಲಿಪೀಕರಿಸುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ: %d."
|
||||
|
||||
#: ../libnm-util/crypto_nss.c:403
|
||||
#, c-format
|
||||
msgid "Unexpected amount of data after encrypting."
|
||||
msgstr "ಗೂಢಲಿಪೀಕರಿಸಲು ಅನಿರೀಕ್ಷಿತವಾದ ದತ್ತಾಂಶದ ಮೊತ್ತ."
|
||||
|
||||
#: ../libnm-util/crypto_nss.c:446
|
||||
#, c-format
|
||||
msgid "Couldn't decode certificate: %d"
|
||||
msgstr "ಪ್ರಮಾಣಪತ್ರವನ್ನು ಡೀಕೋಡ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ: %d"
|
||||
|
||||
#: ../libnm-util/crypto_nss.c:319
|
||||
#: ../libnm-util/crypto_nss.c:481
|
||||
#, c-format
|
||||
msgid "Couldn't convert password to UCS2: %d"
|
||||
msgstr "ಗುಪ್ತಪದವನ್ನು UCS2 ಗೆ ಬದಲಾಯಿಸಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ: %d"
|
||||
|
||||
#: ../libnm-util/crypto_nss.c:347
|
||||
#: ../libnm-util/crypto_nss.c:509
|
||||
#, c-format
|
||||
msgid "Couldn't initialize PKCS#12 decoder: %d"
|
||||
msgstr "PKCS#12 ಡೀಕೋಡರ್ ಅನ್ನು ಆರಂಭಿಸಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ: %d"
|
||||
|
||||
#: ../libnm-util/crypto_nss.c:356
|
||||
#: ../libnm-util/crypto_nss.c:518
|
||||
#, c-format
|
||||
msgid "Couldn't decode PKCS#12 file: %d"
|
||||
msgstr "PKCS#12 ಕಡತವನ್ನು ಡೀಕೋಡ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ: %d"
|
||||
|
||||
#: ../libnm-util/crypto_nss.c:365
|
||||
#: ../libnm-util/crypto_nss.c:527
|
||||
#, c-format
|
||||
msgid "Couldn't verify PKCS#12 file: %d"
|
||||
msgstr "PKCS#12 ಕಡತವನ್ನು ಖಚಿತಪಡಿಸಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ: %d"
|
||||
|
||||
#: ../src/nm-netlink-monitor.c:194 ../src/nm-netlink-monitor.c:458
|
||||
#: ../libnm-util/crypto_nss.c:556
|
||||
#| msgid "Could not decode private key."
|
||||
msgid "Could not generate random data."
|
||||
msgstr "ಮನಸ್ಸಿಗೆ ಬಂದ ದತ್ತಾಂಶವನ್ನು ಉತ್ಪಾದಿಸಲಾಗಲಿಲ್ಲ."
|
||||
|
||||
#: ../libnm-util/nm-utils.c:1522
|
||||
#, c-format
|
||||
#| msgid "Not enough memory to decrypt private key."
|
||||
msgid "Not enough memory to make encryption key."
|
||||
msgstr "ಖಾಸಗಿ ಕೀಲಿಯನ್ನು ಗೂಢಲಿಪೀಕರಿಸಲು ಸಾಕಷ್ಟು ಮೆಮೊರಿ ಇಲ್ಲ."
|
||||
|
||||
#: ../libnm-util/nm-utils.c:1633
|
||||
#| msgid "Not enough memory to store PEM file data."
|
||||
msgid "Could not allocate memory for PEM file creation."
|
||||
msgstr "PEM ಕಡತ ರಚನೆಗೆ ಮೆಮೊರಿಯನ್ನು ನಿಯೋಜಿಸಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ."
|
||||
|
||||
#: ../libnm-util/nm-utils.c:1645
|
||||
#, c-format
|
||||
msgid "Could not allocate memory for writing IV to PEM file."
|
||||
msgstr "IV ಅನ್ನು PEM ಕಡತಕ್ಕೆ ಬರೆಯಲು ಮೆಮೊರಿಯನ್ನು ನಿಯೋಜಿಸಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ."
|
||||
|
||||
#: ../libnm-util/nm-utils.c:1657
|
||||
#, c-format
|
||||
msgid "Could not allocate memory for writing encrypted key to PEM file."
|
||||
msgstr "ಗೂಢಲಿಪೀಕರಿಸಲಾದ ಕೀಲಿಯನ್ನು PEM ಕಡತಕ್ಕೆ ಬರೆಯಲು ಮೆಮೊರಿಯನ್ನು ನಿಯೋಜಿಸಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ."
|
||||
|
||||
#: ../libnm-util/nm-utils.c:1676
|
||||
#, c-format
|
||||
#| msgid "Not enough memory to store PEM file data."
|
||||
msgid "Could not allocate memory for PEM file data."
|
||||
msgstr "PEM ಕಡತ ದತ್ತಾಂಶಕ್ಕಾಗಿ ಮೆಮೊರಿಯನ್ನು ನಿಯೋಜಿಸಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ."
|
||||
|
||||
#: ../src/nm-netlink-monitor.c:194 ../src/nm-netlink-monitor.c:464
|
||||
#: ../src/nm-netlink-monitor.c:569
|
||||
#: ../src/ip6-manager/nm-netlink-listener.c:352
|
||||
#, c-format
|
||||
msgid "error processing netlink message: %s"
|
||||
msgstr "ನೆಟ್ಲಿಂಕ್ ಸಂದೇಶವನ್ನು ಸಂಸ್ಕರಿಸುವಲ್ಲಿ ದೋಷ ಉಂಟಾಗಿದೆ: %s"
|
||||
|
||||
#: ../src/nm-netlink-monitor.c:255
|
||||
#: ../src/nm-netlink-monitor.c:260
|
||||
#, c-format
|
||||
msgid "unable to allocate netlink handle for monitoring link status: %s"
|
||||
msgstr "ಕೊಂಡಿಯ ಸ್ಥಿತಿಯನ್ನು ಮೇಲ್ವಿಚಾರಣೆ ನಡೆಸಲು ನೆಟ್ಲಿಂಕ್ ಹ್ಯಾಂಡಲ್ ಅನ್ನು ನಿಯೋಜಿಸಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ: %s"
|
||||
msgstr ""
|
||||
"ಕೊಂಡಿಯ ಸ್ಥಿತಿಯನ್ನು ಮೇಲ್ವಿಚಾರಣೆ ನಡೆಸಲು ನೆಟ್ಲಿಂಕ್ ಹ್ಯಾಂಡಲ್ ಅನ್ನು ನಿಯೋಜಿಸಲು "
|
||||
"ಸಾಧ್ಯವಾಗಿಲ್ಲ: %s"
|
||||
|
||||
#: ../src/nm-netlink-monitor.c:265
|
||||
#: ../src/nm-netlink-monitor.c:270
|
||||
#, c-format
|
||||
msgid "unable to connect to netlink for monitoring link status: %s"
|
||||
msgstr "ಕೊಂಡಿಯ ಸ್ಥಿತಿಯನ್ನು ಮೇಲ್ವಿಚಾರಣೆ ನಡೆಸಲು ನೆಟ್ಲಿಂಕ್ನೊಂದಿಗೆ ಸಂಪರ್ಕ ಜೋಡಿಸಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ: %s"
|
||||
msgstr ""
|
||||
"ಕೊಂಡಿಯ ಸ್ಥಿತಿಯನ್ನು ಮೇಲ್ವಿಚಾರಣೆ ನಡೆಸಲು ನೆಟ್ಲಿಂಕ್ನೊಂದಿಗೆ ಸಂಪರ್ಕ ಜೋಡಿಸಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ: %"
|
||||
"s"
|
||||
|
||||
#: ../src/nm-netlink-monitor.c:273
|
||||
#: ../src/nm-netlink-monitor.c:278
|
||||
#, c-format
|
||||
msgid "unable to join netlink group for monitoring link status: %s"
|
||||
msgstr "ಕೊಂಡಿಯ ಸ್ಥಿತಿಯನ್ನು ಮೇಲ್ವಿಚಾರಣೆ ನಡೆಸಲು ನೆಟ್ಲಿಂಕ್ ಗುಂಪನ್ನು ಸೇರಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ: %s"
|
||||
|
||||
#: ../src/nm-netlink-monitor.c:281
|
||||
#: ../src/nm-netlink-monitor.c:286
|
||||
#, c-format
|
||||
msgid "unable to allocate netlink link cache for monitoring link status: %s"
|
||||
msgstr "ಕೊಂಡಿಯ ಸ್ಥಿತಿಯನ್ನು ಮೇಲ್ವಿಚಾರಣೆ ನಡೆಸಲು ನೆಟ್ಲಿಂಕ್ ಕೊಂಡಿ ಕ್ಯಾಶೆಯನ್ನು ನಿಯೋಜಿಸಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ: %s"
|
||||
msgstr ""
|
||||
"ಕೊಂಡಿಯ ಸ್ಥಿತಿಯನ್ನು ಮೇಲ್ವಿಚಾರಣೆ ನಡೆಸಲು ನೆಟ್ಲಿಂಕ್ ಕೊಂಡಿ ಕ್ಯಾಶೆಯನ್ನು ನಿಯೋಜಿಸಲು "
|
||||
"ಸಾಧ್ಯವಾಗಿಲ್ಲ: %s"
|
||||
|
||||
#: ../src/nm-netlink-monitor.c:422
|
||||
#: ../src/nm-netlink-monitor.c:494
|
||||
#: ../src/ip6-manager/nm-netlink-listener.c:382
|
||||
msgid "error occurred while waiting for data on socket"
|
||||
msgstr "ಸಾಕೆಟ್ನಲ್ಲಿ ದತ್ತಾಂಶಕ್ಕಾಗಿ ಕಾಯುವಾಗ ದೋಷವು ಎದುರಾಗಿದೆ"
|
||||
|
||||
#: ../src/nm-netlink-monitor.c:558
|
||||
#, c-format
|
||||
msgid "error updating link cache: %s"
|
||||
msgstr "ಕೊಂಡಿ ಕ್ಯಾಶೆಯನ್ನು ಅಪ್ಡೇಟ್ ಮಾಡುವಾಗ ದೋಷ ಉಂಟಾಗಿದೆ: %s"
|
||||
|
||||
#: ../src/nm-netlink-monitor.c:488
|
||||
msgid "error occurred while waiting for data on socket"
|
||||
msgstr "ಸಾಕೆಟ್ನಲ್ಲಿ ದತ್ತಾಂಶಕ್ಕಾಗಿ ಕಾಯುವಾಗ ದೋಷವು ಎದುರಾಗಿದೆ"
|
||||
|
||||
#: ../src/NetworkManager.c:329
|
||||
#: ../src/NetworkManager.c:330
|
||||
#, c-format
|
||||
msgid "Invalid option. Please use --help to see a list of valid options.\n"
|
||||
msgstr "ಅಮಾನ್ಯವಾದ ಆಯ್ಕೆ. ಮಾನ್ಯವಾದ ಆಯ್ಕೆಗಳಿಗಾಗಿ ದಯವಿಟ್ಟು --help ಅನ್ನು ನೋಡಿ.\n"
|
||||
|
||||
#: ../src/dhcp-manager/nm-dhcp-dhclient.c:97
|
||||
#: ../src/dhcp-manager/nm-dhcp-dhclient.c:304
|
||||
msgid "# Created by NetworkManager\n"
|
||||
msgstr "# NetworkManager ನಿಂದ ನಿರ್ಮಿಸಲಾಗಿದೆ\n"
|
||||
|
||||
#: ../src/dhcp-manager/nm-dhcp-dhclient.c:103
|
||||
#: ../src/dhcp-manager/nm-dhcp-dhclient.c:310
|
||||
#, c-format
|
||||
msgid ""
|
||||
"# Merged from %s\n"
|
||||
|
|
@ -306,28 +436,73 @@ msgstr ""
|
|||
"# %s ಇಂದ ಒಗ್ಗೂಡಿಸಲಾಗಿದೆ\n"
|
||||
"\n"
|
||||
|
||||
#: ../src/named-manager/nm-named-manager.c:255
|
||||
msgid "NOTE: the libc resolver may not support more than 3 nameservers."
|
||||
msgstr "ಸೂಚನೆ: libc ಪರಿಹಾರಕವು(ರಿಸಾಲ್ವರ್) ೩ ನಾಮಪರಿಚಾರಕಗಳಿಗಿಂತ ಹೆಚ್ಚಿನವುಗಳನ್ನು ಬೆಂಬಲಿಸುವುದಿಲ್ಲ."
|
||||
#: ../src/ip6-manager/nm-netlink-listener.c:200
|
||||
#, c-format
|
||||
#| msgid "unable to allocate netlink handle for monitoring link status: %s"
|
||||
msgid "unable to allocate netlink handle: %s"
|
||||
msgstr "ನೆಟ್ಲಿಂಕ್ ಹ್ಯಾಂಡಲ್ ಅನ್ನು ನಿಯೋಜಿಸಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ: %s"
|
||||
|
||||
#: ../src/named-manager/nm-named-manager.c:257
|
||||
#: ../src/ip6-manager/nm-netlink-listener.c:210
|
||||
#, c-format
|
||||
#| msgid "unable to connect to netlink for monitoring link status: %s"
|
||||
msgid "unable to connect to netlink: %s"
|
||||
msgstr "ನೆಟ್ಲಿಂಕ್ನೊಂದಿಗೆ ಸಂಪರ್ಕ ಜೋಡಿಸಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ: %s"
|
||||
|
||||
#: ../src/ip6-manager/nm-netlink-listener.c:307
|
||||
#, c-format
|
||||
#| msgid "unable to join netlink group for monitoring link status: %s"
|
||||
msgid "unable to join netlink group: %s"
|
||||
msgstr "ನೆಟ್ಲಿಂಕ್ ಗುಂಪನ್ನು ಸೇರಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ: %s"
|
||||
|
||||
#: ../src/named-manager/nm-named-manager.c:315
|
||||
msgid "NOTE: the libc resolver may not support more than 3 nameservers."
|
||||
msgstr ""
|
||||
"ಸೂಚನೆ: libc ಪರಿಹಾರಕವು(ರಿಸಾಲ್ವರ್) ೩ ನಾಮಪರಿಚಾರಕಗಳಿಗಿಂತ ಹೆಚ್ಚಿನವುಗಳನ್ನು "
|
||||
"ಬೆಂಬಲಿಸುವುದಿಲ್ಲ."
|
||||
|
||||
#: ../src/named-manager/nm-named-manager.c:317
|
||||
msgid "The nameservers listed below may not be recognized."
|
||||
msgstr "ಈ ಕೆಳಗೆ ಸೂಚಿಸಲಾದ ನಾಮಪರಿಚಾರಕಗಳನ್ನು ಗುರುತಿಸಲಾಗಿಲ್ಲ."
|
||||
|
||||
#: ../src/system-settings/nm-default-wired-connection.c:182
|
||||
#: ../src/system-settings/nm-default-wired-connection.c:194
|
||||
#, c-format
|
||||
msgid "Auto %s"
|
||||
msgstr "ಸ್ವಯಂ %s"
|
||||
|
||||
#: ../system-settings/plugins/ifcfg-rh/reader.c:2168
|
||||
#: ../system-settings/plugins/ifcfg-rh/reader.c:2406
|
||||
msgid "System"
|
||||
msgstr "ಗಣಕ"
|
||||
|
||||
#: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:1
|
||||
msgid "Connection sharing via a protected WiFi network"
|
||||
msgstr "ಒಂದು ಸಂರಕ್ಷಿತವಾದ WiFi ಜಾಲಬಂಧದ ಮೂಲಕ ಸಂಪರ್ಕ ಸಾಧಿಸುವಿಕೆ"
|
||||
|
||||
#: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:2
|
||||
msgid "Connection sharing via an open WiFi network"
|
||||
msgstr "ಒಂದು ಮುಕ್ತವಾದ WiFi ಜಾಲಬಂಧದ ಮೂಲಕ ಸಂಪರ್ಕ ಸಾಧಿಸುವಿಕೆ"
|
||||
|
||||
#: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:3
|
||||
msgid "Modify persistent system hostname"
|
||||
msgstr "ಸ್ಥಿರ ವ್ಯವಸ್ಥೆಯ ಆತಿಥೇಯ ಹೆಸರನ್ನು ಮಾರ್ಪಡಿಸಿ"
|
||||
|
||||
#: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:4
|
||||
msgid "Modify system connections"
|
||||
msgstr "ವ್ಯವಸ್ಥೆಯ ಸಂಪರ್ಕಗಳನ್ನು ಮಾರ್ಪಡಿಸು"
|
||||
|
||||
#: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:2
|
||||
#: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:5
|
||||
msgid "System policy prevents modification of system settings"
|
||||
msgstr "ವ್ಯವಸ್ಥೆಯ ಸಂಪರ್ಕಗಳನ್ನು ಮಾರ್ಪಡಿಸದಂತೆ ವ್ಯವಸ್ಥೆಯ ನಿಯಮಗಳು ತಡೆಯುತ್ತಿವೆ"
|
||||
|
||||
#: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:6
|
||||
#| msgid "System policy prevents modification of system settings"
|
||||
msgid "System policy prevents modification of the persistent system hostname"
|
||||
msgstr "ಸ್ಥಿರ ವ್ಯವಸ್ಥೆಯ ಆತಿಥೇಯ ಹೆಸರನ್ನು ಮಾರ್ಪಡಿಸದಂತೆ ವ್ಯವಸ್ಥೆಯ ನಿಯಮಗಳು ತಡೆಯುತ್ತವೆ"
|
||||
|
||||
#: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:7
|
||||
msgid "System policy prevents sharing connections via a protected WiFi network"
|
||||
msgstr "ಒಂದು ಸಂರಕ್ಷಿತವಾದ WiFi ಜಾಲಬಂಧದ ಮೂಲಕ ಸಂಪರ್ಕ ಸಾಧಿಸದಂತೆ ವ್ಯವಸ್ಥೆಯ ನಿಯಮಗಳು ತಡೆಯುತ್ತವೆ"
|
||||
|
||||
#: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:8
|
||||
msgid "System policy prevents sharing connections via an open WiFi network"
|
||||
msgstr "ಒಂದು ಮುಕ್ತವಾದ WiFi ಜಾಲಬಂಧದ ಮೂಲಕ ಸಂಪರ್ಕ ಸಾಧಿಸದಂತೆ ವ್ಯವಸ್ಥೆಯ ನಿಯಮಗಳು ತಡೆಯುತ್ತವೆ"
|
||||
|
||||
|
|
|
|||
373
po/or.po
373
po/or.po
|
|
@ -1,86 +1,22 @@
|
|||
# translation of or.po to Oriya
|
||||
# translation of NetworkManager.master.or.po to Oriya
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
#
|
||||
# Manoj Kumar Giri <mgiri@redhat.com>, 2008.
|
||||
# Manoj Kumar Giri <mgiri@redhat.com>, 2008, 2010.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: or\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=NetworkManager&component=general\n"
|
||||
"POT-Creation-Date: 2008-11-25 21:02+0000\n"
|
||||
"PO-Revision-Date: 2008-11-26 19:09+0530\n"
|
||||
"Project-Id-Version: NetworkManager.master.or\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=NetworkManager&component=general\n"
|
||||
"POT-Creation-Date: 2009-09-29 03:25+0000\n"
|
||||
"PO-Revision-Date: 2010-02-10 16:09+0530\n"
|
||||
"Last-Translator: Manoj Kumar Giri <mgiri@redhat.com>\n"
|
||||
"Language-Team: Oriya\n"
|
||||
"Language-Team: Oriya <oriya-it@googlegroups.com>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: KBabel 1.11.4\n"
|
||||
"Plural-Forms: nplurals=2;plural=(n!=1)\n"
|
||||
|
||||
#: ../src/nm-netlink-monitor.c:194 ../src/nm-netlink-monitor.c:454
|
||||
#, c-format
|
||||
msgid "error processing netlink message: %s"
|
||||
msgstr "netlink ସନ୍ଦେଶ ପଠାଇବାରେ ତ୍ରୁଟି: %s"
|
||||
|
||||
#: ../src/nm-netlink-monitor.c:251
|
||||
#, c-format
|
||||
msgid "unable to allocate netlink handle for monitoring link status: %s"
|
||||
msgstr "ସଂଯୋଗ ସ୍ଥିତି ଅନ୍ୱେଷଣ କରିବା ପାଇଁ netlink ନିୟନ୍ତ୍ରଣ ଦର୍ଶାଇବାରେ ଅସମର୍ଥ: %s"
|
||||
|
||||
#: ../src/nm-netlink-monitor.c:261
|
||||
#, c-format
|
||||
msgid "unable to connect to netlink for monitoring link status: %s"
|
||||
msgstr "ସଂଯୋଗ ସ୍ଥିତି ଅନ୍ୱେଷଣ କରିବା ପାଇଁ netlink ସହିତ ସଂଯୋଗ ହେବାରେ ଅସମର୍ଥ: %s"
|
||||
|
||||
#: ../src/nm-netlink-monitor.c:269
|
||||
#, c-format
|
||||
msgid "unable to join netlink group for monitoring link status: %s"
|
||||
msgstr "ସଂଯୋଗ ସ୍ଥିତି ଅନ୍ୱେଷଣ କରିବା ପାଇଁ netlink ଶ୍ରେଣୀରେ ମିଶିବାରେ ଅସମର୍ଥ: %s"
|
||||
|
||||
#: ../src/nm-netlink-monitor.c:277
|
||||
#, c-format
|
||||
msgid "unable to allocate netlink link cache for monitoring link status: %s"
|
||||
msgstr "ସଂଯୋଗ ସ୍ଥିତି ଅନ୍ୱେଷଣ କରିବା ପାଇଁ netlink କ୍ୟାଶେ ଦର୍ଶାଇବାରେ ଅସମର୍ଥ: %s"
|
||||
|
||||
#: ../src/nm-netlink-monitor.c:418
|
||||
#, c-format
|
||||
msgid "error updating link cache: %s"
|
||||
msgstr "ସଂଯୋଗ କ୍ୟାଶେ ଅଦ୍ୟତନ କରିବାରେ ତ୍ରୁଟି: %s"
|
||||
|
||||
#: ../src/nm-netlink-monitor.c:484
|
||||
msgid "error occurred while waiting for data on socket"
|
||||
msgstr "ସକେଟରେ ତଥ୍ୟ ପାଇଁ ଅପେକ୍ଷା କରିବା ସମୟରେ ତ୍ରୁଟି"
|
||||
|
||||
#: ../src/NetworkManager.c:293
|
||||
#, c-format
|
||||
msgid "Invalid option. Please use --help to see a list of valid options.\n"
|
||||
msgstr "ଅବୈଧ ବିକଳ୍ପ. ବୈଧ ବିକଳ୍ପର ତାଲିକା ଦେଖିବା ପାଇଁ ଦୟାକରି --ସହାୟତା ବ୍ୟବହାର କରନ୍ତୁ.\n"
|
||||
|
||||
#: ../src/dhcp-manager/nm-dhcp-dhclient.c:88
|
||||
msgid "# Created by NetworkManager\n"
|
||||
msgstr "# NetworkManager ଦ୍ୱାରା ନିର୍ମିତ\n"
|
||||
|
||||
#: ../src/dhcp-manager/nm-dhcp-dhclient.c:94
|
||||
#, c-format
|
||||
msgid ""
|
||||
"# Merged from %s\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n!=1);\n\n"
|
||||
"\n"
|
||||
msgstr ""
|
||||
"# %s ରୁ ମିଶ୍ରିତ\n"
|
||||
"\n"
|
||||
|
||||
#: ../src/named-manager/nm-named-manager.c:256
|
||||
msgid "NOTE: the libc resolver may not support more than 3 nameservers."
|
||||
msgstr "ଟିପ୍ପଣୀ: libc resolver 3 ରୁ ଅଧିକ nameserverଗୁଡ଼ିକୁ ସମର୍ଥନ କରିନପାରେ."
|
||||
|
||||
#: ../src/named-manager/nm-named-manager.c:258
|
||||
msgid "The nameservers listed below may not be recognized."
|
||||
msgstr "ନିମ୍ନରେ ତାଲିକାଭୁକ୍ତ nameserverଗୁଡ଼ିକୁ ଚିହ୍ନି ହୋଇନପାରେ."
|
||||
|
||||
#: ../system-settings/src/main.c:376
|
||||
#, c-format
|
||||
msgid "Auto %s"
|
||||
msgstr "ସ୍ୱୟଂ %s"
|
||||
|
||||
#: ../libnm-util/crypto.c:120
|
||||
#, c-format
|
||||
|
|
@ -167,8 +103,9 @@ msgstr "IV କୁ ସଂରକ୍ଷଣ କରିବା ପାଇଁ ଯଥେ
|
|||
msgid "IV contains non-hexadecimal digits."
|
||||
msgstr "IV ଷୋହଳମିକ ସଂଖ୍ୟା ଧାରଣ କରିନଥାଏ."
|
||||
|
||||
#: ../libnm-util/crypto.c:382 ../libnm-util/crypto_gnutls.c:143
|
||||
#: ../libnm-util/crypto_nss.c:169
|
||||
#: ../libnm-util/crypto.c:382 ../libnm-util/crypto_gnutls.c:148
|
||||
#: ../libnm-util/crypto_gnutls.c:266 ../libnm-util/crypto_nss.c:171
|
||||
#: ../libnm-util/crypto_nss.c:335
|
||||
#, c-format
|
||||
msgid "Private key cipher '%s' was unknown."
|
||||
msgstr "ବ୍ୟକ୍ତିଗତ କି କୁଞ୍ଜି '%s' ଅଜଣା ଥିଲା."
|
||||
|
|
@ -188,66 +125,106 @@ msgstr "ବ୍ୟକ୍ତିଗତ କି ପ୍ରକାର ନିର୍ଧା
|
|||
msgid "Not enough memory to store decrypted private key."
|
||||
msgstr "ବିକୋଡ଼ନ ବ୍ୟକ୍ତିଗତ ତଥ୍ୟ ସଂରକ୍ଷଣ କରିବା ପାଇଁ ଯଥେଷ୍ଟ ସ୍ଥାନ ନାହିଁ."
|
||||
|
||||
#: ../libnm-util/crypto_gnutls.c:46
|
||||
#: ../libnm-util/crypto_gnutls.c:49
|
||||
msgid "Failed to initialize the crypto engine."
|
||||
msgstr "କ୍ରିପ୍ଟ ଯନ୍ତ୍ରକୁ ଆରମ୍ଭ କରିବାରେ ବିଫଳ."
|
||||
|
||||
#: ../libnm-util/crypto_gnutls.c:90
|
||||
#: ../libnm-util/crypto_gnutls.c:93
|
||||
#, c-format
|
||||
msgid "Failed to initialize the MD5 engine: %s / %s."
|
||||
msgstr "MD5 ଯନ୍ତ୍ରକୁ ଆରମ୍ଭ କରିବାରେ ବିଫଳ: %s / %s."
|
||||
|
||||
#: ../libnm-util/crypto_gnutls.c:152 ../libnm-util/crypto_nss.c:178
|
||||
#: ../libnm-util/crypto_gnutls.c:156
|
||||
#, c-format
|
||||
msgid "Invalid IV length (must be at least %zd)."
|
||||
msgstr "ଅବୈଧ IV ଲମ୍ବ (ଅତିକମରେ %zd ହେବା ଉଚିତ)।"
|
||||
|
||||
#: ../libnm-util/crypto_gnutls.c:165 ../libnm-util/crypto_nss.c:188
|
||||
#, c-format
|
||||
msgid "Not enough memory for decrypted key buffer."
|
||||
msgstr "କି ବଫରକୁ ବିକୋଡ଼ନ କରିବା ପାଇଁ ଯଥେଷ୍ଟ ସ୍ଥାନ ନାହିଁ."
|
||||
|
||||
#: ../libnm-util/crypto_gnutls.c:160
|
||||
#: ../libnm-util/crypto_gnutls.c:173
|
||||
#, c-format
|
||||
msgid "Failed to initialize the decryption cipher context: %s / %s."
|
||||
msgstr "ବିକୋଡ଼ନ କୁଞ୍ଜି ପ୍ରସଙ୍ଗକୁ ଆରମ୍ଭ କରିବାରେ ବିଫଳ: %s / %s."
|
||||
|
||||
#: ../libnm-util/crypto_gnutls.c:169
|
||||
#: ../libnm-util/crypto_gnutls.c:182
|
||||
#, c-format
|
||||
msgid "Failed to set symmetric key for decryption: %s / %s."
|
||||
msgstr "ବିକୋଡ଼ନ ପାଇଁ ସମମିତ କି ବିନ୍ୟାସ କରିବାରେ ବିଫଳ: %s / %s."
|
||||
|
||||
#: ../libnm-util/crypto_gnutls.c:178
|
||||
#: ../libnm-util/crypto_gnutls.c:191
|
||||
#, c-format
|
||||
msgid "Failed to set IV for decryption: %s / %s."
|
||||
msgstr "ବିକୋଡ଼ନ ପାଇଁ IV ବିନ୍ୟାସ କରିବାରେ ବିଫଳ: %s / %s."
|
||||
|
||||
#: ../libnm-util/crypto_gnutls.c:187
|
||||
#: ../libnm-util/crypto_gnutls.c:200
|
||||
#, c-format
|
||||
msgid "Failed to decrypt the private key: %s / %s."
|
||||
msgstr "ବ୍ୟକ୍ତିଗତ କି କୁ ବିକୋଡ଼ନ କରିବାରେ ବିଫଳ: %s / %s."
|
||||
|
||||
#: ../libnm-util/crypto_gnutls.c:200
|
||||
#: ../libnm-util/crypto_gnutls.c:210 ../libnm-util/crypto_nss.c:266
|
||||
#, c-format
|
||||
#| msgid "Failed to decrypt the private key: %d."
|
||||
msgid "Failed to decrypt the private key: unexpected padding length."
|
||||
msgstr "ବ୍ୟକ୍ତିଗତ କିକୁ ଅବସଂକେତ କରିବାରେ ବିଫଳ: ଅପ୍ରତ୍ୟାଶିତ ପ୍ୟାଡିଙ୍ଗ ଲମ୍ବ।"
|
||||
|
||||
#: ../libnm-util/crypto_gnutls.c:221 ../libnm-util/crypto_nss.c:277
|
||||
#, c-format
|
||||
msgid "Failed to decrypt the private key."
|
||||
msgstr "ବ୍ୟକ୍ତିଗତ କି କୁ ବିକୋଡ଼ନ କରିବାରେ ବିଫଳ."
|
||||
|
||||
#: ../libnm-util/crypto_gnutls.c:235
|
||||
#: ../libnm-util/crypto_gnutls.c:286 ../libnm-util/crypto_nss.c:355
|
||||
#, c-format
|
||||
msgid "Could not allocate memory for encrypting."
|
||||
msgstr "ସଂଗୁପ୍ତ କରିବା ପାଇଁ ସ୍ମୃତି ସ୍ଥାନକୁ ବଣ୍ଟନ କରିପାରିଲା ନାହିଁ।"
|
||||
|
||||
#: ../libnm-util/crypto_gnutls.c:294
|
||||
#, c-format
|
||||
#| msgid "Failed to initialize the decryption cipher context: %s / %s."
|
||||
msgid "Failed to initialize the encryption cipher context: %s / %s."
|
||||
msgstr "ବିକୋଡ଼ନ କୁଞ୍ଜି ପ୍ରସଙ୍ଗକୁ ଆରମ୍ଭ କରିବାରେ ବିଫଳ: %s / %s."
|
||||
|
||||
#: ../libnm-util/crypto_gnutls.c:303
|
||||
#, c-format
|
||||
#| msgid "Failed to set symmetric key for decryption: %s / %s."
|
||||
msgid "Failed to set symmetric key for encryption: %s / %s."
|
||||
msgstr "ବିକୋଡ଼ନ ପାଇଁ ସମମିତ କି ବିନ୍ୟାସ କରିବାରେ ବିଫଳ: %s / %s."
|
||||
|
||||
#: ../libnm-util/crypto_gnutls.c:313
|
||||
#, c-format
|
||||
#| msgid "Failed to set IV for decryption: %s / %s."
|
||||
msgid "Failed to set IV for encryption: %s / %s."
|
||||
msgstr "ବିକୋଡ଼ନ ପାଇଁ IV ବିନ୍ୟାସ କରିବାରେ ବିଫଳ: %s / %s."
|
||||
|
||||
#: ../libnm-util/crypto_gnutls.c:322
|
||||
#, c-format
|
||||
#| msgid "Failed to decrypt the private key: %s / %s."
|
||||
msgid "Failed to encrypt the data: %s / %s."
|
||||
msgstr "ତଥ୍ୟକୁ ବିକୋଡ଼ନ କରିବାରେ ବିଫଳ: %s / %s."
|
||||
|
||||
#: ../libnm-util/crypto_gnutls.c:362
|
||||
#, c-format
|
||||
msgid "Error initializing certificate data: %s"
|
||||
msgstr "ପ୍ରମାଣପତ୍ର ତଥ୍ୟକୁ ଆରମ୍ଭ କରିବାରେ ତ୍ରୁଟି: %s"
|
||||
|
||||
#: ../libnm-util/crypto_gnutls.c:257
|
||||
#: ../libnm-util/crypto_gnutls.c:384
|
||||
#, c-format
|
||||
msgid "Couldn't decode certificate: %s"
|
||||
msgstr "ପ୍ରମାଣପତ୍ରକୁ ଅବସଂକେତ କରିପାରିଲେ ନାହିଁ: %s"
|
||||
|
||||
#: ../libnm-util/crypto_gnutls.c:281
|
||||
#: ../libnm-util/crypto_gnutls.c:408
|
||||
#, c-format
|
||||
msgid "Couldn't initialize PKCS#12 decoder: %s"
|
||||
msgstr "PKCS#12 ଅବସଂକେତକକୁ ଆରମ୍ଭ କରିପାରିଲେ ନାହିଁ: %s"
|
||||
|
||||
#: ../libnm-util/crypto_gnutls.c:294
|
||||
#: ../libnm-util/crypto_gnutls.c:421
|
||||
#, c-format
|
||||
msgid "Couldn't decode PKCS#12 file: %s"
|
||||
msgstr "PKCS#12 ଫାଇଲକୁ ଅବସଂକେତ କରିହେବ ନାହିଁ: %s"
|
||||
|
||||
#: ../libnm-util/crypto_gnutls.c:306
|
||||
#: ../libnm-util/crypto_gnutls.c:433
|
||||
#, c-format
|
||||
msgid "Couldn't verify PKCS#12 file: %s"
|
||||
msgstr "PKCS#12 ଫାଇଲକୁ ଯାଞ୍ଚ କରିହେଲା ନାହିଁ: %s"
|
||||
|
|
@ -262,58 +239,258 @@ msgstr "କ୍ରିପ୍ଟ ଯନ୍ତ୍ରକୁ ଆରମ୍ଭ କରି
|
|||
msgid "Failed to initialize the MD5 context: %d."
|
||||
msgstr "MD5 ପ୍ରସଙ୍ଗକୁ ଆରମ୍ଭ କରିବାରେ ବିଫଳ: %d."
|
||||
|
||||
#: ../libnm-util/crypto_nss.c:186
|
||||
#: ../libnm-util/crypto_nss.c:179
|
||||
#, c-format
|
||||
msgid "Invalid IV length (must be at least %d)."
|
||||
msgstr "ଅବୈଧ IV ଲମ୍ବ (ନିଶ୍ଚିତ ଭାବରେ ଅତିକମରେ %d ହେବା ଉଚିତ)।"
|
||||
|
||||
#: ../libnm-util/crypto_nss.c:196
|
||||
#, c-format
|
||||
msgid "Failed to initialize the decryption cipher slot."
|
||||
msgstr "ଅବସଂକେତନ କୁଞ୍ଜି ସ୍ଥାନକୁ ଆରମ୍ଭ କରିବାରେ ବିଫଳ."
|
||||
|
||||
#: ../libnm-util/crypto_nss.c:196
|
||||
#: ../libnm-util/crypto_nss.c:206
|
||||
#, c-format
|
||||
msgid "Failed to set symmetric key for decryption."
|
||||
msgstr "ଅବସଂକେତନ ପାଇଁ ସମମିତ କିକୁ ବିନ୍ୟାସ କରିବାରେ ବିଫଳ."
|
||||
|
||||
#: ../libnm-util/crypto_nss.c:206
|
||||
#: ../libnm-util/crypto_nss.c:216
|
||||
#, c-format
|
||||
msgid "Failed to set IV for decryption."
|
||||
msgstr "ଅବସଂକେତନ ପାଇଁ IV ବିନ୍ୟାସ କରିବାରେ ବିଫଳ."
|
||||
|
||||
#: ../libnm-util/crypto_nss.c:214
|
||||
#: ../libnm-util/crypto_nss.c:224
|
||||
#, c-format
|
||||
msgid "Failed to initialize the decryption context."
|
||||
msgstr "ଅବସଂକେତନ ପ୍ରସଙ୍ଗକୁ ଆରମ୍ଭ କରିବାରେ ବିଫଳ."
|
||||
|
||||
#: ../libnm-util/crypto_nss.c:227
|
||||
#: ../libnm-util/crypto_nss.c:237
|
||||
#, c-format
|
||||
msgid "Failed to decrypt the private key: %d."
|
||||
msgstr "ବ୍ୟକ୍ତିଗତ କିକୁ ଅବସଂକେତ କରିବାରେ ବିଫଳ: %d."
|
||||
|
||||
#: ../libnm-util/crypto_nss.c:239
|
||||
#: ../libnm-util/crypto_nss.c:245
|
||||
#, c-format
|
||||
#| msgid "Failed to decrypt the private key: %d."
|
||||
msgid "Failed to decrypt the private key: decrypted data too large."
|
||||
msgstr "ବ୍ୟକ୍ତିଗତ କିକୁ ଅବସଂକେତ କରିବାରେ ବିଫଳ: ଅବସଂକେତ ତଥ୍ୟଟି ଅତ୍ୟଧିକ ବଡ଼।"
|
||||
|
||||
#: ../libnm-util/crypto_nss.c:256
|
||||
#, c-format
|
||||
msgid "Failed to finalize decryption of the private key: %d."
|
||||
msgstr "ବ୍ୟକ୍ତିଗତ କିର ଅବସଂକେତନକୁ ନିଶ୍ଚୟ କରିବାରେ ବିଫଳ: %d."
|
||||
|
||||
#: ../libnm-util/crypto_nss.c:284
|
||||
#: ../libnm-util/crypto_nss.c:363
|
||||
#, c-format
|
||||
#| msgid "Failed to initialize the decryption cipher slot."
|
||||
msgid "Failed to initialize the encryption cipher slot."
|
||||
msgstr "ଅବସଂକେତନ କୁଞ୍ଜି ସ୍ଥାନକୁ ଆରମ୍ଭ କରିବାରେ ବିଫଳ।"
|
||||
|
||||
#: ../libnm-util/crypto_nss.c:371
|
||||
#, c-format
|
||||
#| msgid "Failed to set symmetric key for decryption."
|
||||
msgid "Failed to set symmetric key for encryption."
|
||||
msgstr "ଅବସଂକେତନ ପାଇଁ ସମମିତ କିକୁ ବିନ୍ୟାସ କରିବାରେ ବିଫଳ।"
|
||||
|
||||
#: ../libnm-util/crypto_nss.c:379
|
||||
#, c-format
|
||||
#| msgid "Failed to set IV for decryption."
|
||||
msgid "Failed to set IV for encryption."
|
||||
msgstr "ଅବସଂକେତନ ପାଇଁ IV ବିନ୍ୟାସ କରିବାରେ ବିଫଳ।"
|
||||
|
||||
#: ../libnm-util/crypto_nss.c:387
|
||||
#, c-format
|
||||
#| msgid "Failed to initialize the decryption context."
|
||||
msgid "Failed to initialize the encryption context."
|
||||
msgstr "ଅବସଂକେତନ ପ୍ରସଙ୍ଗକୁ ଆରମ୍ଭ କରିବାରେ ବିଫଳ।"
|
||||
|
||||
#: ../libnm-util/crypto_nss.c:395
|
||||
#, c-format
|
||||
#| msgid "Failed to decrypt the private key: %d."
|
||||
msgid "Failed to encrypt: %d."
|
||||
msgstr "ଅବସଂକେତ କରିବାରେ ବିଫଳ: %d."
|
||||
|
||||
#: ../libnm-util/crypto_nss.c:403
|
||||
#, c-format
|
||||
msgid "Unexpected amount of data after encrypting."
|
||||
msgstr "ସଂଗୁପ୍ତ କରିବା ପରେ ଅପ୍ରତ୍ୟଶିତ ପରିମାଣର ତଥ୍ୟ।"
|
||||
|
||||
#: ../libnm-util/crypto_nss.c:446
|
||||
#, c-format
|
||||
msgid "Couldn't decode certificate: %d"
|
||||
msgstr "ପ୍ରମାଣପତ୍ରକୁ ଅବସଂକେତନ କରିହେଲା ନାହିଁ: %d"
|
||||
|
||||
#: ../libnm-util/crypto_nss.c:319
|
||||
#: ../libnm-util/crypto_nss.c:481
|
||||
#, c-format
|
||||
msgid "Couldn't convert password to UCS2: %d"
|
||||
msgstr "ପ୍ରବେଶସଙ୍କେତକୁ UCS2ରେ ପରିବର୍ତ୍ତନ କରିହେଲା ନାହିଁ: %d"
|
||||
|
||||
#: ../libnm-util/crypto_nss.c:347
|
||||
#: ../libnm-util/crypto_nss.c:509
|
||||
#, c-format
|
||||
msgid "Couldn't initialize PKCS#12 decoder: %d"
|
||||
msgstr "PKCS#12 ଅବସଂକେତକକୁ ଆରମ୍ଭ କରିହେଲା ନାହିଁ: %d"
|
||||
|
||||
#: ../libnm-util/crypto_nss.c:356
|
||||
#: ../libnm-util/crypto_nss.c:518
|
||||
#, c-format
|
||||
msgid "Couldn't decode PKCS#12 file: %d"
|
||||
msgstr "PKCS#12 ଫାଇଲକୁ ଅବସଂକେତନ କରିହେଲା ନାହିଁ: %d"
|
||||
|
||||
#: ../libnm-util/crypto_nss.c:365
|
||||
#: ../libnm-util/crypto_nss.c:527
|
||||
#, c-format
|
||||
msgid "Couldn't verify PKCS#12 file: %d"
|
||||
msgstr "PKCS#12 ଫାଇଲକୁ ଯାଞ୍ଚ କରିହେଲାନାହିଁ: %d"
|
||||
|
||||
#: ../libnm-util/crypto_nss.c:556
|
||||
#| msgid "Could not decode private key."
|
||||
msgid "Could not generate random data."
|
||||
msgstr "ମନଇଚ୍ଛା ତଥ୍ୟକୁ ଅବସଂକେତ କରିହେଲା ନାହିଁ।"
|
||||
|
||||
#: ../libnm-util/nm-utils.c:1522
|
||||
#, c-format
|
||||
#| msgid "Not enough memory to decrypt private key."
|
||||
msgid "Not enough memory to make encryption key."
|
||||
msgstr "ବିକୋଡ଼ନ କି କୁ ନିର୍ମାଣ କରିବା ପାଇଁ ଯଥେଷ୍ଟ ସ୍ମୃତି ସ୍ଥାନ ନାହିଁ।"
|
||||
|
||||
#: ../libnm-util/nm-utils.c:1633
|
||||
#| msgid "Not enough memory to store PEM file data."
|
||||
msgid "Could not allocate memory for PEM file creation."
|
||||
msgstr "PEM ଫାଇଲ ନିର୍ମାଣ ପାଇଁ ସ୍ମୃତି ସ୍ଥାନ ବଣ୍ଟନ କରିପାରିଲା ନାହିଁ।"
|
||||
|
||||
#: ../libnm-util/nm-utils.c:1645
|
||||
#, c-format
|
||||
msgid "Could not allocate memory for writing IV to PEM file."
|
||||
msgstr "PEM ଫାଇଲରେ IV ଲେଖିବା ପାଇଁ ସ୍ମୃତି ସ୍ଥାନ ବଣ୍ଟନ କରିପାରିଲା ନାହିଁ।"
|
||||
|
||||
#: ../libnm-util/nm-utils.c:1657
|
||||
#, c-format
|
||||
msgid "Could not allocate memory for writing encrypted key to PEM file."
|
||||
msgstr "PEM ଫାଇଲରେ ସଂଗୁପ୍ତ କି ଲେଖିବା ପାଇଁ ସ୍ମୃତି ସ୍ଥାନ ବଣ୍ଟନ କରିପାରିଲା ନାହିଁ।"
|
||||
|
||||
#: ../libnm-util/nm-utils.c:1676
|
||||
#, c-format
|
||||
#| msgid "Not enough memory to store PEM file data."
|
||||
msgid "Could not allocate memory for PEM file data."
|
||||
msgstr "PEM ଫାଇଲ ତଥ୍ୟକୁ ବଣ୍ଟନ କରିପାରିଲା ନାହିଁ।"
|
||||
|
||||
#: ../src/nm-netlink-monitor.c:194 ../src/nm-netlink-monitor.c:464
|
||||
#: ../src/nm-netlink-monitor.c:569
|
||||
#: ../src/ip6-manager/nm-netlink-listener.c:352
|
||||
#, c-format
|
||||
msgid "error processing netlink message: %s"
|
||||
msgstr "netlink ସନ୍ଦେଶ ପଠାଇବାରେ ତ୍ରୁଟି: %s"
|
||||
|
||||
#: ../src/nm-netlink-monitor.c:260
|
||||
#, c-format
|
||||
msgid "unable to allocate netlink handle for monitoring link status: %s"
|
||||
msgstr "ସଂଯୋଗ ସ୍ଥିତି ଅନ୍ୱେଷଣ କରିବା ପାଇଁ netlink ନିୟନ୍ତ୍ରଣ ଦର୍ଶାଇବାରେ ଅସମର୍ଥ: %s"
|
||||
|
||||
#: ../src/nm-netlink-monitor.c:270
|
||||
#, c-format
|
||||
msgid "unable to connect to netlink for monitoring link status: %s"
|
||||
msgstr "ସଂଯୋଗ ସ୍ଥିତି ଅନ୍ୱେଷଣ କରିବା ପାଇଁ netlink ସହିତ ସଂଯୋଗ ହେବାରେ ଅସମର୍ଥ: %s"
|
||||
|
||||
#: ../src/nm-netlink-monitor.c:278
|
||||
#, c-format
|
||||
msgid "unable to join netlink group for monitoring link status: %s"
|
||||
msgstr "ସଂଯୋଗ ସ୍ଥିତି ଅନ୍ୱେଷଣ କରିବା ପାଇଁ netlink ଶ୍ରେଣୀରେ ମିଶିବାରେ ଅସମର୍ଥ: %s"
|
||||
|
||||
#: ../src/nm-netlink-monitor.c:286
|
||||
#, c-format
|
||||
msgid "unable to allocate netlink link cache for monitoring link status: %s"
|
||||
msgstr "ସଂଯୋଗ ସ୍ଥିତି ଅନ୍ୱେଷଣ କରିବା ପାଇଁ netlink କ୍ୟାଶେ ଦର୍ଶାଇବାରେ ଅସମର୍ଥ: %s"
|
||||
|
||||
#: ../src/nm-netlink-monitor.c:494
|
||||
#: ../src/ip6-manager/nm-netlink-listener.c:382
|
||||
msgid "error occurred while waiting for data on socket"
|
||||
msgstr "ସକେଟରେ ତଥ୍ୟ ପାଇଁ ଅପେକ୍ଷା କରିବା ସମୟରେ ତ୍ରୁଟି"
|
||||
|
||||
#: ../src/nm-netlink-monitor.c:558
|
||||
#, c-format
|
||||
msgid "error updating link cache: %s"
|
||||
msgstr "ସଂଯୋଗ କ୍ୟାଶେ ଅଦ୍ୟତନ କରିବାରେ ତ୍ରୁଟି: %s"
|
||||
|
||||
#: ../src/NetworkManager.c:330
|
||||
#, c-format
|
||||
msgid "Invalid option. Please use --help to see a list of valid options.\n"
|
||||
msgstr "ଅବୈଧ ବିକଳ୍ପ. ବୈଧ ବିକଳ୍ପର ତାଲିକା ଦେଖିବା ପାଇଁ ଦୟାକରି --ସହାୟତା ବ୍ୟବହାର କରନ୍ତୁ.\n"
|
||||
|
||||
#: ../src/dhcp-manager/nm-dhcp-dhclient.c:304
|
||||
msgid "# Created by NetworkManager\n"
|
||||
msgstr "# NetworkManager ଦ୍ୱାରା ନିର୍ମିତ\n"
|
||||
|
||||
#: ../src/dhcp-manager/nm-dhcp-dhclient.c:310
|
||||
#, c-format
|
||||
msgid ""
|
||||
"# Merged from %s\n"
|
||||
"\n"
|
||||
msgstr ""
|
||||
"# %s ରୁ ମିଶ୍ରିତ\n"
|
||||
"\n"
|
||||
|
||||
#: ../src/ip6-manager/nm-netlink-listener.c:200
|
||||
#, c-format
|
||||
#| msgid "unable to allocate netlink handle for monitoring link status: %s"
|
||||
msgid "unable to allocate netlink handle: %s"
|
||||
msgstr "netlink ନିୟନ୍ତ୍ରଣ ଦର୍ଶାଇବାରେ ଅସମର୍ଥ: %s"
|
||||
|
||||
#: ../src/ip6-manager/nm-netlink-listener.c:210
|
||||
#, c-format
|
||||
#| msgid "unable to connect to netlink for monitoring link status: %s"
|
||||
msgid "unable to connect to netlink: %s"
|
||||
msgstr "netlink ସହିତ ସଂଯୋଗ ହେବାରେ ଅସମର୍ଥ: %s"
|
||||
|
||||
#: ../src/ip6-manager/nm-netlink-listener.c:307
|
||||
#, c-format
|
||||
#| msgid "unable to join netlink group for monitoring link status: %s"
|
||||
msgid "unable to join netlink group: %s"
|
||||
msgstr "netlink ଶ୍ରେଣୀରେ ମିଶିବାରେ ଅସମର୍ଥ: %s"
|
||||
|
||||
#: ../src/named-manager/nm-named-manager.c:315
|
||||
msgid "NOTE: the libc resolver may not support more than 3 nameservers."
|
||||
msgstr "ଟିପ୍ପଣୀ: libc resolver 3 ରୁ ଅଧିକ nameserverଗୁଡ଼ିକୁ ସମର୍ଥନ କରିନପାରେ."
|
||||
|
||||
#: ../src/named-manager/nm-named-manager.c:317
|
||||
msgid "The nameservers listed below may not be recognized."
|
||||
msgstr "ନିମ୍ନରେ ତାଲିକାଭୁକ୍ତ nameserverଗୁଡ଼ିକୁ ଚିହ୍ନି ହୋଇନପାରେ."
|
||||
|
||||
#: ../src/system-settings/nm-default-wired-connection.c:194
|
||||
#, c-format
|
||||
msgid "Auto %s"
|
||||
msgstr "ସ୍ୱୟଂ %s"
|
||||
|
||||
#: ../system-settings/plugins/ifcfg-rh/reader.c:2406
|
||||
msgid "System"
|
||||
msgstr "ତନ୍ତ୍ର"
|
||||
|
||||
#: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:1
|
||||
msgid "Connection sharing via a protected WiFi network"
|
||||
msgstr "ଗୋଟିଏ ସୁରକ୍ଷିତ WiFi ନେଟୱର୍କରେ ସଂଯୋଗ ସହଭାଗ"
|
||||
|
||||
#: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:2
|
||||
msgid "Connection sharing via an open WiFi network"
|
||||
msgstr "ଗୋଟିଏ ଖୋଲା WiFi ନେଟୱର୍କରେ ସଂଯୋଗ ସହଭାଗ"
|
||||
|
||||
#: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:3
|
||||
msgid "Modify persistent system hostname"
|
||||
msgstr "ସ୍ଥାୟୀ ତନ୍ତ୍ର ହୋଷ୍ଟନାମକୁ ପରିବର୍ତ୍ତନ କରନ୍ତୁ"
|
||||
|
||||
#: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:4
|
||||
msgid "Modify system connections"
|
||||
msgstr "ତନ୍ତ୍ର ସଂଯୋଗଗୁଡ଼ିକୁ ପରିବର୍ତ୍ତନ କରନ୍ତୁ"
|
||||
|
||||
#: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:5
|
||||
msgid "System policy prevents modification of system settings"
|
||||
msgstr "ତନ୍ତ୍ର ନିତୀ ତନ୍ତ୍ର ବିନ୍ୟାସ ପରିବର୍ତ୍ତନକୁ ବାରଣ କରିଥାଏ"
|
||||
|
||||
#: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:6
|
||||
msgid "System policy prevents modification of the persistent system hostname"
|
||||
msgstr "ତନ୍ତ୍ର ନିତୀ ସ୍ଥାୟୀ ତନ୍ତ୍ର ହୋଷ୍ଟନାମର ପରିବର୍ତ୍ତନକୁ ବାରଣ କରିଥାଏ"
|
||||
|
||||
#: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:7
|
||||
msgid "System policy prevents sharing connections via a protected WiFi network"
|
||||
msgstr "ତନ୍ତ୍ର ନିତୀ ଗୋଟିଏ ସୁରକ୍ଷିତ WiFi ନେଟୱର୍କରେ ସଂଯୋଗ ସହଭାଗ କରିବାରେ ବାରଣ କରିଥାଏ"
|
||||
|
||||
#: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:8
|
||||
msgid "System policy prevents sharing connections via an open WiFi network"
|
||||
msgstr "ତନ୍ତ୍ର ନିତୀ ଗୋଟିଏ ଖୋଲା WiFi ନେଟୱର୍କରେ ସଂଯୋଗ ସହଭାଗ କରିବାରେ ବାରଣ କରିଥାଏ"
|
||||
|
||||
|
|
|
|||
|
|
@ -94,6 +94,8 @@ NetworkManager_SOURCES = \
|
|||
nm-device-olpc-mesh.h \
|
||||
nm-device-bt.c \
|
||||
nm-device-bt.h \
|
||||
nm-device-modem.h \
|
||||
nm-device-modem.c \
|
||||
nm-device-cdma.c \
|
||||
nm-device-cdma.h \
|
||||
nm-device-gsm.c \
|
||||
|
|
|
|||
|
|
@ -553,6 +553,20 @@ value_hash_add_uint (GHashTable *hash,
|
|||
value_hash_add (hash, key, value);
|
||||
}
|
||||
|
||||
void
|
||||
value_hash_add_bool (GHashTable *hash,
|
||||
const char *key,
|
||||
gboolean val)
|
||||
{
|
||||
GValue *value;
|
||||
|
||||
value = g_slice_new0 (GValue);
|
||||
g_value_init (value, G_TYPE_BOOLEAN);
|
||||
g_value_set_boolean (value, val);
|
||||
|
||||
value_hash_add (hash, key, value);
|
||||
}
|
||||
|
||||
gboolean
|
||||
nm_utils_do_sysctl (const char *path, const char *value)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -67,6 +67,10 @@ void value_hash_add_uint (GHashTable *hash,
|
|||
const char *key,
|
||||
guint32 val);
|
||||
|
||||
void value_hash_add_bool (GHashTable *hash,
|
||||
const char *key,
|
||||
gboolean val);
|
||||
|
||||
gboolean nm_utils_do_sysctl (const char *path, const char *value);
|
||||
|
||||
#endif /* NETWORK_MANAGER_UTILS_H */
|
||||
|
|
|
|||
|
|
@ -54,11 +54,35 @@ G_DEFINE_TYPE (NMDHCPDhclient, nm_dhcp_dhclient, NM_TYPE_DHCP_CLIENT)
|
|||
#define ACTION_SCRIPT_PATH LIBEXECDIR "/nm-dhcp-client.action"
|
||||
|
||||
typedef struct {
|
||||
const char *path;
|
||||
char *conf_file;
|
||||
char *lease_file;
|
||||
char *pid_file;
|
||||
} NMDHCPDhclientPrivate;
|
||||
|
||||
const char *
|
||||
nm_dhcp_dhclient_get_path (const char *try_first)
|
||||
{
|
||||
static const char *dhclient_paths[] = {
|
||||
"/sbin/dhclient",
|
||||
"/usr/sbin/dhclient",
|
||||
"/usr/pkg/sbin/dhclient",
|
||||
"/usr/local/sbin/dhclient",
|
||||
NULL
|
||||
};
|
||||
const char **path = dhclient_paths;
|
||||
|
||||
if (strlen (try_first) && g_file_test (try_first, G_FILE_TEST_EXISTS))
|
||||
return try_first;
|
||||
|
||||
while (*path != NULL) {
|
||||
if (g_file_test (*path, G_FILE_TEST_EXISTS))
|
||||
break;
|
||||
path++;
|
||||
}
|
||||
|
||||
return *path;
|
||||
}
|
||||
|
||||
static char *
|
||||
get_leasefile_for_iface (const char * iface, const char *uuid, gboolean ipv6)
|
||||
|
|
@ -460,7 +484,7 @@ dhclient_start (NMDHCPClient *client,
|
|||
GPid pid = 0;
|
||||
GError *error = NULL;
|
||||
const char *iface, *uuid;
|
||||
char *binary_name;
|
||||
char *binary_name, *cmd_str;
|
||||
gboolean ipv6;
|
||||
|
||||
g_return_val_if_fail (priv->pid_file == NULL, -1);
|
||||
|
|
@ -478,13 +502,13 @@ dhclient_start (NMDHCPClient *client,
|
|||
return -1;
|
||||
}
|
||||
|
||||
if (!g_file_test (DHCLIENT_PATH, G_FILE_TEST_EXISTS)) {
|
||||
nm_warning (DHCLIENT_PATH " does not exist.");
|
||||
if (!g_file_test (priv->path, G_FILE_TEST_EXISTS)) {
|
||||
nm_warning ("%s does not exist.", priv->path);
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Kill any existing dhclient from the pidfile */
|
||||
binary_name = g_path_get_basename (DHCLIENT_PATH);
|
||||
binary_name = g_path_get_basename (priv->path);
|
||||
nm_dhcp_client_stop_existing (priv->pid_file, binary_name);
|
||||
g_free (binary_name);
|
||||
|
||||
|
|
@ -495,7 +519,7 @@ dhclient_start (NMDHCPClient *client,
|
|||
}
|
||||
|
||||
argv = g_ptr_array_new ();
|
||||
g_ptr_array_add (argv, (gpointer) DHCLIENT_PATH);
|
||||
g_ptr_array_add (argv, (gpointer) priv->path);
|
||||
|
||||
g_ptr_array_add (argv, (gpointer) "-d");
|
||||
|
||||
|
|
@ -521,6 +545,10 @@ dhclient_start (NMDHCPClient *client,
|
|||
g_ptr_array_add (argv, (gpointer) iface);
|
||||
g_ptr_array_add (argv, NULL);
|
||||
|
||||
cmd_str = g_strjoinv (" ", (gchar **) argv->pdata);
|
||||
nm_info ("running: %s", cmd_str);
|
||||
g_free (cmd_str);
|
||||
|
||||
if (!g_spawn_async (NULL, (char **) argv->pdata, NULL, G_SPAWN_DO_NOT_REAP_CHILD,
|
||||
&dhclient_child_setup, NULL, &pid, &error)) {
|
||||
nm_warning ("dhclient failed to start. error: '%s'", error->message);
|
||||
|
|
@ -710,6 +738,9 @@ out:
|
|||
static void
|
||||
nm_dhcp_dhclient_init (NMDHCPDhclient *self)
|
||||
{
|
||||
NMDHCPDhclientPrivate *priv = NM_DHCP_DHCLIENT_GET_PRIVATE (self);
|
||||
|
||||
priv->path = nm_dhcp_dhclient_get_path (DHCLIENT_PATH);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
|||
|
|
@ -43,5 +43,7 @@ GType nm_dhcp_dhclient_get_type (void);
|
|||
|
||||
GSList *nm_dhcp_dhclient_get_lease_config (const char *iface, const char *uuid);
|
||||
|
||||
const char *nm_dhcp_dhclient_get_path (const char *try_first);
|
||||
|
||||
#endif /* NM_DHCP_DHCLIENT_H */
|
||||
|
||||
|
|
|
|||
|
|
@ -42,9 +42,33 @@ G_DEFINE_TYPE (NMDHCPDhcpcd, nm_dhcp_dhcpcd, NM_TYPE_DHCP_DHCPCD)
|
|||
#define ACTION_SCRIPT_PATH LIBEXECDIR "/nm-dhcp-client.action"
|
||||
|
||||
typedef struct {
|
||||
const char *path;
|
||||
char *pid_file;
|
||||
} NMDHCPDhcpcdPrivate;
|
||||
|
||||
const char *
|
||||
nm_dhcp_dhcpcd_get_path (const char *try_first)
|
||||
{
|
||||
static const char *dhcpcd_paths[] = {
|
||||
"/sbin/dhcpcd",
|
||||
"/usr/sbin/dhcpcd",
|
||||
"/usr/pkg/sbin/dhcpcd",
|
||||
"/usr/local/sbin/dhcpcd",
|
||||
NULL
|
||||
};
|
||||
const char **path = dhcpcd_paths;
|
||||
|
||||
if (strlen (try_first) && g_file_test (try_first, G_FILE_TEST_EXISTS))
|
||||
return try_first;
|
||||
|
||||
while (*path != NULL) {
|
||||
if (g_file_test (*path, G_FILE_TEST_EXISTS))
|
||||
break;
|
||||
path++;
|
||||
}
|
||||
|
||||
return *path;
|
||||
}
|
||||
|
||||
GSList *
|
||||
nm_dhcp_dhcpcd_get_lease_config (const char *iface, const char *uuid)
|
||||
|
|
@ -69,8 +93,8 @@ real_ip4_start (NMDHCPClient *client,
|
|||
GPtrArray *argv = NULL;
|
||||
GPid pid = 0;
|
||||
GError *error = NULL;
|
||||
char *pid_contents = NULL, *binary_name;
|
||||
const char *iface, *uuid;
|
||||
char *pid_contents = NULL, *binary_name, *cmd_str;
|
||||
const char *iface, *uuid, *hostname;
|
||||
|
||||
g_return_val_if_fail (priv->pid_file == NULL, -1);
|
||||
|
||||
|
|
@ -83,18 +107,18 @@ real_ip4_start (NMDHCPClient *client,
|
|||
return -1;
|
||||
}
|
||||
|
||||
if (!g_file_test (DHCPCD_PATH, G_FILE_TEST_EXISTS)) {
|
||||
nm_warning (DHCPCD_PATH " does not exist.");
|
||||
if (!g_file_test (priv->path, G_FILE_TEST_EXISTS)) {
|
||||
nm_warning ("%s does not exist.", priv->path);
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Kill any existing dhclient from the pidfile */
|
||||
binary_name = g_path_get_basename (DHCPCD_PATH);
|
||||
/* Kill any existing dhcpcd from the pidfile */
|
||||
binary_name = g_path_get_basename (priv->path);
|
||||
nm_dhcp_client_stop_existing (priv->pid_file, binary_name);
|
||||
g_free (binary_name);
|
||||
|
||||
argv = g_ptr_array_new ();
|
||||
g_ptr_array_add (argv, (gpointer) DHCPCD_PATH);
|
||||
g_ptr_array_add (argv, (gpointer) priv->path);
|
||||
|
||||
g_ptr_array_add (argv, (gpointer) "-B"); /* Don't background on lease (disable fork()) */
|
||||
|
||||
|
|
@ -105,9 +129,19 @@ real_ip4_start (NMDHCPClient *client,
|
|||
g_ptr_array_add (argv, (gpointer) "-c"); /* Set script file */
|
||||
g_ptr_array_add (argv, (gpointer) ACTION_SCRIPT_PATH );
|
||||
|
||||
hostname = nm_setting_ip4_config_get_dhcp_hostname (s_ip4);
|
||||
if (hostname && strlen (hostname)) {
|
||||
g_ptr_array_add (argv, (gpointer) "-h"); /* Send hostname to DHCP server */
|
||||
g_ptr_array_add (argv, (gpointer) hostname );
|
||||
}
|
||||
|
||||
g_ptr_array_add (argv, (gpointer) iface);
|
||||
g_ptr_array_add (argv, NULL);
|
||||
|
||||
cmd_str = g_strjoinv (" ", (gchar **) argv->pdata);
|
||||
nm_info ("running: %s", cmd_str);
|
||||
g_free (cmd_str);
|
||||
|
||||
if (!g_spawn_async (NULL, (char **) argv->pdata, NULL, G_SPAWN_DO_NOT_REAP_CHILD,
|
||||
&dhcpcd_child_setup, NULL, &pid, &error)) {
|
||||
nm_warning ("dhcpcd failed to start. error: '%s'", error->message);
|
||||
|
|
@ -224,6 +258,9 @@ out:
|
|||
static void
|
||||
nm_dhcp_dhcpcd_init (NMDHCPDhcpcd *self)
|
||||
{
|
||||
NMDHCPDhcpcdPrivate *priv = NM_DHCP_DHCPCD_GET_PRIVATE (self);
|
||||
|
||||
priv->path = nm_dhcp_dhcpcd_get_path (DHCPCD_PATH);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
|||
|
|
@ -43,5 +43,7 @@ GType nm_dhcp_dhcpcd_get_type (void);
|
|||
|
||||
GSList *nm_dhcp_dhcpcd_get_lease_config (const char *iface, const char *uuid);
|
||||
|
||||
const char *nm_dhcp_dhcpcd_get_path (const char *try_first);
|
||||
|
||||
#endif /* NM_DHCP_DHCPCD_H */
|
||||
|
||||
|
|
|
|||
|
|
@ -44,6 +44,35 @@
|
|||
#include "nm-dbus-glib-types.h"
|
||||
#include "nm-glib-compat.h"
|
||||
|
||||
#define ENUM_ENTRY(NAME, DESC) { NAME, "" #NAME "", DESC }
|
||||
|
||||
GQuark
|
||||
nm_dhcp_manager_error_quark (void)
|
||||
{
|
||||
static GQuark ret = 0;
|
||||
|
||||
if (ret == 0)
|
||||
ret = g_quark_from_static_string ("nm_dhcp_manager_error");
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
GType
|
||||
nm_dhcp_manager_error_get_type (void)
|
||||
{
|
||||
static GType etype = 0;
|
||||
|
||||
if (etype == 0) {
|
||||
static const GEnumValue values[] = {
|
||||
ENUM_ENTRY (NM_DHCP_MANAGER_ERROR_BAD_CLIENT, "BadClient"),
|
||||
ENUM_ENTRY (NM_DHCP_MANAGER_ERROR_INTERNAL, "InternalError"),
|
||||
{ 0, 0, 0 }
|
||||
};
|
||||
etype = g_enum_register_static ("NMDhcpManagerError", values);
|
||||
}
|
||||
return etype;
|
||||
}
|
||||
|
||||
#define NM_DHCP_CLIENT_DBUS_SERVICE "org.freedesktop.nm_dhcp_client"
|
||||
#define NM_DHCP_CLIENT_DBUS_IFACE "org.freedesktop.nm_dhcp_client"
|
||||
|
||||
|
|
@ -233,15 +262,48 @@ out:
|
|||
static GType
|
||||
get_client_type (const char *client, GError **error)
|
||||
{
|
||||
g_return_val_if_fail (client != NULL, 0);
|
||||
const char *dhclient_path = NULL;
|
||||
const char *dhcpcd_path = NULL;
|
||||
|
||||
if (!strcmp (client, "dhclient") && strlen (DHCLIENT_PATH))
|
||||
dhclient_path = nm_dhcp_dhclient_get_path (DHCLIENT_PATH);
|
||||
dhcpcd_path = nm_dhcp_dhcpcd_get_path (DHCPCD_PATH);
|
||||
|
||||
if (!client) {
|
||||
if (dhclient_path)
|
||||
return NM_TYPE_DHCP_DHCLIENT;
|
||||
else if (dhcpcd_path)
|
||||
return NM_TYPE_DHCP_DHCPCD;
|
||||
else {
|
||||
g_set_error_literal (error,
|
||||
NM_DHCP_MANAGER_ERROR, NM_DHCP_MANAGER_ERROR_BAD_CLIENT,
|
||||
_("no usable DHCP client could be found."));
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (!strcmp (client, "dhclient")) {
|
||||
if (!dhclient_path) {
|
||||
g_set_error_literal (error,
|
||||
NM_DHCP_MANAGER_ERROR, NM_DHCP_MANAGER_ERROR_BAD_CLIENT,
|
||||
_("'dhclient' could be found."));
|
||||
return 0;
|
||||
}
|
||||
return NM_TYPE_DHCP_DHCLIENT;
|
||||
else if (!strcmp (client, "dhcpcd") && strlen (DHCPCD_PATH))
|
||||
return NM_TYPE_DHCP_DHCPCD;
|
||||
else
|
||||
g_set_error (error, 0, 0, "unknown or missing DHCP client '%s'", client);
|
||||
}
|
||||
|
||||
if (!strcmp (client, "dhcpcd")) {
|
||||
if (!dhcpcd_path) {
|
||||
g_set_error_literal (error,
|
||||
NM_DHCP_MANAGER_ERROR, NM_DHCP_MANAGER_ERROR_BAD_CLIENT,
|
||||
_("'dhcpcd' could be found."));
|
||||
return 0;
|
||||
}
|
||||
return NM_TYPE_DHCP_DHCPCD;
|
||||
}
|
||||
|
||||
g_set_error (error,
|
||||
NM_DHCP_MANAGER_ERROR, NM_DHCP_MANAGER_ERROR_BAD_CLIENT,
|
||||
_("unsupported DHCP client '%s'"), client);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -250,32 +312,19 @@ nm_dhcp_manager_new (const char *client, GError **error)
|
|||
{
|
||||
NMDHCPManagerPrivate *priv;
|
||||
DBusGConnection *g_connection;
|
||||
GType client_type;
|
||||
|
||||
/* Set some defaults based on build-time options */
|
||||
if (!client) {
|
||||
if (strlen (DHCLIENT_PATH) && g_file_test (DHCLIENT_PATH, G_FILE_TEST_EXISTS))
|
||||
client = "dhclient";
|
||||
else if (strlen (DHCPCD_PATH) && g_file_test (DHCPCD_PATH, G_FILE_TEST_EXISTS))
|
||||
client = "dhcpcd";
|
||||
else {
|
||||
g_set_error_literal (error, 0, 0,
|
||||
"no suitable DHCP client; see 'man NetworkManager'"
|
||||
" to specify one.");
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
client_type = get_client_type (client, error);
|
||||
if (!client_type)
|
||||
return NULL;
|
||||
|
||||
g_warn_if_fail (singleton == NULL);
|
||||
g_return_val_if_fail (client != NULL, NULL);
|
||||
|
||||
singleton = g_object_new (NM_TYPE_DHCP_MANAGER, NULL);
|
||||
priv = NM_DHCP_MANAGER_GET_PRIVATE (singleton);
|
||||
|
||||
/* Figure out which DHCP client to use */
|
||||
priv->client_type = get_client_type (client, error);
|
||||
if (!priv->client_type)
|
||||
goto error;
|
||||
|
||||
/* Client-specific setup */
|
||||
priv->client_type = client_type;
|
||||
if (priv->client_type == NM_TYPE_DHCP_DHCLIENT)
|
||||
priv->get_lease_config_func = nm_dhcp_dhclient_get_lease_config;
|
||||
else if (priv->client_type == NM_TYPE_DHCP_DHCPCD)
|
||||
|
|
@ -286,10 +335,7 @@ nm_dhcp_manager_new (const char *client, GError **error)
|
|||
priv->clients = g_hash_table_new_full (g_direct_hash, g_direct_equal,
|
||||
NULL,
|
||||
(GDestroyNotify) g_object_unref);
|
||||
if (!priv->clients) {
|
||||
g_set_error_literal (error, 0, 0, "not enough memory to initialize DHCP manager");
|
||||
goto error;
|
||||
}
|
||||
g_assert (priv->clients);
|
||||
|
||||
priv->dbus_mgr = nm_dbus_manager_get ();
|
||||
g_connection = nm_dbus_manager_get_connection (priv->dbus_mgr);
|
||||
|
|
@ -297,10 +343,7 @@ nm_dhcp_manager_new (const char *client, GError **error)
|
|||
NM_DHCP_CLIENT_DBUS_SERVICE,
|
||||
"/",
|
||||
NM_DHCP_CLIENT_DBUS_IFACE);
|
||||
if (!priv->proxy) {
|
||||
g_set_error_literal (error, 0, 0, "not enough memory to initialize DHCP manager proxy");
|
||||
goto error;
|
||||
}
|
||||
g_assert (priv->proxy);
|
||||
|
||||
dbus_g_proxy_add_signal (priv->proxy,
|
||||
"Event",
|
||||
|
|
@ -313,11 +356,6 @@ nm_dhcp_manager_new (const char *client, GError **error)
|
|||
NULL);
|
||||
|
||||
return singleton;
|
||||
|
||||
error:
|
||||
g_object_unref (singleton);
|
||||
singleton = NULL;
|
||||
return singleton;
|
||||
}
|
||||
|
||||
#define STATE_ID_TAG "state-id"
|
||||
|
|
|
|||
|
|
@ -33,6 +33,18 @@
|
|||
#include "nm-dhcp4-config.h"
|
||||
#include "nm-hostname-provider.h"
|
||||
|
||||
enum {
|
||||
NM_DHCP_MANAGER_ERROR_BAD_CLIENT = 0,
|
||||
NM_DHCP_MANAGER_ERROR_INTERNAL = 1,
|
||||
};
|
||||
|
||||
#define NM_DHCP_MANAGER_ERROR (nm_dhcp_manager_error_quark ())
|
||||
#define NN_TYPE_DHCP_MANAGER_ERROR (nm_dhcp_manager_error_get_type ())
|
||||
|
||||
GQuark nm_dhcp_manager_error_quark (void);
|
||||
GType nm_dhcp_manager_error_get_type (void);
|
||||
|
||||
|
||||
#define NM_TYPE_DHCP_MANAGER (nm_dhcp_manager_get_type ())
|
||||
#define NM_DHCP_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), NM_TYPE_DHCP_MANAGER, NMDHCPManager))
|
||||
#define NM_DHCP_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), NM_TYPE_DHCP_MANAGER, NMDHCPManagerClass))
|
||||
|
|
|
|||
|
|
@ -556,9 +556,9 @@ main (int argc, char *argv[])
|
|||
state_file,
|
||||
error ? error->code : -1,
|
||||
(error && error->message) ? error->message : "unknown");
|
||||
g_clear_error (&error);
|
||||
/* Not a hard failure */
|
||||
}
|
||||
g_clear_error (&error);
|
||||
|
||||
/* Tricky: become_daemon is FALSE by default, so unless it's TRUE because
|
||||
* of a CLI option, it'll become TRUE after this
|
||||
|
|
|
|||
|
|
@ -30,21 +30,30 @@
|
|||
#include "NetworkManagerUtils.h"
|
||||
|
||||
typedef enum {
|
||||
MM_MODEM_GSM_MODE_UNKNOWN = 0x00000000,
|
||||
MM_MODEM_GSM_MODE_ANY = 0x00000001,
|
||||
MM_MODEM_GSM_MODE_GPRS = 0x00000002,
|
||||
MM_MODEM_GSM_MODE_EDGE = 0x00000004,
|
||||
MM_MODEM_GSM_MODE_UMTS = 0x00000008,
|
||||
MM_MODEM_GSM_MODE_HSDPA = 0x00000010,
|
||||
MM_MODEM_GSM_MODE_2G_PREFERRED = 0x00000020,
|
||||
MM_MODEM_GSM_MODE_3G_PREFERRED = 0x00000040,
|
||||
MM_MODEM_GSM_MODE_2G_ONLY = 0x00000080,
|
||||
MM_MODEM_GSM_MODE_3G_ONLY = 0x00000100,
|
||||
MM_MODEM_GSM_MODE_HSUPA = 0x00000200,
|
||||
MM_MODEM_GSM_MODE_HSPA = 0x00000400,
|
||||
MM_MODEM_GSM_NETWORK_DEPRECATED_MODE_ANY = 0,
|
||||
MM_MODEM_GSM_NETWORK_DEPRECATED_MODE_GPRS,
|
||||
MM_MODEM_GSM_NETWORK_DEPRECATED_MODE_EDGE,
|
||||
MM_MODEM_GSM_NETWORK_DEPRECATED_MODE_UMTS,
|
||||
MM_MODEM_GSM_NETWORK_DEPRECATED_MODE_HSDPA,
|
||||
MM_MODEM_GSM_NETWORK_DEPRECATED_MODE_2G_PREFERRED,
|
||||
MM_MODEM_GSM_NETWORK_DEPRECATED_MODE_3G_PREFERRED,
|
||||
MM_MODEM_GSM_NETWORK_DEPRECATED_MODE_2G_ONLY,
|
||||
MM_MODEM_GSM_NETWORK_DEPRECATED_MODE_3G_ONLY,
|
||||
MM_MODEM_GSM_NETWORK_DEPRECATED_MODE_HSUPA,
|
||||
MM_MODEM_GSM_NETWORK_DEPRECATED_MODE_HSPA,
|
||||
|
||||
MM_MODEM_GSM_MODE_LAST = MM_MODEM_GSM_MODE_HSPA
|
||||
} MMModemGsmMode;
|
||||
MM_MODEM_GSM_NETWORK_DEPRECATED_MODE_LAST = MM_MODEM_GSM_NETWORK_DEPRECATED_MODE_HSPA
|
||||
} MMModemDeprecatedMode;
|
||||
|
||||
typedef enum {
|
||||
MM_MODEM_GSM_ALLOWED_MODE_ANY = 0,
|
||||
MM_MODEM_GSM_ALLOWED_MODE_2G_PREFERRED = 1,
|
||||
MM_MODEM_GSM_ALLOWED_MODE_3G_PREFERRED = 2,
|
||||
MM_MODEM_GSM_ALLOWED_MODE_2G_ONLY = 3,
|
||||
MM_MODEM_GSM_ALLOWED_MODE_3G_ONLY = 4,
|
||||
|
||||
MM_MODEM_GSM_ALLOWED_MODE_LAST = MM_MODEM_GSM_ALLOWED_MODE_3G_ONLY
|
||||
} MMModemGsmAllowedMode;
|
||||
|
||||
|
||||
G_DEFINE_TYPE (NMModemGsm, nm_modem_gsm, NM_TYPE_MODEM)
|
||||
|
|
@ -342,25 +351,34 @@ create_connect_properties (NMConnection *connection)
|
|||
if (str)
|
||||
value_hash_add_str (properties, "password", str);
|
||||
|
||||
/* Add both old and new preferred modes */
|
||||
switch (nm_setting_gsm_get_network_type (setting)) {
|
||||
case NM_SETTING_GSM_NETWORK_TYPE_UMTS_HSPA:
|
||||
value_hash_add_uint (properties, "network_mode", MM_MODEM_GSM_MODE_3G_ONLY);
|
||||
value_hash_add_uint (properties, "network_mode", MM_MODEM_GSM_NETWORK_DEPRECATED_MODE_3G_ONLY);
|
||||
value_hash_add_uint (properties, "allowed_mode", MM_MODEM_GSM_ALLOWED_MODE_3G_ONLY);
|
||||
break;
|
||||
case NM_SETTING_GSM_NETWORK_TYPE_GPRS_EDGE:
|
||||
value_hash_add_uint (properties, "network_mode", MM_MODEM_GSM_MODE_2G_ONLY);
|
||||
value_hash_add_uint (properties, "network_mode", MM_MODEM_GSM_NETWORK_DEPRECATED_MODE_2G_ONLY);
|
||||
value_hash_add_uint (properties, "allowed_mode", MM_MODEM_GSM_ALLOWED_MODE_2G_ONLY);
|
||||
break;
|
||||
case NM_SETTING_GSM_NETWORK_TYPE_PREFER_UMTS_HSPA:
|
||||
value_hash_add_uint (properties, "network_mode", MM_MODEM_GSM_MODE_3G_PREFERRED);
|
||||
value_hash_add_uint (properties, "network_mode", MM_MODEM_GSM_NETWORK_DEPRECATED_MODE_3G_PREFERRED);
|
||||
value_hash_add_uint (properties, "allowed_mode", MM_MODEM_GSM_ALLOWED_MODE_3G_PREFERRED);
|
||||
break;
|
||||
case NM_SETTING_GSM_NETWORK_TYPE_PREFER_GPRS_EDGE:
|
||||
value_hash_add_uint (properties, "network_mode", MM_MODEM_GSM_MODE_2G_PREFERRED);
|
||||
value_hash_add_uint (properties, "network_mode", MM_MODEM_GSM_NETWORK_DEPRECATED_MODE_2G_PREFERRED);
|
||||
value_hash_add_uint (properties, "allowed_mode", MM_MODEM_GSM_ALLOWED_MODE_2G_PREFERRED);
|
||||
break;
|
||||
default:
|
||||
value_hash_add_uint (properties, "network_mode", MM_MODEM_GSM_MODE_ANY);
|
||||
value_hash_add_uint (properties, "network_mode", MM_MODEM_GSM_NETWORK_DEPRECATED_MODE_ANY);
|
||||
value_hash_add_uint (properties, "allowed_mode", MM_MODEM_GSM_ALLOWED_MODE_ANY);
|
||||
break;
|
||||
}
|
||||
|
||||
/* FIXME: band */
|
||||
/* Roaming */
|
||||
if (nm_setting_gsm_get_home_only (setting))
|
||||
value_hash_add_bool (properties, "home_only", TRUE);
|
||||
|
||||
return properties;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -51,6 +51,9 @@ typedef struct {
|
|||
char *name;
|
||||
guint32 capabilities;
|
||||
|
||||
gboolean connected;
|
||||
gboolean have_iface;
|
||||
|
||||
DBusGProxy *type_proxy;
|
||||
DBusGProxy *dev_proxy;
|
||||
|
||||
|
|
@ -535,6 +538,51 @@ nm_device_bt_modem_removed (NMDeviceBt *self, NMModem *modem)
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
modem_find_timeout (gpointer user_data)
|
||||
{
|
||||
NMDeviceBt *self = NM_DEVICE_BT (user_data);
|
||||
|
||||
NM_DEVICE_BT_GET_PRIVATE (self)->timeout_id = 0;
|
||||
nm_device_state_changed (NM_DEVICE (self),
|
||||
NM_DEVICE_STATE_FAILED,
|
||||
NM_DEVICE_STATE_REASON_MODEM_NOT_FOUND);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
check_connect_continue (NMDeviceBt *self)
|
||||
{
|
||||
NMDevice *device = NM_DEVICE (self);
|
||||
NMDeviceBtPrivate *priv = NM_DEVICE_BT_GET_PRIVATE (self);
|
||||
gboolean pan = (priv->bt_type == NM_BT_CAPABILITY_NAP);
|
||||
gboolean dun = (priv->bt_type == NM_BT_CAPABILITY_DUN);
|
||||
|
||||
if (!priv->connected || !priv->have_iface)
|
||||
return;
|
||||
|
||||
nm_info ("Activation (%s %s/bluetooth) Stage 2 of 5 (Device Configure) "
|
||||
"successful. Will connect via %s.",
|
||||
nm_device_get_iface (device),
|
||||
nm_device_get_ip_iface (device),
|
||||
dun ? "DUN" : (pan ? "PAN" : "unknown"));
|
||||
|
||||
if (pan) {
|
||||
/* Bluez says we're connected now. Start IP config. */
|
||||
nm_device_activate_schedule_stage3_ip_config_start (device);
|
||||
} else if (dun) {
|
||||
/* Wait for ModemManager to find the modem */
|
||||
if (priv->timeout_id)
|
||||
g_source_remove (priv->timeout_id);
|
||||
priv->timeout_id = g_timeout_add_seconds (20, modem_find_timeout, self);
|
||||
|
||||
nm_info ("Activation (%s/bluetooth) Stage 2 of 5 (Device Configure) "
|
||||
"waiting for modem to appear.",
|
||||
nm_device_get_iface (device));
|
||||
} else
|
||||
g_assert_not_reached ();
|
||||
}
|
||||
|
||||
static void
|
||||
bluez_connect_cb (DBusGProxy *proxy,
|
||||
DBusGProxyCall *call_id,
|
||||
|
|
@ -552,16 +600,18 @@ bluez_connect_cb (DBusGProxy *proxy,
|
|||
error && error->message ? error->message : "(unknown)");
|
||||
g_clear_error (&error);
|
||||
|
||||
// FIXME: get a better reason code
|
||||
nm_device_state_changed (NM_DEVICE (self), NM_DEVICE_STATE_FAILED, NM_DEVICE_STATE_REASON_NONE);
|
||||
nm_device_state_changed (NM_DEVICE (self),
|
||||
NM_DEVICE_STATE_FAILED,
|
||||
NM_DEVICE_STATE_REASON_BT_FAILED);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!device || !strlen (device)) {
|
||||
nm_warning ("Invalid network device returned by bluez");
|
||||
|
||||
// FIXME: get a better reason code
|
||||
nm_device_state_changed (NM_DEVICE (self), NM_DEVICE_STATE_FAILED, NM_DEVICE_STATE_REASON_NONE);
|
||||
nm_device_state_changed (NM_DEVICE (self),
|
||||
NM_DEVICE_STATE_FAILED,
|
||||
NM_DEVICE_STATE_REASON_BT_FAILED);
|
||||
}
|
||||
|
||||
if (priv->bt_type == NM_BT_CAPABILITY_DUN) {
|
||||
|
|
@ -573,20 +623,8 @@ bluez_connect_cb (DBusGProxy *proxy,
|
|||
}
|
||||
|
||||
/* Stage 3 gets scheduled when Bluez says we're connected */
|
||||
}
|
||||
|
||||
static gboolean
|
||||
modem_find_timeout (gpointer user_data)
|
||||
{
|
||||
NMDeviceBt *self = NM_DEVICE_BT (user_data);
|
||||
NMDeviceBtPrivate *priv = NM_DEVICE_BT_GET_PRIVATE (self);
|
||||
|
||||
priv->timeout_id = 0;
|
||||
|
||||
nm_device_state_changed (NM_DEVICE (user_data),
|
||||
NM_DEVICE_STATE_FAILED,
|
||||
NM_DEVICE_STATE_REASON_MODEM_NOT_FOUND);
|
||||
return FALSE;
|
||||
priv->have_iface = TRUE;
|
||||
check_connect_continue (self);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
@ -608,28 +646,8 @@ bluez_property_changed (DBusGProxy *proxy,
|
|||
connected = g_value_get_boolean (value);
|
||||
if (connected) {
|
||||
if (state == NM_DEVICE_STATE_CONFIG) {
|
||||
gboolean pan = (priv->bt_type == NM_BT_CAPABILITY_NAP);
|
||||
gboolean dun = (priv->bt_type == NM_BT_CAPABILITY_DUN);
|
||||
|
||||
nm_info ("Activation (%s/bluetooth) Stage 2 of 5 (Device Configure) "
|
||||
"successful. Will connect via %s.",
|
||||
nm_device_get_iface (device),
|
||||
dun ? "DUN" : (pan ? "PAN" : "unknown"));
|
||||
|
||||
if (pan) {
|
||||
/* Bluez says we're connected now. Start IP config. */
|
||||
nm_device_activate_schedule_stage3_ip_config_start (device);
|
||||
} else if (dun) {
|
||||
/* Wait for ModemManager to find the modem */
|
||||
if (priv->timeout_id)
|
||||
g_source_remove (priv->timeout_id);
|
||||
priv->timeout_id = g_timeout_add_seconds (20, modem_find_timeout, self);
|
||||
|
||||
nm_info ("Activation (%s/bluetooth) Stage 2 of 5 (Device Configure) "
|
||||
"waiting for modem to appear.",
|
||||
nm_device_get_iface (device));
|
||||
} else
|
||||
g_assert_not_reached ();
|
||||
priv->connected = TRUE;
|
||||
check_connect_continue (self);
|
||||
}
|
||||
} else {
|
||||
gboolean fail = FALSE;
|
||||
|
|
@ -645,11 +663,25 @@ bluez_property_changed (DBusGProxy *proxy,
|
|||
fail = TRUE;
|
||||
}
|
||||
|
||||
if (fail)
|
||||
if (fail) {
|
||||
nm_device_state_changed (device, NM_DEVICE_STATE_FAILED, NM_DEVICE_STATE_REASON_CARRIER);
|
||||
priv->connected = FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static gboolean
|
||||
bt_connect_timeout (gpointer user_data)
|
||||
{
|
||||
NMDeviceBt *self = NM_DEVICE_BT (user_data);
|
||||
|
||||
NM_DEVICE_BT_GET_PRIVATE (self)->timeout_id = 0;
|
||||
nm_device_state_changed (NM_DEVICE (self),
|
||||
NM_DEVICE_STATE_FAILED,
|
||||
NM_DEVICE_STATE_REASON_BT_FAILED);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static NMActStageReturn
|
||||
real_act_stage2_config (NMDevice *device, NMDeviceStateReason *reason)
|
||||
{
|
||||
|
|
@ -716,6 +748,10 @@ real_act_stage2_config (NMDevice *device, NMDeviceStateReason *reason)
|
|||
G_TYPE_STRING, dun ? BLUETOOTH_DUN_UUID : BLUETOOTH_NAP_UUID,
|
||||
G_TYPE_INVALID);
|
||||
|
||||
if (priv->timeout_id)
|
||||
g_source_remove (priv->timeout_id);
|
||||
priv->timeout_id = g_timeout_add_seconds (30, bt_connect_timeout, device);
|
||||
|
||||
return NM_ACT_STAGE_RETURN_POSTPONE;
|
||||
}
|
||||
|
||||
|
|
@ -761,6 +797,9 @@ real_deactivate_quickly (NMDevice *device)
|
|||
{
|
||||
NMDeviceBtPrivate *priv = NM_DEVICE_BT_GET_PRIVATE (device);
|
||||
|
||||
priv->have_iface = FALSE;
|
||||
priv->connected = FALSE;
|
||||
|
||||
if (priv->bt_type == NM_BT_CAPABILITY_DUN) {
|
||||
|
||||
if (priv->modem) {
|
||||
|
|
|
|||
|
|
@ -20,332 +20,38 @@
|
|||
|
||||
#include <string.h>
|
||||
|
||||
#include "nm-dbus-glib-types.h"
|
||||
#include "nm-modem.h"
|
||||
#include "nm-modem-cdma.h"
|
||||
#include "nm-device-interface.h"
|
||||
#include "nm-device-private.h"
|
||||
#include "nm-device-cdma.h"
|
||||
#include "nm-utils.h"
|
||||
#include "NetworkManagerUtils.h"
|
||||
#include "nm-marshal.h"
|
||||
#include "nm-properties-changed-signal.h"
|
||||
#include "nm-rfkill.h"
|
||||
|
||||
#include "nm-device-cdma-glue.h"
|
||||
|
||||
static void device_interface_init (NMDeviceInterface *iface_class);
|
||||
|
||||
G_DEFINE_TYPE_EXTENDED (NMDeviceCdma, nm_device_cdma, NM_TYPE_DEVICE, 0,
|
||||
G_IMPLEMENT_INTERFACE (NM_TYPE_DEVICE_INTERFACE, device_interface_init))
|
||||
|
||||
#define NM_DEVICE_CDMA_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_DEVICE_CDMA, NMDeviceCdmaPrivate))
|
||||
|
||||
typedef struct {
|
||||
NMModem *modem;
|
||||
} NMDeviceCdmaPrivate;
|
||||
G_DEFINE_TYPE (NMDeviceCdma, nm_device_cdma, NM_TYPE_DEVICE_MODEM)
|
||||
|
||||
enum {
|
||||
PPP_STATS,
|
||||
PROPERTIES_CHANGED,
|
||||
|
||||
LAST_SIGNAL
|
||||
};
|
||||
|
||||
static guint signals[LAST_SIGNAL] = { 0 };
|
||||
|
||||
static void
|
||||
ppp_stats (NMModem *modem,
|
||||
guint32 in_bytes,
|
||||
guint32 out_bytes,
|
||||
gpointer user_data)
|
||||
{
|
||||
g_signal_emit (NM_DEVICE_CDMA (user_data), signals[PPP_STATS], 0, in_bytes, out_bytes);
|
||||
}
|
||||
|
||||
static void
|
||||
ppp_failed (NMModem *modem, NMDeviceStateReason reason, gpointer user_data)
|
||||
{
|
||||
NMDevice *device = NM_DEVICE (user_data);
|
||||
|
||||
switch (nm_device_interface_get_state (NM_DEVICE_INTERFACE (device))) {
|
||||
case NM_DEVICE_STATE_PREPARE:
|
||||
case NM_DEVICE_STATE_CONFIG:
|
||||
case NM_DEVICE_STATE_NEED_AUTH:
|
||||
case NM_DEVICE_STATE_IP_CONFIG:
|
||||
case NM_DEVICE_STATE_ACTIVATED:
|
||||
nm_device_state_changed (device, NM_DEVICE_STATE_FAILED, reason);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
device_state_changed (NMDevice *device,
|
||||
NMDeviceState new_state,
|
||||
NMDeviceState old_state,
|
||||
NMDeviceStateReason reason,
|
||||
gpointer user_data)
|
||||
{
|
||||
NMDeviceCdmaPrivate *priv = NM_DEVICE_CDMA_GET_PRIVATE (device);
|
||||
|
||||
nm_modem_device_state_changed (priv->modem, new_state, old_state, reason);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
real_hw_is_up (NMDevice *device)
|
||||
{
|
||||
return nm_modem_hw_is_up (NM_DEVICE_CDMA_GET_PRIVATE (device)->modem, device);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
real_hw_bring_up (NMDevice *device, gboolean *no_firmware)
|
||||
{
|
||||
return nm_modem_hw_bring_up (NM_DEVICE_CDMA_GET_PRIVATE (device)->modem, device, no_firmware);
|
||||
}
|
||||
|
||||
static NMConnection *
|
||||
real_get_best_auto_connection (NMDevice *device,
|
||||
GSList *connections,
|
||||
char **specific_object)
|
||||
{
|
||||
NMDeviceCdmaPrivate *priv = NM_DEVICE_CDMA_GET_PRIVATE (device);
|
||||
|
||||
return nm_modem_get_best_auto_connection (priv->modem, connections, specific_object);
|
||||
}
|
||||
|
||||
static void
|
||||
real_connection_secrets_updated (NMDevice *device,
|
||||
NMConnection *connection,
|
||||
GSList *updated_settings,
|
||||
RequestSecretsCaller caller)
|
||||
{
|
||||
NMDeviceCdmaPrivate *priv = NM_DEVICE_CDMA_GET_PRIVATE (device);
|
||||
NMActRequest *req;
|
||||
|
||||
g_return_if_fail (IS_ACTIVATING_STATE (nm_device_get_state (device)));
|
||||
|
||||
req = nm_device_get_act_request (device);
|
||||
g_assert (req);
|
||||
|
||||
if (!nm_modem_connection_secrets_updated (priv->modem,
|
||||
req,
|
||||
connection,
|
||||
updated_settings,
|
||||
caller)) {
|
||||
nm_device_state_changed (device, NM_DEVICE_STATE_FAILED, NM_DEVICE_STATE_REASON_NO_SECRETS);
|
||||
return;
|
||||
}
|
||||
|
||||
/* PPP handles stuff itself... */
|
||||
if (caller == SECRETS_CALLER_PPP)
|
||||
return;
|
||||
|
||||
/* Otherwise, on success for CDMA secrets we need to schedule stage1 again */
|
||||
g_return_if_fail (nm_device_get_state (device) == NM_DEVICE_STATE_NEED_AUTH);
|
||||
nm_device_activate_schedule_stage1_device_prepare (device);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
real_check_connection_compatible (NMDevice *device,
|
||||
NMConnection *connection,
|
||||
GError **error)
|
||||
{
|
||||
NMDeviceCdmaPrivate *priv = NM_DEVICE_CDMA_GET_PRIVATE (device);
|
||||
|
||||
return nm_modem_check_connection_compatible (priv->modem, connection, error);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
modem_need_auth (NMModem *modem,
|
||||
const char *setting_name,
|
||||
gboolean retry,
|
||||
RequestSecretsCaller caller,
|
||||
const char *hint1,
|
||||
const char *hint2,
|
||||
gpointer user_data)
|
||||
{
|
||||
NMDeviceCdma *self = NM_DEVICE_CDMA (user_data);
|
||||
NMActRequest *req;
|
||||
|
||||
req = nm_device_get_act_request (NM_DEVICE (self));
|
||||
g_assert (req);
|
||||
|
||||
nm_device_state_changed (NM_DEVICE (self), NM_DEVICE_STATE_NEED_AUTH, NM_DEVICE_STATE_REASON_NONE);
|
||||
nm_act_request_get_secrets (req, setting_name, retry, caller, hint1, hint2);
|
||||
}
|
||||
|
||||
static void
|
||||
modem_prepare_result (NMModem *modem,
|
||||
gboolean success,
|
||||
NMDeviceStateReason reason,
|
||||
gpointer user_data)
|
||||
{
|
||||
NMDevice *device = NM_DEVICE (user_data);
|
||||
NMDeviceState state;
|
||||
|
||||
state = nm_device_interface_get_state (NM_DEVICE_INTERFACE (device));
|
||||
g_return_if_fail (state == NM_DEVICE_STATE_PREPARE);
|
||||
|
||||
if (success)
|
||||
nm_device_activate_schedule_stage2_device_config (device);
|
||||
else
|
||||
nm_device_state_changed (device, NM_DEVICE_STATE_FAILED, reason);
|
||||
}
|
||||
|
||||
static NMActStageReturn
|
||||
real_act_stage1_prepare (NMDevice *device, NMDeviceStateReason *reason)
|
||||
{
|
||||
NMActRequest *req;
|
||||
|
||||
req = nm_device_get_act_request (device);
|
||||
g_assert (req);
|
||||
|
||||
return nm_modem_act_stage1_prepare (NM_DEVICE_CDMA_GET_PRIVATE (device)->modem, req, reason);
|
||||
}
|
||||
|
||||
static NMActStageReturn
|
||||
real_act_stage2_config (NMDevice *device, NMDeviceStateReason *reason)
|
||||
{
|
||||
NMActRequest *req;
|
||||
|
||||
req = nm_device_get_act_request (device);
|
||||
g_assert (req);
|
||||
|
||||
return nm_modem_act_stage2_config (NM_DEVICE_CDMA_GET_PRIVATE (device)->modem, req, reason);
|
||||
}
|
||||
|
||||
static void
|
||||
modem_ip4_config_result (NMModem *self,
|
||||
const char *iface,
|
||||
NMIP4Config *config,
|
||||
GError *error,
|
||||
gpointer user_data)
|
||||
{
|
||||
NMDevice *device = NM_DEVICE (user_data);
|
||||
NMDeviceState state;
|
||||
|
||||
state = nm_device_interface_get_state (NM_DEVICE_INTERFACE (device));
|
||||
g_return_if_fail (state == NM_DEVICE_STATE_IP_CONFIG);
|
||||
|
||||
if (error) {
|
||||
nm_warning ("%s: retrieving IP4 configuration failed: (%d) %s",
|
||||
__func__,
|
||||
error ? error->code : -1,
|
||||
error && error->message ? error->message : "(unknown)");
|
||||
|
||||
nm_device_state_changed (device, NM_DEVICE_STATE_FAILED, NM_DEVICE_STATE_REASON_IP_CONFIG_UNAVAILABLE);
|
||||
} else {
|
||||
if (iface)
|
||||
nm_device_set_ip_iface (device, iface);
|
||||
|
||||
nm_device_activate_schedule_stage4_ip4_config_get (device);
|
||||
}
|
||||
}
|
||||
|
||||
static NMActStageReturn
|
||||
real_act_stage3_ip4_config_start (NMDevice *device, NMDeviceStateReason *reason)
|
||||
{
|
||||
return nm_modem_stage3_ip4_config_start (NM_DEVICE_CDMA_GET_PRIVATE (device)->modem,
|
||||
device,
|
||||
NM_DEVICE_CLASS (nm_device_cdma_parent_class),
|
||||
reason);
|
||||
}
|
||||
|
||||
static NMActStageReturn
|
||||
real_act_stage4_get_ip4_config (NMDevice *device,
|
||||
NMIP4Config **config,
|
||||
NMDeviceStateReason *reason)
|
||||
{
|
||||
return nm_modem_stage4_get_ip4_config (NM_DEVICE_CDMA_GET_PRIVATE (device)->modem,
|
||||
device,
|
||||
NM_DEVICE_CLASS (nm_device_cdma_parent_class),
|
||||
config,
|
||||
reason);
|
||||
}
|
||||
|
||||
static void
|
||||
real_deactivate_quickly (NMDevice *device)
|
||||
{
|
||||
NMDeviceCdmaPrivate *priv = NM_DEVICE_CDMA_GET_PRIVATE (device);
|
||||
|
||||
nm_modem_deactivate_quickly (priv->modem, device);
|
||||
}
|
||||
|
||||
static guint32
|
||||
real_get_generic_capabilities (NMDevice *device)
|
||||
{
|
||||
return NM_DEVICE_CAP_NM_SUPPORTED;
|
||||
}
|
||||
|
||||
static void
|
||||
real_set_enabled (NMDeviceInterface *device, gboolean enabled)
|
||||
{
|
||||
NMDeviceCdma *self = NM_DEVICE_CDMA (device);
|
||||
NMDeviceCdmaPrivate *priv = NM_DEVICE_CDMA_GET_PRIVATE (self);
|
||||
NMDeviceState state;
|
||||
|
||||
if (priv->modem) {
|
||||
nm_modem_set_mm_enabled (priv->modem, enabled);
|
||||
|
||||
if (enabled == FALSE) {
|
||||
state = nm_device_interface_get_state (device);
|
||||
if (state == NM_DEVICE_STATE_ACTIVATED) {
|
||||
nm_device_state_changed (NM_DEVICE (device),
|
||||
NM_DEVICE_STATE_DISCONNECTED,
|
||||
NM_DEVICE_STATE_REASON_NONE);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
modem_enabled_cb (NMModem *modem, GParamSpec *pspec, gpointer user_data)
|
||||
{
|
||||
NMDeviceCdma *self = NM_DEVICE_CDMA (user_data);
|
||||
NMDeviceCdmaPrivate *priv = NM_DEVICE_CDMA_GET_PRIVATE (self);
|
||||
|
||||
real_set_enabled (NM_DEVICE_INTERFACE (self), nm_modem_get_mm_enabled (priv->modem));
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
NMDevice *
|
||||
nm_device_cdma_new (NMModemCdma *modem, const char *driver)
|
||||
{
|
||||
NMDevice *device;
|
||||
|
||||
g_return_val_if_fail (modem != NULL, NULL);
|
||||
g_return_val_if_fail (NM_IS_MODEM_CDMA (modem), NULL);
|
||||
g_return_val_if_fail (driver != NULL, NULL);
|
||||
|
||||
device = (NMDevice *) g_object_new (NM_TYPE_DEVICE_CDMA,
|
||||
NM_DEVICE_INTERFACE_UDI, nm_modem_get_path (NM_MODEM (modem)),
|
||||
NM_DEVICE_INTERFACE_IFACE, nm_modem_get_iface (NM_MODEM (modem)),
|
||||
NM_DEVICE_INTERFACE_DRIVER, driver,
|
||||
NM_DEVICE_INTERFACE_TYPE_DESC, "CDMA",
|
||||
NM_DEVICE_INTERFACE_DEVICE_TYPE, NM_DEVICE_TYPE_CDMA,
|
||||
NULL);
|
||||
if (device) {
|
||||
g_signal_connect (device, "state-changed", G_CALLBACK (device_state_changed), device);
|
||||
|
||||
NM_DEVICE_CDMA_GET_PRIVATE (device)->modem = g_object_ref (modem);
|
||||
g_signal_connect (modem, NM_MODEM_PPP_STATS, G_CALLBACK (ppp_stats), device);
|
||||
g_signal_connect (modem, NM_MODEM_PPP_FAILED, G_CALLBACK (ppp_failed), device);
|
||||
g_signal_connect (modem, NM_MODEM_PREPARE_RESULT, G_CALLBACK (modem_prepare_result), device);
|
||||
g_signal_connect (modem, NM_MODEM_IP4_CONFIG_RESULT, G_CALLBACK (modem_ip4_config_result), device);
|
||||
g_signal_connect (modem, NM_MODEM_NEED_AUTH, G_CALLBACK (modem_need_auth), device);
|
||||
g_signal_connect (modem, "notify::" NM_MODEM_ENABLED, G_CALLBACK (modem_enabled_cb), device);
|
||||
}
|
||||
|
||||
return device;
|
||||
}
|
||||
|
||||
static void
|
||||
device_interface_init (NMDeviceInterface *iface_class)
|
||||
{
|
||||
iface_class->set_enabled = real_set_enabled;
|
||||
return (NMDevice *) g_object_new (NM_TYPE_DEVICE_CDMA,
|
||||
NM_DEVICE_INTERFACE_UDI, nm_modem_get_path (NM_MODEM (modem)),
|
||||
NM_DEVICE_INTERFACE_IFACE, nm_modem_get_iface (NM_MODEM (modem)),
|
||||
NM_DEVICE_INTERFACE_DRIVER, driver,
|
||||
NM_DEVICE_INTERFACE_TYPE_DESC, "CDMA",
|
||||
NM_DEVICE_INTERFACE_DEVICE_TYPE, NM_DEVICE_TYPE_CDMA,
|
||||
NM_DEVICE_INTERFACE_RFKILL_TYPE, RFKILL_TYPE_WWAN,
|
||||
NM_DEVICE_MODEM_MODEM, modem,
|
||||
NULL);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
@ -353,58 +59,16 @@ nm_device_cdma_init (NMDeviceCdma *self)
|
|||
{
|
||||
}
|
||||
|
||||
static void
|
||||
finalize (GObject *object)
|
||||
{
|
||||
NMDeviceCdmaPrivate *priv = NM_DEVICE_CDMA_GET_PRIVATE (object);
|
||||
|
||||
g_object_unref (priv->modem);
|
||||
priv->modem = NULL;
|
||||
|
||||
G_OBJECT_CLASS (nm_device_cdma_parent_class)->finalize (object);
|
||||
}
|
||||
|
||||
static void
|
||||
nm_device_cdma_class_init (NMDeviceCdmaClass *klass)
|
||||
{
|
||||
GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
||||
NMDeviceClass *device_class = NM_DEVICE_CLASS (klass);
|
||||
|
||||
g_type_class_add_private (object_class, sizeof (NMDeviceCdmaPrivate));
|
||||
|
||||
/* Virtual methods */
|
||||
object_class->finalize = finalize;
|
||||
|
||||
device_class->get_best_auto_connection = real_get_best_auto_connection;
|
||||
device_class->connection_secrets_updated = real_connection_secrets_updated;
|
||||
device_class->check_connection_compatible = real_check_connection_compatible;
|
||||
device_class->hw_is_up = real_hw_is_up;
|
||||
device_class->hw_bring_up = real_hw_bring_up;
|
||||
device_class->get_generic_capabilities = real_get_generic_capabilities;
|
||||
device_class->act_stage1_prepare = real_act_stage1_prepare;
|
||||
device_class->act_stage2_config = real_act_stage2_config;
|
||||
device_class->act_stage3_ip4_config_start = real_act_stage3_ip4_config_start;
|
||||
device_class->act_stage4_get_ip4_config = real_act_stage4_get_ip4_config;
|
||||
device_class->deactivate_quickly = real_deactivate_quickly;
|
||||
|
||||
/* Signals */
|
||||
signals[PPP_STATS] =
|
||||
g_signal_new ("ppp-stats",
|
||||
G_OBJECT_CLASS_TYPE (object_class),
|
||||
G_SIGNAL_RUN_FIRST,
|
||||
G_STRUCT_OFFSET (NMDeviceCdmaClass, ppp_stats),
|
||||
NULL, NULL,
|
||||
_nm_marshal_VOID__UINT_UINT,
|
||||
G_TYPE_NONE, 2,
|
||||
G_TYPE_UINT, G_TYPE_UINT);
|
||||
|
||||
signals[PROPERTIES_CHANGED] =
|
||||
nm_properties_changed_signal_new (object_class,
|
||||
G_STRUCT_OFFSET (NMDeviceCdmaClass, properties_changed));
|
||||
|
||||
dbus_g_object_type_install_info (G_TYPE_FROM_CLASS (klass),
|
||||
nm_modem_get_serial_dbus_info ());
|
||||
|
||||
dbus_g_object_type_install_info (G_TYPE_FROM_CLASS (klass),
|
||||
&dbus_glib_nm_device_cdma_object_info);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@
|
|||
#ifndef NM_DEVICE_CDMA_H
|
||||
#define NM_DEVICE_CDMA_H
|
||||
|
||||
#include "nm-device.h"
|
||||
#include "nm-device-modem.h"
|
||||
#include "nm-modem-cdma.h"
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
|
@ -34,16 +34,15 @@ G_BEGIN_DECLS
|
|||
#define NM_DEVICE_CDMA_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_DEVICE_CDMA, NMDeviceCdmaClass))
|
||||
|
||||
typedef struct {
|
||||
NMDevice parent;
|
||||
NMDeviceModem parent;
|
||||
} NMDeviceCdma;
|
||||
|
||||
typedef struct {
|
||||
NMDeviceClass parent;
|
||||
NMDeviceModemClass parent;
|
||||
|
||||
/* Signals */
|
||||
void (*signal_quality) (NMDeviceCdma *self, guint32 quality);
|
||||
|
||||
void (*ppp_stats) (NMDeviceCdma *self, guint32 in_bytes, guint32 out_bytes);
|
||||
void (*properties_changed) (NMDeviceCdma *self, GHashTable *properties);
|
||||
} NMDeviceCdmaClass;
|
||||
|
||||
|
|
|
|||
|
|
@ -20,332 +20,38 @@
|
|||
|
||||
#include <string.h>
|
||||
|
||||
#include "nm-dbus-glib-types.h"
|
||||
#include "nm-modem.h"
|
||||
#include "nm-modem-gsm.h"
|
||||
#include "nm-device-interface.h"
|
||||
#include "nm-device-private.h"
|
||||
#include "nm-device-gsm.h"
|
||||
#include "nm-utils.h"
|
||||
#include "NetworkManagerUtils.h"
|
||||
#include "nm-marshal.h"
|
||||
#include "nm-properties-changed-signal.h"
|
||||
#include "nm-rfkill.h"
|
||||
|
||||
#include "nm-device-gsm-glue.h"
|
||||
|
||||
static void device_interface_init (NMDeviceInterface *iface_class);
|
||||
|
||||
G_DEFINE_TYPE_EXTENDED (NMDeviceGsm, nm_device_gsm, NM_TYPE_DEVICE, 0,
|
||||
G_IMPLEMENT_INTERFACE (NM_TYPE_DEVICE_INTERFACE, device_interface_init))
|
||||
|
||||
#define NM_DEVICE_GSM_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_DEVICE_GSM, NMDeviceGsmPrivate))
|
||||
|
||||
typedef struct {
|
||||
NMModem *modem;
|
||||
} NMDeviceGsmPrivate;
|
||||
G_DEFINE_TYPE (NMDeviceGsm, nm_device_gsm, NM_TYPE_DEVICE_MODEM)
|
||||
|
||||
enum {
|
||||
PPP_STATS,
|
||||
PROPERTIES_CHANGED,
|
||||
|
||||
LAST_SIGNAL
|
||||
};
|
||||
|
||||
static guint signals[LAST_SIGNAL] = { 0 };
|
||||
|
||||
static void
|
||||
ppp_stats (NMModem *modem,
|
||||
guint32 in_bytes,
|
||||
guint32 out_bytes,
|
||||
gpointer user_data)
|
||||
{
|
||||
g_signal_emit (NM_DEVICE_GSM (user_data), signals[PPP_STATS], 0, in_bytes, out_bytes);
|
||||
}
|
||||
|
||||
static void
|
||||
ppp_failed (NMModem *modem, NMDeviceStateReason reason, gpointer user_data)
|
||||
{
|
||||
NMDevice *device = NM_DEVICE (user_data);
|
||||
|
||||
switch (nm_device_interface_get_state (NM_DEVICE_INTERFACE (device))) {
|
||||
case NM_DEVICE_STATE_PREPARE:
|
||||
case NM_DEVICE_STATE_CONFIG:
|
||||
case NM_DEVICE_STATE_NEED_AUTH:
|
||||
case NM_DEVICE_STATE_IP_CONFIG:
|
||||
case NM_DEVICE_STATE_ACTIVATED:
|
||||
nm_device_state_changed (device, NM_DEVICE_STATE_FAILED, reason);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
device_state_changed (NMDevice *device,
|
||||
NMDeviceState new_state,
|
||||
NMDeviceState old_state,
|
||||
NMDeviceStateReason reason,
|
||||
gpointer user_data)
|
||||
{
|
||||
NMDeviceGsmPrivate *priv = NM_DEVICE_GSM_GET_PRIVATE (device);
|
||||
|
||||
nm_modem_device_state_changed (priv->modem, new_state, old_state, reason);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
real_hw_is_up (NMDevice *device)
|
||||
{
|
||||
return nm_modem_hw_is_up (NM_DEVICE_GSM_GET_PRIVATE (device)->modem, device);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
real_hw_bring_up (NMDevice *device, gboolean *no_firmware)
|
||||
{
|
||||
return nm_modem_hw_bring_up (NM_DEVICE_GSM_GET_PRIVATE (device)->modem, device, no_firmware);
|
||||
}
|
||||
|
||||
static NMConnection *
|
||||
real_get_best_auto_connection (NMDevice *device,
|
||||
GSList *connections,
|
||||
char **specific_object)
|
||||
{
|
||||
NMDeviceGsmPrivate *priv = NM_DEVICE_GSM_GET_PRIVATE (device);
|
||||
|
||||
return nm_modem_get_best_auto_connection (priv->modem, connections, specific_object);
|
||||
}
|
||||
|
||||
static void
|
||||
real_connection_secrets_updated (NMDevice *device,
|
||||
NMConnection *connection,
|
||||
GSList *updated_settings,
|
||||
RequestSecretsCaller caller)
|
||||
{
|
||||
NMDeviceGsmPrivate *priv = NM_DEVICE_GSM_GET_PRIVATE (device);
|
||||
NMActRequest *req;
|
||||
|
||||
g_return_if_fail (IS_ACTIVATING_STATE (nm_device_get_state (device)));
|
||||
|
||||
req = nm_device_get_act_request (device);
|
||||
g_assert (req);
|
||||
|
||||
if (!nm_modem_connection_secrets_updated (priv->modem,
|
||||
req,
|
||||
connection,
|
||||
updated_settings,
|
||||
caller)) {
|
||||
nm_device_state_changed (device, NM_DEVICE_STATE_FAILED, NM_DEVICE_STATE_REASON_NO_SECRETS);
|
||||
return;
|
||||
}
|
||||
|
||||
/* PPP handles stuff itself... */
|
||||
if (caller == SECRETS_CALLER_PPP)
|
||||
return;
|
||||
|
||||
/* Otherwise, on success for GSM secrets we need to schedule stage1 again */
|
||||
g_return_if_fail (nm_device_get_state (device) == NM_DEVICE_STATE_NEED_AUTH);
|
||||
nm_device_activate_schedule_stage1_device_prepare (device);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
real_check_connection_compatible (NMDevice *device,
|
||||
NMConnection *connection,
|
||||
GError **error)
|
||||
{
|
||||
NMDeviceGsmPrivate *priv = NM_DEVICE_GSM_GET_PRIVATE (device);
|
||||
|
||||
return nm_modem_check_connection_compatible (priv->modem, connection, error);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
modem_need_auth (NMModem *modem,
|
||||
const char *setting_name,
|
||||
gboolean retry,
|
||||
RequestSecretsCaller caller,
|
||||
const char *hint1,
|
||||
const char *hint2,
|
||||
gpointer user_data)
|
||||
{
|
||||
NMDeviceGsm *self = NM_DEVICE_GSM (user_data);
|
||||
NMActRequest *req;
|
||||
|
||||
req = nm_device_get_act_request (NM_DEVICE (self));
|
||||
g_assert (req);
|
||||
|
||||
nm_device_state_changed (NM_DEVICE (self), NM_DEVICE_STATE_NEED_AUTH, NM_DEVICE_STATE_REASON_NONE);
|
||||
nm_act_request_get_secrets (req, setting_name, retry, caller, hint1, hint2);
|
||||
}
|
||||
|
||||
static void
|
||||
modem_prepare_result (NMModem *modem,
|
||||
gboolean success,
|
||||
NMDeviceStateReason reason,
|
||||
gpointer user_data)
|
||||
{
|
||||
NMDevice *device = NM_DEVICE (user_data);
|
||||
NMDeviceState state;
|
||||
|
||||
state = nm_device_interface_get_state (NM_DEVICE_INTERFACE (device));
|
||||
g_return_if_fail (state == NM_DEVICE_STATE_PREPARE);
|
||||
|
||||
if (success)
|
||||
nm_device_activate_schedule_stage2_device_config (device);
|
||||
else
|
||||
nm_device_state_changed (device, NM_DEVICE_STATE_FAILED, reason);
|
||||
}
|
||||
|
||||
static NMActStageReturn
|
||||
real_act_stage1_prepare (NMDevice *device, NMDeviceStateReason *reason)
|
||||
{
|
||||
NMActRequest *req;
|
||||
|
||||
req = nm_device_get_act_request (device);
|
||||
g_assert (req);
|
||||
|
||||
return nm_modem_act_stage1_prepare (NM_DEVICE_GSM_GET_PRIVATE (device)->modem, req, reason);
|
||||
}
|
||||
|
||||
static NMActStageReturn
|
||||
real_act_stage2_config (NMDevice *device, NMDeviceStateReason *reason)
|
||||
{
|
||||
NMActRequest *req;
|
||||
|
||||
req = nm_device_get_act_request (device);
|
||||
g_assert (req);
|
||||
|
||||
return nm_modem_act_stage2_config (NM_DEVICE_GSM_GET_PRIVATE (device)->modem, req, reason);
|
||||
}
|
||||
|
||||
static void
|
||||
modem_ip4_config_result (NMModem *self,
|
||||
const char *iface,
|
||||
NMIP4Config *config,
|
||||
GError *error,
|
||||
gpointer user_data)
|
||||
{
|
||||
NMDevice *device = NM_DEVICE (user_data);
|
||||
NMDeviceState state;
|
||||
|
||||
state = nm_device_interface_get_state (NM_DEVICE_INTERFACE (device));
|
||||
g_return_if_fail (state == NM_DEVICE_STATE_IP_CONFIG);
|
||||
|
||||
if (error) {
|
||||
nm_warning ("%s: retrieving IP4 configuration failed: (%d) %s",
|
||||
__func__,
|
||||
error ? error->code : -1,
|
||||
error && error->message ? error->message : "(unknown)");
|
||||
|
||||
nm_device_state_changed (device, NM_DEVICE_STATE_FAILED, NM_DEVICE_STATE_REASON_IP_CONFIG_UNAVAILABLE);
|
||||
} else {
|
||||
if (iface)
|
||||
nm_device_set_ip_iface (device, iface);
|
||||
|
||||
nm_device_activate_schedule_stage4_ip4_config_get (device);
|
||||
}
|
||||
}
|
||||
|
||||
static NMActStageReturn
|
||||
real_act_stage3_ip4_config_start (NMDevice *device, NMDeviceStateReason *reason)
|
||||
{
|
||||
return nm_modem_stage3_ip4_config_start (NM_DEVICE_GSM_GET_PRIVATE (device)->modem,
|
||||
device,
|
||||
NM_DEVICE_CLASS (nm_device_gsm_parent_class),
|
||||
reason);
|
||||
}
|
||||
|
||||
static NMActStageReturn
|
||||
real_act_stage4_get_ip4_config (NMDevice *device,
|
||||
NMIP4Config **config,
|
||||
NMDeviceStateReason *reason)
|
||||
{
|
||||
return nm_modem_stage4_get_ip4_config (NM_DEVICE_GSM_GET_PRIVATE (device)->modem,
|
||||
device,
|
||||
NM_DEVICE_CLASS (nm_device_gsm_parent_class),
|
||||
config,
|
||||
reason);
|
||||
}
|
||||
|
||||
static void
|
||||
real_deactivate_quickly (NMDevice *device)
|
||||
{
|
||||
NMDeviceGsmPrivate *priv = NM_DEVICE_GSM_GET_PRIVATE (device);
|
||||
|
||||
nm_modem_deactivate_quickly (priv->modem, device);
|
||||
}
|
||||
|
||||
static guint32
|
||||
real_get_generic_capabilities (NMDevice *device)
|
||||
{
|
||||
return NM_DEVICE_CAP_NM_SUPPORTED;
|
||||
}
|
||||
|
||||
static void
|
||||
real_set_enabled (NMDeviceInterface *device, gboolean enabled)
|
||||
{
|
||||
NMDeviceGsm *self = NM_DEVICE_GSM (device);
|
||||
NMDeviceGsmPrivate *priv = NM_DEVICE_GSM_GET_PRIVATE (self);
|
||||
NMDeviceState state;
|
||||
|
||||
if (priv->modem) {
|
||||
nm_modem_set_mm_enabled (priv->modem, enabled);
|
||||
|
||||
if (enabled == FALSE) {
|
||||
state = nm_device_interface_get_state (device);
|
||||
if (state == NM_DEVICE_STATE_ACTIVATED) {
|
||||
nm_device_state_changed (NM_DEVICE (device),
|
||||
NM_DEVICE_STATE_DISCONNECTED,
|
||||
NM_DEVICE_STATE_REASON_NONE);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
modem_enabled_cb (NMModem *modem, GParamSpec *pspec, gpointer user_data)
|
||||
{
|
||||
NMDeviceGsm *self = NM_DEVICE_GSM (user_data);
|
||||
NMDeviceGsmPrivate *priv = NM_DEVICE_GSM_GET_PRIVATE (self);
|
||||
|
||||
real_set_enabled (NM_DEVICE_INTERFACE (self), nm_modem_get_mm_enabled (priv->modem));
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
NMDevice *
|
||||
nm_device_gsm_new (NMModemGsm *modem, const char *driver)
|
||||
{
|
||||
NMDevice *device;
|
||||
|
||||
g_return_val_if_fail (modem != NULL, NULL);
|
||||
g_return_val_if_fail (NM_IS_MODEM_GSM (modem), NULL);
|
||||
g_return_val_if_fail (driver != NULL, NULL);
|
||||
|
||||
device = (NMDevice *) g_object_new (NM_TYPE_DEVICE_GSM,
|
||||
NM_DEVICE_INTERFACE_UDI, nm_modem_get_path (NM_MODEM (modem)),
|
||||
NM_DEVICE_INTERFACE_IFACE, nm_modem_get_iface (NM_MODEM (modem)),
|
||||
NM_DEVICE_INTERFACE_DRIVER, driver,
|
||||
NM_DEVICE_INTERFACE_TYPE_DESC, "GSM",
|
||||
NM_DEVICE_INTERFACE_DEVICE_TYPE, NM_DEVICE_TYPE_GSM,
|
||||
NULL);
|
||||
if (device) {
|
||||
g_signal_connect (device, "state-changed", G_CALLBACK (device_state_changed), device);
|
||||
|
||||
NM_DEVICE_GSM_GET_PRIVATE (device)->modem = g_object_ref (modem);
|
||||
g_signal_connect (modem, NM_MODEM_PPP_STATS, G_CALLBACK (ppp_stats), device);
|
||||
g_signal_connect (modem, NM_MODEM_PPP_FAILED, G_CALLBACK (ppp_failed), device);
|
||||
g_signal_connect (modem, NM_MODEM_PREPARE_RESULT, G_CALLBACK (modem_prepare_result), device);
|
||||
g_signal_connect (modem, NM_MODEM_IP4_CONFIG_RESULT, G_CALLBACK (modem_ip4_config_result), device);
|
||||
g_signal_connect (modem, NM_MODEM_NEED_AUTH, G_CALLBACK (modem_need_auth), device);
|
||||
g_signal_connect (modem, "notify::" NM_MODEM_ENABLED, G_CALLBACK (modem_enabled_cb), device);
|
||||
}
|
||||
|
||||
return device;
|
||||
}
|
||||
|
||||
static void
|
||||
device_interface_init (NMDeviceInterface *iface_class)
|
||||
{
|
||||
iface_class->set_enabled = real_set_enabled;
|
||||
return (NMDevice *) g_object_new (NM_TYPE_DEVICE_GSM,
|
||||
NM_DEVICE_INTERFACE_UDI, nm_modem_get_path (NM_MODEM (modem)),
|
||||
NM_DEVICE_INTERFACE_IFACE, nm_modem_get_iface (NM_MODEM (modem)),
|
||||
NM_DEVICE_INTERFACE_DRIVER, driver,
|
||||
NM_DEVICE_INTERFACE_TYPE_DESC, "GSM",
|
||||
NM_DEVICE_INTERFACE_DEVICE_TYPE, NM_DEVICE_TYPE_GSM,
|
||||
NM_DEVICE_INTERFACE_RFKILL_TYPE, RFKILL_TYPE_WWAN,
|
||||
NM_DEVICE_MODEM_MODEM, modem,
|
||||
NULL);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
@ -353,58 +59,16 @@ nm_device_gsm_init (NMDeviceGsm *self)
|
|||
{
|
||||
}
|
||||
|
||||
static void
|
||||
finalize (GObject *object)
|
||||
{
|
||||
NMDeviceGsmPrivate *priv = NM_DEVICE_GSM_GET_PRIVATE (object);
|
||||
|
||||
g_object_unref (priv->modem);
|
||||
priv->modem = NULL;
|
||||
|
||||
G_OBJECT_CLASS (nm_device_gsm_parent_class)->finalize (object);
|
||||
}
|
||||
|
||||
static void
|
||||
nm_device_gsm_class_init (NMDeviceGsmClass *klass)
|
||||
{
|
||||
GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
||||
NMDeviceClass *device_class = NM_DEVICE_CLASS (klass);
|
||||
|
||||
g_type_class_add_private (object_class, sizeof (NMDeviceGsmPrivate));
|
||||
|
||||
/* Virtual methods */
|
||||
object_class->finalize = finalize;
|
||||
|
||||
device_class->get_best_auto_connection = real_get_best_auto_connection;
|
||||
device_class->connection_secrets_updated = real_connection_secrets_updated;
|
||||
device_class->check_connection_compatible = real_check_connection_compatible;
|
||||
device_class->hw_is_up = real_hw_is_up;
|
||||
device_class->hw_bring_up = real_hw_bring_up;
|
||||
device_class->get_generic_capabilities = real_get_generic_capabilities;
|
||||
device_class->act_stage1_prepare = real_act_stage1_prepare;
|
||||
device_class->act_stage2_config = real_act_stage2_config;
|
||||
device_class->act_stage3_ip4_config_start = real_act_stage3_ip4_config_start;
|
||||
device_class->act_stage4_get_ip4_config = real_act_stage4_get_ip4_config;
|
||||
device_class->deactivate_quickly = real_deactivate_quickly;
|
||||
|
||||
/* Signals */
|
||||
signals[PPP_STATS] =
|
||||
g_signal_new ("ppp-stats",
|
||||
G_OBJECT_CLASS_TYPE (object_class),
|
||||
G_SIGNAL_RUN_FIRST,
|
||||
G_STRUCT_OFFSET (NMDeviceGsmClass, ppp_stats),
|
||||
NULL, NULL,
|
||||
_nm_marshal_VOID__UINT_UINT,
|
||||
G_TYPE_NONE, 2,
|
||||
G_TYPE_UINT, G_TYPE_UINT);
|
||||
|
||||
signals[PROPERTIES_CHANGED] =
|
||||
nm_properties_changed_signal_new (object_class,
|
||||
G_STRUCT_OFFSET (NMDeviceGsmClass, properties_changed));
|
||||
|
||||
dbus_g_object_type_install_info (G_TYPE_FROM_CLASS (klass),
|
||||
nm_modem_get_serial_dbus_info ());
|
||||
|
||||
dbus_g_object_type_install_info (G_TYPE_FROM_CLASS (klass),
|
||||
&dbus_glib_nm_device_gsm_object_info);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@
|
|||
#ifndef NM_DEVICE_GSM_H
|
||||
#define NM_DEVICE_GSM_H
|
||||
|
||||
#include "nm-device.h"
|
||||
#include "nm-device-modem.h"
|
||||
#include "nm-modem-gsm.h"
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
|
@ -34,16 +34,15 @@ G_BEGIN_DECLS
|
|||
#define NM_DEVICE_GSM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_DEVICE_GSM, NMDeviceGsmClass))
|
||||
|
||||
typedef struct {
|
||||
NMDevice parent;
|
||||
NMDeviceModem parent;
|
||||
} NMDeviceGsm;
|
||||
|
||||
typedef struct {
|
||||
NMDeviceClass parent;
|
||||
NMDeviceModemClass parent;
|
||||
|
||||
/* Signals */
|
||||
void (*signal_quality) (NMDeviceGsm *self, guint32 quality);
|
||||
|
||||
void (*ppp_stats) (NMDeviceGsm *self, guint32 in_bytes, guint32 out_bytes);
|
||||
void (*properties_changed) (NMDeviceGsm *self, GHashTable *properties);
|
||||
} NMDeviceGsmClass;
|
||||
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@
|
|||
#include "nm-device-interface.h"
|
||||
#include "nm-utils.h"
|
||||
#include "nm-properties-changed-signal.h"
|
||||
#include "nm-rfkill.h"
|
||||
|
||||
static gboolean impl_device_disconnect (NMDeviceInterface *device,
|
||||
GError **error);
|
||||
|
|
@ -176,6 +177,15 @@ nm_device_interface_init (gpointer g_iface)
|
|||
NULL,
|
||||
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | NM_PROPERTY_PARAM_NO_EXPORT));
|
||||
|
||||
g_object_interface_install_property
|
||||
(g_iface, g_param_spec_uint (NM_DEVICE_INTERFACE_RFKILL_TYPE,
|
||||
"Rfkill Type",
|
||||
"Type of rfkill switch (if any) supported by this device",
|
||||
RFKILL_TYPE_WLAN,
|
||||
RFKILL_TYPE_MAX,
|
||||
RFKILL_TYPE_UNKNOWN,
|
||||
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | NM_PROPERTY_PARAM_NO_EXPORT));
|
||||
|
||||
/* Signals */
|
||||
g_signal_new ("state-changed",
|
||||
iface_type,
|
||||
|
|
@ -369,6 +379,16 @@ nm_device_interface_set_enabled (NMDeviceInterface *device, gboolean enabled)
|
|||
g_return_if_fail (NM_IS_DEVICE_INTERFACE (device));
|
||||
|
||||
if (NM_DEVICE_INTERFACE_GET_INTERFACE (device)->set_enabled)
|
||||
return NM_DEVICE_INTERFACE_GET_INTERFACE (device)->set_enabled (device, enabled);
|
||||
NM_DEVICE_INTERFACE_GET_INTERFACE (device)->set_enabled (device, enabled);
|
||||
}
|
||||
|
||||
gboolean
|
||||
nm_device_interface_get_enabled (NMDeviceInterface *device)
|
||||
{
|
||||
g_return_val_if_fail (NM_IS_DEVICE_INTERFACE (device), FALSE);
|
||||
|
||||
if (NM_DEVICE_INTERFACE_GET_INTERFACE (device)->get_enabled)
|
||||
return NM_DEVICE_INTERFACE_GET_INTERFACE (device)->get_enabled (device);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -58,6 +58,7 @@ typedef enum
|
|||
#define NM_DEVICE_INTERFACE_DEVICE_TYPE "device-type" /* ugh */
|
||||
#define NM_DEVICE_INTERFACE_MANAGED "managed"
|
||||
#define NM_DEVICE_INTERFACE_TYPE_DESC "type-desc" /* Internal only */
|
||||
#define NM_DEVICE_INTERFACE_RFKILL_TYPE "rfkill-type" /* Internal only */
|
||||
|
||||
typedef enum {
|
||||
NM_DEVICE_INTERFACE_PROP_FIRST = 0x1000,
|
||||
|
|
@ -75,6 +76,7 @@ typedef enum {
|
|||
NM_DEVICE_INTERFACE_PROP_DEVICE_TYPE,
|
||||
NM_DEVICE_INTERFACE_PROP_MANAGED,
|
||||
NM_DEVICE_INTERFACE_PROP_TYPE_DESC,
|
||||
NM_DEVICE_INTERFACE_PROP_RFKILL_TYPE,
|
||||
} NMDeviceInterfaceProp;
|
||||
|
||||
|
||||
|
|
@ -101,6 +103,8 @@ struct _NMDeviceInterface {
|
|||
|
||||
void (*set_enabled) (NMDeviceInterface *device, gboolean enabled);
|
||||
|
||||
gboolean (*get_enabled) (NMDeviceInterface *device);
|
||||
|
||||
/* Signals */
|
||||
void (*state_changed) (NMDeviceInterface *device,
|
||||
NMDeviceState new_state,
|
||||
|
|
@ -135,6 +139,8 @@ NMConnection * nm_device_interface_connection_match_config (NMDeviceInterface *d
|
|||
|
||||
gboolean nm_device_interface_can_assume_connection (NMDeviceInterface *device);
|
||||
|
||||
gboolean nm_device_interface_get_enabled (NMDeviceInterface *device);
|
||||
|
||||
void nm_device_interface_set_enabled (NMDeviceInterface *device, gboolean enabled);
|
||||
|
||||
#endif /* NM_DEVICE_INTERFACE_H */
|
||||
|
|
|
|||
453
src/nm-device-modem.c
Normal file
453
src/nm-device-modem.c
Normal file
|
|
@ -0,0 +1,453 @@
|
|||
/* -*- 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) 2009 - 2010 Red Hat, Inc.
|
||||
*/
|
||||
|
||||
#include <glib.h>
|
||||
|
||||
#include "nm-device-modem.h"
|
||||
#include "nm-device-interface.h"
|
||||
#include "nm-modem.h"
|
||||
#include "nm-device-private.h"
|
||||
#include "nm-properties-changed-signal.h"
|
||||
#include "nm-marshal.h"
|
||||
|
||||
static void device_interface_init (NMDeviceInterface *iface_class);
|
||||
|
||||
G_DEFINE_TYPE_EXTENDED (NMDeviceModem, nm_device_modem, NM_TYPE_DEVICE, G_TYPE_FLAG_ABSTRACT,
|
||||
G_IMPLEMENT_INTERFACE (NM_TYPE_DEVICE_INTERFACE, device_interface_init))
|
||||
|
||||
#define NM_DEVICE_MODEM_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_DEVICE_MODEM, NMDeviceModemPrivate))
|
||||
|
||||
typedef struct {
|
||||
NMModem *modem;
|
||||
} NMDeviceModemPrivate;
|
||||
|
||||
enum {
|
||||
PROP_0,
|
||||
PROP_MODEM
|
||||
};
|
||||
|
||||
enum {
|
||||
PPP_STATS,
|
||||
LAST_SIGNAL
|
||||
};
|
||||
static guint signals[LAST_SIGNAL] = { 0 };
|
||||
|
||||
static void real_set_enabled (NMDeviceInterface *device, gboolean enabled);
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
static void
|
||||
ppp_stats (NMModem *modem,
|
||||
guint32 in_bytes,
|
||||
guint32 out_bytes,
|
||||
gpointer user_data)
|
||||
{
|
||||
g_signal_emit (G_OBJECT (user_data), signals[PPP_STATS], 0, in_bytes, out_bytes);
|
||||
}
|
||||
|
||||
static void
|
||||
ppp_failed (NMModem *modem, NMDeviceStateReason reason, gpointer user_data)
|
||||
{
|
||||
NMDevice *device = NM_DEVICE (user_data);
|
||||
|
||||
switch (nm_device_interface_get_state (NM_DEVICE_INTERFACE (device))) {
|
||||
case NM_DEVICE_STATE_PREPARE:
|
||||
case NM_DEVICE_STATE_CONFIG:
|
||||
case NM_DEVICE_STATE_NEED_AUTH:
|
||||
case NM_DEVICE_STATE_IP_CONFIG:
|
||||
case NM_DEVICE_STATE_ACTIVATED:
|
||||
nm_device_state_changed (device, NM_DEVICE_STATE_FAILED, reason);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
modem_prepare_result (NMModem *modem,
|
||||
gboolean success,
|
||||
NMDeviceStateReason reason,
|
||||
gpointer user_data)
|
||||
{
|
||||
NMDevice *device = NM_DEVICE (user_data);
|
||||
NMDeviceState state;
|
||||
|
||||
state = nm_device_interface_get_state (NM_DEVICE_INTERFACE (device));
|
||||
g_return_if_fail (state == NM_DEVICE_STATE_PREPARE);
|
||||
|
||||
if (success)
|
||||
nm_device_activate_schedule_stage2_device_config (device);
|
||||
else
|
||||
nm_device_state_changed (device, NM_DEVICE_STATE_FAILED, reason);
|
||||
}
|
||||
|
||||
static void
|
||||
modem_need_auth (NMModem *modem,
|
||||
const char *setting_name,
|
||||
gboolean retry,
|
||||
RequestSecretsCaller caller,
|
||||
const char *hint1,
|
||||
const char *hint2,
|
||||
gpointer user_data)
|
||||
{
|
||||
NMDeviceModem *self = NM_DEVICE_MODEM (user_data);
|
||||
NMActRequest *req;
|
||||
|
||||
req = nm_device_get_act_request (NM_DEVICE (self));
|
||||
g_assert (req);
|
||||
|
||||
nm_device_state_changed (NM_DEVICE (self), NM_DEVICE_STATE_NEED_AUTH, NM_DEVICE_STATE_REASON_NONE);
|
||||
nm_act_request_get_secrets (req, setting_name, retry, caller, hint1, hint2);
|
||||
}
|
||||
|
||||
static void
|
||||
modem_ip4_config_result (NMModem *self,
|
||||
const char *iface,
|
||||
NMIP4Config *config,
|
||||
GError *error,
|
||||
gpointer user_data)
|
||||
{
|
||||
NMDevice *device = NM_DEVICE (user_data);
|
||||
NMDeviceState state;
|
||||
|
||||
state = nm_device_interface_get_state (NM_DEVICE_INTERFACE (device));
|
||||
g_return_if_fail (state == NM_DEVICE_STATE_IP_CONFIG);
|
||||
|
||||
if (error) {
|
||||
g_warning ("%s: retrieving IP4 configuration failed: (%d) %s",
|
||||
__func__,
|
||||
error ? error->code : -1,
|
||||
error && error->message ? error->message : "(unknown)");
|
||||
|
||||
nm_device_state_changed (device, NM_DEVICE_STATE_FAILED, NM_DEVICE_STATE_REASON_IP_CONFIG_UNAVAILABLE);
|
||||
} else {
|
||||
if (iface)
|
||||
nm_device_set_ip_iface (device, iface);
|
||||
|
||||
nm_device_activate_schedule_stage4_ip4_config_get (device);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
modem_enabled_cb (NMModem *modem, GParamSpec *pspec, gpointer user_data)
|
||||
{
|
||||
NMDeviceModem *self = NM_DEVICE_MODEM (user_data);
|
||||
NMDeviceModemPrivate *priv = NM_DEVICE_MODEM_GET_PRIVATE (self);
|
||||
|
||||
real_set_enabled (NM_DEVICE_INTERFACE (self), nm_modem_get_mm_enabled (priv->modem));
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
NMModem *
|
||||
nm_device_modem_get_modem (NMDeviceModem *self)
|
||||
{
|
||||
g_return_val_if_fail (self != NULL, NULL);
|
||||
g_return_val_if_fail (NM_IS_DEVICE_MODEM (self), NULL);
|
||||
|
||||
return NM_DEVICE_MODEM_GET_PRIVATE (self)->modem;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
static void
|
||||
device_state_changed (NMDevice *device,
|
||||
NMDeviceState new_state,
|
||||
NMDeviceState old_state,
|
||||
NMDeviceStateReason reason,
|
||||
gpointer user_data)
|
||||
{
|
||||
nm_modem_device_state_changed (NM_DEVICE_MODEM_GET_PRIVATE (device)->modem,
|
||||
new_state,
|
||||
old_state,
|
||||
reason);
|
||||
}
|
||||
|
||||
static guint32
|
||||
real_get_generic_capabilities (NMDevice *device)
|
||||
{
|
||||
return NM_DEVICE_CAP_NM_SUPPORTED;
|
||||
}
|
||||
|
||||
static NMConnection *
|
||||
real_get_best_auto_connection (NMDevice *device,
|
||||
GSList *connections,
|
||||
char **specific_object)
|
||||
{
|
||||
NMDeviceModemPrivate *priv = NM_DEVICE_MODEM_GET_PRIVATE (device);
|
||||
|
||||
return nm_modem_get_best_auto_connection (priv->modem, connections, specific_object);
|
||||
}
|
||||
|
||||
static void
|
||||
real_connection_secrets_updated (NMDevice *device,
|
||||
NMConnection *connection,
|
||||
GSList *updated_settings,
|
||||
RequestSecretsCaller caller)
|
||||
{
|
||||
NMDeviceModemPrivate *priv = NM_DEVICE_MODEM_GET_PRIVATE (device);
|
||||
NMActRequest *req;
|
||||
|
||||
g_return_if_fail (IS_ACTIVATING_STATE (nm_device_get_state (device)));
|
||||
|
||||
req = nm_device_get_act_request (device);
|
||||
g_assert (req);
|
||||
|
||||
if (!nm_modem_connection_secrets_updated (priv->modem,
|
||||
req,
|
||||
connection,
|
||||
updated_settings,
|
||||
caller)) {
|
||||
nm_device_state_changed (device, NM_DEVICE_STATE_FAILED, NM_DEVICE_STATE_REASON_NO_SECRETS);
|
||||
return;
|
||||
}
|
||||
|
||||
/* PPP handles stuff itself... */
|
||||
if (caller == SECRETS_CALLER_PPP)
|
||||
return;
|
||||
|
||||
/* Otherwise, on success for modem secrets we need to schedule stage1 again */
|
||||
g_return_if_fail (nm_device_get_state (device) == NM_DEVICE_STATE_NEED_AUTH);
|
||||
nm_device_activate_schedule_stage1_device_prepare (device);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
real_check_connection_compatible (NMDevice *device,
|
||||
NMConnection *connection,
|
||||
GError **error)
|
||||
{
|
||||
NMDeviceModemPrivate *priv = NM_DEVICE_MODEM_GET_PRIVATE (device);
|
||||
|
||||
return nm_modem_check_connection_compatible (priv->modem, connection, error);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
real_hw_is_up (NMDevice *device)
|
||||
{
|
||||
return nm_modem_hw_is_up (NM_DEVICE_MODEM_GET_PRIVATE (device)->modem, device);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
real_hw_bring_up (NMDevice *device, gboolean *no_firmware)
|
||||
{
|
||||
return nm_modem_hw_bring_up (NM_DEVICE_MODEM_GET_PRIVATE (device)->modem, device, no_firmware);
|
||||
}
|
||||
|
||||
static void
|
||||
real_deactivate_quickly (NMDevice *device)
|
||||
{
|
||||
nm_modem_deactivate_quickly (NM_DEVICE_MODEM_GET_PRIVATE (device)->modem, device);
|
||||
}
|
||||
|
||||
static NMActStageReturn
|
||||
real_act_stage1_prepare (NMDevice *device, NMDeviceStateReason *reason)
|
||||
{
|
||||
NMActRequest *req;
|
||||
|
||||
req = nm_device_get_act_request (device);
|
||||
g_assert (req);
|
||||
|
||||
return nm_modem_act_stage1_prepare (NM_DEVICE_MODEM_GET_PRIVATE (device)->modem, req, reason);
|
||||
}
|
||||
|
||||
static NMActStageReturn
|
||||
real_act_stage2_config (NMDevice *device, NMDeviceStateReason *reason)
|
||||
{
|
||||
NMActRequest *req;
|
||||
|
||||
req = nm_device_get_act_request (device);
|
||||
g_assert (req);
|
||||
|
||||
return nm_modem_act_stage2_config (NM_DEVICE_MODEM_GET_PRIVATE (device)->modem, req, reason);
|
||||
}
|
||||
|
||||
static NMActStageReturn
|
||||
real_act_stage3_ip4_config_start (NMDevice *device, NMDeviceStateReason *reason)
|
||||
{
|
||||
return nm_modem_stage3_ip4_config_start (NM_DEVICE_MODEM_GET_PRIVATE (device)->modem,
|
||||
device,
|
||||
NM_DEVICE_CLASS (nm_device_modem_parent_class),
|
||||
reason);
|
||||
}
|
||||
|
||||
static NMActStageReturn
|
||||
real_act_stage4_get_ip4_config (NMDevice *device,
|
||||
NMIP4Config **config,
|
||||
NMDeviceStateReason *reason)
|
||||
{
|
||||
return nm_modem_stage4_get_ip4_config (NM_DEVICE_MODEM_GET_PRIVATE (device)->modem,
|
||||
device,
|
||||
NM_DEVICE_CLASS (nm_device_modem_parent_class),
|
||||
config,
|
||||
reason);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
static gboolean
|
||||
real_get_enabled (NMDeviceInterface *device)
|
||||
{
|
||||
return nm_modem_get_mm_enabled (NM_DEVICE_MODEM_GET_PRIVATE (device)->modem);
|
||||
}
|
||||
|
||||
static void
|
||||
real_set_enabled (NMDeviceInterface *device, gboolean enabled)
|
||||
{
|
||||
NMDeviceModem *self = NM_DEVICE_MODEM (device);
|
||||
NMDeviceModemPrivate *priv = NM_DEVICE_MODEM_GET_PRIVATE (self);
|
||||
NMDeviceState state;
|
||||
|
||||
if (priv->modem) {
|
||||
nm_modem_set_mm_enabled (priv->modem, enabled);
|
||||
|
||||
if (enabled == FALSE) {
|
||||
state = nm_device_interface_get_state (device);
|
||||
if (state == NM_DEVICE_STATE_ACTIVATED) {
|
||||
nm_device_state_changed (NM_DEVICE (device),
|
||||
NM_DEVICE_STATE_DISCONNECTED,
|
||||
NM_DEVICE_STATE_REASON_NONE);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
static void
|
||||
device_interface_init (NMDeviceInterface *iface_class)
|
||||
{
|
||||
iface_class->get_enabled = real_get_enabled;
|
||||
iface_class->set_enabled = real_set_enabled;
|
||||
}
|
||||
|
||||
static void
|
||||
nm_device_modem_init (NMDeviceModem *self)
|
||||
{
|
||||
g_signal_connect (self, "state-changed", G_CALLBACK (device_state_changed), self);
|
||||
}
|
||||
|
||||
static void
|
||||
set_modem (NMDeviceModem *self, NMModem *modem)
|
||||
{
|
||||
NMDeviceModemPrivate *priv = NM_DEVICE_MODEM_GET_PRIVATE (self);
|
||||
|
||||
g_return_if_fail (modem != NULL);
|
||||
|
||||
priv->modem = g_object_ref (modem);
|
||||
|
||||
g_signal_connect (modem, NM_MODEM_PPP_STATS, G_CALLBACK (ppp_stats), self);
|
||||
g_signal_connect (modem, NM_MODEM_PPP_FAILED, G_CALLBACK (ppp_failed), self);
|
||||
g_signal_connect (modem, NM_MODEM_PREPARE_RESULT, G_CALLBACK (modem_prepare_result), self);
|
||||
g_signal_connect (modem, NM_MODEM_IP4_CONFIG_RESULT, G_CALLBACK (modem_ip4_config_result), self);
|
||||
g_signal_connect (modem, NM_MODEM_NEED_AUTH, G_CALLBACK (modem_need_auth), self);
|
||||
g_signal_connect (modem, "notify::" NM_MODEM_ENABLED, G_CALLBACK (modem_enabled_cb), self);
|
||||
}
|
||||
|
||||
static void
|
||||
set_property (GObject *object, guint prop_id,
|
||||
const GValue *value, GParamSpec *pspec)
|
||||
{
|
||||
switch (prop_id) {
|
||||
case PROP_MODEM:
|
||||
/* construct-only */
|
||||
set_modem (NM_DEVICE_MODEM (object), g_value_get_object (value));
|
||||
break;
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
get_property (GObject *object, guint prop_id,
|
||||
GValue *value, GParamSpec *pspec)
|
||||
{
|
||||
NMDeviceModemPrivate *priv = NM_DEVICE_MODEM_GET_PRIVATE (object);
|
||||
|
||||
switch (prop_id) {
|
||||
case PROP_MODEM:
|
||||
g_value_set_object (value, priv->modem);
|
||||
break;
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
finalize (GObject *object)
|
||||
{
|
||||
NMDeviceModemPrivate *priv = NM_DEVICE_MODEM_GET_PRIVATE (object);
|
||||
|
||||
g_object_unref (priv->modem);
|
||||
priv->modem = NULL;
|
||||
|
||||
G_OBJECT_CLASS (nm_device_modem_parent_class)->finalize (object);
|
||||
}
|
||||
|
||||
static void
|
||||
nm_device_modem_class_init (NMDeviceModemClass *mclass)
|
||||
{
|
||||
GObjectClass *object_class = G_OBJECT_CLASS (mclass);
|
||||
NMDeviceClass *device_class = NM_DEVICE_CLASS (mclass);
|
||||
|
||||
g_type_class_add_private (object_class, sizeof (NMDeviceModemPrivate));
|
||||
|
||||
/* Virtual methods */
|
||||
object_class->finalize = finalize;
|
||||
object_class->get_property = get_property;
|
||||
object_class->set_property = set_property;
|
||||
|
||||
device_class->get_generic_capabilities = real_get_generic_capabilities;
|
||||
device_class->get_best_auto_connection = real_get_best_auto_connection;
|
||||
device_class->connection_secrets_updated = real_connection_secrets_updated;
|
||||
device_class->check_connection_compatible = real_check_connection_compatible;
|
||||
device_class->hw_is_up = real_hw_is_up;
|
||||
device_class->hw_bring_up = real_hw_bring_up;
|
||||
device_class->deactivate_quickly = real_deactivate_quickly;
|
||||
device_class->act_stage1_prepare = real_act_stage1_prepare;
|
||||
device_class->act_stage2_config = real_act_stage2_config;
|
||||
device_class->act_stage3_ip4_config_start = real_act_stage3_ip4_config_start;
|
||||
device_class->act_stage4_get_ip4_config = real_act_stage4_get_ip4_config;
|
||||
|
||||
/* Properties */
|
||||
g_object_class_install_property
|
||||
(object_class, PROP_MODEM,
|
||||
g_param_spec_object (NM_DEVICE_MODEM_MODEM,
|
||||
"Modem",
|
||||
"Modem",
|
||||
NM_TYPE_MODEM,
|
||||
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | NM_PROPERTY_PARAM_NO_EXPORT));
|
||||
|
||||
/* Signals */
|
||||
signals[PPP_STATS] =
|
||||
g_signal_new ("ppp-stats",
|
||||
G_OBJECT_CLASS_TYPE (object_class),
|
||||
G_SIGNAL_RUN_FIRST,
|
||||
G_STRUCT_OFFSET (NMDeviceModemClass, ppp_stats),
|
||||
NULL, NULL,
|
||||
_nm_marshal_VOID__UINT_UINT,
|
||||
G_TYPE_NONE, 2,
|
||||
G_TYPE_UINT, G_TYPE_UINT);
|
||||
|
||||
dbus_g_object_type_install_info (G_TYPE_FROM_CLASS (mclass),
|
||||
nm_modem_get_serial_dbus_info ());
|
||||
}
|
||||
|
||||
54
src/nm-device-modem.h
Normal file
54
src/nm-device-modem.h
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
/* -*- 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) 2010 Red Hat, Inc.
|
||||
*/
|
||||
|
||||
#ifndef NM_DEVICE_MODEM_H
|
||||
#define NM_DEVICE_MODEM_H
|
||||
|
||||
#include <glib.h>
|
||||
#include <glib-object.h>
|
||||
|
||||
#include "nm-device.h"
|
||||
#include "nm-modem.h"
|
||||
|
||||
#define NM_TYPE_DEVICE_MODEM (nm_device_modem_get_type ())
|
||||
#define NM_DEVICE_MODEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), NM_TYPE_DEVICE_MODEM, NMDeviceModem))
|
||||
#define NM_DEVICE_MODEM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), NM_TYPE_DEVICE_MODEM, NMDeviceModemClass))
|
||||
#define NM_IS_DEVICE_MODEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NM_TYPE_DEVICE_MODEM))
|
||||
#define NM_IS_DEVICE_MODEM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), NM_TYPE_DEVICE_MODEM))
|
||||
#define NM_DEVICE_MODEM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_DEVICE_MODEM, NMDeviceModemClass))
|
||||
|
||||
#define NM_DEVICE_MODEM_MODEM "modem"
|
||||
|
||||
typedef struct {
|
||||
NMDevice parent;
|
||||
} NMDeviceModem;
|
||||
|
||||
typedef struct {
|
||||
NMDeviceClass parent;
|
||||
|
||||
void (*ppp_stats) (NMDeviceModem *self, guint32 in_bytes, guint32 out_bytes);
|
||||
} NMDeviceModemClass;
|
||||
|
||||
GType nm_device_modem_get_type (void);
|
||||
|
||||
/* Private for subclases */
|
||||
NMModem *nm_device_modem_get_modem (NMDeviceModem *self);
|
||||
|
||||
#endif /* NM_DEVICE_MODEM_H */
|
||||
|
|
@ -3485,6 +3485,7 @@ nm_device_wifi_new (const char *udi,
|
|||
NM_DEVICE_WIFI_IFINDEX, ifindex,
|
||||
NM_DEVICE_INTERFACE_TYPE_DESC, "802.11 WiFi",
|
||||
NM_DEVICE_INTERFACE_DEVICE_TYPE, NM_DEVICE_TYPE_WIFI,
|
||||
NM_DEVICE_INTERFACE_RFKILL_TYPE, RFKILL_TYPE_WLAN,
|
||||
NULL);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -52,6 +52,7 @@
|
|||
#include "nm-dhcp4-config.h"
|
||||
#include "nm-ip6-manager.h"
|
||||
#include "nm-marshal.h"
|
||||
#include "nm-rfkill.h"
|
||||
|
||||
#define NM_ACT_REQUEST_IP4_CONFIG "nm-act-request-ip4-config"
|
||||
#define NM_ACT_REQUEST_IP6_CONFIG "nm-act-request-ip6-config"
|
||||
|
|
@ -87,6 +88,7 @@ typedef struct {
|
|||
guint32 capabilities;
|
||||
char * driver;
|
||||
gboolean managed; /* whether managed by NM or not */
|
||||
RfKillType rfkill_type;
|
||||
|
||||
guint32 ip4_address;
|
||||
|
||||
|
|
@ -194,6 +196,7 @@ nm_device_init (NMDevice *self)
|
|||
priv->capabilities = NM_DEVICE_CAP_NONE;
|
||||
priv->state = NM_DEVICE_STATE_UNMANAGED;
|
||||
priv->dhcp_timeout = 0;
|
||||
priv->rfkill_type = RFKILL_TYPE_UNKNOWN;
|
||||
}
|
||||
|
||||
static GObject*
|
||||
|
|
@ -3069,6 +3072,9 @@ set_property (GObject *object, guint prop_id,
|
|||
g_free (priv->type_desc);
|
||||
priv->type_desc = g_value_dup_string (value);
|
||||
break;
|
||||
case NM_DEVICE_INTERFACE_PROP_RFKILL_TYPE:
|
||||
priv->rfkill_type = g_value_get_uint (value);
|
||||
break;
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||
break;
|
||||
|
|
@ -3145,6 +3151,9 @@ get_property (GObject *object, guint prop_id,
|
|||
case NM_DEVICE_INTERFACE_PROP_TYPE_DESC:
|
||||
g_value_set_string (value, priv->type_desc);
|
||||
break;
|
||||
case NM_DEVICE_INTERFACE_PROP_RFKILL_TYPE:
|
||||
g_value_set_uint (value, priv->rfkill_type);
|
||||
break;
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||
break;
|
||||
|
|
@ -3231,6 +3240,10 @@ nm_device_class_init (NMDeviceClass *klass)
|
|||
NM_DEVICE_INTERFACE_PROP_TYPE_DESC,
|
||||
NM_DEVICE_INTERFACE_TYPE_DESC);
|
||||
|
||||
g_object_class_override_property (object_class,
|
||||
NM_DEVICE_INTERFACE_PROP_RFKILL_TYPE,
|
||||
NM_DEVICE_INTERFACE_RFKILL_TYPE);
|
||||
|
||||
signals[AUTOCONNECT_ALLOWED] =
|
||||
g_signal_new ("autoconnect-allowed",
|
||||
G_OBJECT_CLASS_TYPE (object_class),
|
||||
|
|
|
|||
|
|
@ -30,7 +30,6 @@
|
|||
#include "nm-dbus-manager.h"
|
||||
#include "nm-vpn-manager.h"
|
||||
#include "nm-modem-manager.h"
|
||||
#include "nm-modem.h"
|
||||
#include "nm-device-bt.h"
|
||||
#include "nm-device-interface.h"
|
||||
#include "nm-device-private.h"
|
||||
|
|
@ -154,16 +153,12 @@ typedef struct {
|
|||
typedef struct {
|
||||
gboolean enabled;
|
||||
gboolean hw_enabled;
|
||||
RfKillType rtype;
|
||||
const char *desc;
|
||||
const char *key;
|
||||
const char *prop;
|
||||
const char *hw_prop;
|
||||
/* Hack for WWAN for 0.8 release; we'll start using udev
|
||||
* after 0.8 gets out.
|
||||
*/
|
||||
gboolean ignore_udev;
|
||||
RfKillState (*other_enabled_func) (NMManager *);
|
||||
gboolean (*object_filter_func) (GObject *);
|
||||
} RadioState;
|
||||
|
||||
typedef struct {
|
||||
|
|
@ -1246,8 +1241,10 @@ manager_set_radio_enabled (NMManager *manager,
|
|||
|
||||
/* enable/disable wireless devices as required */
|
||||
for (iter = priv->devices; iter; iter = iter->next) {
|
||||
if ( rstate->object_filter_func
|
||||
&& rstate->object_filter_func (G_OBJECT (iter->data)))
|
||||
RfKillType devtype = RFKILL_TYPE_UNKNOWN;
|
||||
|
||||
g_object_get (G_OBJECT (iter->data), NM_DEVICE_INTERFACE_RFKILL_TYPE, &devtype, NULL);
|
||||
if (devtype == rstate->rtype)
|
||||
nm_device_interface_set_enabled (NM_DEVICE_INTERFACE (iter->data), enabled);
|
||||
}
|
||||
}
|
||||
|
|
@ -1347,9 +1344,11 @@ nm_manager_get_modem_enabled_state (NMManager *self)
|
|||
for (iter = priv->devices; iter; iter = g_slist_next (iter)) {
|
||||
NMDevice *candidate = NM_DEVICE (iter->data);
|
||||
RfKillState candidate_state = RFKILL_UNBLOCKED;
|
||||
RfKillType devtype = RFKILL_TYPE_UNKNOWN;
|
||||
|
||||
if (NM_IS_MODEM (candidate)) {
|
||||
if (nm_modem_get_mm_enabled (NM_MODEM (candidate)) == FALSE)
|
||||
g_object_get (G_OBJECT (candidate), NM_DEVICE_INTERFACE_RFKILL_TYPE, &devtype, NULL);
|
||||
if (devtype == RFKILL_TYPE_WWAN) {
|
||||
if (!nm_device_interface_get_enabled (NM_DEVICE_INTERFACE (candidate)))
|
||||
candidate_state = RFKILL_SOFT_BLOCKED;
|
||||
|
||||
if (candidate_state > wwan_state)
|
||||
|
|
@ -1360,18 +1359,6 @@ nm_manager_get_modem_enabled_state (NMManager *self)
|
|||
return wwan_state;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
rfkill_wlan_filter (GObject *object)
|
||||
{
|
||||
return NM_IS_DEVICE_WIFI (object);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
rfkill_wwan_filter (GObject *object)
|
||||
{
|
||||
return NM_IS_MODEM (object);
|
||||
}
|
||||
|
||||
static void
|
||||
manager_rfkill_update_one_type (NMManager *self,
|
||||
RadioState *rstate,
|
||||
|
|
@ -1383,8 +1370,7 @@ manager_rfkill_update_one_type (NMManager *self,
|
|||
RfKillState composite;
|
||||
gboolean new_e = TRUE, new_he = TRUE;
|
||||
|
||||
if (!rstate->ignore_udev)
|
||||
udev_state = nm_udev_manager_get_rfkill_state (priv->udev_mgr, rtype);
|
||||
udev_state = nm_udev_manager_get_rfkill_state (priv->udev_mgr, rtype);
|
||||
|
||||
if (rstate->other_enabled_func)
|
||||
other_state = rstate->other_enabled_func (self);
|
||||
|
|
@ -1473,7 +1459,7 @@ add_device (NMManager *self, NMDevice *device)
|
|||
iface = nm_device_get_ip_iface (device);
|
||||
g_assert (iface);
|
||||
|
||||
if (!NM_IS_MODEM (device) && find_device_by_iface (self, iface)) {
|
||||
if (!NM_IS_DEVICE_MODEM (device) && find_device_by_iface (self, iface)) {
|
||||
g_object_unref (device);
|
||||
return;
|
||||
}
|
||||
|
|
@ -1505,7 +1491,7 @@ add_device (NMManager *self, NMDevice *device)
|
|||
nm_manager_rfkill_update (self, RFKILL_TYPE_WLAN);
|
||||
nm_device_interface_set_enabled (NM_DEVICE_INTERFACE (device),
|
||||
priv->radio_states[RFKILL_TYPE_WLAN].enabled);
|
||||
} else if (NM_IS_MODEM (device)) {
|
||||
} else if (NM_IS_DEVICE_MODEM (device)) {
|
||||
g_signal_connect (device, "notify::" NM_MODEM_ENABLED,
|
||||
G_CALLBACK (manager_modem_enabled_changed),
|
||||
self);
|
||||
|
|
@ -2709,11 +2695,11 @@ impl_manager_sleep (NMManager *self, gboolean sleep, GError **error)
|
|||
for (i = 0; i < RFKILL_TYPE_MAX; i++) {
|
||||
RadioState *rstate = &priv->radio_states[i];
|
||||
gboolean enabled = (rstate->hw_enabled && rstate->enabled);
|
||||
RfKillType devtype = RFKILL_TYPE_UNKNOWN;
|
||||
|
||||
if ( rstate->object_filter_func
|
||||
&& rstate->object_filter_func (G_OBJECT (device))) {
|
||||
g_object_get (G_OBJECT (device), NM_DEVICE_INTERFACE_RFKILL_TYPE, &devtype, NULL);
|
||||
if (devtype == rstate->rtype)
|
||||
nm_device_interface_set_enabled (NM_DEVICE_INTERFACE (device), enabled);
|
||||
}
|
||||
}
|
||||
|
||||
nm_device_clear_autoconnect_inhibit (device);
|
||||
|
|
@ -2858,23 +2844,21 @@ nm_manager_start (NMManager *self)
|
|||
if (!rstate->desc)
|
||||
continue;
|
||||
|
||||
if (!rstate->ignore_udev) {
|
||||
switch (nm_udev_manager_get_rfkill_state (priv->udev_mgr, i)) {
|
||||
case RFKILL_UNBLOCKED:
|
||||
enabled = TRUE;
|
||||
hw_enabled = TRUE;
|
||||
break;
|
||||
case RFKILL_SOFT_BLOCKED:
|
||||
enabled = FALSE;
|
||||
hw_enabled = TRUE;
|
||||
break;
|
||||
case RFKILL_HARD_BLOCKED:
|
||||
enabled = FALSE;
|
||||
hw_enabled = FALSE;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
switch (nm_udev_manager_get_rfkill_state (priv->udev_mgr, i)) {
|
||||
case RFKILL_UNBLOCKED:
|
||||
enabled = TRUE;
|
||||
hw_enabled = TRUE;
|
||||
break;
|
||||
case RFKILL_SOFT_BLOCKED:
|
||||
enabled = FALSE;
|
||||
hw_enabled = TRUE;
|
||||
break;
|
||||
case RFKILL_HARD_BLOCKED:
|
||||
enabled = FALSE;
|
||||
hw_enabled = FALSE;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
rstate->hw_enabled = hw_enabled;
|
||||
|
|
@ -3130,7 +3114,7 @@ nm_manager_init (NMManager *manager)
|
|||
priv->radio_states[RFKILL_TYPE_WLAN].hw_prop = NM_MANAGER_WIRELESS_HARDWARE_ENABLED;
|
||||
priv->radio_states[RFKILL_TYPE_WLAN].desc = "WiFi";
|
||||
priv->radio_states[RFKILL_TYPE_WLAN].other_enabled_func = nm_manager_get_ipw_rfkill_state;
|
||||
priv->radio_states[RFKILL_TYPE_WLAN].object_filter_func = rfkill_wlan_filter;
|
||||
priv->radio_states[RFKILL_TYPE_WLAN].rtype = RFKILL_TYPE_WLAN;
|
||||
|
||||
priv->radio_states[RFKILL_TYPE_WWAN].enabled = TRUE;
|
||||
priv->radio_states[RFKILL_TYPE_WWAN].key = "WWANEnabled";
|
||||
|
|
@ -3138,7 +3122,7 @@ nm_manager_init (NMManager *manager)
|
|||
priv->radio_states[RFKILL_TYPE_WWAN].hw_prop = NM_MANAGER_WWAN_HARDWARE_ENABLED;
|
||||
priv->radio_states[RFKILL_TYPE_WWAN].desc = "WWAN";
|
||||
priv->radio_states[RFKILL_TYPE_WWAN].other_enabled_func = nm_manager_get_modem_enabled_state;
|
||||
priv->radio_states[RFKILL_TYPE_WWAN].object_filter_func = rfkill_wwan_filter;
|
||||
priv->radio_states[RFKILL_TYPE_WWAN].rtype = RFKILL_TYPE_WWAN;
|
||||
|
||||
for (i = 0; i < RFKILL_TYPE_MAX; i++)
|
||||
priv->radio_states[i].hw_enabled = TRUE;
|
||||
|
|
|
|||
|
|
@ -34,13 +34,13 @@
|
|||
#include "nm-device.h"
|
||||
#include "nm-device-wifi.h"
|
||||
#include "nm-device-ethernet.h"
|
||||
#include "nm-device-modem.h"
|
||||
#include "nm-dbus-manager.h"
|
||||
#include "nm-setting-ip4-config.h"
|
||||
#include "nm-setting-connection.h"
|
||||
#include "nm-system.h"
|
||||
#include "nm-named-manager.h"
|
||||
#include "nm-vpn-manager.h"
|
||||
#include "nm-modem.h"
|
||||
#include "nm-policy-hosts.h"
|
||||
|
||||
typedef struct LookupThread LookupThread;
|
||||
|
|
@ -235,7 +235,7 @@ get_best_device (NMManager *manager, NMActRequest **out_req)
|
|||
}
|
||||
}
|
||||
|
||||
if (!can_default && !NM_IS_MODEM (dev))
|
||||
if (!can_default && !NM_IS_DEVICE_MODEM (dev))
|
||||
continue;
|
||||
|
||||
/* 'never-default' devices can't ever be the default */
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue