Krishna wrote:
Hi,
I am implementing a user space program to create and assign IPv6 address
to a linux host.
I am able to create and assign the IP successfully. But, if i am
assigning the duplicate address,
still the address gets assigned. I understand the kernel is handling the
DAD and reporting to kernel log.
Is there any way, i can use IOCTL to get the TENTATIVE flag value and
delete the IP if it is duplicate.
By the way, i use IOCTL system call to assign the IP too.
I went through some posts in freebsd-net where they have mentioned about
"SIOCGIFAFLAG_IN6 ioctl"
which gives the flags value where the TENTATIVE flag value can be plooed.
I tried to use the same API in my user program but failed.
Can somebody post me the working sample code of SIOCGIFAFLAG ioctl ?
Thanks,
-Krishna
_______________________________________________
freebsd-net@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-net
To unsubscribe, send any mail to "freebsd-net-unsubscr...@freebsd.org"
Here's a sample code fragment to retrieve the status.
--
ipv6_addr = "1234:2:3:4:5::1001";
ifname = "vr0";
memset(&hints, 0, sizeof(hints));
hints.ai_family = AF_INET6;
ret = getaddrinfo(ipv6_addr, NULL, &hints, &res);
if (ret != 0)
{
fprintf(stderr, "Invalid IPv6 address: [%s]\n", ipv6_addr);
return(1);
}
bcopy(res->ai_addr, &ifr6.ifr_addr, res->ai_addrlen);
strncpy(ifr6.ifr_name, ifname, sizeof(ifr6.ifr_name));
if ((s6 = socket(AF_INET6, SOCK_DGRAM, 0)) < 0)
{
fprintf(stderr, "socket(AF_INET6, SOCK_DGRAM) failed!\n");
return(1);
}
if (ioctl(s6, SIOCGIFAFLAG_IN6, &ifr6) < 0)
{
fprintf(stderr, "ioctl(SIOCGIFAFLAG_IN6) failed!\n");
close(s6);
return(1);
}
flags6 = ifr6.ifr_ifru.ifru_flags6;
close(s6);
fprintf(stdout, " Status: ");
if ((flags6 & IN6_IFF_DUPLICATED) != 0)
fprintf(stdout, "duplicated ");
if ((flags6 & IN6_IFF_TENTATIVE) != 0)
fprintf(stdout, "tentative ");
--
You might want to check the code of ifconfig at
in6_status()/usr/src/sbin/ifconfig/af_inet6.c.
_______________________________________________
freebsd-net@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-net
To unsubscribe, send any mail to "freebsd-net-unsubscr...@freebsd.org"