HP-UX IPv6 Porting Guide (September 2004)
Table Of Contents
- About This Document
- 1 Introduction
- 2 IPv6 Addressing
- 3 Data Structure Changes
- 4 Migrating Applications from IPv4 to IPv6
- 5 Overview of IPv4 and IPv6 Call Set-up
- 6 Function Calls Converting Names to Addresses
- 7 Function Calls Converting IP addresses to Names
- 8 Reading Error Messages
- 9 Freeing Memory
- 10 Converting Binary and Text Addresses
- 11 Testing for Scope and Type of IPv6 addresses using Macros
- 12 Identifying Local Interface Names and Indexes
- 13 Configuring or Querying an Interface using IPv6 ioctl() Function Calls
- 14 Verifying IPv6 Installation
- 15 Sample Client/Server Programs
- A IPv4 to IPv6 Quick Reference Guide

Sample Client/Server Programs
IPv6 TCP Server using getaddrinfo() for Service Address Lookup
Chapter 1566
IPv6 TCP Server using getaddrinfo() for Service Address
Lookup
This code fragment is part of the example IPv6 server program that ships in the HP-UX 11i v2
/usr/lib/demos/networking/socket/af_inet6 directory, rewritten using the
getaddrinfo() function call.
struct addrinfo *ainfo, *res;
struct addrinfo hints;
/* zero-out the hints before assignment */
memset (&hints, 0, sizeof(hints));
.
hints.ai_family = AF_INET6;
hints.ai_flags = AI_PASSIVE;
hints.ai_socktype = SOCK_STREAM;
error = getaddrinfo(NULL, "example", &hints, &res);
if (error != 0) {
fprintf(stderr, "%s: %s for service 'example'\n",
argv[0], gai_strerror(error));
exit(1);
}
/* Create the listen socket. */
ls = socket (res->ai_family, res->ai_socktype, res->ai_protocol);
if (ls == -1) {
perror(argv[0]);
fprintf(stderr, "%s: unable to create socket\n", argv[0]);
exit(1);
}
/* Bind the listen address to the socket. */
if (bind(ls, res->ai_addr, res->ai_addrlen) == -1) {
perror(argv[0]);
fprintf(stderr, "%s: unable to bind address\n", argv[0]);
close(ls);
exit(1);
}
/* Initiate the listen on the socket so remote users
* can connect. The listen backlog is set to 5, which
* is within the supported range of 1 to 20.
*/
if (listen(ls, 5) == -1) {
perror(argv[0]);