ed any visible API changes other than those required for allowing explicit use of IPv6 by applications that do care. On the other hand, APIs that always require explicit IP-version handling by applications are the ones with most impacts. In all cases, actual implementations of APIs have to become IPv6-aware, except special cases where an API implementation uses an additional layer of API and thus can remain IP-version unaware. The abstract API implementations, in the end, have to use an IP-version-aware API to actually transmit data. In that API layer possible issues with IP-versions arise, and APIs may need to implement functionality such as Happy Eyeballs - see Section 3.9.4. 3.9.1 Socket APIs One of the APIs that are impacted a lot by IPv6 is the Portable Operating System Interface for uniX (POSIX) API managed by the Austin Group. The POSIX API is a textbook example of an API that requires extreme awareness of IP-version from the API users. IETF has documented implications to 'socket' style interfaces in several RFCs, including 'Basic Socket Interface Extensions for IPv6' [128], 'Advanced Sockets API for IPv6' [129], 'Socket Interface Extensions for Multicast Source Filters' [130], and 'IPv6 Socket API for Source Address Selection' [131]. The API implications are not limited to the listed documents and the work is still ongoing, for example, to add API functions for improved multihoming support [132]. 3.9.2 Address Family Agnostic APIs Many, if not most, of the modern operating systems provide high level APIs for Internet communications. These APIs completely hide IP address family related matters from application programmers. Often, a connectivity API is provided that only requires the name and port number of the destination. An example of an API that allows 'connection by name' is provided by Qt's QAbstractSocket class, which provides APIs for address family agnostic program- ming, while allowing socket API-style programming as well (see specification in web Deploying IPv6 in 3GPP Networks http://qt-project.