FreeBSD kernel WLAN code
ieee80211_mesh.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  ieee80211_meshconf_ie
 
struct  ieee80211_meshid_ie
 
struct  ieee80211_meshlmetric_ie
 
struct  ieee80211_meshcngst_ie
 
struct  ieee80211_meshpeer_ie
 
struct  ieee80211_meshgann_ie
 
struct  ieee80211_meshrann_ie
 
struct  ieee80211_meshpreq_ie
 
struct  ieee80211_meshprep_ie
 
struct  ieee80211_meshperr_ie
 
struct  ieee80211_meshcntl
 
struct  ieee80211_meshcntl_ae01
 
struct  ieee80211_meshcntl_ae10
 
struct  ieee80211_mesh_route
 
struct  ieee80211_mesh_gate_route
 
struct  ieee80211_mesh_proto_path
 
struct  ieee80211_mesh_proto_metric
 
struct  ieee80211_mesh_state
 

Macros

#define IEEE80211_MESH_DEFAULT_TTL   31
 
#define IEEE80211_MESH_MAX_NEIGHBORS   15
 
#define IEEE80211_MESH_CONF_SZ   (7)
 
#define IEEE80211_MESHCONF_FORM_GATE   0x01 /* Connected to Gate */
 
#define IEEE80211_MESHCONF_FORM_NNEIGH_MASK   0x7E /* Number of Neighbours */
 
#define IEEE80211_MESHCONF_FORM_SA   0xF0 /* indicating 802.1X auth */
 
#define IEEE80211_MESHCONF_CAP_AP   0x01 /* Accepting Peers */
 
#define IEEE80211_MESHCONF_CAP_MCCAS   0x02 /* MCCA supported */
 
#define IEEE80211_MESHCONF_CAP_MCCAE   0x04 /* MCCA enabled */
 
#define IEEE80211_MESHCONF_CAP_FWRD   0x08 /* forwarding enabled */
 
#define IEEE80211_MESHCONF_CAP_BTR   0x10 /* Beacon Timing Report Enab */
 
#define IEEE80211_MESHCONF_CAP_TBTT   0x20 /* TBTT Adjusting */
 
#define IEEE80211_MESHCONF_CAP_PSL   0x40 /* Power Save Level */
 
#define IEEE80211_MESH_LMETRIC_FLAGS_REQ   0x01 /* Request */
 
#define IEEE80211_MESHLMETRIC_INITIALVAL   0
 
#define IEEE80211_MPM_BASE_SZ   (4)
 
#define IEEE80211_MPM_MAX_SZ   (8)
 
#define IEEE80211_MESHGANN_BASE_SZ   (15)
 
#define IEEE80211_MESHRANN_BASE_SZ   (21)
 
#define IEEE80211_MESHRANN_FLAGS_GATE   0x01 /* Mesh Gate */
 
#define IEEE80211_MESHPREQ_BASE_SZ   (26)
 
#define IEEE80211_MESHPREQ_BASE_SZ_AE   (32)
 
#define IEEE80211_MESHPREQ_TRGT_SZ   (11)
 
#define IEEE80211_MESHPREQ_TCNT_OFFSET   (27)
 
#define IEEE80211_MESHPREQ_TCNT_OFFSET_AE   (33)
 
#define IEEE80211_MESHPREQ_FLAGS_GATE   0x01 /* Mesh Gate */
 
#define IEEE80211_MESHPREQ_FLAGS_AM   0x02 /* 0 = bcast / 1 = ucast */
 
#define IEEE80211_MESHPREQ_FLAGS_PP   0x04 /* Proactive PREP */
 
#define IEEE80211_MESHPREQ_FLAGS_AE   0x40 /* Address Extension */
 
#define IEEE80211_MESHPREQ_TFLAGS_TO   0x01 /* Target Only */
 
#define IEEE80211_MESHPREQ_TFLAGS_USN   0x04 /* Unknown HWMP seq number */
 
#define IEEE80211_MESHPREP_BASE_SZ   (31)
 
#define IEEE80211_MESHPREP_BASE_SZ_AE   (37)
 
#define IEEE80211_MESHPREP_FLAGS_AE   0x40 /* Address Extension */
 
#define IEEE80211_MESHPERR_MAXDEST   (19)
 
#define IEEE80211_MESHPERR_NDEST_OFFSET   (3)
 
#define IEEE80211_MESHPERR_BASE_SZ   (2)
 
#define IEEE80211_MESHPERR_DEST_SZ   (13)
 
#define IEEE80211_MESHPERR_DEST_SZ_AE   (19)
 
