Chinaunix首页 | 论坛 | 博客
  • 博客访问: 124906
  • 博文数量: 40
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 173
  • 用 户 组: 普通用户
  • 注册时间: 2013-08-28 10:24
文章分类
文章存档

2014年(4)

2013年(36)

我的朋友

分类: LINUX

2013-12-25 18:00:33

原文地址:
http://blog.chinaunix.net/uid-452173-id-3211883.html

Proc file of "/proc/net/ipv6_route" has all configured IPv6 routes shown in a special format. The example displays for loopback interface only. The meaning is shown below. 

# cat /proc/net/ipv6_route 
 00000000000000000000000000000000 00 00000000000000000000000000000000 00 
+------------------------------+ ++ +------------------------------+ ++ 
 |                                |  |                                | 
 1                                2  3                                4 

? 00000000000000000000000000000000 ffffffff 00000001 00000001 00200200 lo 
? +------------------------------+ +------+ +------+ +------+ +------+ ++ 
? |                                |        |        |        |        | 
? 5                                6        7        8        9        10 
1. IPv6 destination network displayed in 32 hexadecimal chars without colons as separator 
2. IPv6 destination prefix length in hexadecimal 
3. IPv6 source network displayed in 32 hexadecimal chars without colons as separator 
4. IPv6 source prefix length in hexadecimal 
5. IPv6 next hop displayed in 32 hexadecimal chars without colons as separator 
6. Metric in hexadecimal 
7. Reference counter 
8. Use counter 
9. Flags 
10. Device name 


点击(此处)折叠或打开


  1. struct in6_addr src_addr;
  2. int src_prefix;
  3. struct in6_addr dst_addr;
  4. int dst_prefix;
  5. struct in6_addr gw_addr;
  6. struct in6_addr any_addr;
  7. uint32 metrix;
  8. uint32 ref_cnt;
  9. uint32 usr_cnt;
  10. uint32 flag;
  11. char devname[IFNAMESIZE];

  12. fp = fopen("/proc/net/ipv6_route","r");
  13. if(fp!=NULL){            
  14.    memset(&any_addr,0,sizeof(any_addr));                        
  15.    while((ret=fscanf(fp,"%s %x %s %x %s %x %x %x %x %s",
  16.                   dst,&dst_prefix,src,&src_prefix,gw,
  17.                   &metrix,&ref_cnt,&usr_cnt,&flag,devname))!=EOF){    
  18.           /*return value must be parameter's number*/                            
  19.           if(ret!=10){                                
  20.              continue;
  21.            }
  22.       /*default route?*/
  23.       if(memcmp(&dst_addr,&any_addr,sizeof(struct in6_addr))==0){
  24.          sscanf(gw,"%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx
  25. %02hhx%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx",
  26.         &gw_addr.s6_addr[ 0], &gw_addr.s6_addr[ 1], &gw_addr.s6_addr[ 2], 
  27. &gw_addr.s6_addr[ 3],&gw_addr.s6_addr[ 4], &gw_addr.s6_addr[ 5], 
  28. &gw_addr.s6_addr[ 6], &gw_addr.s6_addr[ 7],&gw_addr.s6_addr[ 8], 
  29. &gw_addr.s6_addr[ 9], &gw_addr.s6_addr[10], &gw_addr.s6_addr[11],
  30.          &gw_addr.s6_addr[12], &gw_addr.s6_addr[13], &gw_addr.s6_addr[14], 
  31. &gw_addr.s6_addr[15]);
  32.          if(gw_addr.s6_addr16[0]==0xFE80){ 
  33. printf("gw address:%s\n",gw)                           
  34.                 break;
  35.           }
  36.   }                                
  37.     }                                                
  38. }
  39. fclose(fp);
阅读(2155) | 评论(0) | 转发(0) |
0

上一篇: ipv6 address 的设定

下一篇:DHCPv6 resources

给主人留下些什么吧!~~