Commit graph

6519 commits

Author SHA1 Message Date
Thomas Bechtold
015fe77b2c core: add missing system includes
for:
open(2), close(2), etc.
for types like ssize_t
2012-02-24 12:10:35 +01:00
Dan Williams
2735205eb0 core: remove invalid bond MAC address filter
There's no way to specify the MAC address bond interfaces have
since they take the MAC address of their slaves, so NMDeviceBond
doesn't implement hwaddr_matches().  This check would always
return FALSE, and thus we'd never match.
2012-02-23 00:04:00 -06:00
Dan Williams
0109ed62e9 core: const-ify nm_device_wired_get_hwaddr() 2012-02-23 00:03:50 -06:00
Colin Walters
74ec56d956 build: fix srcdir != builddir for new generated headers 2012-02-22 16:27:28 -06:00
Dan Williams
7902787263 wifi: fix compatibility with wpa_supplicant 0.7.x
The standard D-Bus PropertiesChanged signals are only in 1.0 and
later, so we also have to listen to the deprecated signals for
older supplicant versions.  We can revert this commit when we
drop support for wpa_supplicant 0.7.x.
2012-02-22 14:45:19 -06:00
Dan Winship
258d0b397c libnm-util: fix a docs typo 2012-02-21 11:22:24 -05:00
Dan Williams
92412357c3 wifi: ensure APs remain in scan list when supplicant updates them
The port to the new supplicant D-Bus API for NM 0.9 had one unfinished
piece, which was to remove old APs from the scan list when the
supplicant returned no scan results or there was a scan error.  In
this case, the removal code would not be called.  This wasn't much
of a problem until 836f7d177e which
began removing APs from the scan list correctly in this case.

This uncovered a bug in NM's wpa_supplicant management code, which
was that NM only updates its internal AP object 'last seen' timestamp
when the AP is reported by the supplicant as a completely new BSS
(in merge_scanned_ap()).  But the new supplicant D-Bus interface
only reports the BSS as "new" when the supplicant doesn't know about
the BSS, either because it is a new BSS or because it's been removed
from the supplicant's scan list at some point in the past.

Thus for BSSes that are consistently kept in the supplicant's scan
list, because the wifi driver is actually doing its job and reporting
them consistently in scan results, NM would not be updating the
'last seen' value for the corresponding NM AP objects.  Due to
836f7d177e this would cause APs that
should be kept to be removed from the NM scan list.

To fix this, have the NMAccessPoint object track which supplicant
dbus object it came from, and have NMSupplicantInterface listen for
PropertyChanged signals for those APs the supplicant knows about.
When something changes (like signal strength as the result of updated
scan results) update the AP's 'last seen' timestamp since it clearly
still exists in the scan list.  This way we update the timestamp both
when the supplicant finds a new AP and when it updates the properties
of existing APs.
2012-02-20 15:06:05 -06:00
Dan Winship
2c6bade5b9 libnm-glib: fix some property-handling warnings
Fix handle_object_array_property() to deal with receiving an empty
list correctly (rather than warning and leaving the property with its
previous value still set).

Also, add two more untracked properties that shouldn't be warned about
(NMDevice:device-type and NMActiveConnection:vpn, both of which are
only used at construct time).
2012-02-20 11:48:31 -05:00
Jiří Klimeš
7b9c728b85 docs: correct NMSettingBond documentation errors 2012-02-20 12:12:40 +01:00
Jiří Klimeš
261d760a8b netlink: fix build on libnl1/2 2012-02-20 10:55:01 +01:00
Dan Williams
0e6de5d2cf modem: get ip-timeout during modem creation
Grab it from the GetAll call where it'll already be instead
of asking for it separately.
2012-02-17 15:32:27 -06:00
Dan Williams
002155fb09 modem: get modem properties using GetAll
More efficient and less error-prone; get all the properties
in one call instead of individually.
2012-02-17 15:32:27 -06:00
Aleksander Morgado
b574524da4 modem: query desired IP timeout value
Different modem implementations in ModemManager are now able to specify specific
maximum durations of the IP configuration setup. This is useful when specific
modems need durations greater than the default 20s (for example, for Satellite
network based modems, where delays are pretty high).
2012-02-17 15:32:22 -06:00
Dan Williams
0be930c0fc core: flush timestamp cache to disk only on activate/deactivate
To suppress periodic disk wakeups, only write timestamps to disk
when a device gets activated or deactivated.  Timestamps are
still updated periodically in memory, just not flushed to disk
at that time.
2012-02-17 09:49:35 -06:00
Dan Williams
78a8afac6c release: bump version to 0.9.3.990 2012-02-16 15:39:08 -06:00
Dan Williams
cf6482baea release: update NEWS 2012-02-16 15:39:03 -06:00
Dan Williams
46eee484f9 core: fix matching VLAN connections to interfaces
The check for virtual interface name was too loose, so
restrict it to VLAN only which is what actually uses it,
and ensure we have an interface name to compare against
the device.