#define IEEE80211_MESHPERR_DFLAGS_USN   0x01 /* XXX: not part of standard */
 
#define IEEE80211_MESHPERR_DFLAGS_RC   0x02 /* XXX: not part of standard */
 
#define IEEE80211_MESHPERR_FLAGS_AE   0x40 /* Address Extension */
 
#define IEEE80211_ACTION_CAT_INTERWORK   15
 
#define IEEE80211_ACTION_CAT_RESOURCE   16
 
#define IEEE80211_ACTION_CAT_PROXY   17
 
#define IEEE80211_MESH_AE_MASK   0x03
 
#define IEEE80211_MESHRT_FLAGS_DISCOVER   0x01 /* path discovery */
 
#define IEEE80211_MESHRT_FLAGS_VALID   0x02 /* path discovery complete */
 
#define IEEE80211_MESHRT_FLAGS_PROXY   0x04 /* proxy entry */
 
#define IEEE80211_MESHRT_FLAGS_GATE   0x08 /* mesh gate entry */
 
#define IEEE80211_MESH_ROUTE_PRIV(rt, cast)   ((cast *)rt->rt_priv)
 
#define IEEE80211_MESH_PROTO_DSZ   12 /* description size */
 
#define IEEE80211_MESH_SEQ_LEQ(a, b)   ((int32_t)((a)-(b)) <= 0)
 
#define IEEE80211_MESH_SEQ_GEQ(a, b)   ((int32_t)((a)-(b)) >= 0)
 
#define IEEE80211_MESHFLAGS_AP   0x01 /* accept peers */
 
#define IEEE80211_MESHFLAGS_GATE   0x02 /* mesh gate role */
 
#define IEEE80211_MESHFLAGS_FWD   0x04 /* forward packets */
 
#define IEEE80211_MESHFLAGS_ROOT   0x08 /* configured as root */
 

Typedefs

typedef uint32_t ieee80211_mesh_seq
 

Enumerations

enum  { IEEE80211_MESHCONF_PATH_HWMP = 1 , IEEE80211_MESHCONF_PATH_VENDOR = 255 }
 
enum  { IEEE80211_MESHCONF_METRIC_AIRTIME = 1 , IEEE80211_MESHCONF_METRIC_VENDOR = 255 }
 
enum  { IEEE80211_MESHCONF_CC_DISABLED = 0 , IEEE80211_MESHCONF_CC_SIG = 1 , IEEE80211_MESHCONF_CC_VENDOR = 255 }
 
enum  { IEEE80211_MESHCONF_SYNC_NEIGHOFF = 1 , IEEE80211_MESHCONF_SYNC_VENDOR = 255 }
 
enum  { IEEE80211_MESHCONF_AUTH_DISABLED = 0 , IEEE80211_MESHCONF_AUTH_SEA = 1 , IEEE80211_MESHCONF_AUTH_8021X = 2 , IEEE80211_MESHCONF_AUTH_VENDOR = 255 }
 
enum  { IEEE80211_MPPID_MPM = 0 , IEEE80211_MPPID_AUTH_MPM = 1 }
 
enum  { IEEE80211_ACTION_MESHPEERING_OPEN = 1 , IEEE80211_ACTION_MESHPEERING_CONFIRM = 2 , IEEE80211_ACTION_MESHPEERING_CLOSE = 3 }
 
enum  {
  IEEE80211_ACTION_MESH_LMETRIC = 0 , IEEE80211_ACTION_MESH_HWMP = 1 , IEEE80211_ACTION_MESH_GANN = 2 , IEEE80211_ACTION_MESH_CC = 3 ,
  IEEE80211_ACTION_MESH_MCCA_SREQ = 4 , IEEE80211_ACTION_MESH_MCCA_SREP = 5 , IEEE80211_ACTION_MESH_MCCA_AREQ = 6 , IEEE80211_ACTION_MESH_MCCA_ADVER =7 ,
  IEEE80211_ACTION_MESH_MCCA_TRDOWN = 8 , IEEE80211_ACTION_MESH_TBTT_REQ = 9 , IEEE80211_ACTION_MESH_TBTT_RES = 10
}
 
enum  { IEEE80211_MESH_AE_00 = 0 , IEEE80211_MESH_AE_01 = 1 , IEEE80211_MESH_AE_10 = 2 , IEEE80211_MESH_AE_11 = 3 }
 

Functions

 MALLOC_DECLARE (M_80211_MESH_PREQ)
 
 MALLOC_DECLARE (M_80211_MESH_PREP)
 
 MALLOC_DECLARE (M_80211_MESH_PERR)
 
 MALLOC_DECLARE (M_80211_MESH_RT)
 
 MALLOC_DECLARE (M_80211_MESH_GT_RT)
 
