Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1373591 > unrolled thread
| Started by | Vishnu Pratap Singh <vishu13285@gmail.com> |
|---|---|
| First post | 2016-04-07 19:40 +0200 |
| Last post | 2016-04-07 20:40 +0200 |
| Articles | 3 — 2 participants |
Back to article view | Back to linux.kernel
How to get creatior PID information for the local tcp connection Vishnu Pratap Singh <vishu13285@gmail.com> - 2016-04-07 19:40 +0200
Re: How to get creatior PID information for the local tcp connection Eric Dumazet <eric.dumazet@gmail.com> - 2016-04-07 20:30 +0200
Re: How to get creatior PID information for the local tcp connection Eric Dumazet <eric.dumazet@gmail.com> - 2016-04-07 20:40 +0200
| From | Vishnu Pratap Singh <vishu13285@gmail.com> |
|---|---|
| Date | 2016-04-07 19:40 +0200 |
| Subject | How to get creatior PID information for the local tcp connection |
| Message-ID | <rlm4p-7rS-1@gated-at.bofh.it> |
Hi,
Issue - How to get PID information for the local tcp connection
i want to get the creator PID for each socket in user space for local
tcp connection, i see in kernel there is support for returing PID with
"SO_PEERCRED" ioctl to work across namespaces. it uses struct pid and
struct cred to store the peer credentials on struct sock.
cred_to_ucred(sk->sk_peer_pid, sk->sk_peer_cred, &peercred); Above
function stores the PID information in ucred->pid = pid_vnr(pid); and
same is returned via "SO_PEERCRED" ioctl .
But for local tcp connection i get pid as 0, is there any way i can
get the PID information. Any help or suggestion will be highly
helpful.
BR,
Vishnu<div id="DDB4FAA8-2DD7-40BB-A1B8-4E2AA1F9FDF2"><br />
<table style="border-top: 1px solid #aaabb6;">
<tr>
<td style="width: 55px; padding-top: 13px;"><a
href="https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail"
target="_blank"><img
src="https://ipmcdn.avast.com/images/2016/icons/icon-envelope-open-tick-round-orange-v1.png"
/></a></td>
<td style="width: 470px; padding-top: 15px; color: #41424e;
font-size: 13px; font-family: Arial, Helvetica, sans-serif;
line-height: 18px;">Virus-free. <a
href="https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail"
target="_blank" style="color: #4453ea;">www.avast.com</a>
</td>
</tr>
</table><a href="#DDB4FAA8-2DD7-40BB-A1B8-4E2AA1F9FDF2" width="1"
height="1"></a></div>
[toc] | [next] | [standalone]
| From | Eric Dumazet <eric.dumazet@gmail.com> |
|---|---|
| Date | 2016-04-07 20:30 +0200 |
| Message-ID | <rlmQN-82W-3@gated-at.bofh.it> |
| In reply to | #1373591 |
On Thu, 2016-04-07 at 23:01 +0530, Vishnu Pratap Singh wrote:
> Hi,
>
>
> Issue - How to get PID information for the local tcp connection
>
>
>
> i want to get the creator PID for each socket in user space for local
> tcp connection, i see in kernel there is support for returing PID with
> "SO_PEERCRED" ioctl to work across namespaces. it uses struct pid and
> struct cred to store the peer credentials on struct sock.
> cred_to_ucred(sk->sk_peer_pid, sk->sk_peer_cred, &peercred); Above
> function stores the PID information in ucred->pid = pid_vnr(pid); and
> same is returned via "SO_PEERCRED" ioctl .
>
> But for local tcp connection i get pid as 0, is there any way i can
> get the PID information. Any help or suggestion will be highly
> helpful.
>
>
man 7 socket
SO_PEERCRED
Return the credentials of the foreign process connected to this socket.
This is possible only for connected AF_UNIX stream sockets and AF_UNIX
stream and datagram socket pairs created using socketpair(2); see unix(7).
The returned credentials are those that were in effect at the time of the
call to connect(2) or socketpair(2). The argument is a ucred structure;
define the GNU_SOURCE feature test macro to obtain the definition of that
structure from <sys/socket.h>. This socket option is read-only.
[toc] | [prev] | [next] | [standalone]
| From | Eric Dumazet <eric.dumazet@gmail.com> |
|---|---|
| Date | 2016-04-07 20:40 +0200 |
| Message-ID | <rln0u-87S-21@gated-at.bofh.it> |
| In reply to | #1373641 |
On Thu, 2016-04-07 at 11:26 -0700, Eric Dumazet wrote:
> On Thu, 2016-04-07 at 23:01 +0530, Vishnu Pratap Singh wrote:
> > Hi,
> >
> >
> > Issue - How to get PID information for the local tcp connection
> >
> >
> >
> > i want to get the creator PID for each socket in user space for local
> > tcp connection, i see in kernel there is support for returing PID with
> > "SO_PEERCRED" ioctl to work across namespaces. it uses struct pid and
> > struct cred to store the peer credentials on struct sock.
> > cred_to_ucred(sk->sk_peer_pid, sk->sk_peer_cred, &peercred); Above
> > function stores the PID information in ucred->pid = pid_vnr(pid); and
> > same is returned via "SO_PEERCRED" ioctl .
> >
> > But for local tcp connection i get pid as 0, is there any way i can
> > get the PID information. Any help or suggestion will be highly
> > helpful.
> >
> >
>
> man 7 socket
>
> SO_PEERCRED
> Return the credentials of the foreign process connected to this socket.
> This is possible only for connected AF_UNIX stream sockets and AF_UNIX
> stream and datagram socket pairs created using socketpair(2); see unix(7).
> The returned credentials are those that were in effect at the time of the
> call to connect(2) or socketpair(2). The argument is a ucred structure;
> define the GNU_SOURCE feature test macro to obtain the definition of that
> structure from <sys/socket.h>. This socket option is read-only.
>
Sorry, I hit "Send" too fast.
This is not implemented for TCP yet.
You'll have to take a look at iproute2 package, since "ss -tp" is able
to find this information, by looking at all /proc/{pid}/fd/* files and
the socket inode number the kernel gives through inet_diag
Not scalable if you have millions of sockets...
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web