Commit graph

3926 commits

Author SHA1 Message Date
Jiří Klimeš
1eb9c5e352 logging: add "VLAN" log domain 2012-11-07 13:58:47 +01:00
Jiří Klimeš
8437b07581 logging: add "BOND" log domain 2012-11-07 13:58:47 +01:00
Jiří Klimeš
8fbd24c9b4 logging: add new combined log domains
ALL  - for setting all log domains
DHCP - for DHCP4 combined with DHCP6
IP   - for IP4 combined with IP6
2012-11-07 13:58:47 +01:00
Dan Williams
3f179d74e2 build: decouple systemd session tracking from systemd suspend/resume
New option --with-suspend-resume=[upower|systemd] which defaults
to systemd if you have systemd >= 183 with the inhibit support,
otherwise upower.  Allows you to use systemd session tracking
simultaneously with upower for suspend/resume if you don't have
system >= 183.
2012-11-06 15:10:03 -06:00
Dan Williams
0180f461ef build: clarify systemd-login build flags
systemd gets used for more than just systemd-login.
2012-11-06 14:11:05 -06:00
Jiří Klimeš
2ff378b44b settings: do not emit "REMOVED" signal in do_delete() (bgo #683800)
It is emitted in nm_settings_connection_remove() called by plugins when the
connection was removed.
This prevents the signal from appearing twice on D-Bus.

Signed-off-by: Jiří Klimeš <jklimes@redhat.com>
2012-11-06 14:19:29 +01:00
Pavel Šimerda
d82669d3fd build: unify NetworkManager path handling (some paths are changed)
Use autoconf/automake variables for NetworkManager paths. Use
NetworkManager subdirectory where appropriate.

Files in /var/run (or /run on some distros) are moved into a separate
directory as is usual with other daemons. It makes the filesystem
more readable and file prefixing unnecessary.

/var/run/NetworkManager.pid -> /var/run/NetworkManager/NetworkManager.pid
/var/run/nm-dns-dnsmasq.pid -> /var/run/NetworkManager/dnsmasq.pid
/var/run/nm-dns-dnsmasq.conf -> /var/run/NetworkManager/dnsmasq.conf

The /var/run/NetworkManager directory is created at runtime, if it doesn't
exist.

Note: Path-based security policies like SELinux and AppArmor may need to
be adapted.
2012-11-05 14:01:47 +01:00
Dan Winship
a7eb347655 ifcfg-rh: /etc/hostname should override /etc/sysconfig/network
When determining the system hostname, /etc/hostname should override
/etc/sysconfig/network, so monitor both files.

When setting the hostname, set it in /etc/hostname, and delete the
/etc/sysconfig/network HOSTNAME entry if present.

https://bugzilla.redhat.com/show_bug.cgi?id=831735
2012-11-02 11:20:31 -04:00
Pavel Šimerda
00f1d251b4 trivial: remove obsolete HAVE_SELINUX conditional sections
This macro is not defined by the build system.
2012-11-02 01:27:34 +01:00
Jiří Klimeš
a44d36e628 wifi: fix AP mode check in nm_ap_check_compatible()
AP can only be compatible with "ap"-mode connection when both mode is INFRA and
hotspot flag is set.
2012-11-01 14:52:14 +01:00
Jiří Klimeš
aa8c3d72d6 wifi: fix wifi device 'mode' property for AP mode 2012-11-01 14:52:14 +01:00
Jiří Klimeš
eeb19fe216 keyfile: don't rename system connection files (bgo #682570)
When updating connections, it is less confusing to reuse the existing file
instead of renaming files according to connection's ID. That reduces surprises
of moving connection files when a connection is edited.
2012-11-01 11:59:00 +01:00
Colin Walters
1977fb6c49 build: clean up GLib-related pkg-config usage (bgo #687218)
We had separate checks for glib-2.0, gobject-2.0, gmodule-2.0, and
gio-unix-2.0.  It doesn't make sense to link a binary against all 4
because gio-unix-2.0 depends on glib-2.0 and gobject-2.0.  Doing this
actually breaks things in unusual circumstances.

Generally, few bits of NM actually just use glib, and not gio.  We
might as well coalesce those requirements together, even if it means
in some cases we "overlink".  Additionally, I chose for now to fold
gmodule-2.0 in as well, even though many fewer programs need it.  The
cost of overlinking is quite small.

The benefit of this is less repeated junk in Makefile.am, as well as
more centralized control over GLib.  A followup patch will allow us to
set -DGLIB_VERSION_MIN_REQUIRED in just one place, rather than having
to replicate it 4 times.

The NM configure is still suboptimal - for example, libpolkit-1
depends on gio-2.0, so really we should determine the compiler flags
all in one pass.  But it doesn't matter too much for now.
2012-10-31 21:08:18 +01:00
Colin Walters
59f2cd0f8d build: remove G_DISABLE_DEPRECATED
This functionality is (mostly) obsoleted by the newer
GLIB_VERSION_MIN_REQUIRED and GLIB_VERSION_MAX_ALLOWED defines.  With
this, your build doesn't all of a sudden blow up if we deprecate
something in GLib - you have to explicitly opt-in to the newer
version.

G_DISABLE_DEPRECATED does still apply for macros and things that can't
take __attribute__((deprecated)), but it's not really worth the pain
and cargo culting around just for that.
2012-10-31 19:41:07 +01:00
Aleksander Morgado
6853518852 manager: trivial fix in object type in signal callback 2012-10-30 18:34:26 -05:00
Aleksander Morgado
fb9ece78c4 modem-manager: fix several code alignment issues 2012-10-30 18:34:26 -05:00
Aleksander Morgado
6e8b3dadea modem-manager, gsm, cdma: remove 'signal_quality' callback definitions
They are nowhere used.
2012-10-30 18:34:26 -05:00
Aleksander Morgado
7314e37061 modem-manager, gsm: keep the "Connect" DBus call handler around
So that the call gets properly cancelled when deactivating.
2012-10-30 18:34:26 -05:00
Aleksander Morgado
a8f7a45e3f modem-manager: rework interface related properties in `NMModem'
The logic behind the `iface' property (which actually is removed) gets split
into three new properties, as follows::

 * `uid': Just defines a new string property which must contain a unique ID of
    the modem, mainly for logging.

 * `control-port': a string property defining which is the control port the
    modem uses. This property is actually optional and may be specified as NULL.
    The main purpose of this property is to allow the easy integration of the
    new ModemManager into the `NMDeviceBt' object. The bluetooth device needs
    to know the port used by the modem; and we cannot use the Data port
    information as that is only available until the bearer is created. Instead,
    for the new ModemManager we will use the control port information exposed.

 * `data-port': a string property defining which is the data port to use in the
    connection. This property is always defined in the `NMModemGsm' and
    `NMModemCdma' objects.
2012-10-30 18:34:26 -05:00
Aleksander Morgado
1f0dbd6790 modem-manager: let the `NMDeviceModem' handle hw_is_up() and hw_bring_up()
These actions don't require anything from the `NMModem' object, so just move
them back to `NMDeviceModem'.
2012-10-30 18:24:28 -05:00
Aleksander Morgado
24b6fc9e62 modem-manager: switch the state' property from NMModem' into just `connected'
We don't want to depend in the `NMModem' interface on an enumeration which is
very specific to the old ModemManager interface, so we'll just skip exposing it
and instead we'll just give a new boolean property which tells whether the modem
is connected or not (which was at the end the whole purpose of the `state'
property).
2012-10-30 18:24:25 -05:00
Aleksander Morgado
f98ef0fdc4 modem-manager: remove the device' property from NMModem'
This property is not really used anywhere; so pointless to have it around.

Also, we already make sure in `NMModemManager' that the so called 'master'
device is valid and exists.
2012-10-30 18:24:21 -05:00
Aleksander Morgado
1eca1b2648 modem-manager: split the `NMModem' object
The `NMModem' object is split into two objects now:

 * The new `NMModemGeneric' object contains all the implementation specific to
   the old ModemManager interface.

 * The `NMModem' object keeps all the generic stuff; e.g. it doesn't even depend
   on dbus-glib for anything. Several properties in `NMModem' are also now set
   as non-construct-only, as we know that the new ModemManager only knows some
   of the stuff once a bearer has been created, not once a modem is available.

See src/modem-manager/README for more information.
2012-10-30 18:24:17 -05:00
Colin Walters
77264eb682 build: various srcdir != builddir fixes 2012-10-30 12:24:26 -05:00
Pavel Šimerda
012c5f4b27 distro: replace --with-distro with feature-based options (bgo #663602)
Distribution-specific builds are now handled by feature and not by
distro. This allows you to fine-tune the options to your liking and
also allowed us to reduce the number of specific values.

The default values of these options are still derived from *-version
and *-release files in /etc.

The following five distribution-specific features are now available
(and default on distributions in parenthesis):

  --enable-ifcfg-rh (Fedora, RHEL and Mandriva)
  --enable-ifcfg-suse (SUSE)
  --enable-ifupdown (Debian and Ubuntu)
  --enable-ifnet (Gentoo)
  --with-netconfig (SUSE)

Since --with-distro is now removed, there is nothing to prevent generic
builds. If you build on an unknown distribution, all of the features
above will be disabled by default.
2012-10-30 00:36:05 +01:00
Pavel Šimerda
71e5437f18 distro: add --with-netconfig option for SUSE
NetworkManager can use resolvconf and netconfig as alternatives
to direct modifications to /etc/resolv.conf. You can now choose
whether to build with netconfig or not.

The default is --with-netconfig=yes on SUSE and --with-netconfig=no
on other distributions. Default --with-resolvconf=no still applies
on any distribution.
2012-10-30 00:35:57 +01:00
Dan Williams
b8e7e50c80 olpc: ensure correct teardown of mesh device and companion wifi
If the mesh device gets removed first, ensure it cleans up its
signal handlers so they don't get called when the wifi device
is removed.  Fixes warnings on NM shutdown where the mesh device
object could be used after being freed.
2012-10-25 14:23:50 -05:00
Colin Walters
fed48417c3 Revert "core: import libgsystem, use it for local-allocations in main.c (bgo #685440)"
This reverts commit 89623b99c4 pending
further discussion.

See: https://mail.gnome.org/archives/networkmanager-list/2012-October/msg00065.html
2012-10-23 16:40:46 -05:00
Dan Winship
ad74379c2c core, libnm-glib: expose "slaves" property on NMDeviceBond
https://bugzilla.gnome.org/show_bug.cgi?id=686367
2012-10-19 12:09:27 -04:00
Jiří Klimeš
f1bb254b4b core: use IN6_IS_ADDR_UNSPECIFIED() macro to test against ::
That expresses the intention more explicitly and simplifies the code a bit.
Also, the g_assert (gw_addr) is not necessary any more.
2012-10-18 11:18:59 +02:00
Dan Williams
3d9d70822c core: fix routing crash with WWAN/PTP configurations
Some configurations won't have a gateway address, because they
are point-to-point (/32).  The previous code expected one and
asserted if a gateway was not found; but even without the
assertion, other code expected a non-NULL gateway.  Handle that
by defaulting the gateway to 0.0.0.0 (IPv4) or :: (IPv6) and
override that with a better gateway if we have one, otherwise
just use 0.0.0.0/:: since we already know the IP config we're
settings should be the default one.
2012-10-18 11:18:51 +02:00
Dan Williams
7c34a37e73 wifi: mode changes must happen when device is down
With both WEXT and nl80211; this wasn't an issue before because
devices can still scan in adhoc mode.  But we do need to ensure
that the device is in Infrastructure mode when we deactivate a
Hotspot.
2012-10-17 14:07:37 -05:00
Dan Williams
25f9801ebd wifi: implement nl80211 set_mode hook
We do need it to ensure the device is in Infrastructure mode when
deactivating a Hotspot.
2012-10-17 14:07:37 -05:00
Dan Williams
dadff884a3 wifi: update Hotspot AP object with BSSID and frequency when known
Since the frequency and/or BSSID may not be known immediately, it's
nice to update the export AP object when we do know them, so you
don't end up with missing information like:

SSID     BSSID               MODE FREQ
'testap' 00:00:00:00:00:00   AP   0 MHz

Note that the "rate" is never updated, because in AP-mode the bitrate
is actually different for each client, so no single rate makes sense.
2012-10-17 14:07:36 -05:00
Dan Williams
f83ae16d10 wifi: request scan after deactivating a hotspot connection
Otherwise it might be a while until a scan gets done.
2012-10-17 14:06:54 -05:00
Dan Williams
28ebea3440 wifi: various AP mode fixups
Scanning doesn't work well in AP mode, because then you're off-channel
and not serving your clients, which isn't good for anyone.  Plus,
nl80211 refuses to scan in AP mode anyway, so just don't scan.

Second, track the device's mode based on the connection we're activating
or have activated, not based on whatever mode the kernel drivers are
using that second.  That is  more consistent, since there's a race between
when the connection starts being activated, when the device will be in
INFRA mode, and when the supplicant actually gets around to changing the
mode.

Third, fix various other codepaths that weren't quite expecting AP mode.
2012-10-17 14:06:54 -05:00
Dan Williams
b89990ae2c wifi: detect whether supplicant supports AP mode or not
And return an error when trying to activate an AP mode connection
if the supplicant does not support it.

With wpa_supplicant 1.0 and earlier there is no way to positively detect
whether AP mode is supported, so we simply try to start AP mode
and then fail if it doesn't work.

With more recent versions we can check the Introspection data
(if the supplicant has been built with introspection enabled) or
check the global Capabilities (if the supplicant is recent enough)
for positive indication of AP mode support.
2012-10-17 14:06:51 -05:00
Dan Williams
323ff852ba trivial: fix AP mode message log level 2012-10-17 12:08:12 -05:00
Jan Luebbe
f9c72dee3e wifi: support ap-mode with wpa_supplicant
A new value for NM80211Mode is introduced (NM_802_11_MODE_AP) and the
new mode is passed to wpa_supplicant analogous to adhoc-mode.
The places which need to know the interface mode have been extended to
handle the new mode.

If the configuration does not contain a fixed frequency, a channel is
selected the same way as with adhoc-mode before.
2012-10-17 12:08:11 -05:00
Colin Walters
89623b99c4 core: import libgsystem, use it for local-allocations in main.c (bgo #685440)
See http://git.gnome.org/browse/libgsystem/tree/README
for a description of libgsystem.

What we specifically are using it for here is the local allocation
macros; this patch just modifies main.c as a demo.

Note this patch fixes a double-free in an error condition in
check_pidfile(); those sort of mistakes are basically impossible
to make when using these macros.
2012-10-16 12:08:03 -05:00
Jiří Klimeš
65029e0f89 settings: update seen-bssids property in 802-11-wireless setting for GetSettings
https://bugzilla.gnome.org/show_bug.cgi?id=672501
2012-10-16 15:48:41 +02:00
Dan Williams
dd42da51a8 core: fix suspend/resume signal names which the manager listens for
Introduced in 64fd8eea7706038e5d38c8463a1c765ed9331db2; but honestly
I also thought GObject lower-cased signal names since it munges them
for - and _ too.  Apparently not.
2012-10-14 10:44:34 -05:00
Dan Williams
c5744bc73d core: DBusGConnections are not GObjects
Introduced in 64fd8eea77.
2012-10-14 10:43:54 -05:00
Matthias Clasen
ea0c3a3e0f core: add a systemd suspend/resume monitor (bgo #677694)
This implementation uses a delay inhibitor to get systemd to
emit PrepareForSleep, and then emits ::Sleeping and ::Resuming
when receiving the before/after PrepareForSleep emissions.
2012-10-13 09:20:00 -05:00
Matthias Clasen
64fd8eea77 core: factor out the upower suspend/resume code (bgo #677694)
Factor the code that listens for upower sleeping and resuming
signals out into a class code NMSleepMonitor.
2012-10-13 09:20:00 -05:00
Dan Williams
27a14a7d11 core: fix routing if gateway not given in the first address
The gateway doesn't have to be there, but can be associated with
any address.  NM should look through all addresses and find the
first usable gateway.  Previously it was just using the first
address' gateway even if it was 0.

Broken by 2384dea3 (policy: split routing and DNS updates)
2012-10-11 17:07:21 -05:00
Marius Kotsbak
b4f2f6f596 ifupdown: fix for compile error 2012-10-11 15:49:50 -05:00
Jiří Klimeš
b95b6c8aa1 core: fix a crash due to GValueArray/GArray freeing mismatch (rh #865009) 2012-10-11 15:41:48 +02:00
Aleksander Morgado
8aac52bce3 device: clear nm_device_state_changed() re-entry check on early exit 2012-10-10 11:03:50 -05:00
Dan Williams
4cccab61ab supplicant: handle some D-Bus spawn errors better
If D-Bus fails to spawn the supplicant it sometimes returns a method
timeout error instead of a spawn error.  We've seen that happen on
F18 when systemd is used to autolaunch the supplicant.  That causes
NM to assume that the supplicant crashed and thus never try to talk
to it again, on the assumption that (a) it crashed and (b) it will
crash again if we try to use it, and thus we'll be in a spawn loop.

First, (a) is not necessarily the case, and second, the supplicant
doesn't crash like that anymore.  So we're pretty safe to just talk
to the supplicant if it starts later instead of ignoring it if
we detect the timeout error.
2012-10-06 17:08:53 -05:00