void ieee80211_mesh_attach (struct ieee80211com *)
 
void ieee80211_mesh_detach (struct ieee80211com *)
 
struct ieee80211_mesh_routeieee80211_mesh_rt_find (struct ieee80211vap *, const uint8_t[IEEE80211_ADDR_LEN])
 
struct ieee80211_mesh_routeieee80211_mesh_rt_add (struct ieee80211vap *, const uint8_t[IEEE80211_ADDR_LEN])
 
void ieee80211_mesh_rt_del (struct ieee80211vap *, const uint8_t[IEEE80211_ADDR_LEN])
 
void ieee80211_mesh_rt_flush (struct ieee80211vap *)
 
void ieee80211_mesh_rt_flush_peer (struct ieee80211vap *, const uint8_t[IEEE80211_ADDR_LEN])
 
int ieee80211_mesh_rt_update (struct ieee80211_mesh_route *rt, int)
 
void ieee80211_mesh_proxy_check (struct ieee80211vap *, const uint8_t[IEEE80211_ADDR_LEN])
 
int ieee80211_mesh_register_proto_path (const struct ieee80211_mesh_proto_path *)
 
int ieee80211_mesh_register_proto_metric (const struct ieee80211_mesh_proto_metric *)
 
uint8_t * ieee80211_add_meshid (uint8_t *, struct ieee80211vap *)
 
uint8_t * ieee80211_add_meshconf (uint8_t *, struct ieee80211vap *)
 
uint8_t * ieee80211_add_meshpeer (uint8_t *, uint8_t, uint16_t, uint16_t, uint16_t)
 
uint8_t * ieee80211_add_meshlmetric (uint8_t *, uint8_t, uint32_t)
 
uint8_t * ieee80211_add_meshgate (uint8_t *, struct ieee80211_meshgann_ie *)
 
void ieee80211_mesh_node_init (struct ieee80211vap *, struct ieee80211_node *)
 
void ieee80211_mesh_node_cleanup (struct ieee80211_node *)
 
void ieee80211_parse_meshid (struct ieee80211_node *, const uint8_t *)
 
void ieee80211_mesh_init_neighbor (struct ieee80211_node *, const struct ieee80211_frame *, const struct ieee80211_scanparams *)
 
void ieee80211_mesh_update_beacon (struct ieee80211vap *, struct ieee80211_beacon_offsets *)
 
struct ieee80211_mesh_gate_routeieee80211_mesh_mark_gate (struct ieee80211vap *, const uint8_t *, struct ieee80211_mesh_route *)
 
void ieee80211_mesh_forward_to_gates (struct ieee80211vap *, struct ieee80211_mesh_route *)
 
struct ieee80211_nodeieee80211_mesh_find_txnode (struct ieee80211vap *, const uint8_t[IEEE80211_ADDR_LEN])
 
static __inline int ieee80211_mesh_isproxyena (struct ieee80211vap *vap)
 
static __inline struct ieee80211_nodeieee80211_mesh_discover (struct ieee80211vap *vap, const uint8_t dest[IEEE80211_ADDR_LEN], struct mbuf *m)
 

Variables

struct ieee80211_meshconf_ie __packed
 

Macro Definition Documentation

◆ IEEE80211_ACTION_CAT_INTERWORK

#define IEEE80211_ACTION_CAT_INTERWORK   15

Definition at line 335 of file ieee80211_mesh.h.

◆ IEEE80211_ACTION_CAT_PROXY

#define IEEE80211_ACTION_CAT_PROXY   17

Definition at line 337 of file ieee80211_mesh.h.

◆ IEEE80211_ACTION_CAT_RESOURCE

#define IEEE80211_ACTION_CAT_RESOURCE   16

Definition at line 336 of file ieee80211_mesh.h.

◆ IEEE80211_MESH_AE_MASK

#define IEEE80211_MESH_AE_MASK   0x03

Definition at line 394 of file ieee80211_mesh.h.

◆ IEEE80211_MESH_CONF_SZ

#define IEEE80211_MESH_CONF_SZ   (7)

Definition at line 45 of file ieee80211_mesh.h.

◆ IEEE80211_MESH_DEFAULT_TTL

#define IEEE80211_MESH_DEFAULT_TTL   31

Definition at line 35 of file ieee80211_mesh.h.

◆ IEEE80211_MESH_LMETRIC_FLAGS_REQ

#define IEEE80211_MESH_LMETRIC_FLAGS_REQ   0x01 /* Request */

Definition at line 126 of file ieee80211_mesh.h.

