Age | Commit message (Collapse) | Author | Files | Lines |
|
|
|
|
|
|
|
|
|
The set_connected() is split to two parts, the disconnect
part is in set_disconnected() function.
|
|
|
|
|
|
|
|
We do not want to wait the answer to release message that
was sent to the DHCPv6 server because the reply from server
might take some time and we must continue the network
disconnect procedure. So we just inform the server that we
are done with the addresses but ignore server reply as there
is nothing to be done anyway after sending the release.
|
|
Prefix them with a "__".
|
|
The DHCPv6 is used when doing autoconfiguration so we must allow
address setting/unsetting in auto mode.
|
|
|
|
|
|
|
|
This patch contains solicitation message support.
|
|
The length of the RA packet must be returned in callback,
otherwise callback cannot check RA options. The prefix length
RA option is needed in stateful DHCPv6 implementation.
|
|
See relevant parts from these RFCs:
RFC 3315 - DHCP for IPv6
RFC 3646 - DNS configuration options for DHCP for IPv6
RFC 3736 - Stateless DHCP service for IPv6
RFC 4075 - SNTP configuration option for DHCPv6
The patch does not support authenticated information messages.
|
|
The current code uses connman_network_set_bool(network, "Roaming", value).
|
|
When given a struct connman_network, look up a corresponding
service. Set the earlier supplied identity and passphrase for
this service and try to connect it.
|
|
IPv6 autoconfigured nameservers can be added to resolver
via netlink messages in rtnl.c. Because of this they are
not seen in service object so we need to get those auto
added nameserver to be added in service.c so that
service can show them to user if necessary.
Fixes BMC#24196
|
|
Trying to access an array pointer which points to NULL is generally a
bad idea. Instead just return early.
|
|
Setting the error only on one ipconfig type e.g. IPv4 is not enough.
service.c:combine_state() will report to stay in associating state:
src/service.c:service_indicate_state() service 0x6b1a60 old association - new failure/association => association
After applying the patch it loosk like this:
src/service.c:service_indicate_state() service 0x6b1f70 old association - new failure/association => association
src/service.c:service_indicate_state() service 0x6b1f70 old association - new failure/failure => failure
|
|
When connect failed, set the associating value to false again, else
when we connect again the return err will be EALREADY.
|
|
g_atomic_int_exchange_and_add() has been removed from glib 2.30
and g_atomic_int_add() should be used. Though there are still
quite a few distros out which do not ship a glib version with
g_atomic_int_add().
Instead of maintaing a compatiblilty glib layer we just use
the built-in functions for atomic memory access.
|
|
The device can disappear if network is disconnected while setting
autoconf parameters.
|
|
When network is removed (for example when ethernet cable
is disconnected), then it needs to be disconnected also.
The disconnect was not done at all because of the reference
counting fixes in dhcp code.
|
|
|
|
The device connection counter is only used by the post scan auto connection
logic, and the connection status is handled by the autoconnection service
routine itself (__connman_service_auto_connect()).
|
|
|
|
If we are in idle or failure states, then we should not change to
disconnect state when the service is disconnected. This is because we
were not connected in the first place.
|
|
We must not read ipconfig data from file if there is already a valid
address that was set by service set_property().
Fixes BMC#22767
|
|
When a service was disconnected, its ipconfig data was cleared.
Re-read service ipconfig data before setting manual addresses.
Fixes BMC#17738
|
|
hidden_* group identifiers do not match the probe response built ones,
eventually preventing users from being able to reconnect to it.
|
|
Add new fields for agent provided identity/passphrase in service struct
(agent_identity/agent_passphrase) and network ("WiFi.AgentIdentity" and
"WiFi.AgentPassphrase").
Preparing these values in prepare_8021x() is left out because the same
thing is done in request_input_cb(), which is where the values always
come from.
|
|
This routine is not used.
|
|
The network_probe() function will be called several times until it
creates successfuly the service object.
In the case of the oFono plugin, the connman_device_add_network() is
called after the driver has been registered to the network. Therefore
the network->driver has been set but no device yet.
__connman_service_create_from_network() returns -EINVAL because
the device is not yet set.
The next call on network_probe() will bail out on 'if (network->driver
!= NULL) return -EALREADY;' so we have to reset it in the first round.
Fixes BMC #21705
|
|
|
|
|
|
Since the service object doesn't take a reference the
intermediate step of having a connman_network_register/unregister
is not needed. This function are only there to have an additional
step where probe()/remove() will be called. This is the job of
connman_device_add_network()/connman_device_remove_network().
|
|
If DHCP has been started for the IPv4 IP configuration we should also
stop it later.
The only place where it has been done so far was in
__connman_network_clear_ipconfig() which is called from
service.c:set_ipconfig(). But this will only be called if the user
changes service settings.
|
|
The autoconnect machine can potentially start from
__connman_service_create_from_network() so it needs a network driver.
|
|
|
|
For IPv4 (DHCP, fixed or manual), and for manual IPv6, the gateway handling
code (connection.c) is the one responsible for moving to the READY state.
|
|
It's not ready when the technology is connected. The ASSOC->READY transition
will happen through the IP bound ops.
|
|
|
|
|
|
The reason for this patch is that service disconnect code path
is different from service change code path. In disconnect,
the __connman_ipconfig_address_remove() is called which clears the
addresses from interface. When changing from one service to another,
the function __connman_service_disconnect() is not called and thus
the interface address is not removed.
We cannot call __connman_ipconfig_address_remove() yet at this point
because it would clear addresses from internal data structures so we
use __connman_ipconfig_address_unset() instead.
|
|
|
|
|
|
|