Commit Graph

9141 Commits

Author SHA1 Message Date
Jiří Klimeš
abaa17edb9 cli: fix compilation without WiMAX 2013-12-17 14:55:13 +01:00
Jiří Klimeš
4ef8696c77 cli: allow '--field group.field' for nmcli con show conf <bla>
That means you can display single property.

Example:
$ nmcli -f connection.id,802-3-ethernet.mtu s c my-eth-profile
connection.id:                          my-eth-profile
802-3-ethernet.mtu:                     auto
2013-12-17 13:52:11 +01:00
Jiří Klimeš
990f83b7d3 cli: allow '--field group.field' for nmcli con show active <bla>
Example:
$ nmcli -f general.name,ip4.address c s a myeth
GENERAL.NAME:                           myeth
IP4.ADDRESS[1]:                         ip = 10.34.25.228/23, gw = 10.34.25.254
2013-12-17 13:52:02 +01:00
Jiří Klimeš
94bb83a370 cli: allow specifying 'group.name' syntax for '--fields'
and use it for 'nmcli device show'.

This allows filtering output not only for whole groups, but also for individual
fields in commands that print data in groups (sections).

Example:
$ nmcli -f general.device,general.driver,ipv4,ipv6.address device show eth0
GENERAL.DEVICE:                         eth0
GENERAL.DRIVER:                         e1000e
IP4.ADDRESS[1]:                         ip = 10.0.5.228/23, gw = 10.0.5.254
IP4.ADDRESS[2]:                         ip = 5.5.5.5/32, gw = 5.5.5.1
IP4.DNS[1]:                             192.168.122.1
IP4.DNS[2]:                             8.8.8.8
IP4.DOMAIN[1]:                          mycompany.com
2013-12-17 13:51:34 +01:00
Jiří Klimeš
bec69e175c cli: fix bash-completion for nmcli connection load (rh #1036545)
https://bugzilla.redhat.com/show_bug.cgi?id=1036545
2013-12-17 13:23:38 +01:00
Dan Winship
d174825412 libnm-util: don't introspect nm_utils_inet[46]_ntop
nm_utils_inet4_ntop() and nm_utils_inet6_ntop() have arguments of
non-introspected types, so mark them (skip) to avoid warnings from
g-ir-scanner.
2013-12-16 13:06:52 -05:00
Jiří Klimeš
45da352c60 introspection: add missing GENERIC and TEAM device types to nm-device.xml 2013-12-16 10:52:58 +01:00
Thomas Haller
01c4992123 po/tui: add missing file to POTFILES.in
Signed-off-by: Thomas Haller <thaller@redhat.com>
2013-12-13 20:52:38 +01:00
Thomas Haller
bb9deec9ef core: fix NMDevice.ip6_use_tempaddr to avoid buffer overrun for zero char in config file
Signed-off-by: Thomas Haller <thaller@redhat.com>
2013-12-13 20:49:27 +01:00
Thomas Haller
1f71972998 core/wimax: avoid printing wrong error message in iwmx_sdk_addremove_cb
deviceid_to_index returns -1 when the deviceid was not found.
Assiging it to an unsigned variable is wrong and would result
in printing an error message when trying to remove the non existing
index.

Signed-off-by: Thomas Haller <thaller@redhat.com>
2013-12-13 17:09:18 +01:00
Thomas Haller
8fe613b4f0 core: reorder statements when creating fake AP in NMDeviceWifi:act_stage1_prepare
A fake AP should be the current access point. The code in act_stage1_prepare
violated this invariant for a short time by emitting signals before
setting current_ap. Reorder statements, so that
  - fake AP gets created and added to ap_list
  - fake AP gets set as current_ap (suppressing notify signals)
  - emit ACCESS_POINT_ADDED signal
  - thaw notify::NM_DEVICE_WIFI_ACTIVE_ACCESS_POINT signal

When performing a series of actions that emit several signals, it is
often difficult to emit them in an order, so that listeners get a
consistent view. With this change, listeners will get ACCESS_POINT_ADDED
signal, and the current ap already being set to the fake_ap. Next they
get notify::NM_DEVICE_WIFI_ACTIVE_ACCESS_POINT. There is no perfect
solution, but this way it makes slightly more sense.

Signed-off-by: Thomas Haller <thaller@redhat.com>
2013-12-13 16:50:20 +01:00
Thomas Haller
d21775ece2 core: minor code cleanup in nm-device-wimax.c
Signed-off-by: Thomas Haller <thaller@redhat.com>
2013-12-13 16:39:11 +01:00
Dan Winship
3bda3fb60c nmtui: initial import of nmtui
nmtui is a TUI (curses-based Text User Interface) for NetworkManager
2013-12-13 16:00:51 +01:00
Jiří Klimeš
72922f2068 cli: fix description of connection parameters and specify some default values 2013-12-13 09:50:09 +01:00
Dan Williams
3479cefbb2 merge: fix devices not re-activating when connections are downed (rh #1033187) 2013-12-12 14:55:33 -06:00
Jiří Klimeš
0234bd4acc policy: invoke NMPolicy::device_state_changed() after other handlers (rh #1033187)
This fixes automatic activation after changes in
commit ff7e47a418.

When a connection is deactivated impl_manager_deactivate_connection() is called
and the device goes to NM_DEVICE_STATE_DISCONNECTED. nm_device_state_changed()
then issues "state-changed" signal. The signal is connected to by various
listeners. The most interesting ones for this case are NMPolicy and
NMActiveConnection.
The problem is that NMPolicy's device_state_changed() is processed first and
thus in schedule_activate_check() we still have the old active connection
present (in ACTIVATED state).

This commit fixes the issue by connecting to "state-changed" signal using
g_signal_connect_after() in NMPolicy. This ensures NMPolicy's state-changed
handler is called after active connections are processed.

https://bugzilla.redhat.com/show_bug.cgi?id=1033187
2013-12-12 14:55:26 -06:00
Jiří Klimeš
b0fb239df3 core: clear device on NMActiveConnection when the connection is DEACTIVATED 2013-12-12 14:55:26 -06:00
Jiří Klimeš
f8da87af32 policy: remove schedule_activate_check() from FAILED handler
The call is redundant, because the device will transition to DISCONNECTED
and schedule_activate_check() will be called of this state.
2013-12-12 14:55:26 -06:00
Thomas Haller
9d319e6da0 libnm-util: refactor NMSetting name and register_settings
- refactor register_settings to allow lookup by GType and
  add the settings name to SettingInfo.

- setting NM_SETTING_NAME is deprecated and should not be set anymore.
  Indeed it has always be a bug, to reset the name to a different value.
  The only valid place to set the name was in the _init() function of
  the derived class itself.
  This is now no longer needed/possible. Instead the name get's
  detected based on the registered setting types. This makes use of
  the registered metadata that is available anyway since every
  usable setting has to register itself.

Signed-off-by: Thomas Haller <thaller@redhat.com>
2013-12-12 21:47:13 +01:00
Dan Williams
844b89d497 core: delay startup complete for carrier and fix startup-complete races (rh #1034921) (rh #1030583)
If NetworkManager is the first thing to bring an interface up, the interface may not
know its carrier state for a few seconds.  We need to block startup completion until
we're reasonably sure that all initial devices know their carrier state, so that we
can start the initial connection activation on those devices before startup is
complete.

Second, there was a small race between when the Policy decided to auto-activate
a device, and when the device actually added the pending action that blocked
startup completion, during which startup could be declared complete but actually
wasn't.  Fix that.
2013-12-12 11:18:37 -06:00
Dan Williams
2556aa32ed core: ensure 'activation' pending action encompasses full activation process
The NMActiveConnection class tracks the full activation request, and internal
activation requests go through the same process as external ones, including
some authentication.  Sometimes that means activation is scheduled, control
returns to the mainloop, and then the activation proceeds from an idle
handler.

Unfortunately, that means that adding a pending "activation" action from
nm-device.c doesn't always work, since there is a short window between when
the activation is started in nm-manager.c (in nm_manager_activate_connection())
and when the device actually changes state.  Inside that window, the pending
actions may drop to zero, and startup will be declared complete before the
device actually starts activating.

Instead, ensure that the pending action is added when the internal activation
is actually started (eg, when NMActiveConnection receives the NMDevice object).
2013-12-12 11:16:51 -06:00
Dan Williams
61463ed2ab core: delay startup complete until carrier is found or timeout (rh #1034921) (rh #1030583)
Carrier state is only valid if the network interface is IFF_UP, because drivers
are not required to do carrier detection if the device is not up.  Thus, if NM
is the first process to set the interface IFF_UP, there may be a short delay
while the driver performs carrier detection.  NetworkManager must suppress
"startup complete" during this delay to ensure that the carrier state is known
before making startup property decisions.

Previously, when NetworkManager set the interface IFF_UP, the interface would
not have a carrier for a few seconds until the driver's carrier detection was
done.  Since the interface had no carrier, NetworkManager could not begin
connection activation on the interface, and the interface would not suppress
the "startup complete" transition.  Thus, NetworkManager would declare that
startup was complete prematurely and anything depending on startup network
connectivity would fail as no interfaces were active.

https://bugzilla.redhat.com/show_bug.cgi?id=1034921
https://bugzilla.redhat.com/show_bug.cgi?id=1030583
2013-12-12 11:16:51 -06:00
Dan Williams
b2cec90b79 core: convert pending actions from a counter to a GArray
This lets us do two things:

1) ensure that pending actions are unique and not doubly added/removed
2) we can (eventually) print out the pending action list for debugging

However, since we cannot have two pending actions with the same name at
the same time, we need to change the queued device state actions to
include the state name.  But that makes debugging even more descriptive
so it's a bonus.
2013-12-12 11:16:51 -06:00
Dan Fruehauf
ee0f70cfd7 dbus: allow communication with NetworkManager-iodine VPN plugin 2013-12-12 10:53:34 -06:00
Krishna Babu K
7a24146fb1 po: updated Telugu (te) translation (bgo #720326)
https://bugzilla.gnome.org/show_bug.cgi?id=720326

Signed-off-by: Thomas Haller <thaller@redhat.com>
2013-12-12 15:15:17 +01:00
Jiří Klimeš
00de4a920a man: fix 'connection add' arguments descriptions in nmcli manual page 2013-12-12 13:27:09 +01:00
Jiří Klimeš
b5b49a4bc0 trivial: fix typo in pppoe::service property 2013-12-12 13:14:11 +01:00
Thomas Haller
00347f4655 core: rework AP handling in nm-device-wifi (Merge branch 'th/rh1025371_wifi_ap_rework')
This reworks and fixes the handling of current_ap in nm-device-wifi.

https://bugzilla.redhat.com/show_bug.cgi?id=1025371

Signed-off-by: Thomas Haller <thaller@redhat.com>
2013-12-12 11:37:52 +01:00
Thomas Haller
d0db82a19f trivial: whitespace fix
Signed-off-by: Thomas Haller <thaller@redhat.com>
2013-12-12 11:33:17 +01:00
Thomas Haller
3814179fb5 core: minor fix in find_active_ap when matching AP
Signed-off-by: Thomas Haller <thaller@redhat.com>
2013-12-12 11:33:17 +01:00
Thomas Haller
71cb57ba35 core: trivial change in nm_ap_set_ssid
Simplify check in nm_ap_set_ssid(). Note that previously there was
no bug here in case of self assignment, this just makes it more
explicit.

Signed-off-by: Thomas Haller <thaller@redhat.com>
2013-12-12 11:33:17 +01:00
Thomas Haller
3c52e383f9 wifi: always assume can_scan_ssid and use ap_scan=1 for infra mode
We should use ap_scan=1 *except* for AP/IBSS/AdHoc, where ap_scan=2 is
required.  ap_scan for "infra" mode is all historical and was for old,
crappy, and proprietary drivers that we should really stop hacking stuff
for.  Those drivers did not support probe-scanning for hidden APs and
thus the supplicant just had to send all the config to the driver and
hope things worked.

All relevant and non-crappy drivers these days support at least one SSID
probe and thus is_broadcast affecting ap_scan should no longer be
something we support.  If you have an old, crappy
WEXT/proprietary/staging driver, and you use hidden APs, you're doing it
wrong.

So, in short, we must keep the ap_scan=2 logic for AP+AdHoc, but we can
remove the is_broadcast and has_scan_capa_ssid arguments and the code
where they change ap_scan.

https://bugzilla.redhat.com/show_bug.cgi?id=1025371#c18

Signed-off-by: Thomas Haller <thaller@redhat.com>
2013-12-12 11:33:17 +01:00
Thomas Haller
1283816b41 core: cleanup handling of AP in nm-device-wifi and fix crash
rh #1025371 reports a crash in handle_ip_config_timeout() because
nm_device_wifi_get_activation_ap() did not return any access point
(line nm-device-wifi.c:3105).

In order to fix this, the whole handling of get_activation_ap vs.
current_ap was reworked and cleaned up.

This also fixes a memory leak in line nm-device-wifi.c:2111.

Also rename the functions get_active_ap (to find_active_ap) and
set_active_ap (to set_current_ap), because these two functions were not
getter/setter for an 'active_ap' property (as would be expected from the
previous name).

Also ensure, that a fake AP is never in the list of valid APs without
also being the current_ap. Whenever we reset a fake current_ap, the AP
gets removed.

https://bugzilla.redhat.com/show_bug.cgi?id=1025371

Signed-off-by: Thomas Haller <thaller@redhat.com>
2013-12-12 11:33:16 +01:00
Thomas Haller
f6c0dd2bac Revert "core: workaround crash when connecting to wifi (rh #1025371)"
This reverts commit 788eed99de.

Revert the previous workaround for the crash before cleanup the handling
of AP in nm-device-wifi.c

Signed-off-by: Thomas Haller <thaller@redhat.com>
2013-12-12 11:33:08 +01:00
Jiří Klimeš
5f3360d295 trivial: update dates in ifcfg-rh and keyfile plugins 2013-12-12 08:59:33 +01:00
Jiří Klimeš
97af7e6ee5 ifcfg-rh: read/write dhcp-send-hostname as DHCP_SEND_HOSTNAME (rh #1001529)
It is an extension compared to initscripts (not in sysconfig.txt). But it is
necessary for preserving dhcp-send-hostname. Missing DHCP_SEND_HOSTNAME is
treated as "yes", which matches dhcp-send-hostname default value being TRUE.

https://bugzilla.redhat.com/show_bug.cgi?id=1001529
2013-12-12 08:42:33 +01:00
Jiří Klimeš
98bcbd2d24 libnm-util: don't touch dhcp-send-hostname when setting dhcp-hostname (rh #1001529)
It is better to leave it to user whether he wants to enable sending hostname,
because he probably disabled it manually (dhcp-send-hostname is TRUE by default).
Also, this would not work for plugins that read and set dhcp-hostname after
dhcp-send-hostname.

https://bugzilla.redhat.com/show_bug.cgi?id=1001529
2013-12-12 08:32:13 +01:00
Thomas Haller
e299d7b30f core: workaround indefinite retries of activating connection
Workaround a serious issue, that a connection that failed to activate
might retry to autoconnect indefinitly.

In NMPolicy, device_state_changed() decrements the retry count for
autoconnect. But immediatly it calls nm_connection_clear_secrets(),
which in turn triggers an NM_SETTINGS_SIGNAL_CONNECTION_UPDATED signal.
The problem is, that connection_updated() resets the try count again to
the default, and thus, the counter was effictivly not decremented.

For now, do not reset the retry count in connection_updated(). This
works arount the issue, but means, that when a user changes the
connection, it is not immediatly retried to autoconnect (as the intent
originally was). This will be fixed later.

https://bugzilla.redhat.com/show_bug.cgi?id=1040528

Signed-off-by: Thomas Haller <thaller@redhat.com>
2013-12-11 18:56:44 +01:00
Dan Williams
5fad262b9f ethernet: add reconnect delay for PPPoE connections (rh #1023503)
Attempting an immediate reconnect if the peer terminates the connection
sometimes results in the peer not being ready to negotiate a new
connection, while a short delay allows the peer to correctly tear
down the old connection and get listen for a new one.  Introduce
a short delay when activating a PPPoE connection if a PPPoE
connection was recently deactivated.

https://bugzilla.redhat.com/show_bug.cgi?id=1023503
https://bugzilla.redhat.com/show_bug.cgi?id=602265

Rebased to master by jklimes.
2013-12-11 18:35:52 +01:00
Jiří Klimeš
df104771ae cli: support PPPoE connection type in nmcli connection editor 2013-12-11 16:54:17 +01:00
Thomas Haller
2540966492 test: update valgrind.suppressions for make check
`make check` '--with-valgrind=yes' failed due to memory leaks detected
by valgrind. These leaks originate from glib structures, and should be
ignored.

https://bugzilla.gnome.org/show_bug.cgi?id=705160

Signed-off-by: Thomas Haller <thaller@redhat.com>
2013-12-11 15:30:49 +01:00
Thomas Haller
e3f89eb432 keyfile: fix reader and writer for writing routes
Keyfile plugin writer had a bug, when writing IP6 routes with gateway
"::". Instead of writing "net/plen,,metric" it wrote "net/plen,metric".

- fix this bug and add test cases. Also, add a workaround to reader, to
  accept such wrongly written IP6 routes as valid.

- change the writer for IP4 addresses, IP4 routes and IP6 routes to
  omit the gateway and the metric, if it is 0.0.0.0/::/0, respectively.
  Also change the reader, to accept such empty gateway as valid.
  It only omits the gateway, if the metric is not 0, this means it would
  write:
      route1=1.2.3.4/24,0.0.0.0,1
  instead of
      route1=1.2.3.4/24,,1
  Both representations are now supported by the reader, but older plugin
  versions could only read the former (thus, we keep writing that
  version).
  With a metric of zero, it would instead write:
      route1=1.2.3.4/24

- some refactoring and code cleanup. Fix a memory leak.

https://bugzilla.gnome.org/show_bug.cgi?id=719851

Signed-off-by: Thomas Haller <thaller@redhat.com>
2013-12-09 18:41:38 +01:00
Thomas Haller
376aa50f5a keyfile: add test cases for reading route and addresses
Signed-off-by: Thomas Haller <thaller@redhat.com>
2013-12-09 18:26:45 +01:00
Thomas Haller
9af77c570e keyfile: be more strict when reading integer values
Signed-off-by: Thomas Haller <thaller@redhat.com>
2013-12-09 18:26:44 +01:00
Thomas Haller
8d3618a07b rdisc: emit config_change signal for update of address lifetime
Signed-off-by: Thomas Haller <thaller@redhat.com>
2013-12-09 18:07:38 +01:00
Thomas Haller
a032d82e2a core: refactor ip6_addr_to_string in nm-dns-dnsmasq
ip6_addr_to_string did assume, that inet_ntop might write a scope id to
the result. But it does not (and cannot, because struct in6_addr does
not have any interface identifer).

Simplify and rework the function.

Also fix a memory leak.

https://bugzilla.gnome.org/show_bug.cgi?id=711684

Signed-off-by: Thomas Haller <thaller@redhat.com>
2013-12-09 17:21:22 +01:00
Thomas Haller
6f2cfe263e all: refactor to make use of nm_utils_inet[46]_ntop functions
https://bugzilla.gnome.org/show_bug.cgi?id=711684

Signed-off-by: Thomas Haller <thaller@redhat.com>
2013-12-09 17:21:22 +01:00
Thomas Haller
41f8114359 libnm-util: add nm_utils_inet[46]_ntop functions
https://bugzilla.gnome.org/show_bug.cgi?id=711684

Signed-off-by: Thomas Haller <thaller@redhat.com>
2013-12-09 17:21:21 +01:00
Jiří Klimeš
d40a499c01 cli: add active connections to 'nmcli device status' 2013-12-09 12:35:43 +01:00
Thomas Haller
1c031cddf7 libnm-util: bugfix wrong diff result in nm_connection_diff
Commit 6abc7b78f6 introduced a
bug in nm_connection_diff() by not reading the property value with
g_object_get_property().

Signed-off-by: Thomas Haller <thaller@redhat.com>
2013-12-09 11:26:33 +01:00