◆ IEEE80211_MESH_MAX_NEIGHBORS

#define IEEE80211_MESH_MAX_NEIGHBORS   15

Definition at line 36 of file ieee80211_mesh.h.

◆ IEEE80211_MESH_PROTO_DSZ

#define IEEE80211_MESH_PROTO_DSZ   12 /* description size */

Definition at line 451 of file ieee80211_mesh.h.

◆ IEEE80211_MESH_ROUTE_PRIV

#define IEEE80211_MESH_ROUTE_PRIV (   rt,
  cast 
)    ((cast *)rt->rt_priv)

Definition at line 439 of file ieee80211_mesh.h.

◆ IEEE80211_MESH_SEQ_GEQ

#define IEEE80211_MESH_SEQ_GEQ (   a,
 
)    ((int32_t)((a)-(b)) >= 0)

Definition at line 505 of file ieee80211_mesh.h.

◆ IEEE80211_MESH_SEQ_LEQ

#define IEEE80211_MESH_SEQ_LEQ (   a,
 
)    ((int32_t)((a)-(b)) <= 0)

Definition at line 504 of file ieee80211_mesh.h.

◆ IEEE80211_MESHCONF_CAP_AP

#define IEEE80211_MESHCONF_CAP_AP   0x01 /* Accepting Peers */

Definition at line 106 of file ieee80211_mesh.h.

◆ IEEE80211_MESHCONF_CAP_BTR

#define IEEE80211_MESHCONF_CAP_BTR   0x10 /* Beacon Timing Report Enab */

Definition at line 110 of file ieee80211_mesh.h.

◆ IEEE80211_MESHCONF_CAP_FWRD

#define IEEE80211_MESHCONF_CAP_FWRD   0x08 /* forwarding enabled */

Definition at line 109 of file ieee80211_mesh.h.

◆ IEEE80211_MESHCONF_CAP_MCCAE

#define IEEE80211_MESHCONF_CAP_MCCAE   0x04 /* MCCA enabled */

Definition at line 108 of file ieee80211_mesh.h.

◆ IEEE80211_MESHCONF_CAP_MCCAS

#define IEEE80211_MESHCONF_CAP_MCCAS   0x02 /* MCCA supported */

Definition at line 107 of file ieee80211_mesh.h.

◆ IEEE80211_MESHCONF_CAP_PSL

#define IEEE80211_MESHCONF_CAP_PSL   0x40 /* Power Save Level */

Definition at line 112 of file ieee80211_mesh.h.

◆ IEEE80211_MESHCONF_CAP_TBTT

#define IEEE80211_MESHCONF_CAP_TBTT   0x20 /* TBTT Adjusting */

Definition at line 111 of file ieee80211_mesh.h.

◆ IEEE80211_MESHCONF_FORM_GATE

#define IEEE80211_MESHCONF_FORM_GATE   0x01 /* Connected to Gate */

Definition at line 101 of file ieee80211_mesh.h.

◆ IEEE80211_MESHCONF_FORM_NNEIGH_MASK

#define IEEE80211_MESHCONF_FORM_NNEIGH_MASK   0x7E /* Number of Neighbours */

Definition at line 102 of file ieee80211_mesh.h.

◆ IEEE80211_MESHCONF_FORM_SA

#define IEEE80211_MESHCONF_FORM_SA   0xF0 /* indicating 802.1X auth */

Definition at line 103 of file ieee80211_mesh.h.

◆ IEEE80211_MESHFLAGS_AP

#define IEEE80211_MESHFLAGS_AP   0x01 /* accept peers */

Definition at line 513 of file ieee80211_mesh.h.

◆ IEEE80211_MESHFLAGS_FWD

#define IEEE80211_MESHFLAGS_FWD   0x04 /* forward packets */

Definition at line 515 of file ieee80211_mesh.h.

◆ IEEE80211_MESHFLAGS_GATE

#define IEEE80211_MESHFLAGS_GATE   0x02 /* mesh gate role */

Definition at line 514 of file ieee80211_mesh.h.

◆ IEEE80211_MESHFLAGS_ROOT

#define IEEE80211_MESHFLAGS_ROOT   0x08 /* configured as root */

Definition at line 516 of file ieee80211_mesh.h.

◆ IEEE80211_MESHGANN_BASE_SZ

#define IEEE80211_MESHGANN_BASE_SZ   (15)

Definition at line 201 of file ieee80211_mesh.h.

◆ IEEE80211_MESHLMETRIC_INITIALVAL

#define IEEE80211_MESHLMETRIC_INITIALVAL   0

Definition at line 132 of file ieee80211_mesh.h.

