*: IpvSixWorkNote *: IpvSixWorkNoteThree -{section: First milestone} +{section: On-going} -It had been since few months so it may not appropriate to call it as first mile stone. I would say it is first milestone for working code of Condor. - -Well, I must admit that it is too painful to convert everything at once. Try to devise some strategy that can split works and test-cases. Which modules are necessary and which are not for the first milestone? - -Features -*: DC Skeleton communicating each other - -Will not be implemented -*: NO_DNS option -*: (...will add on...) +Working on Phase 2. {section: Test required} @@ -21,25 +12,9 @@ *:Choosing a specific interface for Condor use in multi-homed IPv6 host. Use param "NETWORK_INTERFACE". -{section: currently working on} - {section: Note for constants} -Don't forget constants that should be adjusted! - -MAXMACHNAME : seen in file_transfer_db.c, stores the result of sin_to_hostname. - {section: Converting utility functions} -{subsection: is_ipaddr} - -{code} -int is_ipaddr(const char *inbuf, struct in_addr *sin_addr) -{endcode} - -is_ipaddr() does convert string representation of IP address into numerical representation(in_addr). And, it returns FALSE if it fails. - -Original implementation was just re-invention of inet_ntop()/inet_ntoa(). So, I replaced to new implementation that calls inet_ntop() twice. (with AF_INET and AF_INET6) - {subsection: struct hostent} I Initially only looked at struct sockaddr_in. I wrote class ipaddr for replacement. However, it is only half of the world. I should devise IPv6 compliant structure for struct hostent and make it obsolete. I think it would make more sense if we have class ipaddr and class MyString instead of sockaddr* and char*. Write here some design possibilities! @@ -66,7 +41,7 @@ } {endcode} -{subsection: get_full_hostname} +{subsection: get_full_hostname *RESOLVED} my_ip_addr, my_hostname, my_full_hostname() and get_full_hostname() are now obsolete. Now, implementing ipv6_hostname.{h/cpp}. @@ -76,15 +51,13 @@ Importance: ? +** I reimplemented get_full_hostname* and my_hostname*. Newer implementation exists at ipv6_hostname.* + {subsection: IpVerify} [zach] implemented by mostly Todd, and little bit by Zach and Dan. -IpVerify verifies the remote process's ip from the configuration file. There are many lines that are referring to DCpermission. I am bit confused here. I do not understand what 'DCpermission' made for. - -It requires overhaul from interface to implementation. - -Importance: ? +IpVerify verifies the remote process's ip from the configuration file. IpVerify heavily uses in_addr structure internally. I would simply change it to in6_addr and map IPv4 address into IPv6. (so called V4MAPPED). It would make Condor slightly slower and use more memory. However, having two different code path for IPv4 and IPv6 does not seem nice. 4byte->16byte would not be much overhead and will make everything cleaner and easier. Also, I guess future IP address system will surely be super-set of current IPv6 as IPv6 is super-set of IPv4. {section: Ulrich Mystery} Ulrich's Userlevel IPv6 Programming Introductionn - http://people.redhat.com/drepper/userapi-ipv6.html @@ -93,6 +66,8 @@ I decided to use continually gethostbyaddr(). Remvoing gethostbyaddr() requires a lot of modification on existing code. +-- Nope. I am trying to remove gethostbyaddr(). + {section: Converting Sock} Sock is not only used by TCP/UDP connection but also used by Unix domain socket (AF_UNIX). Basically, Sock can only create TCP or UDP socket internally but SharedEndPoint and SharedPortClient creates Unix domain socket and calls Sock::assign() to pass the descriptor. @@ -152,7 +127,7 @@ KeyCacheEntry stores sockaddr_in. KeyCache converts sockaddr_in into sinful string and use the string as a key. -{subsection: Sock::my_addr() can fail?} +{subsection: Sock::my_addr() can fail? *RESOLVED} One of asymmetry in Sock class is that peer_addr() does not fail and always return a value but my_addr() can fail. ( peer_addr tells you the address of peer, my_addr() tells you the address of local socket) The possible case for a failure of my_addr() is that when Sock class did not assign a socket descriptor. @@ -167,5 +142,4 @@ should i change? -Sock::get_port() -> Sock::my_addr().get_port() *for consistency -does it really necessary to a table of local ip addr? +Sock::get_port() -> Sock::my_addr().get_port() *for consistency. <- Well, I guess it should be in the future but not now.