Home | History | Annotate | Download | only in mrouted

Lines Matching defs:vifi

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