--- sysdeps/freebsd/procopenfiles.c.orig 2014-10-12 07:17:26 UTC +++ sysdeps/freebsd/procopenfiles.c @@ -322,12 +322,21 @@ glibtop_get_proc_open_files_s (glibtop *server, glibto struct sockaddr_un *sun; entry.type = GLIBTOP_FILE_TYPE_LOCALSOCKET; +/* 64bit inodes */ +#if __FreeBSD_version >= 1200031 + sun = (struct sockaddr_un *)&kif->kf_un.kf_sock.kf_sa_local; +#else sun = (struct sockaddr_un *)&kif->kf_sa_local; +#endif if (sun->sun_path[0]) { char *addrstr; +#if __FreeBSD_version >= 1200031 + addrstr = addr_to_string(&kif->kf_un.kf_sock.kf_sa_local); +#else addrstr = addr_to_string(&kif->kf_sa_local); +#endif g_strlcpy(entry.info.localsock.name, addrstr, sizeof(entry.info.localsock.name)); @@ -335,7 +344,11 @@ glibtop_get_proc_open_files_s (glibtop *server, glibto } else { char *addrstr; +#if __FreeBSD_version >= 1200031 + addrstr = addr_to_string(&kif->kf_un.kf_sock.kf_sa_peer); +#else addrstr = addr_to_string(&kif->kf_sa_peer); +#endif g_strlcpy(entry.info.localsock.name, addrstr, sizeof(entry.info.localsock.name)); @@ -349,12 +362,20 @@ glibtop_get_proc_open_files_s (glibtop *server, glibto entry.type = GLIBTOP_FILE_TYPE_INETSOCKET; else entry.type = GLIBTOP_FILE_TYPE_INET6SOCKET; +#if __FreeBSD_version >= 1200031 + addrstr = addr_to_string(&kif->kf_un.kf_sock.kf_sa_peer); +#else addrstr = addr_to_string(&kif->kf_sa_peer); +#endif g_strlcpy(entry.info.sock.dest_host, addrstr, sizeof(entry.info.sock.dest_host)); g_free(addrstr); +#if __FreeBSD_version >= 1200031 + entry.info.sock.dest_port = addr_to_port(&kif->kf_un.kf_sock.kf_sa_peer); +#else entry.info.sock.dest_port = addr_to_port(&kif->kf_sa_peer); +#endif } } else if (kif->kf_type == KF_TYPE_PIPE) { entry.type = GLIBTOP_FILE_TYPE_PIPE;