◆ IEEE80211_MESHPERR_BASE_SZ

#define IEEE80211_MESHPERR_BASE_SZ   (2)

Definition at line 284 of file ieee80211_mesh.h.

◆ IEEE80211_MESHPERR_DEST_SZ

#define IEEE80211_MESHPERR_DEST_SZ   (13)

Definition at line 285 of file ieee80211_mesh.h.

◆ IEEE80211_MESHPERR_DEST_SZ_AE

#define IEEE80211_MESHPERR_DEST_SZ_AE   (19)

Definition at line 286 of file ieee80211_mesh.h.

◆ IEEE80211_MESHPERR_DFLAGS_RC

#define IEEE80211_MESHPERR_DFLAGS_RC   0x02 /* XXX: not part of standard */

Definition at line 295 of file ieee80211_mesh.h.

◆ IEEE80211_MESHPERR_DFLAGS_USN

#define IEEE80211_MESHPERR_DFLAGS_USN   0x01 /* XXX: not part of standard */

Definition at line 294 of file ieee80211_mesh.h.

◆ IEEE80211_MESHPERR_FLAGS_AE

#define IEEE80211_MESHPERR_FLAGS_AE   0x40 /* Address Extension */

Definition at line 296 of file ieee80211_mesh.h.

◆ IEEE80211_MESHPERR_MAXDEST

#define IEEE80211_MESHPERR_MAXDEST   (19)

Definition at line 282 of file ieee80211_mesh.h.

◆ IEEE80211_MESHPERR_NDEST_OFFSET

#define IEEE80211_MESHPERR_NDEST_OFFSET   (3)

Definition at line 283 of file ieee80211_mesh.h.

◆ IEEE80211_MESHPREP_BASE_SZ

#define IEEE80211_MESHPREP_BASE_SZ   (31)

Definition at line 262 of file ieee80211_mesh.h.

◆ IEEE80211_MESHPREP_BASE_SZ_AE

#define IEEE80211_MESHPREP_BASE_SZ_AE   (37)

Definition at line 263 of file ieee80211_mesh.h.

◆ IEEE80211_MESHPREP_FLAGS_AE

#define IEEE80211_MESHPREP_FLAGS_AE   0x40 /* Address Extension */

Definition at line 268 of file ieee80211_mesh.h.

◆ IEEE80211_MESHPREQ_BASE_SZ

#define IEEE80211_MESHPREQ_BASE_SZ   (26)

Definition at line 229 of file ieee80211_mesh.h.

◆ IEEE80211_MESHPREQ_BASE_SZ_AE

#define IEEE80211_MESHPREQ_BASE_SZ_AE   (32)

Definition at line 230 of file ieee80211_mesh.h.

◆ IEEE80211_MESHPREQ_FLAGS_AE

#define IEEE80211_MESHPREQ_FLAGS_AE   0x40 /* Address Extension */

Definition at line 241 of file ieee80211_mesh.h.

◆ IEEE80211_MESHPREQ_FLAGS_AM

#define IEEE80211_MESHPREQ_FLAGS_AM   0x02 /* 0 = bcast / 1 = ucast */

Definition at line 239 of file ieee80211_mesh.h.

◆ IEEE80211_MESHPREQ_FLAGS_GATE

#define IEEE80211_MESHPREQ_FLAGS_GATE   0x01 /* Mesh Gate */

Definition at line 238 of file ieee80211_mesh.h.

◆ IEEE80211_MESHPREQ_FLAGS_PP

#define IEEE80211_MESHPREQ_FLAGS_PP   0x04 /* Proactive PREP */

Definition at line 240 of file ieee80211_mesh.h.

◆ IEEE80211_MESHPREQ_TCNT_OFFSET

#define IEEE80211_MESHPREQ_TCNT_OFFSET   (27)

Definition at line 232 of file ieee80211_mesh.h.

◆ IEEE80211_MESHPREQ_TCNT_OFFSET_AE

#define IEEE80211_MESHPREQ_TCNT_OFFSET_AE   (33)

Definition at line 233 of file ieee80211_mesh.h.

◆ IEEE80211_MESHPREQ_TFLAGS_TO

#define IEEE80211_MESHPREQ_TFLAGS_TO   0x01 /* Target Only */

Definition at line 254 of file ieee80211_mesh.h.

◆ IEEE80211_MESHPREQ_TFLAGS_USN

#define IEEE80211_MESHPREQ_TFLAGS_USN   0x04 /* Unknown HWMP seq number */

Definition at line 255 of file ieee80211_mesh.h.

◆ IEEE80211_MESHPREQ_TRGT_SZ