Found by Weiping Pan <wpan@redhat.com>
2012-02-16 15:20:51 -06:00
Dan Williams
0c61a51614 bond: move bond master interfaces to NMDeviceBond
This way clients know it's a bond master, and it allows us to more
cleanly separate the code for bonding and non-bonding cases.
2012-02-16 15:20:50 -06:00
Dan Williams
fdd44b8e00 core: handle explicit device creation on connection activation
If the connection describing the virtual device isn't set to
autoconnect, the device may not yet have been created.  In that
case, create it.
2012-02-16 15:20:50 -06:00
Dan Williams
b35afe4d0f core: automatically create VLAN interfaces when needed 2012-02-16 15:20:50 -06:00
Dan Williams
13c8d2c51e core: add NMDevice hwaddr_matches() class method
Match the device's hardware address with a connection.
2012-02-16 15:20:50 -06:00
Dan Williams
c1a66936f3 core: don't create virtual interfaces we already have
Make sure we don't already have an NMDevice for this interface
before creating it, and also when creating the interface, make
a new NMDevice for it immediately to prevent a race between
telling the kernel to create the interface via netlink, and when
udev later tells us about it.  In between there we could be
triggered to try creating the interface again.
2012-02-16 15:20:50 -06:00
Dan Williams
add5f97b38 core: make the Ethernet class aware of VLAN interfaces
Also track the VLAN ID and master interface index and validate
connections using those.
2012-02-16 15:20:50 -06:00
Dan Williams
fcce9daa15 core: add utility function nm_utils_is_uuid() 2012-02-16 15:20:50 -06:00
Weiping Pan
ccea442504 ifcfg-rh: add ifcfg-vlan writer
add write_vlan_setting() and modify test-ifcfg-rh.c to test it.

Signed-off-by: Weiping Pan <wpan@redhat.com>

(updates by dcbw for changes made to original patch series)
2012-02-16 15:20:50 -06:00
Dan Williams
0c3efb1787 vlan: rework VLAN interface creation/deletion
First make it build on libnl1/2.  Second, the VLAN
virtual interface name might not always be given in the
NMConnection (if the master is a UUID and thus the name
is determined automatically) so just take the interface
name instead.  And make sure we verify it's a VLAN
interface before deleting it.

Lastly, construct the VLAN interface name if it's not
given in the NMConnection.  This means we need to know
the master interface name when creating the connection,
which we always will since you can't create the VLAN
interface without it's master being present.  That also
means we need to return the name to the caller so it
can be used to create the NMDevice for the VLAN interface
after we've created it in the kernel.
2012-02-16 15:05:55 -06:00
Weiping Pan
ab43b7b41d vlan: create/delete kernel vlan device
We make use of libnl (>=3.2.1) to create/delete kernel vlan device,
and it can set vlan id, vlan flags and ingress/egress priority mapping.

V3:
1 nm_netlink_iface_to_index() should use slave name

V2:
1 use existing nm_netlink_iface_to_index()

Signed-off-by: Weiping Pan <wpan@redhat.com>
2012-02-16 15:05:55 -06:00
Dan Williams
b2d9fa2ecd ifcfg-rh: fix parsing of REORDER_HDR
It's a boolean value not a string.  Second, apparently the
kernel turns it on by default these days, so if it's missing
then assume it's supposed to be TRUE.
2012-02-16 15:05:55 -06:00
Dan Williams
ca689a0287 ifcfg-rh: clean up master interface/connection handling
VLAN and bonding both need it so putting these bits in the
code that creates the NMSettingConnection isn't quite right.
2012-02-16 15:05:55 -06:00
Weiping Pan
ee4b05cfc6 ifcfg-rh: add ifcfg-vlan parser
The example of ifcfg-vlan is as followed:

VLAN=yes
TYPE=Vlan
DEVICE=vlan43  or "DEVICE=eth9.43"
PHYSDEV=eth9
REORDER_HDR=0
VLAN_FLAGS=GVRP,LOOSE_BINDING
VLAN_INGRESS_PRIORITY_MAP=0:1,2:5
VLAN_EGRESS_PRIORITY_MAP=12:3,14:7
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.43.149
NETMASK=255.255.255.0

And we try to make it compitable with the format used by initscripts,
and there is no need to change anything in ifcfg-eth9.

Signed-off-by: Weiping Pan <wpan@redhat.com>

(dcbw: complete VLAN testcase)
2012-02-16 15:05:55 -06:00
Dan Williams
552c9959cc libnm-util: various cleanups and documentation fixes
Add documentation so the API spec generator can do something
for the VLAN setting.  Also enforce validation of the ingress
and egress priority maps; 802.1D priorities are limited to
values from 0 - 7 and Linux SKB values are 32 bits.

Also, the 'slave' property is a duplicate of the 'master'
property added to NMSettingConnection in the bonding work
so we can get rid of it and use 'master' instead.
2012-02-16 15:05:55 -06:00
Weiping Pan
23c1b6ad30 libnm-util: add VLAN setting and properties
Signed-off-by: Weiping Pan <wpan@redhat.com>

