#include #include #include #include #include #include static void print_vfc_flags(int flags) { if (flags & VFCF_STATIC) printf("STATIC "); if (flags & VFCF_NETWORK) printf("NETWORK "); if (flags & VFCF_READONLY) printf("READONLY "); if (flags & VFCF_SYNTHETIC) printf("SYNTHETIC "); if (flags & VFCF_LOOPBACK) printf("LOOPBACK "); if (flags & VFCF_UNICODE) printf("UNICODE "); if (flags & VFCF_JAIL) printf("JAIL "); if (flags & VFCF_DELEGADMIN) printf("DELEGADMIN "); if (flags & VFCF_SBDRY) printf("SBDRY "); printf("\n"); } int main() { struct xvfsconf *xvfsp; size_t buflen, nummibs; int cnt, i; int mib[10]; nummibs = 10; sysctlnametomib("vfs.conflist", &mib[0], &nummibs); printf("nummibs = %d: mib[0] = %d mib[1] = %d\n", (int)nummibs, mib[0], mib[1]); if (sysctlbyname("vfs.conflist", NULL, &buflen, NULL, 0) < 0) return (-1); xvfsp = malloc(buflen); if (xvfsp == NULL) return (-1); if (sysctlbyname("vfs.conflist", xvfsp, &buflen, NULL, 0) < 0) { free(xvfsp); return (-1); } cnt = buflen / sizeof(struct xvfsconf); for (i = 0; i < cnt; i++) { printf("----------------------\n"); printf("vfc_vfsops = %p\n", xvfsp[i].vfc_vfsops); printf("vfc_name = [%s]\n", xvfsp[i].vfc_name); printf("vfc_typenum = %d\n", xvfsp[i].vfc_typenum); printf("vfc_refcount = %d\n", xvfsp[i].vfc_refcount); printf("vfc_flags = 0x%x: ", xvfsp[i].vfc_flags); print_vfc_flags(xvfsp[i].vfc_flags); printf("vfc_next = %p\n", xvfsp[i].vfc_next); } free(xvfsp); return (0); }