Lines Matching refs:vifi
48 static int report_chunk(struct rtentry *start_rt, vifi_t vifi, u_int32_t dst);
73 vifi_t vifi; in init_children_and_leaves() local
84 for (vifi = 0, v = uvifs; vifi < numvifs; ++vifi, ++v) { in init_children_and_leaves()
85 r->rt_dominants [vifi] = 0; in init_children_and_leaves()
86 r->rt_subordinates[vifi] = 0; in init_children_and_leaves()
88 if (vifi != parent && !(v->uv_flags & (VIFF_DOWN|VIFF_DISABLED))) { in init_children_and_leaves()
89 VIFM_SET(vifi, r->rt_children); in init_children_and_leaves()
91 VIFM_SET(vifi, r->rt_leaves); in init_children_and_leaves()
92 r->rt_leaf_timers[vifi] = 0; in init_children_and_leaves()
95 r->rt_leaf_timers[vifi] = LEAF_CONFIRMATION_TIME; in init_children_and_leaves()
100 r->rt_leaf_timers[vifi] = 0; in init_children_and_leaves()
114 add_vif_to_routes(vifi_t vifi) in add_vif_to_routes() argument
119 v = &uvifs[vifi]; in add_vif_to_routes()
122 !VIFM_ISSET(vifi, r->rt_children)) { in add_vif_to_routes()
123 VIFM_SET(vifi, r->rt_children); in add_vif_to_routes()
124 r->rt_dominants [vifi] = 0; in add_vif_to_routes()
125 r->rt_subordinates[vifi] = 0; in add_vif_to_routes()
127 VIFM_SET(vifi, r->rt_leaves); in add_vif_to_routes()
128 r->rt_leaf_timers[vifi] = 0; in add_vif_to_routes()
131 VIFM_CLR(vifi, r->rt_leaves); in add_vif_to_routes()
132 r->rt_leaf_timers[vifi] = LEAF_CONFIRMATION_TIME; in add_vif_to_routes()
147 delete_vif_from_routes(vifi_t vifi) in delete_vif_from_routes() argument
153 if (vifi == r->rt_parent) { in delete_vif_from_routes()
160 else if (VIFM_ISSET(vifi, r->rt_children)) { in delete_vif_from_routes()
161 VIFM_CLR(vifi, r->rt_children); in delete_vif_from_routes()
162 VIFM_CLR(vifi, r->rt_leaves); in delete_vif_from_routes()
163 r->rt_subordinates[vifi] = 0; in delete_vif_from_routes()
164 r->rt_leaf_timers [vifi] = 0; in delete_vif_from_routes()
168 r->rt_dominants[vifi] = 0; in delete_vif_from_routes()
181 delete_neighbor_from_routes(u_int32_t addr, vifi_t vifi) in delete_neighbor_from_routes() argument
186 v = &uvifs[vifi]; in delete_neighbor_from_routes()
189 if (r->rt_dominants[vifi] == addr) { in delete_neighbor_from_routes()
190 VIFM_SET(vifi, r->rt_children); in delete_neighbor_from_routes()
191 r->rt_dominants [vifi] = 0; in delete_neighbor_from_routes()
192 r->rt_subordinates[vifi] = 0; in delete_neighbor_from_routes()
194 VIFM_SET(vifi, r->rt_leaves); in delete_neighbor_from_routes()
195 r->rt_leaf_timers[vifi] = 0; in delete_neighbor_from_routes()
198 VIFM_CLR(vifi, r->rt_leaves); in delete_neighbor_from_routes()
199 r->rt_leaf_timers[vifi] = LEAF_CONFIRMATION_TIME; in delete_neighbor_from_routes()
204 else if (r->rt_subordinates[vifi] == addr) { in delete_neighbor_from_routes()
205 r->rt_subordinates[vifi] = 0; in delete_neighbor_from_routes()
207 VIFM_SET(vifi, r->rt_leaves); in delete_neighbor_from_routes()
211 r->rt_leaf_timers[vifi] = LEAF_CONFIRMATION_TIME; in delete_neighbor_from_routes()
216 r->rt_leaf_timers[vifi] != 0) { in delete_neighbor_from_routes()
217 VIFM_SET(vifi, r->rt_leaves); in delete_neighbor_from_routes()
218 r->rt_leaf_timers[vifi] = 0; in delete_neighbor_from_routes()
343 vifi_t vifi) in update_route() argument
360 adj_metric = metric + uvifs[vifi].uv_metric; in update_route()
412 r->rt_parent = vifi; in update_route()
413 init_children_and_leaves(r, vifi); in update_route()
440 if (init_children_and_leaves(r, vifi)) { in update_route()
469 if (r->rt_parent != vifi || adj_metric < r->rt_metric) { in update_route()
473 r->rt_parent = vifi; in update_route()
474 if (init_children_and_leaves(r, vifi)) { in update_route()
484 else if (vifi != r->rt_parent) { in update_route()
489 if (VIFM_ISSET(vifi, r->rt_children)) { in update_route()
495 ntohl(src) < ntohl(uvifs[vifi].uv_lcl_addr))) { in update_route()
501 VIFM_CLR(vifi, r->rt_children); in update_route()
502 VIFM_CLR(vifi, r->rt_leaves); in update_route()
503 r->rt_dominants [vifi] = src; in update_route()
504 r->rt_subordinates[vifi] = 0; in update_route()
505 r->rt_leaf_timers [vifi] = 0; in update_route()
514 if (r->rt_subordinates[vifi] == 0) { in update_route()
515 VIFM_CLR(vifi, r->rt_leaves); in update_route()
516 r->rt_subordinates[vifi] = src; in update_route()
517 r->rt_leaf_timers [vifi] = 0; in update_route()
521 else if (src == r->rt_subordinates[vifi]) { in update_route()
528 r->rt_subordinates[vifi] = 0; in update_route()
529 if (uvifs[vifi].uv_neighbors == NULL || in update_route()
530 uvifs[vifi].uv_neighbors->al_next == NULL) { in update_route()
531 VIFM_SET(vifi, r->rt_leaves); in update_route()
535 r->rt_leaf_timers [vifi] = LEAF_CONFIRMATION_TIME; in update_route()
541 else if (src == r->rt_dominants[vifi] && in update_route()
544 ntohl(src) > ntohl(uvifs[vifi].uv_lcl_addr)))) { in update_route()
550 VIFM_SET(vifi, r->rt_children); in update_route()
551 r->rt_dominants [vifi] = 0; in update_route()
553 r->rt_subordinates[vifi] = src; in update_route()
555 else if (uvifs[vifi].uv_neighbors == NULL || in update_route()
556 uvifs[vifi].uv_neighbors->al_next == NULL) { in update_route()
557 VIFM_SET(vifi, r->rt_leaves); in update_route()
560 r->rt_leaf_timers[vifi] = LEAF_CONFIRMATION_TIME; in update_route()
577 vifi_t vifi; in age_routes() local
590 for (vifi = 0; vifi < numvifs; ++vifi) { in age_routes()
591 if (r->rt_leaf_timers[vifi] != 0) { in age_routes()
595 if ((r->rt_leaf_timers[vifi] -= TIMER_INTERVAL) == 0){ in age_routes()
600 if (!(((uvifs[vifi].uv_flags & VIFF_LEAF) || in age_routes()
602 (uvifs[vifi].uv_neighbors != NULL))) { in age_routes()
604 VIFM_SET(vifi, r->rt_leaves); in age_routes()
689 vifi_t vifi; in accept_probe() local
691 if ((vifi = find_vif(src, dst)) == NO_VIF) { in accept_probe()
697 update_neighbor(vifi, src, DVMRP_PROBE, p, datalen, level); in accept_probe()
738 vifi_t vifi; in accept_report() local
745 if ((vifi = find_vif(src, dst)) == NO_VIF) { in accept_report()
751 if (!update_neighbor(vifi, src, DVMRP_REPORT, NULL, 0, level)) in accept_report()
820 src, vifi); in accept_report()
833 report(int which_routes, vifi_t vifi, u_int32_t dst) in report() argument
844 src = uvifs[vifi].uv_lcl_addr; in report()
850 if ((vifs_with_neighbors != 1) && (uvifs[vifi].uv_flags & VIFF_LEAF)) { in report()
863 nflags = (uvifs[vifi].uv_flags & VIFF_LEAF) ? 0 : LEAF_FLAGS; in report()
899 *p++ = (r->rt_parent == vifi && r->rt_metric != UNREACHABLE) ? in report()
921 vifi_t vifi; in report_to_all_neighbors() local
934 for (vifi = 0, v = uvifs; vifi < numvifs; ++vifi, ++v) { in report_to_all_neighbors()
936 report(which_routes, vifi, in report_to_all_neighbors()
967 report_chunk(struct rtentry *start_rt, vifi_t vifi, u_int32_t dst) in report_chunk() argument
979 src = uvifs[vifi].uv_lcl_addr; in report_chunk()
982 nflags = (uvifs[vifi].uv_flags & VIFF_LEAF) ? 0 : LEAF_FLAGS; in report_chunk()
988 if ((vifs_with_neighbors == 1) && (r->rt_parent == vifi) in report_chunk()
1019 *p++ = (r->rt_parent == vifi && r->rt_metric != UNREACHABLE) ? in report_chunk()
1040 vifi_t vifi; in report_next_chunk() local
1062 for (vifi = 0, v = uvifs; vifi < numvifs; ++vifi, ++v) { in report_next_chunk()
1068 n = report_chunk(sr, vifi, in report_next_chunk()