使用IPV6连接失败

时间:2016-09-12 13:42:03

标签: linux sockets networking ipv6

    err = sock_create(AF_INET6, SOCK_DGRAM, IPPROTO_UDP, &client->sock);
    if (err) {
        pr_err("sock_create failed\n");
        return err;
    }


    memset (&saddr, 0, sizeof(struct sockaddr_in6));
    saddr.sin6_family   = AF_INET6;
    saddr.sin6_scope_id = 20;
    saddr.sin6_port     = htons(client->talker_params->udp_dstport);
    saddr.sin6_addr     = in6addr_loopback;  //This should be removed
    saddr.sin6_flowinfo = 0;

    memcpy(  saddr.sin6_addr.s6_addr 
            ,&client->talker_params->ip_6_dstaddr.addr
            ,sizeof(ip_addr_6_t));
    pr_info("saddr.sin6_addr.s6_addr=%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x\n ",
            saddr.sin6_addr.s6_addr[0],
            saddr.sin6_addr.s6_addr[1],
            saddr.sin6_addr.s6_addr[2],
            saddr.sin6_addr.s6_addr[3],
            saddr.sin6_addr.s6_addr[4],
            saddr.sin6_addr.s6_addr[5],
            saddr.sin6_addr.s6_addr[6],
            saddr.sin6_addr.s6_addr[7],
            saddr.sin6_addr.s6_addr[8],
            saddr.sin6_addr.s6_addr[9],
            saddr.sin6_addr.s6_addr[10],
            saddr.sin6_addr.s6_addr[11],
            saddr.sin6_addr.s6_addr[12],
            saddr.sin6_addr.s6_addr[13],
            saddr.sin6_addr.s6_addr[14],
            saddr.sin6_addr.s6_addr[15]);
    pr_info("The size of sizeof(saddr): %d \n",sizeof(saddr));
    pr_info("The size of sizeof(saddr): %d \n",sizeof(struct sockaddr_in6));

    err = client->sock->ops->connect(client->sock
                                    ,(struct sockaddr*)&saddr
                                    , sizeof(saddr)
                                    , O_RDWR);

连接失败,无效参数。由于此实现在内核中,我无法使用getaddrinfo。我尝试连接的链接本地地址是fe80 :: 5e26:aff:fe84:585d

我写了一个userland应用程序,并能够使用ipv6

将消息发送到目的地

0 个答案:

没有答案