免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2631 | 回复: 4
打印 上一主题 下一主题

有关2种接入方式同时存在时的路由配置问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-07-26 17:40 |只看该作者 |倒序浏览
本帖最后由 duanius 于 2010-07-26 17:43 编辑

开发板上同时有两种接入方式 以太网和gprs。 gprs通过ppp建立连接。我需要去连几个指定的ip,通过程序去配置。对于这种需求  我的处理方式是代码中把几个ip配成主机路由添加到路由表中,网关不设,子网掩码不设(设不设都是全f),然后把接口指定成eth0或者是ppp0,
代码很简单:
2         struct rtentry  rt;
33         struct sockaddr_in my_addr;
34         int sock_fd;
35         char devi[] = "eth0";
36
37
38         if ((sock_fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0)
39         {
40                 perror("socket");
41                 close(sock_fd);
42                 return E_ERR;
43         }
44
45         rt.rt_flags = (RTF_UP | RTF_HOST );
46         my_addr.sin_family = AF_INET;
47
48         inet_aton("210.45.192.68",&my_addr.sin_addr);
49         memcpy(&rt.rt_dst,&my_addr, sizeof(struct sockaddr));
50
          。。。。。
56
57         rt.rt_dev = devi;
58
59         if (ioctl(sock_fd, SIOCADDRT, &rt) < 0)
60         {
61                 perror("SIOCADDRT");
62                 close(sock_fd);
63                 return E_ERR;
64         }
65         return 0;

但有些问题
1.  对于这种需求,解决的方法 也就是对要连接的ip设为主机路由  并且只设置一个接口,其他不设,也不对ip相关以外的路由做更改,只添加n个ip的n个主机路由,是否正确。
2. 代码执行后,成功是成功了 ,但跃点数很离谱:
csduan@csduan-desktop:~/temp$ route
内核 IP 路由表
目标            网关            子网掩码        标志  跃点   引用  使用 接口
210.45.192.68   *               255.255.255.255 UH    -20889 0        0 eth0
192.168.0.0     *               255.255.255.0   U     1      0        0 eth0
link-local      *               255.255.0.0     U     1000   0        0 eth0
default         192.168.0.1     0.0.0.0         UG    0      0        0 eth0

有时候是负的,有时候是大于10000 请问为什么呢

论坛徽章:
5
IT运维版块每日发帖之星
日期:2015-08-06 06:20:00IT运维版块每日发帖之星
日期:2015-08-10 06:20:00IT运维版块每日发帖之星
日期:2015-08-23 06:20:00IT运维版块每日发帖之星
日期:2015-08-24 06:20:00IT运维版块每日发帖之星
日期:2015-11-12 06:20:00
2 [报告]
发表于 2010-07-26 18:05 |只看该作者
一般就是这个处理方法。
至于度量问题可能和你的代码有关,你可以用route命令试试

论坛徽章:
0
3 [报告]
发表于 2010-07-26 20:00 |只看该作者
多谢版主  用过route命令看了下  通过sudo route add -host 192.168.1.2 dev eth0 命令添加的就没问题 跃点正常,看来还是要看程序了

还有个问题 就是我们接2个网络 一个是本地以太 c类网  一个是移动子网,a类网。默认的路由应该是c网的网关。那么对于我们想连一个a网的ip,是否设一个ip从ppp0走就可以了 ,需要设置网关么?还是可以不设,为*就可以了?

论坛徽章:
0
4 [报告]
发表于 2010-07-27 12:04 |只看该作者
顶一下  不清楚网关的相关配置

论坛徽章:
0
5 [报告]
发表于 2010-07-27 12:50 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP