Merge remote branch 'origin/master' into cli-output

This commit is contained in:
Dan Williams 2010-04-01 07:46:19 -07:00
commit 3ccd948f3a
44 changed files with 8801 additions and 1553 deletions

View file

@ -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

View file

@ -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>

View file

@ -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>

View file

@ -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

View file

@ -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;

View file

@ -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:

View file

@ -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);

View file

@ -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,

View file

@ -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));

View file

@ -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)
{

View file

@ -35,6 +35,7 @@ ku
lt
lv
mk
ml
mr
nb
ne

View file

@ -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
View file

@ -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"

1170
po/es.po

File diff suppressed because it is too large Load diff

1487
po/eu.po

File diff suppressed because it is too large Load diff

287
po/kn.po
View file

@ -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 ಜಾಲಬಂಧದ ಮೂಲಕ ಸಂಪರ್ಕ ಸಾಧಿಸದಂತೆ ವ್ಯವಸ್ಥೆಯ ನಿಯಮಗಳು ತಡೆಯುತ್ತವೆ"

1320
po/ml.po Normal file

File diff suppressed because it is too large Load diff

373
po/or.po
View file

@ -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&amp;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 ନେଟୱର୍କରେ ସଂଯୋଗ ସହଭାଗ କରିବାରେ ବାରଣ କରିଥାଏ"

1419
po/pl.po

File diff suppressed because it is too large Load diff

1193
po/sv.po

File diff suppressed because it is too large Load diff

View file

@ -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 \

View file

@ -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)
{

View file

@ -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 */

View file

@ -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

View file

@ -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 */

View file

@ -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

View file

@ -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 */

View file

@ -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"

View file

@ -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))

View file

@ -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

View file

@ -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;
}

View file

@ -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) {

View file

@ -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);
}

View file

@ -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;

View file

@ -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);
}

View file

@ -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;

View file

@ -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;
}

View file

@ -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
View 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
View 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 */

View file

@ -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);
}

View file

@ -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),

View file

@ -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;

View file

@ -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 */