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"

Reply via email to