(dcbw: formatting cleanups and priority map code simplifications)
2012-02-16 15:05:55 -06:00
Dan Williams
3f963d308a build: fix distcheck due to missing ifcfg-rh test files 2012-02-16 15:05:26 -06:00
Dan Williams
8572ecfd7c libnm-glib: don't crash on unknown object types
Like when an old libnm-glib is being run against a newer NM when
a new device type has been added.
2012-02-16 12:54:47 -06:00
Dan Williams
836f7d177e wifi: fix removal of APs from the scan list when it doesn't change
Due to an omission in the port to the new supplicant D-Bus API
during the 0.9 cycle, if the scan list didn't change, APs may
not have been removed properly from the scan list.
2012-02-16 12:54:42 -06:00
Thomas Graf
4f166d719b bonding: convert individual bonding options to a dict
Removes all bonding options properties and adds a "options" dict to hold
them all. Accessible via accessor functions. ifcfg interface is
unchanged.

Signed-off-by: Thomas Graf <tgraf@redhat.com>
2012-02-15 21:49:05 -06:00
Thomas Graf
5a3e1caec1 ifcfg-rh: add bonding test cases
Adds two simple test cases for bonding masters and bonding slaves.

Signed-off-by: Thomas Graf <tgraf@redhat.com>
2012-02-15 21:28:33 -06:00
Dan Williams
7b48862ef6 build: fix distcheck 2012-02-15 19:38:18 -06:00
Dan Williams
cd2603c713 api: fix various Infiniband introspection XML omissions 2012-02-15 17:32:41 -06:00
Dan Winship
839eab5564 Use glib-mkenums to generate enum types
Rather than generating enum classes by hand (and complaining in each
file that "this should really be standard"), use glib-mkenums.

Unfortunately, we need a very new version of glib-mkenums in order to
deal with NM's naming conventions and to fix a few other bugs, so just
import that into the source tree temporarily.

Also, to simplify the use of glib-mkenums, import Makefile.glib from
https://bugzilla.gnome.org/654395.

To avoid having to run glib-mkenums for every subdirectory of src/,
add a new "generated" directory, and put the generated enums files
there.

Finally, use Makefile.glib for marshallers too, and generate separate
ones for libnm-glib and NetworkManager.
2012-02-15 11:42:15 -05:00
Jiří Klimeš
0b57cc68fd examples: fix dependency on GDBus (it's available only in GLib >= 2.26) 2012-02-14 09:03:21 +01:00
Ryan Lortie
227f36d3d5 core: #include <netinet/in.h> for struct in6_addr
commit ae34fa900b introduced a new
function nm_netlink_route6_add().  Its declaration in the header
includes a parameter with type 'struct in6_addr', but the proper
system header for that type was not included.
2012-02-13 17:44:07 -05:00
Jiri Popelka
1e4ccb39d4 firewall: add remove_from_zone()
nm_firewall_manager_remove_from_zone() is called from
nm_device_deactivate()

Also fix nm_firewall_manager_add_to_zone() to the latest
FirewallD1.zone.addInterface signature.
2012-02-13 13:23:20 -06:00
Jiri Popelka
dc385c25cf firewall: update FirewallD DBus service & path & interface 2012-02-13 13:12:01 -06:00
Dan Williams
ae34fa900b core: fix erroneous IPv6 routes by making route addition typesafe
Add two helper functions, one for IPv4 and one for IPv6, to ensure
that the core code benefits from compiler type checking when adding
routes.  Previously nm_netlink_route_add() took a void* which meant
we messed up adding IPv6 routes sometimes due to confusion over
what was supposed to be passed to it.  Also fixes what appears to
be a C&P error with add_ip6_route_to_gateway().

Reported by Tomáš Trnka <tomastrnka@gmx.com>
2012-02-13 13:10:23 -06:00
Jiří Klimeš
0c83e6e3b1 examples: add C example for monitoring overall NetworkManager state 2012-02-13 15:41:35 +01:00
Alexandre Rostovtsev
fe29aa967c ifnet: properly unquote hostnames with g_shell_unquote() (bgo #669148)
If /etc/conf.d/hostname contains "hostname='foo'", then the hostname
needs to be set to "foo", not "'foo'".

https://bugzilla.gnome.org/show_bug.cgi?id=669148
2012-02-13 11:03:28 +01:00
Dan Williams
a9c22166f6 libnm-glib: ensure some new private symbols stay private
_ is our "private" prefix.
2012-02-10 15:03:12 -06:00
Dan Williams
643f0a151c build: fix build breakage caused by b378c3089c 2012-02-10 14:56:35 -06:00
Dan Williams
4041ca7e3e core: trivial device creation cleanup
We really need an NMDevice here, so just call it that instead of
GObject.
2012-02-10 12:21:10 -06:00