#define IEEE80211_MESHPREQ_TRGT_SZ   (11)

Definition at line 231 of file ieee80211_mesh.h.

◆ IEEE80211_MESHRANN_BASE_SZ

#define IEEE80211_MESHRANN_BASE_SZ   (21)

Definition at line 214 of file ieee80211_mesh.h.

◆ IEEE80211_MESHRANN_FLAGS_GATE

#define IEEE80211_MESHRANN_FLAGS_GATE   0x01 /* Mesh Gate */

Definition at line 219 of file ieee80211_mesh.h.

◆ IEEE80211_MESHRT_FLAGS_DISCOVER

#define IEEE80211_MESHRT_FLAGS_DISCOVER   0x01 /* path discovery */

Definition at line 430 of file ieee80211_mesh.h.

◆ IEEE80211_MESHRT_FLAGS_GATE

#define IEEE80211_MESHRT_FLAGS_GATE   0x08 /* mesh gate entry */

Definition at line 433 of file ieee80211_mesh.h.

◆ IEEE80211_MESHRT_FLAGS_PROXY

#define IEEE80211_MESHRT_FLAGS_PROXY   0x04 /* proxy entry */

Definition at line 432 of file ieee80211_mesh.h.

◆ IEEE80211_MESHRT_FLAGS_VALID

#define IEEE80211_MESHRT_FLAGS_VALID   0x02 /* path discovery complete */

Definition at line 431 of file ieee80211_mesh.h.

◆ IEEE80211_MPM_BASE_SZ

#define IEEE80211_MPM_BASE_SZ   (4)

Definition at line 144 of file ieee80211_mesh.h.

◆ IEEE80211_MPM_MAX_SZ

#define IEEE80211_MPM_MAX_SZ   (8)

Definition at line 145 of file ieee80211_mesh.h.

Typedef Documentation

◆ ieee80211_mesh_seq

typedef uint32_t ieee80211_mesh_seq

Definition at line 503 of file ieee80211_mesh.h.

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
IEEE80211_MESHCONF_PATH_HWMP 
IEEE80211_MESHCONF_PATH_VENDOR 

Definition at line 59 of file ieee80211_mesh.h.

◆ anonymous enum

anonymous enum
Enumerator
IEEE80211_MESHCONF_METRIC_AIRTIME 
IEEE80211_MESHCONF_METRIC_VENDOR 

Definition at line 67 of file ieee80211_mesh.h.

◆ anonymous enum

anonymous enum
Enumerator
IEEE80211_MESHCONF_CC_DISABLED 
IEEE80211_MESHCONF_CC_SIG 
IEEE80211_MESHCONF_CC_VENDOR 

Definition at line 75 of file ieee80211_mesh.h.

◆ anonymous enum

anonymous enum
Enumerator
IEEE80211_MESHCONF_SYNC_NEIGHOFF 
IEEE80211_MESHCONF_SYNC_VENDOR 

Definition at line 83 of file ieee80211_mesh.h.

◆ anonymous enum

anonymous enum
Enumerator
IEEE80211_MESHCONF_AUTH_DISABLED 
IEEE80211_MESHCONF_AUTH_SEA 
IEEE80211_MESHCONF_AUTH_8021X 
IEEE80211_MESHCONF_AUTH_VENDOR 

Definition at line 91 of file ieee80211_mesh.h.

◆ anonymous enum

anonymous enum
Enumerator
IEEE80211_MPPID_MPM 
IEEE80211_MPPID_AUTH_MPM 

Definition at line 156 of file ieee80211_mesh.h.

◆ anonymous enum

anonymous enum
Enumerator
IEEE80211_ACTION_MESHPEERING_OPEN 
IEEE80211_ACTION_MESHPEERING_CONFIRM 
IEEE80211_ACTION_MESHPEERING_CLOSE 

Definition at line 342 of file ieee80211_mesh.h.

◆ anonymous enum

anonymous enum
Enumerator
IEEE80211_ACTION_MESH_LMETRIC 
IEEE80211_ACTION_MESH_HWMP 
IEEE80211_ACTION_MESH_GANN 
IEEE80211_ACTION_MESH_CC 
IEEE80211_ACTION_MESH_MCCA_SREQ 
IEEE80211_ACTION_MESH_MCCA_SREP 
IEEE80211_ACTION_MESH_MCCA_AREQ 
IEEE80211_ACTION_MESH_MCCA_ADVER 
IEEE80211_ACTION_MESH_MCCA_TRDOWN 
IEEE80211_ACTION_MESH_TBTT_REQ 
IEEE80211_ACTION_MESH_TBTT_RES 

