NetworkManager/libnm
Thomas Haller 4eeb4b1bdd all: avoid byte ordering issue for IP4Config's Nameservers/WinsServers on D-Bus
Some properties in NetworkManager's D-Bus API are IPv4 addresses
in network byte order (big endian). That is problematic.

It is no problem, when the NetworkManager client runs on the same
host. That is the case with libnm, which does not support to be used
remotely for the time being.

It is a problem for an application that wants to access the D-Bus
interface of NetworkManager remotely. Possibly, such an application
would be implemented in two layers:

 - one layer merely remotes D-Bus, without specific knowledge of
   NetworkManager's API.

 - a higher layer which accesses the remote D-Bus interface of NetworkManager.
   Preferably it does so in an agnostic way, regardless of whether it runs
   locally or remotely.

When using a D-Bus library, all accesses to 32 bit integers are in
native endianness (regardless of how the integer is actually encoded
on the lower layers). Likewise, D-Bus does not support annotating integer
types in non-native endianness. There is no way to annotate an integer
type "u" to be anything but native order.
That means, when remoting D-Bus at some point the endianness must be
corrected.
But by looking at the D-Bus introspection alone, it is not possible
to know which property need correction and which don't. One would need
to understand the meaning of the properties.

That makes it problematic, because the higher layer of the application,
which knows that the "Nameservers" property is supposed to be in network
order, might not easily know, whether it must correct for endianness.

Deprecate IP4Config properties that are only accessible with a particular
endianness, and add new properties that expose the same data in an
agnostic way.

Note that I added "WinsServerData" to be a plain "as", while
"NameserverData" is of type "aa{sv}". There is no particularly strong
reason for these choices, except that I could imagine that it could be
useful to expose additional information in the future about nameservers
(e.g. are they received via DHCP or manual configuration?). On the other
hand, WINS information likely won't get extended in the future.

Also note, libnm was not modified to use the new D-Bus fields. The
endianness issue is no problem for libnm, so there is little reason to
change it (at this point).

