adnroid中:::::wpa_supplicant()分析(未完)

:去打开wpa_supplicant.命令行如下:

service wpa_supplicant /system/bin/wpa_supplicant -Dfawext -iwlan0 -c/data/misc/wifi/wpa_supplicant.conf -dd


main()

解析传入参数后初始化:

iface->confname=/data/misc/wifi/wpa_supplicant.conf

iface->driver =fawext

params.wpa_debug_level--  

iface->ifname=wlan0

global = wpa_supplicant_init(&params);  //

       eap_peer_register_methods(); //注册加密处理函数

       初始化global

       eloop_init(global)------》eloop.user_data = global

        global->ctrl_iface = wpa_supplicant_global_ctrl_iface_init(global);

      if (global->params.dbus_ctrl_interface) {
        global->dbus_ctrl_iface =
            wpa_supplicant_dbus_ctrl_iface_init(global);
        if (global->dbus_ctrl_iface == NULL) {
            wpa_supplicant_deinit(global);
            return NULL;

        } 

       wpa_supplicant_daemon(global->params.pid_file)

wpa_supplicant_global_ctrl_iface_init()

传入global参数:

#ifdef ANDROID 
    priv->sock = android_get_control_socket(global->params.ctrl_interface);
    if (priv->sock >= 0)
        goto havesock;
#endif

如果没定义android或者获取失败:

创建soket:

priv->sock = socket(PF_UNIX, SOCK_DGRAM, 0);

如果成功:

创建sock注册监听sock及其处理函数:wpa_supplicant_global_ctrl_iface_receive()

根据接受的字符串,调用处理:返回reply(字符串)

reply = wpa_supplicant_global_ctrl_iface_process(global, buf,
                             &reply_len);

if (reply) {
        sendto(sock, reply, reply_len, 0, (struct sockaddr *) &from,
               fromlen);
        os_free(reply);
    } else if (reply_len) {
        sendto(sock, "FAIL\n", 5, 0, (struct sockaddr *) &from,
               fromlen);
    }

wpa_supplicant_add_iface(global, &ifaces[i])

   wpa_supplicant_init_iface()

  wpa_supplicant_set_driver()//选择驱动接口

 


exitcode = wpa_supplicant_run(global)

 



wpa_supplicant_global_ctrl_iface_init()




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值