Definition at line 353 of file ieee80211_mesh.h.

◆ anonymous enum

anonymous enum
Enumerator
IEEE80211_MESH_AE_00 
IEEE80211_MESH_AE_01 
IEEE80211_MESH_AE_10 
IEEE80211_MESH_AE_11 

Definition at line 395 of file ieee80211_mesh.h.

Function Documentation

◆ ieee80211_add_meshconf()

◆ ieee80211_add_meshgate()

◆ ieee80211_add_meshid()

◆ ieee80211_add_meshlmetric()

uint8_t * ieee80211_add_meshlmetric ( uint8_t *  frm,
uint8_t  flags,
uint32_t  metric 
)

Definition at line 3325 of file ieee80211_mesh.c.

References ADDWORD, and IEEE80211_ELEMID_MESHLINK.

Referenced by mesh_send_action_meshlmetric().

Here is the caller graph for this function:

◆ ieee80211_add_meshpeer()

uint8_t * ieee80211_add_meshpeer ( uint8_t *  frm,
uint8_t  subtype,
uint16_t  localid,
uint16_t  peerid,
uint16_t  reason 
)

◆ ieee80211_mesh_attach()

void ieee80211_mesh_attach ( struct ieee80211com ic)

Definition at line 612 of file ieee80211_mesh.c.

References ieee80211com::ic_vattach, IEEE80211_M_MBSS, and mesh_vattach().

Referenced by ieee80211_proto_attach().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ieee80211_mesh_detach()

void ieee80211_mesh_detach ( struct ieee80211com ic)

Definition at line 618 of file ieee80211_mesh.c.

Referenced by ieee80211_proto_detach().

Here is the caller graph for this function:

◆ ieee80211_mesh_discover()

static __inline struct ieee80211_node * ieee80211_mesh_discover ( struct ieee80211vap vap,
const uint8_t  dest[IEEE80211_ADDR_LEN],
struct mbuf *  m 
)
static

Definition at line 597 of file ieee80211_mesh.h.

References ieee80211vap::iv_mesh, ieee80211_mesh_proto_path::mpp_discover, and ieee80211_mesh_state::ms_ppath.

Referenced by ieee80211_start_pkt(), mesh_ioctl_set80211(), and mesh_linkchange().

Here is the caller graph for this function:

◆ ieee80211_mesh_find_txnode()

struct ieee80211_node * ieee80211_mesh_find_txnode ( struct ieee80211vap vap,
const uint8_t  dest[IEEE80211_ADDR_LEN] 
)

◆ ieee80211_mesh_forward_to_gates()

◆ ieee80211_mesh_init_neighbor()

void ieee80211_mesh_init_neighbor ( struct ieee80211_node ni,
const struct ieee80211_frame wh,
const struct ieee80211_scanparams sp 
)

Definition at line 3392 of file ieee80211_mesh.c.

References ieee80211_parse_meshid(), and ieee80211_scanparams::meshid.

Referenced by ieee80211_init_neighbor().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ieee80211_mesh_isproxyena()

static __inline int ieee80211_mesh_isproxyena ( struct ieee80211vap vap)
static

Definition at line 582 of file ieee80211_mesh.h.

References IEEE80211_MESHFLAGS_AP, IEEE80211_MESHFLAGS_GATE, ieee80211vap::iv_mesh, and ieee80211_mesh_state::ms_flags.

Referenced by ieee80211_start_pkt().

Here is the caller graph for this function:

◆ ieee80211_mesh_mark_gate()

struct ieee80211_mesh_gate_route * ieee80211_mesh_mark_gate ( struct ieee80211vap vap,
const uint8_t *  addr,
struct ieee80211_mesh_route rt 
)

◆ ieee80211_mesh_node_cleanup()

void ieee80211_mesh_node_cleanup ( struct ieee80211_node ni)

◆ ieee80211_mesh_node_init()

void ieee80211_mesh_node_init ( struct ieee80211vap vap,
struct ieee80211_node ni 
)

Definition at line 3358 of file ieee80211_mesh.c.

References IEEE80211_NODE_QOS, ieee80211_node::ni_flags, ieee80211_node::ni_mlhtimer, and ieee80211_node::ni_mltimer.

Referenced by ieee80211_alloc_node().

Here is the caller graph for this function:

◆ ieee80211_mesh_proxy_check()

◆ ieee80211_mesh_register_proto_metric()

int ieee80211_mesh_register_proto_metric ( const struct ieee80211_mesh_proto_metric mpm)

Definition at line 463 of file ieee80211_mesh.c.

