LXR | KVM | PM | Time | Interrupt | Systems Performance | Bootup Optimization

网络连接管理Connection Manager(connman)记录

ConnMan是一个Linux下网络连接管理守护进程。ConnMan是一个模块化的系统,通过各种插件,可以扩展支持各种有线或无线设备。所有的应用程序通过D-Bus和ConnMan通信。

1 ConnMan架构

2 ConnMan内部组成

2.1 Buildroot ConnMan配置

Target packages
  ->Networking applications
    ->connman
      ->enable Ethernet support--支持以太网。       ->enable WiFi support--支持WiFi。       ->enable WISPr support--Wireless ISP roaming。       ->enable Bluetooth support--支持蓝牙。       ->enable loopback support--loopback接口。       ->enable neard support--支持NFC。       ->enable ofono support--支持2/3/4G。       ->enable command line client

2.2 connmand代码

主要代码流程:

main
  ->main_loop--调用g_main_loop_new()创建一个主事件循环。
  ->g_dbus_setup_bus--分配DBus连接并进行配置。
  ->g_dbus_set_disconnect_function--设置DBus连接断开回调函数。
  ->__connman_dbus_init--将创建的DBus连接赋给connection。
  ->__connman_plugin_init--遍历内嵌和插件目录中的插件到plugins列表中,并执行init()初始化函数。
  ->g_main_loop_run--运行main_loop主事件循环,不停检查主事件并分发。直到调用g_main_loop_qui(main_loop)才会退出。
  ->后面是清理工作和资源释放。

通过CONNMAN_PLUGIN_DEFINE定义一个plugin,包含初始化和退出函数。

Makefile中调用genbuiltin生成src/builtin.h,__connman_builtin数组是内嵌的plugin列表:

static struct connman_plugin_desc *__connman_builtin[] = {
  &__connman_builtin_ethernet,--以太网连接。
  &__connman_builtin_gadget,--USB Gadget连接。
  &__connman_builtin_wifi,--WiFi连接。
  &__connman_builtin_bluetooth,--蓝牙连接。
  &__connman_builtin_ofono,--2G/3G/4G电信连接。
  &__connman_builtin_dundee,--蓝牙连接。
  &__connman_builtin_pacrunner,--PAC runner proxy处理。
  NULL
};

3 参考文档

Managing Internet Connections on Linux Devices with ConnMan》:ConnMan架构、内部组成、功能和特性、D-Bus接口、connmand/connmanctl命令使用、调试等。

ConnMan - ArchWiki (archlinux.org)》:ConnMan简单介绍,以及前端配置程序列表、配置使用方法以及常见问题解决方法。

connman/connman.git - Connection Manager (kernel.org)》:维护ConnMan代码的仓库。

posted on 2023-12-02 23:59  ArnoldLu  阅读(1050)  评论(0)    收藏  举报

导航