Lines Matching defs:rt

106 log_single(int level, struct rt_entry *rt)
111 (void) inet_ntop(AF_INET6, (void *)&rt->rt_dst, buf1, sizeof (buf1));
112 (void) inet_ntop(AF_INET6, (void *)&rt->rt_router, buf2, sizeof (buf2));
116 (rt->rt_ifp != NULL && rt->rt_ifp->int_name != NULL) ?
117 rt->rt_ifp->int_name : "(noname)",
118 rt->rt_metric);
180 struct rt_entry *rt;
191 for (rt = rh->rt_forw; rt != (struct rt_entry *)rh; rt = rt->rt_forw) {
192 if (rt->rt_hash != hash)
194 if (IN6_ARE_ADDR_EQUAL(&rt->rt_dst, dst) &&
195 rt->rt_prefix_length == prefix_length)
196 return (rt);
237 struct rt_entry *rt;
261 rt = (struct rt_entry *)malloc(sizeof (*rt));
262 if (rt == NULL) {
271 rt->rt_hash = hash;
272 rt->rt_dst = pdst;
273 rt->rt_prefix_length = prefix_length;
274 rt->rt_router = *gate;
275 rt->rt_metric = metric;
276 rt->rt_tag = tag;
277 rt->rt_timer = 0;
278 rt->rt_flags = RTF_UP;
280 rt->rt_flags |= RTF_HOST;
281 rt->rt_state = RTS_CHANGED;
283 rt->rt_state |= RTS_INTERFACE;
285 rt->rt_state |= RTS_PRIVATE;
287 rt->rt_flags |= RTF_GATEWAY;
289 rt->rt_ifp = ifp;
291 insque(rt, rh);
292 TRACE_ACTION("ADD", rt);
298 if (install && (rt->rt_state & RTS_INTERFACE) == 0) {
299 rlen = rtcmd(RTM_ADD, &rt->rt_dst, &rt->rt_router,
300 prefix_length, ifp->int_name, rt->rt_flags);
304 log_single(LOG_ERR, rt);
307 TRACE_ACTION("DELETE", rt);
308 remque(rt);
309 free((char *)rt);
312 log_single(LOG_ERR, rt);
325 rtchange(struct rt_entry *rt, struct in6_addr *gate, short metric,
336 rtdown(rt);
340 if (!IN6_ARE_ADDR_EQUAL(&rt->rt_router, gate) || rt->rt_ifp != ifp)
342 oldmetric = rt->rt_metric;
347 if (metric != rt->rt_metric)
349 rt->rt_timer = 0;
351 TRACE_ACTION("CHANGE FROM", rt);
352 if ((rt->rt_state & RTS_INTERFACE) && metric != 0) {
353 rt->rt_state &= ~RTS_INTERFACE;
354 if (rt->rt_ifp != NULL) {
358 (rt->rt_ifp->int_name != NULL) ?
359 rt->rt_ifp->int_name : "(noname)");
367 oldroute = *rt;
368 rt->rt_router = *gate;
369 rt->rt_ifp = ifp;
371 rt->rt_metric = metric;
372 if (!(rt->rt_state & RTS_INTERFACE))
373 rt->rt_flags |= RTF_GATEWAY;
375 rt->rt_flags &= ~RTF_GATEWAY;
376 rt->rt_state |= RTS_CHANGED;
377 TRACE_ACTION("CHANGE TO", rt);
379 if (install && (rt->rt_state & RTS_INTERFACE) == 0) {
381 rlen = rtcmd(RTM_ADD, &rt->rt_dst, &rt->rt_router,
382 rt->rt_prefix_length, rt->rt_ifp->int_name,
383 rt->rt_flags);
388 log_change(LOG_ERR, rt,
392 log_change(LOG_ERR, rt,
401 log_change(LOG_ERR, rt,
404 log_change(LOG_ERR, rt,
408 rlen = rtcmd(RTM_ADD, &rt->rt_dst, &rt->rt_router,
409 rt->rt_prefix_length, ifp->int_name, rt->rt_flags);
412 log_change(LOG_ERR, rt,
415 log_change(LOG_ERR, rt,
423 rtdown(struct rt_entry *rt)
427 if (rt->rt_metric != HOPCNT_INFINITY) {
428 TRACE_ACTION("DELETE", rt);
429 if (install && (rt->rt_state & RTS_INTERFACE) == 0) {
430 rlen = rtcmd(RTM_DELETE, &rt->rt_dst,
431 &rt->rt_router, rt->rt_prefix_length,
432 rt->rt_ifp->int_name, rt->rt_flags);
435 log_single(LOG_ERR, rt);
437 log_single(LOG_ERR, rt);
440 rt->rt_metric = HOPCNT_INFINITY;
441 rt->rt_state |= RTS_CHANGED;
443 if (rt->rt_timer < EXPIRE_TIME)
444 rt->rt_timer = EXPIRE_TIME;
448 rtdelete(struct rt_entry *rt)
451 if (rt->rt_state & RTS_INTERFACE) {
452 if (rt->rt_ifp != NULL) {
456 (rt->rt_ifp->int_name != NULL) ?
457 rt->rt_ifp->int_name : "(noname)");
458 log_single(LOG_ERR, rt);
461 rtdown(rt);
462 remque(rt);
463 free((char *)rt);
475 struct rt_entry *rt;
484 for (rt = rh->rt_forw; rt != (struct rt_entry *)rh;
485 rt = rt->rt_forw) {
486 if (rt->rt_ifp == ifp) {
487 rtdown(rt);
488 rt->rt_ifp = NULL;
489 rt->rt_state &= ~RTS_INTERFACE;
506 struct rt_entry *rt;
515 for (rt = rh->rt_forw; rt != (struct rt_entry *)rh;
516 rt = rt->rt_forw) {
517 if ((rt->rt_state & RTS_INTERFACE) == 0) {
518 rtchange(rt, &rt->rt_router,
519 rt->rt_metric, rt->rt_ifp);
527 rtdumpentry(FILE *fp, struct rt_entry *rt)
553 inet_ntop(AF_INET6, (void *)&rt->rt_dst, buf1, sizeof (buf1)),
554 rt->rt_prefix_length);
556 inet_ntop(AF_INET6, (void *)&rt->rt_router, buf1, sizeof (buf1)),
557 rt->rt_metric, rt->rt_timer);
558 if (rt->rt_ifp != NULL) {
560 (rt->rt_ifp->int_name != NULL) ?
561 rt->rt_ifp->int_name : "(noname)");
566 if ((rt->rt_state & p->t_bits) == 0)
576 if (rt->rt_flags & (RTF_UP | RTF_GATEWAY)) {
579 if ((rt->rt_flags & p->t_bits) == 0)
596 struct rt_entry *rt;
605 for (rt = rh->rt_forw; rt != (struct rt_entry *)rh;
606 rt = rt->rt_forw) {
607 rtdumpentry(fp, rt);