HP-UX Reference (11i v2 07/12) - 2 System Calls (vol 5)
p
pstat(2) pstat(2)
psf.psf_lo_nodeid)) {
printf("Success\n");
printf("The major number of the stream is %d\n",
psfstream[i].val.head.pst_dev_major);
if (psfstream[i].pst_extn_flags &
PS_STR_XPORT_DATA) {
if (psfstream[i].pst_str_xport_protocol ==
PS_STR_XPORT_TCP_PROTO) {
printf("TCP max hiwat %d\n",
psfstream[i].pst_str_xport_obufsz);
printf("Local port number is %d\n",
((struct sockaddr_in *)
(psfstream[i].pst_str_xport_boundaddr))
->sin_port);
printf("TCP protocol state %d\n",
psfstream[i].pst_str_xport_pstate);
}
}
} else {
printf("State changed\n");
}
} else {
perror("pstat_getstream()");
}
} else {
perror("pstat_getfile2");
}
close(fd);
}
/*
* Example 10: Acquire detailed information about a socket
*/
main()
{
struct pst_fileinfo2 psf;
struct pst_socket psfsocket;
int rv, count, fd;
fd = socket(AF_INET, SOCK_STREAM, 0);
rv = pstat_getfile2(&psf, sizeof(psf), 0, fd, getpid());
if (rv == 1) {
/*
* Ask for socket information.
*/
count = pstat_getsocket(psfsocket, sizeof(struct pst_socket),
&(psf.psf_fid));
if (count == 1) {
if ((psfsocket.pst_hi_fileid == psf.psf_hi_fileid) &&
(psfsocket.pst_lo_fileid == psf.psf_lo_fileid) &&
(psfsocket.pst_hi_nodeid == psf.psf_hi_nodeid) &&
(psfsocket.pst_lo_nodeid == psf.psf_lo_nodeid)) {
printf("Success\n");
printf("The type of socket is %d, should be %d\n",
psfsocket.pst_type, PS_SOCK_STREAM);
} else {
printf("State changed\n");
}
290 Hewlett-Packard Company − 17 − HP-UX 11i Version 2: December 2007 Update