nl:::1:一::一、01!iw。n:一1::ld一11一:一、::.,

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nl:::1:一::一、01!iw。n:一1::ld一11一:一、::.,相关的知识,希望对你有一定的参考价值。

一株基因型为AaBB的豌豆自花传粉后,其子一代基因型的比例为(  )
A. 1:1:1:1
B. 9:3:3:1
C. 1:2:l
D. 3:3:1:l

参考技术A 将两对相对性状分开考虑,Aa自交子一代基因型有AA、Aa和aa,比例为1:2:1,BB自交子一代基因型全为BB,二者综合,则子一代基因型比例为(1:2:1)×1=1:2:1,C正确,A、B、D错误.
故选:C.

libnl/nl80211 相当于 iw_set_ext

【中文标题】libnl/nl80211 相当于 iw_set_ext【英文标题】:libnl/nl80211 equivalent of iw_set_ext 【发布时间】:2016-10-12 18:40:19 【问题描述】:

当我意识到它已被弃用并且大多数应用程序使用 nl80211 时,我开始编写使用 iwconfig/ioctl 处理 wifi 卡的代码。 我开始阅读它的源代码,但没有文档,代码有点复杂。 如何使用 nl80211 或 libnl 进行扫描、关闭/打开、设置卡模式等简单的操作? 这就是我从 iw 开始的:

void set_card_mode(MODE mode, std::string ifname)

    int skfd = iw_sockets_open();
    struct iwreq wrq;
    wrq.u.mode = static_cast<unsigned int>(mode);
    power_interface(ifname, false);
    if(iw_set_ext(skfd, ifname.c_str(), SIOCSIWMODE, &wrq) < 0)
        throw std::runtime_error("Can set card mode");



MODE get_card_mode(std::string ifname)

    int skfd = iw_sockets_open();
    struct iwreq wrq;
    if (iw_get_ext (skfd, ifname.c_str(), SIOCGIWMODE, &wrq) >= 0)
    
        return static_cast<MODE>(wrq.u.mode);
    

是否有任何等效的 iw_get_ext 来设置/获取 wifi 接口或任何具有“set_mode”或“power_off”等简单功能的 api?

【问题讨论】:

【参考方案1】:

我使用以下步骤使用 netlink 进行扫描

    准备并执行NL80211_CMD_TRIGGER_SCAN

    准备并执行NL80211_CMD_GET_SCAN

    与 NL80211_CMD_GET_SCAN 一起注册了回调。 在回调中,原始数据被解析为 BSS。 IE 被解析为。请参阅 nl80211.h 中带有 NL80211_BSS_MAX、NL80211_ATTR_MAX 的枚举。

在处理下一步之前检查每个 netlink 调用的返回值。

代码sn-ps:

nl_sock* socket = nl_socket_alloc();
genl_connect(socket);
struct nl_msg* msg = nlmsg_alloc();
int driverId = genl_ctrl_resolve(socket, "nl80211"); 
genlmsg_put(msg, 0, 0, driverId, 0, 0, NL80211_CMD_TRIGGER_SCAN, 0);

并通过以下方式获取:

genlmsg_put(msg, 0, 0, driverId, 0, NLM_F_DUMP, NL80211_CMD_GET_SCAN, 0);
nl_socket_modify_cb(socket, NL_CB_VALID, NL_CB_CUSTOM, onScanResult, null);

我的回调开始于:

struct genlmsghdr* msgHeader = (genlmsghdr*)nlmsg_data(nlmsg_hdr(msg));
struct nlattr* attributes[NL80211_ATTR_MAX + 1];
struct nlattr* bss[NL80211_BSS_MAX + 1];
if(nla_parse(attributes, NL80211_ATTR_MAX, genlmsg_attrdata(msgHeader, 0), genlmsg_attrlen(msgHeader, 0), NULL) == 0)

    // Read the attributes
    // and check for NL80211_ATTR_BSS != 0

我在 NL80211_BSS_INFORMATION_ELEMENTS 中找到了大部分扫描结果。

if (nla_parse_nested(bss, NL80211_BSS_MAX, attributes[NL80211_ATTR_BSS], bss_policy) == 0)
 /* read the bss attributes */ 

参见 nl80211.h 中的 NL80211_BSS_INFORMATION_ELEMENTS

但我未能检查 WEP 隐私。 检查 WPA 或 WPA2 很容易,因为有一个 ID 为 48 的额外 IE 元素(Śee IEEE Std 802.11 2012,第 8.4.2 章,从 ieee 端免费下载)

【讨论】:

你能解释一下什么是什么吗?

以上是关于nl:::1:一::一、01!iw。n:一1::ld一11一:一、::.,的主要内容,如果未能解决你的问题,请参考以下文章

S7-300过程映像区详解

区间加权和

线段树

2021-3-22-腾讯-最少守卫数量

在长度为n的顺序表的第i(1≤i≤n+1)个位置上插入一

[TJOI2007]segment