Age | Commit message (Collapse) | Author | Files | Lines |
|
Add IPv6 gateway address after service IP bound to fix
state flow issue.
Change-Id: Ia30a834f52c7d849ee54305d0d370f629fc506bb
Signed-off-by: Niraj Kumar Goit <niraj.g@samsung.com>
|
|
1. Added code to set IPv6 gateway addess.
2. Fix IPv6 issue in case of auto-configuration.
Change-Id: Ie0e1d53dd269a09600d2f08e66d73cefd6dd3c29
Signed-off-by: Seonah Moon <seonah1.moon@samsung.com>
|
|
Change-Id: I02fc50820cccc66aed702a97a9928981e73b43cf
Signed-off-by: Taesub Kim <taesub.kim@samsung.com>
|
|
Signed-off-by: hyunuktak <hyunuk.tak@samsung.com>
Change-Id: I84a42375b5c59739e4caca1f726699ea7647ef17
|
|
Change-Id: Id3847d1d8233c2177cfbd65ba42ead8ff44a06a8
|
|
|
|
|
|
Addresses and gateway for the service IPv4 property being used in the
system are available from ipconfig->system when the property is set to
'manual'.
|
|
This is needed when implementing CONFIRM message decision logic.
|
|
|
|
|
|
Also fine tune returned errors.
|
|
If we have already received gateway address via newroute rtnl
message, then do not overwrite it when receiving newaddr message.
Fixes BMC#25931
|
|
When enabling IPv6 ipconfig, we enable kernel IPv6 support too early.
The ipconfig might get unreffed which will disable ipconfig and
thus disable kernel IPv6 support. By moving kernel IPv6 enabling
after the ipconfig unref call, we make sure that IPv6 kernel support
is properly enabled.
This is related to fix in commit d479904ecaa2bd9
|
|
Disabling IPv6 in lower up causes problems in IPv6 connectivity.
The interface IPv6 status can stay in disabled state because of
races. So this patch reverts the commit 4ce90440a70abce7de537777
and lets service IPv6 state go to READY when we get an auto
configured address for the interface.
Fixes BMC#25929
|
|
If the interface name is not set, then it is no use
checking if the interface would be ignored.
The interface name is not set if the interface is being
taken down and we get NEWLINK message with NULL interface.
Fixes BMC#25865
|
|
Done so that connman_ipaddress_* functions can be used from
separate vpn daemon.
|
|
|
|
PrefixLength is exposed as a byte in the API, but code was
waiting for a string when setting a new value.
|
|
If kernel does not support IPv6, then turn default ipconfig
method OFF. If kernel supports IPv6, then the default is AUTO
meaning that we try to send router solicitation messages.
|
|
Update the ipdevice interface name if it is changed by udev.
|
|
Convert usage of g_slist_append() to g_slist_prepend() where
appropriate. gdbus, dnsproxy, resolver, rtnl, session and session
unit test have ordering requirements and thus not touched.
|
|
Use ipconfig->address when reporting IP addresses for services
with FIXED method. AUTO method is used only by IPv6, don't report
any addresses should it erroneously appear for IPv4.
Fixes BMC#25084
|
|
This patch makes possible configuring a GPRS connection with
IPV6 settings and without gateway.
|
|
|
|
This commit fixes a bug when using manual ipv4 addressing.
The first time it works, but once the service is reconnected it uses
an invalid netmask: 255.255.255.255.
|
|
Use value set in the kernel as the initial IPv6 privacy
setting. This also allows distros to set the privacy value
without needing to tweak connman.
|
|
Show FIXED configuration IP address info in service IPv4 and
IPv6 properties. If IP address is not available via
ipconfig->system, use the provider configured ones instead.
Fixes BMC#25084
|
|
|
|
In order to be able to request a certain ipconfig type, add the type
as a parameter to __connman_ipconfig_get_gateway_from_index().
|
|
|
|
We don't have yet an ipconfig for this interface, that means
the service.c does not yet know this interface. In order to
be able to get into sync we disable IPv6 auto connection at this point.
If the service state machine decides to connect, it will enable it
again.
|
|
|
|
When enabling IPv6 when loading the Service properties, the Service
state machine gets out of sync when AutoConnect is disabled.
At this point we should only load the properties and let the
Service state machine decide when to enable the ipconfigs.
And the good news is that the core handles this already.
|
|
|
|
According the D-Bus API, the Service interface accepts
variant types.
|
|
|
|
|
|
|
|
Because we do not check that origin pointer is not this ipconfig,
it is possible that we might try to unref the ipconfig one time
too many.
Something like this was seen in the log file:
connmand[19208]: src/ipconfig.c:enable_ipv6()
connmand[19208]: src/ipconfig.c:__connman_ipconfig_unref() ipconfig 0x47502f0 refcount 0
connmand[19208]: src/ipconfig.c:__connman_ipconfig_disable() ipconfig 0x47502f0
connmand[19208]: src/ipconfig.c:disable_ipv6()
connmand[19208]: src/ipconfig.c:__connman_ipconfig_unref() ipconfig 0x47502f0 refcount -1
|
|
Prefix them with a "__".
|
|
The DHCPv6 is used when doing autoconfiguration so we must allow
address setting/unsetting in auto mode.
|
|
|
|
Route changes should not trigger ip_bound or ip_release callbacks
in service.c as that can cause too early transition into IPv6 ready state.
The ip_bound (in __connman_ipconfig_newaddr()) and ip_release (in
__connman_ipconfig_deladdr()) are enough to trigger a transition
in IPv6 state.
This also prevents too many notifier calls in session as we only
notify session when address changes.
|
|
The ipdevice address list is only used for detecting duplicate
addresses so there is no need to copy the gateway information
into the list. The same gateway data was actually used in every
list element which is not a correct thing to do as there would
be different gateways in IPv4 and IPv6 anyway.
|
|
This is done so that if the method is not found
in settings file, then we enable IPv6 by default.
|
|
It is possible that ipdevice does not contain ipconfig for
some reason. If that happens, then ipconfig is not removed
from ipconfig_list which will then escalate into freed memory
access when interface is taken down.
The problem was seen with valgrind when tethering was enabled
and then disabled for wifi.
|
|
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.
|
|
|
|
Show IPv4.Configuration properties also for
CONNMAN_IPCONFIG_METHOD_FIXED configuration method.
Fixes BMC#23444
|