+ -
当前位置:首页 → 问答吧 → 设置网关出错

设置网关出错

时间: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

请问什么原因?

作者: 灰菲湮灭   发布时间: 2010-08-12

已修正,memcpy写错。。

作者: 灰菲湮灭   发布时间: 2010-08-12