1.\"
2.\" This file and its contents are supplied under the terms of the
3.\" Common Development and Distribution License ("CDDL"), version 1.0.
4.\" You may only use this file in accordance with the terms of version
5.\" 1.0 of the CDDL.
6.\"
7.\" A full copy of the text of the CDDL should have accompanied this
8.\" source.  A copy of the CDDL is also available via the Internet at
9.\" http://www.illumos.org/license/CDDL.
10.\"
11.\"
12.\" Copyright 2015 Joyent, Inc.
13.\"
14.Dd November 27, 2023
15.Dt PR_GETPEERNAME 3PROC
16.Os
17.Sh NAME
18.Nm pr_getpeername
19.Nd inject getpeername library call into victim process
20.Sh LIBRARY
21.Lb libproc
22.Sh SYNOPSIS
23.In libproc.h
24.Ft int
25.Fo pr_getpeername
26.Fa "struct ps_prochandle *P"
27.Fa "int sock"
28.Fa "struct sockaddr *name"
29.Fa "socklen_t *namelen"
30.Fc
31.Sh DESCRIPTION
32The
33.Fn pr_getpeername
34function injects the
35.Xr getpeername 3SOCKET
36library call into the target process
37.Fa P
38by means of the agent LWP.
39If the process handle
40.Fa P
41is
42.Dv NULL
43then this is equivalent to calling
44.Xr getpeername 3SOCKET
45on the currently running process.
46.Pp
47The arguments
48.Fa sock ,
49.Fa name ,
50and
51.Fa namelen
52have the same meaning as in
53.Xr getpeername 3SOCKET .
54See
55.Xr getpeername 3SOCKET
56for the full description and purpose of the
57.Sy getpeername
58library call and its arguments.
59.Pp
60The
61.Fn pr_getpeername
62function only works on active processes.
63Process handles that correspond to core files, zombie processes, or ELF objects
64do not support library call injection.
65.Sh RETURN VALUES
66Upon successful completion, the
67.Fn pr_getpeername
68function's return value is that described in
69.Xr getpeername 3SOCKET .
70Otherwise,
71.Sy -1
72is returned and
73.Sy errno
74is set to
75.Er ENOSYS
76to indicate that the library call could not be injected.
77.Sh ERRORS
78For the full list of errors see the
79.Sy ERRORS
80section in
81.Xr getpeername 3SOCKET .
82.Pp
83The
84.Fn pr_getpeername
85function will fail if:
86.Bl -tag -width Er
87.It Er ENOSYS
88An error occurred while trying to invoke the agent LWP and inject a
89library call in the process handle
90.Fa P
91or the process handle
92.Fa P
93does not support library call injection.
94.El
95.Sh INTERFACE STABILITY
96.Sy Uncommitted
97.Sh MT-LEVEL
98See
99.Sy LOCKING
100in
101.Xr libproc 3LIB .
102.Sh SEE ALSO
103.Xr libproc 3LIB ,
104.Xr getpeername 3SOCKET ,
105.Xr proc 5
106