Re: [OE-core] [PATCH 2/2] connman: set service to conflict with systemd-networkd

kai
2020-12-03T09:29:46Z

On 12/2/20 8:11 PM, Jack Mitchell wrote:
> On 02/12/2020 02:20, Yi Zhao wrote:
>> On 12/1/20 5:02 AM, Jack Mitchell wrote:
>>> On 02/11/2020 09:20, Yi Zhao wrote:
>>>> Do not run systemd-networkd and connman simultaneously. These two
>>>> network managers may conflict with each other.
>>>>
>>>> Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
>>>> ---
>>>> ...stop-systemd-networkd-when-using-con.patch | 29 +++++++++++++++++++
>>>> .../connman/connman_1.38.bb | 1 +
>>>> 2 files changed, 30 insertions(+)
>>>> create mode 100644 meta/recipes-connectivity/connman/connman/0001-connman.service-stop-systemd-networkd-when-using-con.patch
>>>>
>>>> diff --git a/meta/recipes-connectivity/connman/connman/0001-connman.service-stop-systemd-networkd-when-using-con.patch b/meta/recipes-connectivity/connman/connman/0001-connman.service-stop-systemd-networkd-when-using-con.patch
>>>> new file mode 100644
>>>> index 0000000000..dd012750a4
>>>> --- /dev/null
>>>> +++ b/meta/recipes-connectivity/connman/connman/0001-connman.service-stop-systemd-networkd-when-using-con.patch
>>>> @@ -0,0 +1,29 @@
>>>> +From 9fea099d0a3ece37d80ad70d32ebb8a93f8f3280 Mon Sep 17 00:00:00 2001
>>>> +From: Yi Zhao <yi.zhao@windriver.com>
>>>> +Date: Fri, 30 Oct 2020 13:48:45 +0800
>>>> +Subject: [PATCH] connman.service: stop systemd-networkd when using connman
>>>> +
>>>> +Stop systemd-networkd service when we use connman as network manager.
>>>> +
>>>> +Upstream-Status: Inappropriate [configuration]
>>>> +
>>>> +Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
>>>> +---
>>>> + src/connman.service.in | 1 +
>>>> + 1 file changed, 1 insertion(+)
>>>> +
>>>> +diff --git a/src/connman.service.in b/src/connman.service.in
>>>> +index 79e75d6..014eafe 100644
>>>> +--- a/src/connman.service.in
>>>> ++++ b/src/connman.service.in
>>>> +@@ -6,6 +6,7 @@ RequiresMountsFor=@localstatedir@/lib/connman
>>>> + After=dbus.service network-pre.target systemd-sysusers.service
>>>> + Before=network.target multi-user.target shutdown.target
>>>> + Wants=network.target
>>>> ++Conflicts=systemd-networkd.service systemd-networkd.socket
>>>> + Conflicts=systemd-resolved.service
>>>> +
>>>> + [Service]
>>>> +--
>>>> +2.17.1
>>>> +
>>>> diff --git a/meta/recipes-connectivity/connman/connman_1.38.bb b/meta/recipes-connectivity/connman/connman_1.38.bb
>>>> index 027c41e9af..45c2934dec 100644
>>>> --- a/meta/recipes-connectivity/connman/connman_1.38.bb
>>>> +++ b/meta/recipes-connectivity/connman/connman_1.38.bb
>>>> @@ -3,6 +3,7 @@ require connman.inc
>>>> SRC_URI = "${KERNELORG_MIRROR}/linux/network/${BPN}/${BP}.tar.xz \
>>>> file://0001-plugin.h-Change-visibility-to-default-for-debug-symb.patch \
>>>> file://0001-connman.service-stop-systemd-resolved-when-we-use-co.patch \
>>>> + file://0001-connman.service-stop-systemd-networkd-when-using-con.patch \
>>>> file://connman \
>>>> file://no-version-scripts.patch \
>>>> "
>>>>
>>> Hi Yi,
>>>
>>> This breaks our usecase where we have been using connman and
>>> systemd-networkd in tandem for a long time. IMO this should be reverted
>>> as if the two applications are conflicting then the correct fix is that
>>> they should be configured so that they don't both try to configure the
>>> same interfaces. As systemd-networkd doesn't ship with any rules by
>>> default it shouldn't be doing anything to interfere?
>>
>> Currently, A systemd-networkd configuration file 80-wired.network from
>> systemd-conf package is also installed by default on HW BSPs. Comman is
>> the default network-manager in Yocto. It will manage the wired interface
>> automatically. But with this configuration file, the systemd-networkd
>> will also try to manage the wired interface as connman does. They may
>> conflict with each other.In addition to revert this patch, I think we
>> should consider whether to install this configuration file by default.
>> Maybe it’s better to install it as an example and users can enable it as
>> needed.
>>
>> Thanks,
>> Yi
>>
>
> Hi Yi,
>
> I see, thank you for pointing that out. I agree that we shouldn't be
> shipping custom catch-all networkd snippets. Perhaps it should be
> something appended by the Poky distro rather than installed by default?
> I assume it is included so that network interfaces come up with a DHCP
> address by default so people can ssh into the machine without an extra
> config.

Hi Jack,

The original defect is
https://bugzilla.yoctoproject.org/show_bug.cgi?id=13057 . There is no
network on core-image-small, so I provided
the default config for systemd-networkd. Because systemd-networkd is
more basic than connman and networkmanager that maybe neither
of them is installed.

The conflict should be resolved but I don't have solution yet right now.

Regards,
Kai

>
> Cc kai.kang@windriver.com as it looks like they were the original author.
>
> Regards,
> Jack.
>
>>> With this patch I can no-longer run both services as it's a hard
>>> conflict with no option to either revert locally, or bbappend this patch
>>> out.
>>>
>>> Regards,
>>> Jack.
>>>
>>
>>
>>