本文整理汇总了C++中IEEE80211_ADDR_COPY函数的典型用法代码示例。如果您正苦于以下问题:C++ IEEE80211_ADDR_COPY函数的具体用法?C++ IEEE80211_ADDR_COPY怎么用?C++ IEEE80211_ADDR_COPY使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了IEEE80211_ADDR_COPY函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ieee80211_notify_replay_failure
void
ieee80211_notify_replay_failure(struct ieee80211vap *vap,
const struct ieee80211_frame *wh, const struct ieee80211_key *k,
u_int64_t rsc, int tid)
{
struct ifnet *ifp = vap->iv_ifp;
IEEE80211_NOTE_MAC(vap, IEEE80211_MSG_CRYPTO, wh->i_addr2,
"%s replay detected tid %d <rsc %ju, csc %ju, keyix %u rxkeyix %u>",
k->wk_cipher->ic_name, tid, (intmax_t) rsc,
(intmax_t) k->wk_keyrsc[tid],
k->wk_keyix, k->wk_rxkeyix);
if (ifp != NULL) { /* NB: for cipher test modules */
struct ieee80211_replay_event iev;
IEEE80211_ADDR_COPY(iev.iev_dst, wh->i_addr1);
IEEE80211_ADDR_COPY(iev.iev_src, wh->i_addr2);
iev.iev_cipher = k->wk_cipher->ic_cipher;
if (k->wk_rxkeyix != IEEE80211_KEYIX_NONE)
iev.iev_keyix = k->wk_rxkeyix;
else
iev.iev_keyix = k->wk_keyix;
iev.iev_keyrsc = k->wk_keyrsc[tid];
iev.iev_rsc = rsc;
CURVNET_SET(ifp->if_vnet);
rt_ieee80211msg(ifp, RTM_IEEE80211_REPLAY, &iev, sizeof(iev));
CURVNET_RESTORE();
}
}
示例2: wlan_collect
/* XXX only fetch what's needed to do reports */
static void
wlan_collect(struct wlanstatfoo_p *wf,
struct ieee80211_stats *stats, struct ieee80211req_sta_stats *nstats)
{
IEEE80211_ADDR_COPY(wf->u_info.info.is_u.macaddr, wf->mac);
wf->ireq.i_type = IEEE80211_IOC_STA_INFO;
wf->ireq.i_data = (caddr_t) &wf->u_info;
wf->ireq.i_len = sizeof(wf->u_info);
if (ioctl(wf->s, SIOCG80211, &wf->ireq) < 0) {
warn("%s:%s (IEEE80211_IOC_STA_INFO)", wf->ireq.i_name,
ether_ntoa((const struct ether_addr*) wf->mac));
}
IEEE80211_ADDR_COPY(nstats->is_u.macaddr, wf->mac);
wf->ireq.i_type = IEEE80211_IOC_STA_STATS;
wf->ireq.i_data = (caddr_t) nstats;
wf->ireq.i_len = sizeof(*nstats);
if (ioctl(wf->s, SIOCG80211, &wf->ireq) < 0)
warn("%s:%s (IEEE80211_IOC_STA_STATS)", wf->ireq.i_name,
ether_ntoa((const struct ether_addr*) wf->mac));
wf->ifr.ifr_data = (caddr_t) stats;
if (ioctl(wf->s, SIOCG80211STATS, &wf->ifr) < 0)
err(1, "%s (SIOCG80211STATS)", wf->ifr.ifr_name);
}
示例3: ieee80211_req2node
void
ieee80211_req2node(struct ieee80211com *ic, const struct ieee80211_nodereq *nr,
struct ieee80211_node *ni)
{
/* Node address and name information */
IEEE80211_ADDR_COPY(ni->ni_macaddr, nr->nr_macaddr);
IEEE80211_ADDR_COPY(ni->ni_bssid, nr->nr_bssid);
ni->ni_esslen = nr->nr_nwid_len;
bcopy(nr->nr_nwid, ni->ni_essid, IEEE80211_NWID_LEN);
/* Rates */
ni->ni_rates.rs_nrates = nr->nr_nrates;
bcopy(nr->nr_rates, ni->ni_rates.rs_rates, IEEE80211_RATE_MAXSIZE);
/* Node information */
ni->ni_intval = nr->nr_intval;
ni->ni_capinfo = nr->nr_capinfo;
ni->ni_fhdwell = nr->nr_fhdwell;
ni->ni_fhindex = nr->nr_fhindex;
ni->ni_erp = nr->nr_erp;
ni->ni_pwrsave = nr->nr_pwrsave;
ni->ni_associd = nr->nr_associd;
ni->ni_txseq = nr->nr_txseq;
ni->ni_rxseq = nr->nr_rxseq;
ni->ni_fails = nr->nr_fails;
ni->ni_inact = nr->nr_inact;
ni->ni_txrate = nr->nr_txrate;
ni->ni_state = nr->nr_state;
}
示例4: hwmp_add_meshpreq
/*
* Add a Mesh Path Request IE to a frame.
*/
static uint8_t *
hwmp_add_meshpreq(uint8_t *frm, const struct ieee80211_meshpreq_ie *preq)
{
int i;
*frm++ = IEEE80211_ELEMID_MESHPREQ;
*frm++ = sizeof(struct ieee80211_meshpreq_ie) - 2 +
(preq->preq_tcount - 1) * sizeof(*preq->preq_targets);
*frm++ = preq->preq_flags;
*frm++ = preq->preq_hopcount;
*frm++ = preq->preq_ttl;
ADDWORD(frm, preq->preq_id);
IEEE80211_ADDR_COPY(frm, preq->preq_origaddr); frm += 6;
ADDWORD(frm, preq->preq_origseq);
ADDWORD(frm, preq->preq_lifetime);
ADDWORD(frm, preq->preq_metric);
*frm++ = preq->preq_tcount;
for (i = 0; i < preq->preq_tcount; i++) {
*frm++ = preq->preq_targets[i].target_flags;
IEEE80211_ADDR_COPY(frm, preq->preq_targets[i].target_addr);
frm += 6;
ADDWORD(frm, preq->preq_targets[i].target_seq);
}
return frm;
}
示例5: hwmp_rootmode_cb
static void
hwmp_rootmode_cb(void *arg)
{
struct ieee80211vap *vap = (struct ieee80211vap *)arg;
struct ieee80211_hwmp_state *hs = vap->iv_hwmp;
struct ieee80211_mesh_state *ms = vap->iv_mesh;
struct ieee80211_meshpreq_ie preq;
IEEE80211_NOTE(vap, IEEE80211_MSG_HWMP, vap->iv_bss,
"%s", "send broadcast PREQ");
preq.preq_flags = IEEE80211_MESHPREQ_FLAGS_AM;
if (ms->ms_flags & IEEE80211_MESHFLAGS_PORTAL)
preq.preq_flags |= IEEE80211_MESHPREQ_FLAGS_PR;
if (hs->hs_rootmode == IEEE80211_HWMP_ROOTMODE_PROACTIVE)
preq.preq_flags |= IEEE80211_MESHPREQ_FLAGS_PP;
preq.preq_hopcount = 0;
preq.preq_ttl = ms->ms_ttl;
preq.preq_id = ++hs->hs_preqid;
IEEE80211_ADDR_COPY(preq.preq_origaddr, vap->iv_myaddr);
preq.preq_origseq = ++hs->hs_seq;
preq.preq_lifetime = ticks_to_msecs(ieee80211_hwmp_roottimeout);
preq.preq_metric = IEEE80211_MESHLMETRIC_INITIALVAL;
preq.preq_tcount = 1;
IEEE80211_ADDR_COPY(PREQ_TADDR(0), broadcastaddr);
PREQ_TFLAGS(0) = IEEE80211_MESHPREQ_TFLAGS_TO |
IEEE80211_MESHPREQ_TFLAGS_RF;
PREQ_TSEQ(0) = 0;
vap->iv_stats.is_hwmp_rootreqs++;
hwmp_send_preq(vap->iv_bss, vap->iv_myaddr, broadcastaddr, &preq);
hwmp_rootmode_setup(vap);
}
示例6: ieee80211_wep_mbssid_mac
int ieee80211_wep_mbssid_mac(struct ieee80211vap *vap,
const struct ieee80211_key *k,
u_int8_t *gmac)
{
if (k->wk_cipher->ic_cipher == IEEE80211_CIPHER_WEP) {
if (k->wk_flags & IEEE80211_KEY_RECV) {
/*
* This is for the WEP tx key by "iwconfig" or WEP rx key that is installed
* by crypto_installkey().
*/
IEEE80211_ADDR_COPY(gmac, vap->iv_myaddr);
} else {
/*
* For _M_STA, set the multicast key that is installed by
* crypto_install_mcastkey() for decypting the received
* multicast frames from root AP.
*/
IEEE80211_ADDR_COPY(gmac, vap->iv_bss->ni_macaddr);
gmac[0] |= 0x01;
}
return 1;
}
else {
/*
* If not WEP mode, no changes.
*/
return 0;
}
}
示例7: an_newstate
int
an_newstate(struct ieee80211com *ic, enum ieee80211_state nstate, int arg)
{
struct an_softc *sc = ic->ic_softc;
struct ieee80211_node *ni = ic->ic_bss;
enum ieee80211_state ostate;
int buflen;
ostate = ic->ic_state;
DPRINTF(("an_newstate: %s -> %s\n", ieee80211_state_name[ostate],
ieee80211_state_name[nstate]));
switch (nstate) {
case IEEE80211_S_INIT:
ic->ic_flags &= ~IEEE80211_F_IBSSON;
return (*sc->sc_newstate)(ic, nstate, arg);
case IEEE80211_S_RUN:
buflen = sizeof(sc->sc_buf);
an_read_rid(sc, AN_RID_STATUS, &sc->sc_buf, &buflen);
an_swap16((u_int16_t *)&sc->sc_buf.sc_status.an_cur_bssid, 3);
an_swap16((u_int16_t *)&sc->sc_buf.sc_status.an_ssid, 16);
IEEE80211_ADDR_COPY(ni->ni_bssid,
sc->sc_buf.sc_status.an_cur_bssid);
IEEE80211_ADDR_COPY(ni->ni_macaddr, ni->ni_bssid);
ni->ni_chan = &ic->ic_channels[
sc->sc_buf.sc_status.an_cur_channel];
ni->ni_esslen = sc->sc_buf.sc_status.an_ssidlen;
if (ni->ni_esslen > IEEE80211_NWID_LEN)
ni->ni_esslen = IEEE80211_NWID_LEN; /*XXX*/
memcpy(ni->ni_essid, sc->sc_buf.sc_status.an_ssid,
ni->ni_esslen);
ni->ni_rates = ic->ic_sup_rates[IEEE80211_MODE_11B]; /*XXX*/
if (ic->ic_if.if_flags & IFF_DEBUG) {
printf("%s: ", sc->sc_dev.dv_xname);
if (ic->ic_opmode == IEEE80211_M_STA)
printf("associated ");
else
printf("synchronized ");
printf("with %s ssid ", ether_sprintf(ni->ni_bssid));
ieee80211_print_essid(ni->ni_essid, ni->ni_esslen);
printf(" channel %u start %uMb\n",
sc->sc_buf.sc_status.an_cur_channel,
sc->sc_buf.sc_status.an_current_tx_rate/2);
}
break;
default:
break;
}
ic->ic_state = nstate;
/* skip standard ieee80211 handling */
return 0;
}
示例8: ieee80211_rrm_recv_stastats_req
/**
* @brief Routine to accept station statistics request
*
* @param vap
* @param ni
* @param req
* @param rm_token
*
* @return
* @return on success return 0.
* on failure returns -ve value.
*/
int ieee80211_rrm_recv_stastats_req(wlan_if_t vap, wlan_node_t ni,
struct ieee80211_measreq_ie *req,u_int8_t rm_token)
{
struct ieee80211_rrmreq_info *params;
struct ieee80211_stastatsreq *statsreq;
RRM_FUNCTION_ENTER;
statsreq = (struct ieee80211_stastatsreq *)(&(req->req[0]));
params = (struct ieee80211_rrmreq_info *)
OS_MALLOC(vap->rrm->rrm_osdev, sizeof(struct ieee80211_rrmreq_info), 0);
if(NULL == params)
return -EBUSY;
params->rm_dialogtoken = rm_token;
params->rep_dialogtoken= req->token;
params->duration=statsreq->mduration;
params->gid=statsreq->gid;
RRM_DEBUG(vap, RRM_DEBUG_INFO,
"%s : duration %d chnum %d gid %d\n", __func__,
params->duration, params->chnum, params->gid);
IEEE80211_ADDR_COPY(params->bssid,statsreq->dstmac);
ieee80211_rrm_set_report_pending(vap,IEEE80211_MEASREQ_STA_STATS_REQ,(void *)params);
if(vap->rrm->pending_report)
ieee80211_send_report(vap->rrm);
RRM_FUNCTION_EXIT;
return EOK;
}
示例9: ieee80211_find_rxnode
/*
* Drivers call this, so increase the reference count before returning
* the node.
*/
struct ieee80211_node * Voodoo80211Device::
ieee80211_find_rxnode(struct ieee80211com *ic,
const struct ieee80211_frame *wh)
{
static const u_int8_t zero[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
struct ieee80211_node *ni;
const u_int8_t *bssid;
int s;
if (!ieee80211_needs_rxnode(ic, wh, &bssid))
return ieee80211_ref_node(ic->ic_bss);
s = splnet();
ni = ieee80211_find_node(ic, wh->i_addr2);
splx(s);
if (ni != NULL)
return ieee80211_ref_node(ni);
/* XXX see remarks in ieee80211_find_txnode */
/* XXX no rate negotiation; just dup */
if ((ni = ieee80211_dup_bss(ic, wh->i_addr2)) == NULL)
return ieee80211_ref_node(ic->ic_bss);
IEEE80211_ADDR_COPY(ni->ni_bssid, (bssid != NULL) ? bssid : zero);
ni->ni_rates = ic->ic_bss->ni_rates;
ieee80211_newassoc(ic, ni, 1);
DPRINTF(("faked-up node %p for %s\n", ni,
ether_sprintf((u_int8_t *)wh->i_addr2)));
return ieee80211_ref_node(ni);
}
示例10: r21a_parse_rom
void
r21a_parse_rom(struct rtwn_softc *sc, uint8_t *buf)
{
struct r12a_softc *rs = sc->sc_priv;
struct r12a_rom *rom = (struct r12a_rom *)buf;
uint8_t pa_type, lna_type_2g, lna_type_5g;
/* Read PA/LNA types. */
pa_type = RTWN_GET_ROM_VAR(rom->pa_type, 0);
lna_type_2g = RTWN_GET_ROM_VAR(rom->lna_type_2g, 0);
lna_type_5g = RTWN_GET_ROM_VAR(rom->lna_type_5g, 0);
rs->ext_pa_2g = R21A_ROM_IS_PA_EXT_2GHZ(pa_type);
rs->ext_pa_5g = R21A_ROM_IS_PA_EXT_5GHZ(pa_type);
rs->ext_lna_2g = R21A_ROM_IS_LNA_EXT(lna_type_2g);
rs->ext_lna_5g = R21A_ROM_IS_LNA_EXT(lna_type_5g);
RTWN_LOCK(sc);
rs->bt_coex =
!!(rtwn_read_4(sc, R92C_MULTI_FUNC_CTRL) & R92C_MULTI_BT_FUNC_EN);
RTWN_UNLOCK(sc);
rs->bt_ant_num = (rom->rf_bt_opt & R12A_RF_BT_OPT_ANT_NUM);
/* Read MAC address. */
IEEE80211_ADDR_COPY(sc->sc_ic.ic_macaddr, rom->macaddr_21a);
/* Execute common part of initialization. */
r12a_parse_rom_common(sc, buf);
}
示例11: hwmp_rootmode_rann_callout
/*
* Send a Root Annoucement (RANN) to find all the nodes on the mesh. We are
* called when the vap is configured as a HWMP RANN root node.
*/
static void
hwmp_rootmode_rann_callout(void *arg)
{
struct ieee80211vap *vap = (struct ieee80211vap *)arg;
struct ieee80211_hwmp_state *hs;
struct ieee80211_mesh_state *ms;
struct ieee80211_meshrann_ie rann;
wlan_serialize_enter();
hs = vap->iv_hwmp;
ms = vap->iv_mesh;
IEEE80211_NOTE(vap, IEEE80211_MSG_HWMP, vap->iv_bss,
"%s", "send broadcast RANN");
rann.rann_flags = 0;
if (ms->ms_flags & IEEE80211_MESHFLAGS_PORTAL)
rann.rann_flags |= IEEE80211_MESHRANN_FLAGS_PR;
rann.rann_hopcount = 0;
rann.rann_ttl = ms->ms_ttl;
IEEE80211_ADDR_COPY(rann.rann_addr, vap->iv_myaddr);
rann.rann_seq = ++hs->hs_seq;
rann.rann_metric = IEEE80211_MESHLMETRIC_INITIALVAL;
vap->iv_stats.is_hwmp_rootrann++;
hwmp_send_rann(vap->iv_bss, vap->iv_myaddr, broadcastaddr, &rann);
hwmp_rootmode_setup(vap);
wlan_serialize_exit();
}
示例12: ieee80211_create_infra_bss
/*
* Create a HOSTAP node on current channel based on ssid.
*/
int
ieee80211_create_infra_bss(struct ieee80211vap *vap,
const u_int8_t *essid,
const u_int16_t esslen)
{
struct ieee80211com *ic = vap->iv_ic;
struct ieee80211_node *ni;
ni = ieee80211_alloc_node(&ic->ic_sta, vap, vap->iv_myaddr);
if (ni == NULL)
return -ENOMEM;
IEEE80211_ADDR_COPY(ni->ni_bssid, vap->iv_myaddr);
ni->ni_esslen = esslen;
OS_MEMCPY(ni->ni_essid, essid, ni->ni_esslen);
ni->ni_intval = ic->ic_intval;
if (IEEE80211_VAP_IS_PRIVACY_ENABLED(vap)) {
ni->ni_capinfo |= IEEE80211_CAPINFO_PRIVACY;
ni->ni_rsn = vap->iv_rsn; /* use local RSN settings as the BSS setting */
}
/* Set the node htcap to be same as ic htcap */
ni->ni_htcap = ic->ic_htcap;
IEEE80211_ADD_NODE_TARGET(ni, ni->ni_vap, 1);
/* copy the original bssinfo into the new ni BugID: Ev# 73905 */
ieee80211_copy_bss(ni, vap->iv_bss);
return ieee80211_sta_join_bss(ni);
}
示例13: hwmp_add_meshprep
/*
* Add a Mesh Path Reply IE to a frame.
*/
static uint8_t *
hwmp_add_meshprep(uint8_t *frm, const struct ieee80211_meshprep_ie *prep)
{
*frm++ = IEEE80211_ELEMID_MESHPREP;
*frm++ = sizeof(struct ieee80211_meshprep_ie) - 2;
*frm++ = prep->prep_flags;
*frm++ = prep->prep_hopcount;
*frm++ = prep->prep_ttl;
IEEE80211_ADDR_COPY(frm, prep->prep_targetaddr); frm += 6;
ADDWORD(frm, prep->prep_targetseq);
ADDWORD(frm, prep->prep_lifetime);
ADDWORD(frm, prep->prep_metric);
IEEE80211_ADDR_COPY(frm, prep->prep_origaddr); frm += 6;
ADDWORD(frm, prep->prep_origseq);
return frm;
}
示例14: hwmp_peerdown
static void
hwmp_peerdown(struct ieee80211_node *ni)
{
struct ieee80211vap *vap = ni->ni_vap;
struct ieee80211_mesh_state *ms = vap->iv_mesh;
struct ieee80211_meshperr_ie perr;
struct ieee80211_mesh_route *rt;
struct ieee80211_hwmp_route *hr;
rt = ieee80211_mesh_rt_find(vap, ni->ni_macaddr);
if (rt == NULL)
return;
hr = IEEE80211_MESH_ROUTE_PRIV(rt, struct ieee80211_hwmp_route);
IEEE80211_NOTE(vap, IEEE80211_MSG_HWMP, ni,
"%s", "delete route entry");
perr.perr_ttl = ms->ms_ttl;
perr.perr_ndests = 1;
PERR_DFLAGS(0) = 0;
if (hr->hr_seq == 0)
PERR_DFLAGS(0) |= IEEE80211_MESHPERR_DFLAGS_USN;
PERR_DFLAGS(0) |= IEEE80211_MESHPERR_DFLAGS_RC;
IEEE80211_ADDR_COPY(PERR_DADDR(0), rt->rt_dest);
PERR_DSEQ(0) = hr->hr_seq;
PERR_DRCODE(0) = IEEE80211_REASON_MESH_PERR_DEST_UNREACH;
/* NB: flush everything passing through peer */
ieee80211_mesh_rt_flush_peer(vap, ni->ni_macaddr);
hwmp_send_perr(vap->iv_bss, vap->iv_myaddr, broadcastaddr, &perr);
}
示例15: malo_hal_gethwspecs
/*
* Return "hw specs". Note this must be the first cmd MUST be done after
* a firmware download or the f/w will lockup.
*/
int
malo_hal_gethwspecs(struct malo_hal *mh, struct malo_hal_hwspec *hw)
{
struct malo_cmd_get_hwspec *cmd;
int ret;
MALO_HAL_LOCK(mh);
_CMD_SETUP(cmd, struct malo_cmd_get_hwspec, MALO_HOSTCMD_GET_HW_SPEC);
memset(&cmd->permaddr[0], 0xff, IEEE80211_ADDR_LEN);
cmd->ul_fw_awakecookie = htole32((unsigned int)mh->mh_cmdaddr + 2048);
ret = malo_hal_execute_cmd(mh, MALO_HOSTCMD_GET_HW_SPEC);
if (ret == 0) {
IEEE80211_ADDR_COPY(hw->macaddr, cmd->permaddr);
hw->wcbbase[0] = le32toh(cmd->wcbbase0) & 0x0000ffff;
hw->wcbbase[1] = le32toh(cmd->wcbbase1) & 0x0000ffff;
hw->wcbbase[2] = le32toh(cmd->wcbbase2) & 0x0000ffff;
hw->wcbbase[3] = le32toh(cmd->wcbbase3) & 0x0000ffff;
hw->rxdesc_read = le32toh(cmd->rxpdrd_ptr)& 0x0000ffff;
hw->rxdesc_write = le32toh(cmd->rxpdwr_ptr)& 0x0000ffff;
hw->regioncode = le16toh(cmd->regioncode) & 0x00ff;
hw->fw_releasenum = le32toh(cmd->fw_releasenum);
hw->maxnum_wcb = le16toh(cmd->num_wcb);
hw->maxnum_mcaddr = le16toh(cmd->num_mcastaddr);
hw->num_antenna = le16toh(cmd->num_antenna);
hw->hwversion = cmd->version;
hw->hostinterface = cmd->hostif;
}
MALO_HAL_UNLOCK(mh);
return ret;
}