设置网关出错
时间:2010-08-12
来源:互联网
本帖最后由 灰菲湮灭 于 2010-08-12 10:35 编辑
[code]
void set_interface(char *interface, char *ip)
{
int sockfd;
struct rtentry rt;
struct sockaddr_in *sin;
if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0)
{
perror("socket error");
exit(2);
}
sin->sin_family = AF_INET;
if (inet_pton(AF_INET, ip, &sin->sin_addr) < 0)
{
perror("inet_pton error");
exit(3);
}
rt.rt_flags = (RTF_UP | RTF_GATEWAY | RTF_HOST);
rt.rt_dev = interface;
memcpy(&rt.rt_dst, sin, sizeof(struct sockaddr));
memcpy(&rt.rt_gateway, sin, sizeof(struct sockaddr));
if (ioctl(sockfd, SIOCADDRT, &rt) < 0)
{
perror("ioctl");
}
close(sockfd);
}
/tmp # ./a.out
ioctl: Address family not supported by protocol
请问什么原因?
[code]
void set_interface(char *interface, char *ip)
{
int sockfd;
struct rtentry rt;
struct sockaddr_in *sin;
if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0)
{
perror("socket error");
exit(2);
}
sin->sin_family = AF_INET;
if (inet_pton(AF_INET, ip, &sin->sin_addr) < 0)
{
perror("inet_pton error");
exit(3);
}
rt.rt_flags = (RTF_UP | RTF_GATEWAY | RTF_HOST);
rt.rt_dev = interface;
memcpy(&rt.rt_dst, sin, sizeof(struct sockaddr));
memcpy(&rt.rt_gateway, sin, sizeof(struct sockaddr));
if (ioctl(sockfd, SIOCADDRT, &rt) < 0)
{
perror("ioctl");
}
close(sockfd);
}
/tmp # ./a.out
ioctl: Address family not supported by protocol
请问什么原因?
作者: 灰菲湮灭 发布时间: 2010-08-12
已修正,memcpy写错。。
作者: 灰菲湮灭 发布时间: 2010-08-12
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28