Lines Matching refs:rann
404 struct ieee80211_meshrann_ie rann; in hwmp_recv_action_meshpath() local
559 memcpy(&rann, mrann, sizeof(rann)); in hwmp_recv_action_meshpath()
560 rann.rann_seq = le32dec(&mrann->rann_seq); in hwmp_recv_action_meshpath()
561 rann.rann_interval = le32dec(&mrann->rann_interval); in hwmp_recv_action_meshpath()
562 rann.rann_metric = le32dec(&mrann->rann_metric); in hwmp_recv_action_meshpath()
563 hwmp_recv_rann(vap, ni, wh, &rann); in hwmp_recv_action_meshpath()
785 hwmp_add_meshrann(uint8_t *frm, const struct ieee80211_meshrann_ie *rann) in hwmp_add_meshrann() argument
788 *frm++ = rann->rann_len; in hwmp_add_meshrann()
789 *frm++ = rann->rann_flags; in hwmp_add_meshrann()
790 *frm++ = rann->rann_hopcount; in hwmp_add_meshrann()
791 *frm++ = rann->rann_ttl; in hwmp_add_meshrann()
792 IEEE80211_ADDR_COPY(frm, rann->rann_addr); frm += 6; in hwmp_add_meshrann()
793 ADDWORD(frm, rann->rann_seq); in hwmp_add_meshrann()
794 ADDWORD(frm, rann->rann_interval); in hwmp_add_meshrann()
795 ADDWORD(frm, rann->rann_metric); in hwmp_add_meshrann()
878 struct ieee80211_meshrann_ie rann; in hwmp_rootmode_rann_cb() local
883 rann.rann_flags = 0; in hwmp_rootmode_rann_cb()
885 rann.rann_flags |= IEEE80211_MESHFLAGS_GATE; in hwmp_rootmode_rann_cb()
886 rann.rann_hopcount = 0; in hwmp_rootmode_rann_cb()
887 rann.rann_ttl = ms->ms_ttl; in hwmp_rootmode_rann_cb()
888 IEEE80211_ADDR_COPY(rann.rann_addr, vap->iv_myaddr); in hwmp_rootmode_rann_cb()
889 rann.rann_seq = ++hs->hs_seq; in hwmp_rootmode_rann_cb()
890 rann.rann_interval = ieee80211_hwmp_rannint; in hwmp_rootmode_rann_cb()
891 rann.rann_metric = IEEE80211_MESHLMETRIC_INITIALVAL; in hwmp_rootmode_rann_cb()
894 hwmp_send_rann(vap, broadcastaddr, &rann); in hwmp_rootmode_rann_cb()
1736 const struct ieee80211_frame *wh, const struct ieee80211_meshrann_ie *rann) in hwmp_recv_rann() argument
1745 if (IEEE80211_ADDR_EQ(rann->rann_addr, vap->iv_myaddr)) in hwmp_recv_rann()
1748 rt = ieee80211_mesh_rt_find(vap, rann->rann_addr); in hwmp_recv_rann()
1753 if (HWMP_SEQ_LT(rann->rann_seq, hr->hr_seq)) { in hwmp_recv_rann()
1755 "RANN seq %u < %u", rann->rann_seq, hr->hr_seq); in hwmp_recv_rann()
1761 if (HWMP_SEQ_EQ(rann->rann_seq, hr->hr_seq) && in hwmp_recv_rann()
1762 rann->rann_metric > rt->rt_metric) { in hwmp_recv_rann()
1764 "RANN metric %u > %u", rann->rann_metric, rt->rt_metric); in hwmp_recv_rann()
1771 ieee80211_hwmp_rannint = rann->rann_interval; /* XXX: mtx lock? */ in hwmp_recv_rann()
1774 rt = ieee80211_mesh_rt_add(vap, rann->rann_addr); in hwmp_recv_rann()
1778 rann->rann_addr, ":"); in hwmp_recv_rann()
1785 if (rann->rann_flags & IEEE80211_MESHRANN_FLAGS_GATE) { in hwmp_recv_rann()
1789 gr = ieee80211_mesh_mark_gate(vap, rann->rann_addr, in hwmp_recv_rann()
1808 IEEE80211_ADDR_COPY(preq.preq_targets[0].target_addr, rann->rann_addr); in hwmp_recv_rann()
1809 preq.preq_targets[0].target_seq = rann->rann_seq; in hwmp_recv_rann()
1816 rann->rann_ttl > 1 && in hwmp_recv_rann()
1818 hr->hr_seq = rann->rann_seq; in hwmp_recv_rann()
1819 memcpy(&prann, rann, sizeof(prann)); in hwmp_recv_rann()
1830 struct ieee80211_meshrann_ie *rann) in hwmp_send_rann() argument
1841 rann->rann_ie = IEEE80211_ELEMID_MESHRANN; in hwmp_send_rann()
1842 rann->rann_len = IEEE80211_MESHRANN_BASE_SZ; in hwmp_send_rann()
1843 return hwmp_send_action(vap, da, (uint8_t *)rann, rann->rann_len + 2); in hwmp_send_rann()