route6d.c (173412) | route6d.c (186119) |
---|---|
1/* $FreeBSD: head/usr.sbin/route6d/route6d.c 173412 2007-11-07 10:53:41Z kevlo $ */ | 1/* $FreeBSD: head/usr.sbin/route6d/route6d.c 186119 2008-12-15 06:10:57Z qingli $ */ |
2/* $KAME: route6d.c,v 1.104 2003/10/31 00:30:20 itojun Exp $ */ 3 4/* 5 * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. 6 * All rights reserved. 7 * 8 * Redistribution and use in source and binary forms, with or without 9 * modification, are permitted provided that the following conditions --- 1737 unchanged lines hidden (view full) --- 1747 case RTM_IFINFO: 1748 iface++; 1749 continue; 1750 case RTM_ADD: 1751 rtable++; 1752 continue; 1753 case RTM_LOSING: 1754 case RTM_MISS: | 2/* $KAME: route6d.c,v 1.104 2003/10/31 00:30:20 itojun Exp $ */ 3 4/* 5 * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. 6 * All rights reserved. 7 * 8 * Redistribution and use in source and binary forms, with or without 9 * modification, are permitted provided that the following conditions --- 1737 unchanged lines hidden (view full) --- 1747 case RTM_IFINFO: 1748 iface++; 1749 continue; 1750 case RTM_ADD: 1751 rtable++; 1752 continue; 1753 case RTM_LOSING: 1754 case RTM_MISS: |
1755 case RTM_RESOLVE: | |
1756 case RTM_GET: 1757 case RTM_LOCK: 1758 /* nothing to be done here */ 1759 trace(1, "\tnothing to be done, ignored\n"); 1760 continue; 1761 } 1762 1763#if 0 --- 21 unchanged lines hidden (view full) --- 1785 1786 /* hard ones */ 1787 switch (((struct rt_msghdr *)p)->rtm_type) { 1788 case RTM_NEWADDR: 1789 case RTM_IFINFO: 1790 case RTM_ADD: 1791 case RTM_LOSING: 1792 case RTM_MISS: | 1755 case RTM_GET: 1756 case RTM_LOCK: 1757 /* nothing to be done here */ 1758 trace(1, "\tnothing to be done, ignored\n"); 1759 continue; 1760 } 1761 1762#if 0 --- 21 unchanged lines hidden (view full) --- 1784 1785 /* hard ones */ 1786 switch (((struct rt_msghdr *)p)->rtm_type) { 1787 case RTM_NEWADDR: 1788 case RTM_IFINFO: 1789 case RTM_ADD: 1790 case RTM_LOSING: 1791 case RTM_MISS: |
1793 case RTM_RESOLVE: | |
1794 case RTM_GET: 1795 case RTM_LOCK: 1796 /* should already be handled */ 1797 fatal("rtrecv: never reach here"); 1798 /*NOTREACHED*/ 1799 case RTM_DELETE: 1800 if (!rta[RTAX_DST] || !rta[RTAX_GATEWAY]) { 1801 trace(1, "\tsome of dst/gw/netamsk are " --- 334 unchanged lines hidden (view full) --- 2136 memset(rrt, 0, sizeof(*rrt)); 2137 rrt->rrt_same = NULL; 2138 rrt->rrt_index = ifcp->ifc_index; 2139 rrt->rrt_t = 0; /* don't age */ 2140 rrt->rrt_info.rip6_dest = ifa->ifa_addr; 2141 rrt->rrt_info.rip6_tag = htons(routetag & 0xffff); 2142 rrt->rrt_info.rip6_metric = 1 + ifcp->ifc_metric; 2143 rrt->rrt_info.rip6_plen = ifa->ifa_plen; | 1792 case RTM_GET: 1793 case RTM_LOCK: 1794 /* should already be handled */ 1795 fatal("rtrecv: never reach here"); 1796 /*NOTREACHED*/ 1797 case RTM_DELETE: 1798 if (!rta[RTAX_DST] || !rta[RTAX_GATEWAY]) { 1799 trace(1, "\tsome of dst/gw/netamsk are " --- 334 unchanged lines hidden (view full) --- 2134 memset(rrt, 0, sizeof(*rrt)); 2135 rrt->rrt_same = NULL; 2136 rrt->rrt_index = ifcp->ifc_index; 2137 rrt->rrt_t = 0; /* don't age */ 2138 rrt->rrt_info.rip6_dest = ifa->ifa_addr; 2139 rrt->rrt_info.rip6_tag = htons(routetag & 0xffff); 2140 rrt->rrt_info.rip6_metric = 1 + ifcp->ifc_metric; 2141 rrt->rrt_info.rip6_plen = ifa->ifa_plen; |
2144 if (ifa->ifa_plen == 128) 2145 rrt->rrt_flags = RTF_HOST; 2146 else 2147 rrt->rrt_flags = RTF_CLONING; | 2142 rrt->rrt_flags = RTF_HOST; |
2148 rrt->rrt_rflags |= RRTF_CHANGED; 2149 applyplen(&rrt->rrt_info.rip6_dest, ifa->ifa_plen); 2150 memset(&rrt->rrt_gw, 0, sizeof(struct in6_addr)); 2151 rrt->rrt_gw = ifa->ifa_addr; 2152 np = &rrt->rrt_info; 2153 search_rrt = rtsearch(np, &prev_rrt); 2154 if (search_rrt != NULL) { 2155 if (search_rrt->rrt_info.rip6_metric <= --- 272 unchanged lines hidden (view full) --- 2428 RTTYPE("CHANGE", RTM_CHANGE); 2429 RTTYPE("GET", RTM_GET); 2430 RTTYPE("LOSING", RTM_LOSING); 2431 RTTYPE("REDIRECT", RTM_REDIRECT); 2432 RTTYPE("MISS", RTM_MISS); 2433 RTTYPE("LOCK", RTM_LOCK); 2434 RTTYPE("OLDADD", RTM_OLDADD); 2435 RTTYPE("OLDDEL", RTM_OLDDEL); | 2143 rrt->rrt_rflags |= RRTF_CHANGED; 2144 applyplen(&rrt->rrt_info.rip6_dest, ifa->ifa_plen); 2145 memset(&rrt->rrt_gw, 0, sizeof(struct in6_addr)); 2146 rrt->rrt_gw = ifa->ifa_addr; 2147 np = &rrt->rrt_info; 2148 search_rrt = rtsearch(np, &prev_rrt); 2149 if (search_rrt != NULL) { 2150 if (search_rrt->rrt_info.rip6_metric <= --- 272 unchanged lines hidden (view full) --- 2423 RTTYPE("CHANGE", RTM_CHANGE); 2424 RTTYPE("GET", RTM_GET); 2425 RTTYPE("LOSING", RTM_LOSING); 2426 RTTYPE("REDIRECT", RTM_REDIRECT); 2427 RTTYPE("MISS", RTM_MISS); 2428 RTTYPE("LOCK", RTM_LOCK); 2429 RTTYPE("OLDADD", RTM_OLDADD); 2430 RTTYPE("OLDDEL", RTM_OLDDEL); |
2436 RTTYPE("RESOLVE", RTM_RESOLVE); | |
2437 RTTYPE("NEWADDR", RTM_NEWADDR); 2438 RTTYPE("DELADDR", RTM_DELADDR); 2439 RTTYPE("IFINFO", RTM_IFINFO); 2440#ifdef RTM_OLDADD 2441 RTTYPE("OLDADD", RTM_OLDADD); 2442#endif 2443#ifdef RTM_OLDDEL 2444 RTTYPE("OLDDEL", RTM_OLDDEL); --- 34 unchanged lines hidden (view full) --- 2479 RTFLAG("H", RTF_HOST); 2480 RTFLAG("R", RTF_REJECT); 2481 RTFLAG("D", RTF_DYNAMIC); 2482 RTFLAG("M", RTF_MODIFIED); 2483 RTFLAG("d", RTF_DONE); 2484#ifdef RTF_MASK 2485 RTFLAG("m", RTF_MASK); 2486#endif | 2431 RTTYPE("NEWADDR", RTM_NEWADDR); 2432 RTTYPE("DELADDR", RTM_DELADDR); 2433 RTTYPE("IFINFO", RTM_IFINFO); 2434#ifdef RTM_OLDADD 2435 RTTYPE("OLDADD", RTM_OLDADD); 2436#endif 2437#ifdef RTM_OLDDEL 2438 RTTYPE("OLDDEL", RTM_OLDDEL); --- 34 unchanged lines hidden (view full) --- 2473 RTFLAG("H", RTF_HOST); 2474 RTFLAG("R", RTF_REJECT); 2475 RTFLAG("D", RTF_DYNAMIC); 2476 RTFLAG("M", RTF_MODIFIED); 2477 RTFLAG("d", RTF_DONE); 2478#ifdef RTF_MASK 2479 RTFLAG("m", RTF_MASK); 2480#endif |
2481#ifdef RTF_CLONING |
|
2487 RTFLAG("C", RTF_CLONING); | 2482 RTFLAG("C", RTF_CLONING); |
2483#endif |
|
2488#ifdef RTF_CLONED 2489 RTFLAG("c", RTF_CLONED); 2490#endif 2491#ifdef RTF_PRCLONING 2492 RTFLAG("c", RTF_PRCLONING); 2493#endif 2494#ifdef RTF_WASCLONED 2495 RTFLAG("W", RTF_WASCLONED); 2496#endif 2497 RTFLAG("X", RTF_XRESOLVE); | 2484#ifdef RTF_CLONED 2485 RTFLAG("c", RTF_CLONED); 2486#endif 2487#ifdef RTF_PRCLONING 2488 RTFLAG("c", RTF_PRCLONING); 2489#endif 2490#ifdef RTF_WASCLONED 2491 RTFLAG("W", RTF_WASCLONED); 2492#endif 2493 RTFLAG("X", RTF_XRESOLVE); |
2494#ifdef RTF_LLINFO |
|
2498 RTFLAG("L", RTF_LLINFO); | 2495 RTFLAG("L", RTF_LLINFO); |
2496#endif |
|
2499 RTFLAG("S", RTF_STATIC); 2500 RTFLAG("B", RTF_BLACKHOLE); 2501#ifdef RTF_PROTO3 2502 RTFLAG("3", RTF_PROTO3); 2503#endif 2504 RTFLAG("2", RTF_PROTO2); 2505 RTFLAG("1", RTF_PROTO1); 2506#ifdef RTF_BROADCAST --- 119 unchanged lines hidden (view full) --- 2626 struct sockaddr_in6 *sin6_genmask, *sin6_ifp; 2627 char *rtmp, *ifname = NULL; 2628 struct riprt *rrt, *orrt; 2629 struct netinfo6 *np; 2630 int s; 2631 2632 sin6_dst = sin6_gw = sin6_mask = sin6_genmask = sin6_ifp = 0; 2633 if ((rtm->rtm_flags & RTF_UP) == 0 || rtm->rtm_flags & | 2497 RTFLAG("S", RTF_STATIC); 2498 RTFLAG("B", RTF_BLACKHOLE); 2499#ifdef RTF_PROTO3 2500 RTFLAG("3", RTF_PROTO3); 2501#endif 2502 RTFLAG("2", RTF_PROTO2); 2503 RTFLAG("1", RTF_PROTO1); 2504#ifdef RTF_BROADCAST --- 119 unchanged lines hidden (view full) --- 2624 struct sockaddr_in6 *sin6_genmask, *sin6_ifp; 2625 char *rtmp, *ifname = NULL; 2626 struct riprt *rrt, *orrt; 2627 struct netinfo6 *np; 2628 int s; 2629 2630 sin6_dst = sin6_gw = sin6_mask = sin6_genmask = sin6_ifp = 0; 2631 if ((rtm->rtm_flags & RTF_UP) == 0 || rtm->rtm_flags & |
2634 (RTF_CLONING|RTF_XRESOLVE|RTF_LLINFO|RTF_BLACKHOLE)) { | 2632 (RTF_XRESOLVE|RTF_BLACKHOLE)) { |
2635 return; /* not interested in the link route */ 2636 } 2637 /* do not look at cloned routes */ 2638#ifdef RTF_WASCLONED 2639 if (rtm->rtm_flags & RTF_WASCLONED) 2640 return; 2641#endif 2642#ifdef RTF_CLONED --- 991 unchanged lines hidden --- | 2633 return; /* not interested in the link route */ 2634 } 2635 /* do not look at cloned routes */ 2636#ifdef RTF_WASCLONED 2637 if (rtm->rtm_flags & RTF_WASCLONED) 2638 return; 2639#endif 2640#ifdef RTF_CLONED --- 991 unchanged lines hidden --- |