https://bugzilla.redhat.com/show_bug.cgi?id=1153559
https://bugzilla.redhat.com/show_bug.cgi?id=1584584
2018-08-01 14:27:20 +02:00
..
fake-typelib build: add initial support for meson build system 2017-12-13 15:48:50 +01:00
tests build: create "config-extra.h" header instead of passing directory variables via CFLAGS 2018-07-17 17:46:39 +02:00
generate-plugin-docs.pl build: Make generate-plugin-docs.pl independent of autotools 2017-12-16 15:12:33 +01:00
generate-setting-docs.py generate-setting-docs.py: remove unreachable code in get_default_value() 2018-07-11 12:02:06 +02:00
libnm.pc.in libnm,pkg-config: provide a variable with VPN service directory 2015-08-19 15:13:11 +02:00
libnm.ver libnm: add nm_device_ovs_*_get_slaves() 2018-07-24 20:16:12 +02:00
meson.build meson: run the check-export.sh in test phase 2018-06-28 20:38:52 +02:00
NetworkManager.h libnm-core: add SR-IOV setting 2018-07-11 16:16:22 +02:00
nm-access-point.c all: don't use gchar/gshort/gint/glong but C types 2018-07-11 12:02:06 +02:00
nm-access-point.h all: don't use gchar/gshort/gint/glong but C types 2018-07-11 12:02:06 +02:00
nm-active-connection.c all: remove consecutive empty lines 2018-04-30 16:24:52 +02:00
nm-active-connection.h libnm: add NMActivationStateFlags 2017-10-05 11:50:31 +02:00
nm-autoptr.h libnm: add g_autoptr function for more types 2018-07-26 12:26:18 +02:00
nm-checkpoint.c libnm: add nm_utils_get_timestamp_msec() 2018-06-15 16:23:30 +02:00
nm-checkpoint.h libnm: add checkpoint support 2017-11-09 10:12:30 +01:00
nm-client.c all: don't use gchar/gshort/gint/glong but C types 2018-07-11 12:02:06 +02:00
nm-client.h all: remove consecutive empty lines 2018-04-30 16:24:52 +02:00
nm-dbus-helpers.c all: don't use gchar/gshort/gint/glong but C types 2018-07-11 12:02:06 +02:00
nm-dbus-helpers.h build: refine the NETWORKMANAGER_COMPILATION define 2018-01-08 12:38:53 +01:00
nm-device-6lowpan.c libnm: add support form 6LoWPAN devices 2018-06-26 16:21:55 +02:00
nm-device-6lowpan.h libnm: add support form 6LoWPAN devices 2018-06-26 16:21:55 +02:00
nm-device-adsl.c all: remove consecutive empty lines 2018-04-30 16:24:52 +02:00
nm-device-adsl.h include: use double-quotes to include our own headers 2017-03-09 14:12:35 +01:00
nm-device-bond.c all/trivial: grammar fix 2018-07-10 13:12:02 +02:00
nm-device-bond.h include: use double-quotes to include our own headers 2017-03-09 14:12:35 +01:00
nm-device-bridge.c all/trivial: grammar fix 2018-07-10 13:12:02 +02:00
nm-device-bridge.h include: use double-quotes to include our own headers 2017-03-09 14:12:35 +01:00
nm-device-bt.c all: change handling of connection.type for bluetooth NAP and in general 2017-06-07 09:07:17 +02:00
nm-device-bt.h include: use double-quotes to include our own headers 2017-03-09 14:12:35 +01:00
nm-device-dummy.c libnm: add 'hw-address' property to NMDeviceDummy 2017-06-30 22:04:03 +02:00
nm-device-dummy.h libnm: add 'hw-address' property to NMDeviceDummy 2017-06-30 22:04:03 +02:00
nm-device-ethernet.c doc: add units to some libnm (and libnm-glib) function docs 2018-05-23 16:17:03 +02:00
nm-device-ethernet.h include: use double-quotes to include our own headers 2017-03-09 14:12:35 +01:00
nm-device-generic.c libnm: use the o.fd.DBus.ObjectManager API for object management 2016-11-10 16:48:48 +01:00
nm-device-generic.h include: use double-quotes to include our own headers 2017-03-09 14:12:35 +01:00
nm-device-infiniband.c libnm: use the o.fd.DBus.ObjectManager API for object management 2016-11-10 16:48:48 +01:00
nm-device-infiniband.h include: use double-quotes to include our own headers 2017-03-09 14:12:35 +01:00
nm-device-ip-tunnel.c ip-tunnel: add support for tunnel flags 2018-01-05 18:25:08 +01:00
nm-device-ip-tunnel.h ip-tunnel: add support for tunnel flags 2018-01-05 18:25:08 +01:00
nm-device-macsec.c libnm: (trivial): add missing return description in comment block 2017-01-17 10:34:16 +01:00
nm-device-macsec.h include: use double-quotes to include our own headers 2017-03-09 14:12:35 +01:00
nm-device-macvlan.c all: remove consecutive empty lines 2018-04-30 16:24:52 +02:00
nm-device-macvlan.h include: use double-quotes to include our own headers 2017-03-09 14:12:35 +01:00
nm-device-modem.c libnm: use the o.fd.DBus.ObjectManager API for object management 2016-11-10 16:48:48 +01:00
nm-device-modem.h include: use double-quotes to include our own headers 2017-03-09 14:12:35 +01:00
nm-device-olpc-mesh.c libnm: use the o.fd.DBus.ObjectManager API for object management 2016-11-10 16:48:48 +01:00
nm-device-olpc-mesh.h include: use double-quotes to include our own headers 2017-03-09 14:12:35 +01:00
nm-device-ovs-bridge.c libnm: add accessors for ovs port/bridge slaves 2018-07-10 13:12:07 +02:00
nm-device-ovs-bridge.h libnm: add accessors for ovs port/bridge slaves 2018-07-10 13:12:07 +02:00
nm-device-ovs-interface.c libnm: add support for ovs-interface devices 2017-10-30 17:40:08 +01:00
nm-device-ovs-interface.h libnm: add support for ovs-interface devices 2017-10-30 17:40:08 +01:00
nm-device-ovs-port.c libnm: add accessors for ovs port/bridge slaves 2018-07-10 13:12:07 +02:00
nm-device-ovs-port.h libnm: add accessors for ovs port/bridge slaves 2018-07-10 13:12:07 +02:00
nm-device-ppp.c device: add NMDevicePPP 2017-08-05 08:03:15 +02:00
nm-device-ppp.h device: add NMDevicePPP 2017-08-05 08:03:15 +02:00
nm-device-private.h libnm: use the o.fd.DBus.ObjectManager API for object management 2016-11-10 16:48:48 +01:00
nm-device-team.c gobject-introspection: made several fixes to the annotations 2018-03-26 12:45:49 +02:00
nm-device-team.h include: use double-quotes to include our own headers 2017-03-09 14:12:35 +01:00
nm-device-tun.c libnm: use the o.fd.DBus.ObjectManager API for object management 2016-11-10 16:48:48 +01:00
nm-device-tun.h include: use double-quotes to include our own headers 2017-03-09 14:12:35 +01:00
nm-device-vlan.c libnm: use the o.fd.DBus.ObjectManager API for object management 2016-11-10 16:48:48 +01:00
nm-device-vlan.h include: use double-quotes to include our own headers 2017-03-09 14:12:35 +01:00
nm-device-vxlan.c libnm: use the o.fd.DBus.ObjectManager API for object management 2016-11-10 16:48:48 +01:00
nm-device-vxlan.h include: use double-quotes to include our own headers 2017-03-09 14:12:35 +01:00
nm-device-wifi.c libnm: add nm_utils_get_timestamp_msec() 2018-06-15 16:23:30 +02:00
nm-device-wifi.h wifi: expose LastScan as milliseconds not seconds 2018-06-15 16:23:30 +02:00
nm-device-wimax.c all: don't use gchar/gshort/gint/glong but C types 2018-07-11 12:02:06 +02:00
nm-device-wimax.h all: don't use gchar/gshort/gint/glong but C types 2018-07-11 12:02:06 +02:00
nm-device-wpan.c libnm: add support for WPAN devices 2018-06-26 16:21:55 +02:00
nm-device-wpan.h libnm: add support for WPAN devices 2018-06-26 16:21:55 +02:00
nm-device.c libnm: add (allow-none) annotations to nm_device_reapply() 2018-07-04 14:01:53 +02:00
nm-device.h include: use double-quotes to include our own headers 2017-03-09 14:12:35 +01:00
nm-dhcp-config.c libnm: don't use deprecated tags for GOobject introspection 2018-03-26 12:46:22 +02:00
nm-dhcp-config.h include: use double-quotes to include our own headers 2017-03-09 14:12:35 +01:00
nm-dhcp4-config.c libnm: use the o.fd.DBus.ObjectManager API for object management 2016-11-10 16:48:48 +01:00
nm-dhcp4-config.h build: refine the NETWORKMANAGER_COMPILATION define 2018-01-08 12:38:53 +01:00
nm-dhcp6-config.c libnm: use the o.fd.DBus.ObjectManager API for object management 2016-11-10 16:48:48 +01:00
nm-dhcp6-config.h build: refine the NETWORKMANAGER_COMPILATION define 2018-01-08 12:38:53 +01:00
nm-dns-manager.c all: don't use gchar/gshort/gint/glong but C types 2018-07-11 12:02:06 +02:00
nm-dns-manager.h build: refine the NETWORKMANAGER_COMPILATION define 2018-01-08 12:38:53 +01:00
nm-enum-types.c.template build: use template files for enum types' sources generation 2017-12-18 11:25:06 +01:00
nm-enum-types.h.template build: use template files for enum types' sources generation 2017-12-18 11:25:06 +01:00
nm-ip-config.c all: avoid byte ordering issue for IP4Config's Nameservers/WinsServers on D-Bus 2018-08-01 14:27:20 +02:00
nm-ip-config.h include: use double-quotes to include our own headers 2017-03-09 14:12:35 +01:00
nm-ip4-config.c libnm: use the o.fd.DBus.ObjectManager API for object management 2016-11-10 16:48:48 +01:00
nm-ip4-config.h build: refine the NETWORKMANAGER_COMPILATION define 2018-01-08 12:38:53 +01:00
nm-ip6-config.c libnm: use the o.fd.DBus.ObjectManager API for object management 2016-11-10 16:48:48 +01:00
nm-ip6-config.h build: refine the NETWORKMANAGER_COMPILATION define 2018-01-08 12:38:53 +01:00
nm-libnm-utils.c libnm/utils: drop part after a dash in product name 2018-02-23 19:47:19 +01:00
nm-libnm-utils.h libnm/utils: extend the product fixup phrase list 2018-02-23 19:47:19 +01:00
nm-manager.c all: use the elvis operator wherever possible 2018-05-10 14:36:58 +02:00
nm-manager.h libnm: rework checkpoint API 2018-04-04 14:02:13 +02:00
nm-object-private.h build: refine the NETWORKMANAGER_COMPILATION define 2018-01-08 12:38:53 +01:00
nm-object.c all: don't use gchar/gshort/gint/glong but C types 2018-07-11 12:02:06 +02:00
nm-object.h include: use double-quotes to include our own headers 2017-03-09 14:12:35 +01:00
nm-remote-connection-private.h build: refine the NETWORKMANAGER_COMPILATION define 2018-01-08 12:38:53 +01:00
nm-remote-connection.c docs: provide soft descriptions for NM{Simple,Remote}Connection 2018-06-28 20:38:52 +02:00
nm-remote-connection.h libnm/remote-connection: add filename property 2018-06-11 15:06:49 +02:00
nm-remote-settings.c all: use the elvis operator wherever possible 2018-05-10 14:36:58 +02:00
nm-remote-settings.h build: refine the NETWORKMANAGER_COMPILATION define 2018-01-08 12:38:53 +01:00
nm-secret-agent-old.c all: use the elvis operator wherever possible 2018-05-10 14:36:58 +02:00
nm-secret-agent-old.h include: use double-quotes to include our own headers 2017-03-09 14:12:35 +01:00
nm-types.h libnm: add support form 6LoWPAN devices 2018-06-26 16:21:55 +02:00
nm-vpn-connection.c libnm: always return VPN connections's banner 2018-06-15 11:56:04 +02:00
nm-vpn-connection.h libnm/nm-vpn-connection: un-deprecate the NMVpnStateReason use in a header 2017-03-20 14:51:11 +01:00
nm-vpn-editor.c all: cleanup includes and let "nm-default.h" include "config.h" 2016-02-19 17:53:25 +01:00
nm-vpn-editor.h all: replace non-leading tabs with spaces 2018-02-07 13:32:04 +01:00
nm-vpn-plugin-old.c all: remove consecutive empty lines 2018-04-30 16:24:52 +02:00
nm-vpn-plugin-old.h include: use double-quotes to include our own headers 2017-03-09 14:12:35 +01:00
nm-vpn-service-plugin.c all: don't use gchar/gshort/gint/glong but C types 2018-07-11 12:02:06 +02:00
nm-vpn-service-plugin.h libnm: add nm_vpn_service_plugin_shutdown() API 2018-01-16 14:39:09 +01:00
nm-wimax-nsp.c libnm: use the o.fd.DBus.ObjectManager API for object management 2016-11-10 16:48:48 +01:00
nm-wimax-nsp.h include: use double-quotes to include our own headers 2017-03-09 14:12:35 +01:00