gpt4 book ai didi

linux - 我需要以编程方式注意到 connman 何时处理了其配置文件(并且是否设置了 IP)

转载 作者:太空宇宙 更新时间:2023-11-04 05:09:22 30 4
gpt4 key购买 nike

如何在用户空间程序中等待 connman 完成 Linux 启动上的网络配置? (不幸的是,这不是 Wants=connman.service。)

systemd 服务 connman 启动后,我的用户空间程序通过 systemd 服务(Wants=network.target connman.service)启动,它希望通过 C 函数 getifaddrs() 读取网络配置(例如 ifa->ifa_addrifa->ifa_addr->sa_family)。现在可能会发生两件事:connman 从其配置文件中读取明确未配置的网络 (IPv4=0.0.0.0/0.0.0.0/0.0.0.0) 或特定网络配置(例如 IPv4=192.168.0.50/255.255.255.0/0.0.0.0)。由于某些原因,我的程序必须等待某个代码行,直到 connman 完成这两种情况之一的设置。我该怎么做?

我在systemd中发现的所有同步可能性是connman服务启动的时间点(Wants=connman.service),这并不意味着它已经处理了它的配置文件,它在那之前!!!),其次,network-online.target用于配置IP地址(不包括0.0.0.0/0.0.0.0/的情况) connman 配置文件中的 0.0.0.0)。

<小时/>

插件:我注意到,一旦控制台上打印出“Link is up - 100Mbps/Full - flow control off”,就会在 Linux 启动期间设置 IP 地址。如何在我的用户程序中检测到这一点?

最佳答案

嗯,我发现的只是这个解决方法。我的服务的启动脚本会查看 connman 的 .config 文件并搜索带有“IPv4=”的行,如果全是 0.0.0.0,我可以立即启动我的应用程序,否则我必须循环该脚本,直到 ifconfig 报告它已为该特定网络适配器接口(interface)设置了 IP 地址。

关于linux - 我需要以编程方式注意到 connman 何时处理了其配置文件(并且是否设置了 IP),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57371530/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com