References IEEE80211_MESH_PROTO_DSZ, mesh_proto_metrics, ieee80211_mesh_proto_metric::mpm_active, and ieee80211_mesh_proto_metric::mpm_descr.

Referenced by ieee80211_mesh_init().

Here is the caller graph for this function:

◆ ieee80211_mesh_register_proto_path()

int ieee80211_mesh_register_proto_path ( const struct ieee80211_mesh_proto_path mpp)

Definition at line 444 of file ieee80211_mesh.c.

References IEEE80211_MESH_PROTO_DSZ, mesh_proto_paths, ieee80211_mesh_proto_path::mpp_active, and ieee80211_mesh_proto_path::mpp_descr.

Referenced by ieee80211_hwmp_init().

Here is the caller graph for this function:

◆ ieee80211_mesh_rt_add()

struct ieee80211_mesh_route * ieee80211_mesh_rt_add ( struct ieee80211vap vap,
const uint8_t  dest[IEEE80211_ADDR_LEN] 
)

Definition at line 241 of file ieee80211_mesh.c.

References IEEE80211_ADDR_EQ, ieee80211_mesh_rt_find(), ieee80211vap::iv_mesh, ieee80211vap::iv_myaddr, mesh_rt_add_locked(), MESH_RT_LOCK, and MESH_RT_UNLOCK.

Referenced by hwmp_discover(), hwmp_recv_prep(), hwmp_recv_preq(), hwmp_recv_rann(), hwmp_update_transmitter(), and mesh_checkpseq().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ieee80211_mesh_rt_del()

void ieee80211_mesh_rt_del ( struct ieee80211vap vap,
const uint8_t  dest[IEEE80211_ADDR_LEN] 
)

◆ ieee80211_mesh_rt_find()

struct ieee80211_mesh_route * ieee80211_mesh_rt_find ( struct ieee80211vap vap,
const uint8_t  dest[IEEE80211_ADDR_LEN] 
)

◆ ieee80211_mesh_rt_flush()

void ieee80211_mesh_rt_flush ( struct ieee80211vap vap)

Definition at line 391 of file ieee80211_mesh.c.

References ieee80211vap::iv_mesh, mesh_rt_del(), MESH_RT_LOCK, and MESH_RT_UNLOCK.

Referenced by mesh_ioctl_set80211(), mesh_newstate(), and mesh_vdetach().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ieee80211_mesh_rt_flush_peer()

void ieee80211_mesh_rt_flush_peer ( struct ieee80211vap vap,
const uint8_t  peer[IEEE80211_ADDR_LEN] 
)

Definition at line 405 of file ieee80211_mesh.c.

References IEEE80211_ADDR_EQ, ieee80211vap::iv_mesh, mesh_rt_del(), MESH_RT_LOCK, MESH_RT_UNLOCK, and ieee80211_mesh_route::rt_nexthop.

Referenced by hwmp_peerdown(), and hwmp_recv_perr().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ieee80211_mesh_rt_update()

◆ ieee80211_mesh_update_beacon()

void ieee80211_mesh_update_beacon ( struct ieee80211vap vap,
struct ieee80211_beacon_offsets bo 
)

Definition at line 3400 of file ieee80211_mesh.c.

References ieee80211_beacon_offsets::bo_flags, ieee80211_beacon_offsets::bo_meshconf, ieee80211_add_meshconf(), IEEE80211_BEACON_MESHCONF, IEEE80211_M_MBSS, and ieee80211vap::iv_opmode.

Referenced by ieee80211_beacon_update().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ieee80211_parse_meshid()

void ieee80211_parse_meshid ( struct ieee80211_node ni,
const uint8_t *  ie 
)

Definition at line 3382 of file ieee80211_mesh.c.

References ieee80211_node::ni_meshid, and ieee80211_node::ni_meshidlen.

Referenced by ieee80211_mesh_init_neighbor(), and ieee80211_sta_join().

Here is the caller graph for this function:

◆ MALLOC_DECLARE() [1/5]

MALLOC_DECLARE ( M_80211_MESH_GT_RT  )

◆ MALLOC_DECLARE() [2/5]

MALLOC_DECLARE ( M_80211_MESH_PERR  )

◆ MALLOC_DECLARE() [3/5]

MALLOC_DECLARE ( M_80211_MESH_PREP  )

◆ MALLOC_DECLARE() [4/5]

MALLOC_DECLARE ( M_80211_MESH_PREQ  )

◆ MALLOC_DECLARE() [5/5]

MALLOC_DECLARE ( M_80211_MESH_RT  )

Variable Documentation

◆ __packed

struct ieee80211_meshcntl_ae10 __packed