IP Configuration Handling
*************************


IP basics
=========

Layer 3 configuration state is managed on a per-device basis.  When
a device is connected, it will have an IPConfig record associated with
it.  In addition, connected services will have an "IPConfig" property
which will contain the path to this record.  These properties of the
IPConfig record represent the current state of connectivity of the
device.

IPConfig hierarchy
==================

Service		org.chromium.flimflam
Interface	org.chromium.flimflam.IPConfig
Object path	[variable prefix]/{ipconfig0,ipconfig1,...}

Methods		dict GetProperties()

			Return properties for the IPConfig object. See
			the properties section for available properties.

Signals		PropertyChanged(string name, variant value)

			This signal indicates a changed value of the given
			property.

Properties	string Address [readonly]

			The Layer 3 address expressed in the dotted-quad format
			for IPv4 and any allowed format for IPv6 (as specified
			for inet_pton(3)).

		string Gateway [readonly]

			The Layer 3 address gateway address specified as
			per Address.

		string Method [readonly]

			The method by which Layer 3 state is managed.

			Possible methods are:
			   "ipv4"       (fixed IPv4 network state)
			   "ipv6"       (fixed IPv6 network state)
			   "dhcp"       (IPv4 state setup using DHCP)
			   "slaac"      (IPv6 state setup using SLAAC)
			   "vpn"        (IPv4 or IPv6 state setup using VPN)

		int32 Mtu [readonly]

			The maximum transmit unit (MTU) in bytes.

		array{string} NameServers [readonly]

			The Layer 3 addresses of DNS domain name servers to
			use for DNS requests.

		int32 Prefixlen [readonly]

			The number of bits in a Layer 3 address that are
			part of the network address.  For IPv4 networks this
			corresponds to the length of the network mask; e.g.
			a netmask of 255.255.255.0 has a prefixlen of 24
			(note arbitrary CIDR masks are not supported.)

		string WebProxyAutoDiscoveryUrl [readonly]

			The Web Proxy Auto-Discovery URL for this network
			as reported over DHCP.
