Lines Matching defs:dr
50 static void router_print(struct router *dr);
51 static void router_insert(struct phyint *pi, struct router *dr);
52 static void router_delete(struct router *dr);
53 static void router_add_k(struct router *dr);
54 static void router_delete_k(struct router *dr);
576 struct router *dr;
629 for (dr = pi->pi_router_list; dr != NULL; dr = dr->dr_next)
630 router_print(dr);
2060 struct router *dr;
2069 for (dr = pi->pi_router_list; dr != NULL; dr = dr->dr_next) {
2070 if (bcmp((char *)&addr, (char *)&dr->dr_address,
2072 return (dr);
2084 struct router *dr;
2093 dr = (struct router *)calloc(sizeof (struct router), 1);
2094 if (dr == NULL) {
2098 dr->dr_address = addr;
2099 dr->dr_lifetime = lifetime;
2100 router_insert(pi, dr);
2101 if (dr->dr_lifetime != 0)
2102 router_add_k(dr);
2103 return (dr);
2108 router_insert(struct phyint *pi, struct router *dr)
2110 dr->dr_next = pi->pi_router_list;
2111 dr->dr_prev = NULL;
2113 pi->pi_router_list->dr_prev = dr;
2114 pi->pi_router_list = dr;
2115 dr->dr_physical = pi;
2124 router_delete(struct router *dr)
2131 dr->dr_physical->pi_name,
2132 inet_ntop(AF_INET6, (void *)&dr->dr_address,
2133 abuf, sizeof (abuf)), dr->dr_lifetime);
2135 pi = dr->dr_physical;
2136 if (dr->dr_inkernel && (pi->pi_kernel_state & PI_PRESENT))
2137 router_delete_k(dr);
2139 if (dr->dr_prev == NULL) {
2141 pi->pi_router_list = dr->dr_next;
2143 dr->dr_prev->dr_next = dr->dr_next;
2145 if (dr->dr_next != NULL)
2146 dr->dr_next->dr_prev = dr->dr_prev;
2147 dr->dr_next = dr->dr_prev = NULL;
2148 free(dr);
2155 router_update_k(struct router *dr)
2161 dr->dr_physical->pi_name,
2162 inet_ntop(AF_INET6, (void *)&dr->dr_address,
2163 abuf, sizeof (abuf)), dr->dr_lifetime);
2166 if (dr->dr_lifetime == 0 && dr->dr_inkernel) {
2168 if (dr->dr_physical->pi_num_k_routers == 1) {
2171 inet_ntop(AF_INET6, (void *)&dr->dr_address,
2172 abuf, sizeof (abuf)), dr->dr_physical->pi_name);
2174 router_delete(dr);
2175 } else if (dr->dr_lifetime != 0 && !dr->dr_inkernel)
2176 router_add_k(dr);
2186 router_timer(struct router *dr, uint_t elapsed)
2193 dr->dr_physical->pi_name,
2194 inet_ntop(AF_INET6, (void *)&dr->dr_address,
2195 abuf, sizeof (abuf)), dr->dr_lifetime, elapsed);
2197 if (dr->dr_lifetime <= elapsed) {
2198 dr->dr_lifetime = 0;
2200 dr->dr_lifetime -= elapsed;
2201 if (dr->dr_lifetime < next)
2202 next = dr->dr_lifetime;
2205 if (dr->dr_lifetime == 0) {
2207 if (dr->dr_physical->pi_num_k_routers == 1) {
2210 inet_ntop(AF_INET6, (void *)&dr->dr_address,
2211 abuf, sizeof (abuf)), dr->dr_physical->pi_name);
2213 router_delete(dr);
2223 router_add_k(struct router *dr)
2225 struct phyint *pi = dr->dr_physical;
2231 dr->dr_physical->pi_name,
2232 inet_ntop(AF_INET6, (void *)&dr->dr_address,
2233 abuf, sizeof (abuf)), dr->dr_lifetime);
2236 rta_gateway->sin6_addr = dr->dr_address;
2258 dr->dr_inkernel = _B_TRUE;
2267 router_delete_k(struct router *dr)
2269 struct phyint *pi = dr->dr_physical;
2275 dr->dr_physical->pi_name,
2276 inet_ntop(AF_INET6, (void *)&dr->dr_address,
2277 abuf, sizeof (abuf)), dr->dr_lifetime);
2280 rta_gateway->sin6_addr = dr->dr_address;
2300 dr->dr_inkernel = _B_FALSE;
2305 router_print(struct router *dr)
2310 inet_ntop(AF_INET6, (void *)&dr->dr_address, abuf, sizeof (abuf)),
2311 dr->dr_physical->pi_name, dr->dr_inkernel, dr->dr_lifetime);