Home | History | Annotate | Download | only in routed

Lines Matching defs:RT

832 	struct rt_entry *rt;
845 rt = rtget(k->k_dst, k->k_mask);
846 if (rt != 0) {
847 if (!(rt->rt_state & RS_STATIC))
848 rtchange(rt, rt->rt_state | RS_STATIC, &new, 0);
1413 #undef RT
1422 #define RT ((struct rt_entry *)rn)
1428 if (RT->rt_state & RS_NET_SYN)
1431 if (!(RT->rt_state & RS_IF)) {
1444 if (RT_ISHOST(RT)
1445 && ntohl(RT->rt_dst) == RT->rt_gate)
1452 if (RT->rt_ifp != 0 && (RT->rt_ifp->int_state & IS_EXTERNAL))
1466 if (RT->rt_ifp == 0
1467 || (RT->rt_ifp->int_state & IS_REMOTE))
1476 if ((RT->rt_state & RS_RDISC) && rip_sock < 0)
1479 metric = RT->rt_metric;
1487 ag_check(RT->rt_dst, RT->rt_mask, RT->rt_gate, 0,
1490 #undef RT
1581 struct rt_entry *rt;
1600 rt = rtget(dst, mask);
1601 if (rt != 0 && (rt->rt_state & RS_STATIC))
1602 rtbad(rt);
1690 struct rt_entry *rt;
1695 rt = (struct rt_entry *)rhead->rnh_lookup(&dst_sock,&mask_sock,rhead);
1696 if (!rt
1697 || rt->rt_dst != dst
1698 || rt->rt_mask != mask)
1701 return rt;
1723 struct rt_entry *rt;
1728 rt = (struct rt_entry *)rtmalloc(sizeof (*rt), "rtadd");
1729 memset(rt, 0, sizeof(*rt));
1730 for (rts = rt->rt_spares, i = NUM_SPARES; i != 0; i--, rts++)
1733 rt->rt_nodes->rn_key = (caddr_t)&rt->rt_dst_sock;
1734 rt->rt_dst = dst;
1735 rt->rt_dst_sock.sin_family = AF_INET;
1737 rt->rt_dst_sock.sin_len = dst_sock.sin_len;
1746 rt->rt_mask = mask;
1747 rt->rt_state = state;
1748 rt->rt_spares[0] = *new;
1749 rt->rt_time = now.tv_sec;
1750 rt->rt_poison_metric = HOPCNT_INFINITY;
1751 rt->rt_seqno = update_seqno;
1756 trace_add_del("Add", rt);
1761 if (0 == rhead->rnh_addaddr(&rt->rt_dst_sock, &mask_sock,
1762 rhead, rt->rt_nodes)) {
1765 free(rt);
1773 rtchange(struct rt_entry *rt,
1778 if (rt->rt_metric != new->rts_metric) {
1788 rt->rt_seqno = update_seqno;
1792 if (rt->rt_gate != new->rts_gate) {
1794 rt->rt_seqno = update_seqno;
1798 state |= (rt->rt_state & RS_SUBNET);
1806 trace_change(rt, state, new,
1809 rt->rt_state = state;
1810 rt->rt_spares[0] = *new;
1817 rts_better(struct rt_entry *rt)
1823 rts = rt->rt_spares+1;
1825 if (BETTER_LINK(rt,rts1,rts))
1836 rtswitch(struct rt_entry *rt,
1843 if (0 != (rt->rt_state & (RS_MHOME | RS_STATIC | RS_RDISC
1849 rts = rts_better(rt);
1853 if (!BETTER_LINK(rt, rts, rt->rt_spares))
1856 swap = rt->rt_spares[0];
1858 (int)(rts - rt->rt_spares));
1859 rtchange(rt, rt->rt_state & ~(RS_NET_SYN | RS_RDISC), rts, label);
1869 rtdelete(struct rt_entry *rt)
1875 trace_add_del("Del", rt);
1877 k = kern_find(rt->rt_dst, rt->rt_mask, 0);
1883 dst_sock.sin_addr.s_addr = rt->rt_dst;
1884 mask_sock.sin_addr.s_addr = htonl(rt->rt_mask);
1886 if (rt != (struct rt_entry *)rhead->rnh_deladdr(&dst_sock, &mask_sock,
1890 free(rt);
1897 rts_delete(struct rt_entry *rt,
1900 trace_upslot(rt, rts, &rts_empty);
1908 rtbad(struct rt_entry *rt)
1913 new = rt->rt_spares[0];
1915 rtchange(rt, rt->rt_state & ~(RS_IF | RS_LOCAL | RS_STATIC), &new, 0);
1916 rtswitch(rt, 0);
1924 rtbad_sub(struct rt_entry *rt)
1934 if (rt->rt_state & RS_LOCAL) {
1942 if (ifp->int_addr == rt->rt_ifp->int_addr) {
1955 if (rt->rt_state & RS_NET_SYN) {
1958 && rt->rt_mask == ifp->int_std_mask
1959 && rt->rt_dst == ifp->int_std_addr) {
1971 if (intnetp->intnet_addr == rt->rt_dst
1972 && intnetp->intnet_mask == rt->rt_mask) {
1980 struct rt_spare new = rt->rt_spares[0];
1982 rtchange(rt, ((rt->rt_state & ~(RS_NET_SYN|RS_LOCAL)) | state),
1985 rt);
1998 #define RT ((struct rt_entry *)rn)
2005 rts = RT->rt_spares;
2011 rts_delete(RT, rts);
2018 if (RT->rt_ifp == 0 || !(RT->rt_ifp->int_state & IS_BROKE))
2023 if (0 == (RT->rt_state & (RS_IF | RS_NET_SYN | RS_LOCAL))) {
2024 rtbad(RT);
2028 rtbad_sub(RT);
2030 #undef RT
2041 #define RT ((struct rt_entry *)rn)
2050 rts = RT->rt_spares;
2055 if (!AGE_RT(RT->rt_state, ifp)) {
2066 rtdelete(RT);
2082 rts_delete(RT, rts);
2087 if (now_stale <= RT->rt_time)
2091 rtswitch(RT, 0);
2094 if (now_garbage > RT->rt_time) {
2095 rtdelete(RT);
2100 if (now.tv_sec - RT->rt_time > EXPIRE_TIME) {
2101 struct rt_spare new = RT->rt_spares[0];
2103 rtchange(RT, RT->rt_state, &new, 0);