MCPcopy Create free account
hub / github.com/Alexays/Waybar / handleScan

Method handleScan

src/modules/network.cpp:836–870  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

834}
835
836int waybar::modules::Network::handleScan(struct nl_msg* msg, void* data) {
837 auto net = static_cast<waybar::modules::Network*>(data);
838 auto gnlh = static_cast<genlmsghdr*>(nlmsg_data(nlmsg_hdr(msg)));
839 struct nlattr* tb[NL80211_ATTR_MAX + 1];
840 struct nlattr* bss[NL80211_BSS_MAX + 1];
841 struct nla_policy bss_policy[NL80211_BSS_MAX + 1]{};
842 bss_policy[NL80211_BSS_TSF].type = NLA_U64;
843 bss_policy[NL80211_BSS_FREQUENCY].type = NLA_U32;
844 bss_policy[NL80211_BSS_BSSID].type = NLA_UNSPEC;
845 bss_policy[NL80211_BSS_BEACON_INTERVAL].type = NLA_U16;
846 bss_policy[NL80211_BSS_CAPABILITY].type = NLA_U16;
847 bss_policy[NL80211_BSS_INFORMATION_ELEMENTS].type = NLA_UNSPEC;
848 bss_policy[NL80211_BSS_SIGNAL_MBM].type = NLA_U32;
849 bss_policy[NL80211_BSS_SIGNAL_UNSPEC].type = NLA_U8;
850 bss_policy[NL80211_BSS_STATUS].type = NLA_U32;
851
852 if (nla_parse(tb, NL80211_ATTR_MAX, genlmsg_attrdata(gnlh, 0), genlmsg_attrlen(gnlh, 0),
853 nullptr) < 0) {
854 return NL_SKIP;
855 }
856 if (tb[NL80211_ATTR_BSS] == nullptr) {
857 return NL_SKIP;
858 }
859 if (nla_parse_nested(bss, NL80211_BSS_MAX, tb[NL80211_ATTR_BSS], bss_policy) != 0) {
860 return NL_SKIP;
861 }
862 if (!net->associatedOrJoined(bss)) {
863 return NL_SKIP;
864 }
865 net->parseEssid(bss);
866 net->parseSignal(bss);
867 net->parseFreq(bss);
868 net->parseBssid(bss);
869 return NL_OK;
870}
871
872void waybar::modules::Network::parseEssid(struct nlattr** bss) {
873 if (bss[NL80211_BSS_INFORMATION_ELEMENTS] != nullptr) {

Callers

nothing calls this directly

Calls 5

associatedOrJoinedMethod · 0.80
parseEssidMethod · 0.80
parseSignalMethod · 0.80
parseFreqMethod · 0.80
parseBssidMethod · 0.80

Tested by

no test coverage detected