MCPcopy Create free account
hub / github.com/F-Stack/f-stack / soo_fill_kinfo

Function soo_fill_kinfo

freebsd/kern/sys_socket.c:370–436  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

368
369#ifndef FSTACK
370static int
371soo_fill_kinfo(struct file *fp, struct kinfo_file *kif, struct filedesc *fdp)
372{
373 struct sockaddr *sa;
374 struct inpcb *inpcb;
375 struct unpcb *unpcb;
376 struct socket *so;
377 int error;
378
379 kif->kf_type = KF_TYPE_SOCKET;
380 so = fp->f_data;
381 CURVNET_SET(so->so_vnet);
382 kif->kf_un.kf_sock.kf_sock_domain0 =
383 so->so_proto->pr_domain->dom_family;
384 kif->kf_un.kf_sock.kf_sock_type0 = so->so_type;
385 kif->kf_un.kf_sock.kf_sock_protocol0 = so->so_proto->pr_protocol;
386 kif->kf_un.kf_sock.kf_sock_pcb = (uintptr_t)so->so_pcb;
387 switch (kif->kf_un.kf_sock.kf_sock_domain0) {
388 case AF_INET:
389 case AF_INET6:
390 if (kif->kf_un.kf_sock.kf_sock_protocol0 == IPPROTO_TCP) {
391 if (so->so_pcb != NULL) {
392 inpcb = (struct inpcb *)(so->so_pcb);
393 kif->kf_un.kf_sock.kf_sock_inpcb =
394 (uintptr_t)inpcb->inp_ppcb;
395 kif->kf_un.kf_sock.kf_sock_sendq =
396 sbused(&so->so_snd);
397 kif->kf_un.kf_sock.kf_sock_recvq =
398 sbused(&so->so_rcv);
399 }
400 }
401 break;
402 case AF_UNIX:
403 if (so->so_pcb != NULL) {
404 unpcb = (struct unpcb *)(so->so_pcb);
405 if (unpcb->unp_conn) {
406 kif->kf_un.kf_sock.kf_sock_unpconn =
407 (uintptr_t)unpcb->unp_conn;
408 kif->kf_un.kf_sock.kf_sock_rcv_sb_state =
409 so->so_rcv.sb_state;
410 kif->kf_un.kf_sock.kf_sock_snd_sb_state =
411 so->so_snd.sb_state;
412 kif->kf_un.kf_sock.kf_sock_sendq =
413 sbused(&so->so_snd);
414 kif->kf_un.kf_sock.kf_sock_recvq =
415 sbused(&so->so_rcv);
416 }
417 }
418 break;
419 }
420 error = so->so_proto->pr_usrreqs->pru_sockaddr(so, &sa);
421 if (error == 0 &&
422 sa->sa_len <= sizeof(kif->kf_un.kf_sock.kf_sa_local)) {
423 bcopy(sa, &kif->kf_un.kf_sock.kf_sa_local, sa->sa_len);
424 free(sa, M_SONAME);
425 }
426 error = so->so_proto->pr_usrreqs->pru_peeraddr(so, &sa);
427 if (error == 0 &&

Callers

nothing calls this directly

Calls 3

strncpyFunction · 0.85
freeFunction · 0.70
sbusedFunction · 0.50

Tested by

no test coverage detected