It is not decided whether to have host byte order or network byte order. sockaddr_in always have network byte order in it. However, the class itself should be convertible to sockaddr_in or sockaddr_in6. However, byte-level compatibility may not be required. So, we need something like IPaddress::to_sockaddr_in6() function. +{section: Unified Address Class} + +I juggled many design possibilities. I came to the conclusion that unified address class should contain sockaddr_in6. Here is how sockaddr_in6 look like + +{code} +// code from <linux/in6.h> + +struct sockaddr_in6 { + unsigned short int sin6_family; /* AF_INET6 */ + __u16 sin6_port; /* Transport layer port # */ + __u32 sin6_flowinfo; /* IPv6 flow information */ + struct in6_addr sin6_addr; /* IPv6 address */ + __u32 sin6_scope_id; /* scope id (new in RFC2553) */ +}; +{endcode} + +Notable difference from sockaddr_in(IPv4 address/port storage) is that it has scope id. Scope id denotes a ethernet interface in a system. Scope id binds IP address shown in sockaddr_in6 to specific ethernet interface. That binding is necessary because some IPv6 addresses are limited to an ethernet interface. Google about 'link local address' would be helpful. + {section: Todo} Manageable daily work-list. 1:remove every obsolete interface. -1:find places where use 'int' as IP address storage. mark and count them. -1:make unified address class 1:change every incidents where use sockaddr,sockaddr_in, and int. +1:change IpVerify not to depend on IPv4 address {section: Done} @@ -80,6 +97,7 @@ *:investigate security and authentication code that deals IPv4 address directly. IP verifier? *:investigate every source code where calls obsolete BSD socket interface. *:make a git branch +*:IpAddr class, unified address class {section: Note} *:In a server, we want to accept both IPv4 and IPv6 connections in single program(process). There are two choices with dealing IPv4 and IPv6 co-existence. @@ -97,6 +115,6 @@ *:Do you have any good arguments for having network-byte-order IP address instead of having host-byte-order IP address? -*:check point server and syscall library. will they eventually replaced by DMTCP? +*:check point server and syscall library. will they eventually replaced by DMTCP? they contains IPv4 functions but maybe I don't need to care about them. {subsection: *** currently, this is just temporary page}