Lines Matching refs:rt

157 	struct ieee80211_mesh_route *rt;
161 TAILQ_FOREACH(rt, &ms->ms_routes, rt_next) {
162 if (IEEE80211_ADDR_EQ(dest, rt->rt_dest))
163 return rt;
172 struct ieee80211_mesh_route *rt;
179 rt = malloc(ALIGN(sizeof(struct ieee80211_mesh_route)) +
181 if (rt != NULL) {
182 IEEE80211_ADDR_COPY(rt->rt_dest, dest);
183 rt->rt_priv = (void *)ALIGN(&rt[1]);
184 rt->rt_crtime = ticks;
185 TAILQ_INSERT_TAIL(&ms->ms_routes, rt, rt_next);
187 return rt;
195 struct ieee80211_mesh_route *rt;
198 rt = mesh_rt_find_locked(ms, dest);
200 return rt;
208 struct ieee80211_mesh_route *rt;
216 rt = mesh_rt_add_locked(ms, dest);
218 return rt;
229 struct ieee80211_mesh_route *rt;
232 rt = mesh_rt_find_locked(ms, dest);
233 if (rt == NULL) {
234 rt = mesh_rt_add_locked(ms, dest);
235 if (rt == NULL) {
242 IEEE80211_ADDR_COPY(rt->rt_nexthop, vap->iv_myaddr);
243 rt->rt_flags |= IEEE80211_MESHRT_FLAGS_VALID
247 } else if ((rt->rt_flags & IEEE80211_MESHRT_FLAGS_VALID) == 0) {
257 IEEE80211_ADDR_COPY(rt->rt_nexthop, vap->iv_myaddr);
258 rt->rt_flags |= IEEE80211_MESHRT_FLAGS_VALID
269 mesh_rt_del(struct ieee80211_mesh_state *ms, struct ieee80211_mesh_route *rt)
271 TAILQ_REMOVE(&ms->ms_routes, rt, rt_next);
272 free(rt, M_80211_MESH_RT);
280 struct ieee80211_mesh_route *rt, *next;
283 TAILQ_FOREACH_SAFE(rt, &ms->ms_routes, rt_next, next) {
284 if (IEEE80211_ADDR_EQ(rt->rt_dest, dest)) {
285 mesh_rt_del(ms, rt);
297 struct ieee80211_mesh_route *rt, *next;
302 TAILQ_FOREACH_SAFE(rt, &ms->ms_routes, rt_next, next)
303 mesh_rt_del(ms, rt);
312 struct ieee80211_mesh_route *rt, *next;
315 TAILQ_FOREACH_SAFE(rt, &ms->ms_routes, rt_next, next) {
316 if (IEEE80211_ADDR_EQ(rt->rt_nexthop, peer))
317 mesh_rt_del(ms, rt);
330 struct ieee80211_mesh_route *rt, *next;
335 TAILQ_FOREACH_SAFE(rt, &ms->ms_routes, rt_next, next) {
336 if ((rt->rt_flags & IEEE80211_MESHRT_FLAGS_VALID) == 0 &&
337 ticks - rt->rt_crtime >= ms->ms_ppath->mpp_inact)
338 mesh_rt_del(ms, rt);
796 struct ieee80211_mesh_route *rt;
798 rt = ieee80211_mesh_rt_find(vap, source);
799 if (rt == NULL) {
800 rt = ieee80211_mesh_rt_add(vap, source);
801 if (rt == NULL) {
809 rt->rt_lastmseq = seq;
812 if (IEEE80211_MESH_SEQ_GEQ(rt->rt_lastmseq, seq)) {
815 rt->rt_lastmseq = seq;
827 struct ieee80211_mesh_route *rt;
829 rt = ieee80211_mesh_rt_find(vap, dest);
830 if (rt == NULL)
832 if ((rt->rt_flags & IEEE80211_MESHRT_FLAGS_VALID) == 0 ||
833 (rt->rt_flags & IEEE80211_MESHRT_FLAGS_PROXY)) {
835 "%s: !valid or proxy, flags 0x%x", __func__, rt->rt_flags);
839 return ieee80211_find_txnode(vap, rt->rt_nexthop);
1031 struct ieee80211_mesh_route *rt =
1034 return (rt != NULL &&
1035 (rt->rt_flags & IEEE80211_MESHRT_FLAGS_PROXY));
2582 struct ieee80211_mesh_route *rt;
2612 TAILQ_FOREACH(rt, &ms->ms_routes, rt_next) {
2627 TAILQ_FOREACH(rt, &ms->ms_routes, rt_next) {
2632 imr->imr_flags = rt->rt_flags;
2634 rt->rt_dest);
2636 rt->rt_nexthop);
2637 imr->imr_metric = rt->rt_metric;
2638 imr->imr_nhops = rt->rt_nhops;
2639 imr->imr_lifetime = rt->rt_lifetime;
2640 imr->imr_lastmseq = rt->rt_lastmseq;