Index: libraries/source/spidermonkey/FixpsutilFreeBSD.diff =================================================================== --- libraries/source/spidermonkey/FixpsutilFreeBSD.diff +++ libraries/source/spidermonkey/FixpsutilFreeBSD.diff @@ -36,7 +36,44 @@ if (so->so_type != kif->kf_sock_type || so->xso_family != kif->kf_sock_domain || -@@ -1019,7 +1033,11 @@ psutil_proc_connections(PyObject *self, PyObject *args +@@ -981,20 +995,36 @@ psutil_search_tcplist(char *buf, struct kinfo_file *ki + if (kif->kf_sock_domain == AF_INET) { + if (!psutil_sockaddr_matches( + AF_INET, inp->inp_lport, &inp->inp_laddr, ++#if __FreeBSD_version < 1200031 + &kif->kf_sa_local)) ++#else ++ &kif->kf_un.kf_sock.kf_sa_local)) ++#endif + continue; + if (!psutil_sockaddr_matches( + AF_INET, inp->inp_fport, &inp->inp_faddr, ++#if __FreeBSD_version < 1200031 + &kif->kf_sa_peer)) ++#else ++ &kif->kf_un.kf_sock.kf_sa_peer)) ++#endif + continue; + } else { + if (!psutil_sockaddr_matches( + AF_INET6, inp->inp_lport, &inp->in6p_laddr, ++#if __FreeBSD_version < 1200031 + &kif->kf_sa_local)) ++#else ++ &kif->kf_un.kf_sock.kf_sa_peer)) ++#endif + continue; + if (!psutil_sockaddr_matches( + AF_INET6, inp->inp_fport, &inp->in6p_faddr, ++#if __FreeBSD_version < 1200031 + &kif->kf_sa_peer)) ++#else ++ &kif->kf_un.kf_sock.kf_sa_peer)) ++#endif + continue; + } + +@@ -1019,7 +1049,11 @@ psutil_proc_connections(PyObject *self, PyObject *args struct kinfo_file *freep = NULL; struct kinfo_file *kif; char *tcplist = NULL; @@ -48,3 +85,100 @@ PyObject *retList = PyList_New(0); PyObject *tuple = NULL; +@@ -1094,19 +1128,35 @@ psutil_proc_connections(PyObject *self, PyObject *args + inet_ntop( + kif->kf_sock_domain, + psutil_sockaddr_addr(kif->kf_sock_domain, ++#if __FreeBSD_version < 1200031 + &kif->kf_sa_local), ++#else ++ &kif->kf_un.kf_sock.kf_sa_local), ++#endif + lip, + sizeof(lip)); + inet_ntop( + kif->kf_sock_domain, + psutil_sockaddr_addr(kif->kf_sock_domain, ++#if __FreeBSD_version < 1200031 + &kif->kf_sa_peer), ++#else ++ &kif->kf_un.kf_sock.kf_sa_peer), ++#endif + rip, + sizeof(rip)); + lport = htons(psutil_sockaddr_port(kif->kf_sock_domain, ++#if __FreeBSD_version < 1200031 + &kif->kf_sa_local)); ++#else ++ &kif->kf_un.kf_sock.kf_sa_local)); ++#endif + rport = htons(psutil_sockaddr_port(kif->kf_sock_domain, ++#if __FreeBSD_version < 1200031 + &kif->kf_sa_peer)); ++#else ++ &kif->kf_un.kf_sock.kf_sa_peer)); ++#endif + + // construct python tuple/list + laddr = Py_BuildValue("(si)", lip, lport); +@@ -1137,7 +1187,11 @@ psutil_proc_connections(PyObject *self, PyObject *args + else if (kif->kf_sock_domain == AF_UNIX) { + struct sockaddr_un *sun; + ++#if __FreeBSD_version < 1200031 + sun = (struct sockaddr_un *)&kif->kf_sa_local; ++#else ++ sun = (struct sockaddr_un *)&kif->kf_un.kf_sock.kf_sa_local; ++#endif + snprintf( + path, sizeof(path), "%.*s", + (sun->sun_len - (sizeof(*sun) - sizeof(sun->sun_path))), +@@ -1779,7 +1833,11 @@ int psutil_gather_inet(int proto, PyObject *py_retlist + struct xinpgen *xig, *exig; + struct xinpcb *xip; + struct xtcpcb *xtp; ++#if __FreeBSD_version >= 1200026 ++ struct xinpcb *inp; ++#else + struct inpcb *inp; ++#endif + struct xsocket *so; + struct sock *sock; + const char *varname; +@@ -1849,13 +1907,21 @@ int psutil_gather_inet(int proto, PyObject *py_retlist + PyErr_Format(PyExc_RuntimeError, "struct xinpcb size mismatch"); + goto error; + } ++#if __FreeBSD_version >= 1200026 ++ inp = xip; ++#else + inp = &xip->xi_inp; ++#endif + so = &xip->xi_socket; + break; + } + + inp = &xtp->xt_inp; ++#if __FreeBSD_version >= 1200026 ++ so = &xtp->xt_inp.xi_socket; ++#else + so = &xtp->xt_socket; ++#endif + char lip[200], rip[200]; + int family, lport, rport, pid, status; + +@@ -1863,9 +1929,14 @@ int psutil_gather_inet(int proto, PyObject *py_retlist + pid = psutil_get_pid_from_sock(hash); + if (pid < 0) + continue; ++ + lport = ntohs(inp->inp_lport); + rport = ntohs(inp->inp_fport); ++#if __FreeBSD_version >= 1200026 ++ status = xtp->t_state; ++#else + status = xtp->xt_tp.t_state; ++#endif + + if (inp->inp_vflag & INP_IPV4) { + family = AF_INET;