Socket Programming Book
These changes were minimized as much as possible to facilitate the porting of existing IPv4 applications. Moreover, and this is important, this new API should enable interoperability between IPv4 machines and machines using IPv6 dual stack mechanism described below. The API described here is used in Solaris, Linux and * BSD systems. It corresponds to that defined in RFC 3493 with some modifications necessary to reflect the latest changes in underlying protocols. This API is specifically designed to run on machines with dual stack IPv4 and IPv6 (dual stack IPv4/IPv6 see See diagram for implementation of such a dual-stack on UNIX 4. 4BSD). This API "socket" is available in many programming environments like Java, perl, python, ruby, . . An API "advanced", described in RFC 3542 is used to program trading networks very precisely. It will also be used but so succinct and largely through the example one_ping6. A new address family AF_INET6 whose name and whose value can vary from one implementation to another, has been defined (in sys / socket. h). Also, a new family of protocols for PF_INET6 name has been defined (in sys / socket. h). In principle, we must have. The data structure struct sockaddr_in6 IPv6 is equivalent to the IPv4 struct sockaddr_in. It is defined as follows (in netinet / in. h) for UNIX 4. 3BSD derived systems:. Note that this structure has a length of 28 bytes, and is therefore larger than the generic type struct sockaddr. It is no longer possible to socket programming book a struct sockaddr if the value can be stored in a struct sockaddr_in6. To make it easier for implementers, a new data structure, struct sockaddr_storage, was defined. It is of sufficient size in order to take into account all the protocols supported and aligned so that the type conversions between pointers to data structures supported protocols and addresses of pointers to itself do not generate alignment problems. An example use could be:. In version 4. 4 of BSD, the length of the field sin6_family from 2 bytes to 1 byte. The byte contains the size and recovered the sockaddr_in6 structure and serves to properly perform the type conversion to the generic sockaddr data structure used by many primitive interface socket. The macro-definition SIN6_LEN present in any implementation 4. 4BSD, then allows to distinguish between versions. The other fields remain unchanged, this structure is almost identical to the previous version. If the field sin6_len exists (which is testable by the fact that the symbol is defined SIN6_LEN), it must be initialized by the size of the sockaddr_in6. Note the presence of two new fields (they have no equivalents in the sockaddr_in structure) in the sockaddr_in6 data structure, fields and sin6_flowinfo sin6_scope_id. The first really structured, is described in RFC 2460 and flow identifier. The second is a set of interfaces in line with the scope of the address contained in the field sin6_addr. For example, if the address in question is of type local link, the field should be an index sin6_scope_id interface. . . .