portals.c
来自「lustre 1.6.5 source code」· C语言 代码 · 共 1,711 行 · 第 1/4 页
C
1,711 行
if (best_nid == LNET_NID_ANY) { fprintf(stderr, "No reachable NID\n"); return -1; } printf("%s\n", libcfs_nid2str(best_nid)); return 0;}intjt_ptl_print_interfaces (int argc, char **argv){ struct libcfs_ioctl_data data; char buffer[3][64]; int index; int rc; if (!g_net_is_compatible (argv[0], SOCKLND, 0)) return -1; for (index = 0;;index++) { LIBCFS_IOC_INIT(data); data.ioc_net = g_net; data.ioc_count = index; rc = l_ioctl(LNET_DEV_ID, IOC_LIBCFS_GET_INTERFACE, &data); if (rc != 0) break; printf ("%s: (%s/%s) npeer %d nroute %d\n", ptl_ipaddr_2_str(data.ioc_u32[0], buffer[2], 1), ptl_ipaddr_2_str(data.ioc_u32[0], buffer[0], 0), ptl_ipaddr_2_str(data.ioc_u32[1], buffer[1], 0), data.ioc_u32[2], data.ioc_u32[3]); } if (index == 0) { if (errno == ENOENT) { printf ("<no interfaces>\n"); } else { fprintf(stderr, "Error getting interfaces: %s: " "check dmesg.\n", strerror(errno)); } } return 0;}intjt_ptl_add_interface (int argc, char **argv){ struct libcfs_ioctl_data data; __u32 ipaddr; int rc; __u32 netmask = 0xffffff00; int i; int count; char *end; if (argc < 2 || argc > 3) { fprintf (stderr, "usage: %s ipaddr [netmask]\n", argv[0]); return 0; } if (!g_net_is_compatible(argv[0], SOCKLND, 0)) return -1; if (lnet_parse_ipaddr(&ipaddr, argv[1]) != 0) { fprintf (stderr, "Can't parse ip: %s\n", argv[1]); return -1; } if (argc > 2 ) { count = strtol(argv[2], &end, 0); if (count > 0 && count < 32 && *end == 0) { netmask = 0; for (i = count; i > 0; i--) netmask = netmask|(1<<(32-i)); } else if (lnet_parse_ipquad(&netmask, argv[2]) != 0) { fprintf (stderr, "Can't parse netmask: %s\n", argv[2]); return -1; } } LIBCFS_IOC_INIT(data); data.ioc_net = g_net; data.ioc_u32[0] = ipaddr; data.ioc_u32[1] = netmask; rc = l_ioctl(LNET_DEV_ID, IOC_LIBCFS_ADD_INTERFACE, &data); if (rc != 0) { fprintf (stderr, "failed to add interface: %s\n", strerror (errno)); return -1; } return 0;}intjt_ptl_del_interface (int argc, char **argv){ struct libcfs_ioctl_data data; int rc; __u32 ipaddr = 0; if (argc > 2) { fprintf (stderr, "usage: %s [ipaddr]\n", argv[0]); return 0; } if (!g_net_is_compatible(argv[0], SOCKLND, 0)) return -1; if (argc == 2 && lnet_parse_ipaddr(&ipaddr, argv[1]) != 0) { fprintf (stderr, "Can't parse ip: %s\n", argv[1]); return -1; } LIBCFS_IOC_INIT(data); data.ioc_net = g_net; data.ioc_u32[0] = ipaddr; rc = l_ioctl(LNET_DEV_ID, IOC_LIBCFS_DEL_INTERFACE, &data); if (rc != 0) { fprintf (stderr, "failed to delete interface: %s\n", strerror (errno)); return -1; } return 0;}intjt_ptl_print_peers (int argc, char **argv){ struct libcfs_ioctl_data data; lnet_process_id_t id; char buffer[2][64]; int index; int rc; if (!g_net_is_compatible (argv[0], SOCKLND, RALND, PTLLND, MXLND, OPENIBLND, CIBLND, IIBLND, VIBLND, O2IBLND, 0)) return -1; for (index = 0;;index++) { LIBCFS_IOC_INIT(data); data.ioc_net = g_net; data.ioc_count = index; rc = l_ioctl(LNET_DEV_ID, IOC_LIBCFS_GET_PEER, &data); if (rc != 0) break; if (g_net_is_compatible(NULL, SOCKLND, 0)) { id.nid = data.ioc_nid; id.pid = data.ioc_u32[4]; printf ("%-20s [%d]%s->%s:%d #%d\n", libcfs_id2str(id), data.ioc_count, /* persistence */ ptl_ipaddr_2_str (data.ioc_u32[2], buffer[0], 1), /* my ip */ ptl_ipaddr_2_str (data.ioc_u32[0], buffer[1], 1), /* peer ip */ data.ioc_u32[1], /* peer port */ data.ioc_u32[3]); /* conn_count */ } else if (g_net_is_compatible(NULL, PTLLND, 0)) { id.nid = data.ioc_nid; id.pid = data.ioc_u32[4]; printf ("%-20s s %d%s [%d] "LPD64".%06d" " m "LPD64"/"LPD64" q %d/%d c %d/%d\n", libcfs_id2str(id), data.ioc_net, /* state */ data.ioc_flags ? "" : " ~!h", /* sent_hello */ data.ioc_count, /* refcount */ data.ioc_u64[0]/1000000, /* incarnation secs */ (int)(data.ioc_u64[0]%1000000), /* incarnation usecs */ (((__u64)data.ioc_u32[1])<<32) | ((__u64)data.ioc_u32[0]), /* next_matchbits */ (((__u64)data.ioc_u32[3])<<32) | ((__u64)data.ioc_u32[2]), /* last_matchbits_seen */ data.ioc_u32[5] >> 16, /* nsendq */ data.ioc_u32[5] & 0xffff, /* nactiveq */ data.ioc_u32[6] >> 16, /* credits */ data.ioc_u32[6] & 0xffff); /* outstanding_credits */ } else if (g_net_is_compatible(NULL, RALND, OPENIBLND, CIBLND, VIBLND, 0)) { printf ("%-20s [%d]@%s:%d\n", libcfs_nid2str(data.ioc_nid), /* peer nid */ data.ioc_count, /* peer persistence */ ptl_ipaddr_2_str (data.ioc_u32[0], buffer[1], 1), /* peer ip */ data.ioc_u32[1]); /* peer port */ } else { printf ("%-20s [%d]\n", libcfs_nid2str(data.ioc_nid), data.ioc_count); } } if (index == 0) { if (errno == ENOENT) { printf ("<no peers>\n"); } else { fprintf(stderr, "Error getting peer list: %s: " "check dmesg.\n", strerror(errno)); } } return 0;}intjt_ptl_add_peer (int argc, char **argv){ struct libcfs_ioctl_data data; lnet_nid_t nid; __u32 ip = 0; int port = 0; int rc; if (!g_net_is_compatible (argv[0], SOCKLND, RALND, OPENIBLND, CIBLND, IIBLND, VIBLND, 0)) return -1; if (g_net_is_compatible(NULL, SOCKLND, OPENIBLND, CIBLND, RALND, 0)) { if (argc != 4) { fprintf (stderr, "usage(tcp,openib,cib,ra): %s nid ipaddr port\n", argv[0]); return 0; } } else if (g_net_is_compatible(NULL, VIBLND, 0)) { if (argc != 3) { fprintf (stderr, "usage(vib): %s nid ipaddr\n", argv[0]); return 0; } } else if (argc != 2) { fprintf (stderr, "usage(iib): %s nid\n", argv[0]); return 0; } nid = libcfs_str2nid(argv[1]); if (nid == LNET_NID_ANY) { fprintf (stderr, "Can't parse NID: %s\n", argv[1]); return -1; } if (g_net_is_compatible (NULL, SOCKLND, OPENIBLND, CIBLND, VIBLND, RALND, 0) && lnet_parse_ipaddr (&ip, argv[2]) != 0) { fprintf (stderr, "Can't parse ip addr: %s\n", argv[2]); return -1; } if (g_net_is_compatible (NULL, SOCKLND, OPENIBLND, CIBLND, RALND, 0) && lnet_parse_port (&port, argv[3]) != 0) { fprintf (stderr, "Can't parse port: %s\n", argv[3]); return -1; } LIBCFS_IOC_INIT(data); data.ioc_net = g_net; data.ioc_nid = nid; data.ioc_u32[0] = ip; data.ioc_u32[1] = port; rc = l_ioctl (LNET_DEV_ID, IOC_LIBCFS_ADD_PEER, &data); if (rc != 0) { fprintf (stderr, "failed to add peer: %s\n", strerror (errno)); return -1; } return 0;}intjt_ptl_del_peer (int argc, char **argv){ struct libcfs_ioctl_data data; lnet_nid_t nid = LNET_NID_ANY; lnet_pid_t pid = LNET_PID_ANY; __u32 ip = 0; char *end; int rc; if (!g_net_is_compatible (argv[0], SOCKLND, RALND, MXLND, PTLLND, OPENIBLND, CIBLND, IIBLND, VIBLND, O2IBLND, 0)) return -1; if (g_net_is_compatible(NULL, SOCKLND, 0)) { if (argc > 3) { fprintf (stderr, "usage: %s [nid] [ipaddr]\n", argv[0]); return 0; } } else if (g_net_is_compatible(NULL, PTLLND, 0)) { if (argc > 3) { fprintf (stderr, "usage: %s [nid] [pid]\n", argv[0]); return 0; } } else if (argc > 2) { fprintf (stderr, "usage: %s [nid]\n", argv[0]); return 0; } if (argc > 1 && !libcfs_str2anynid(&nid, argv[1])) { fprintf (stderr, "Can't parse nid: %s\n", argv[1]); return -1; } if (g_net_is_compatible(NULL, SOCKLND, 0)) { if (argc > 2 && lnet_parse_ipaddr (&ip, argv[2]) != 0) { fprintf (stderr, "Can't parse ip addr: %s\n", argv[2]); return -1; } } else if (g_net_is_compatible(NULL, PTLLND, 0)) { if (argc > 2) { pid = strtol(argv[2], &end, 0); if (end == argv[2] || *end == 0) { fprintf(stderr, "Can't parse pid %s\n", argv[2]); return -1; } } } LIBCFS_IOC_INIT(data); data.ioc_net = g_net; data.ioc_nid = nid; data.ioc_u32[0] = ip; data.ioc_u32[1] = pid; rc = l_ioctl(LNET_DEV_ID, IOC_LIBCFS_DEL_PEER, &data); if (rc != 0) { fprintf (stderr, "failed to remove peer: %s\n", strerror (errno)); return -1; } return 0;}intjt_ptl_print_connections (int argc, char **argv){ struct libcfs_ioctl_data data; lnet_process_id_t id; char buffer[2][64]; int index; int rc; if (!g_net_is_compatible (argv[0], SOCKLND, RALND, MXLND, OPENIBLND, CIBLND, IIBLND, VIBLND, O2IBLND, 0)) return -1; for (index = 0; ; index++) { LIBCFS_IOC_INIT(data); data.ioc_net = g_net; data.ioc_count = index; rc = l_ioctl(LNET_DEV_ID, IOC_LIBCFS_GET_CONN, &data); if (rc != 0) break; if (g_net_is_compatible (NULL, SOCKLND, 0)) { id.nid = data.ioc_nid; id.pid = data.ioc_u32[6]; printf ("%-20s %s[%d]%s->%s:%d %d/%d %s\n", libcfs_id2str(id), (data.ioc_u32[3] == SOCKLND_CONN_ANY) ? "A" : (data.ioc_u32[3] == SOCKLND_CONN_CONTROL) ? "C" : (data.ioc_u32[3] == SOCKLND_CONN_BULK_IN) ? "I" : (data.ioc_u32[3] == SOCKLND_CONN_BULK_OUT) ? "O" : "?", data.ioc_u32[4], /* scheduler */ ptl_ipaddr_2_str (data.ioc_u32[2], buffer[0], 1), /* local IP addr */ ptl_ipaddr_2_str (data.ioc_u32[0], buffer[1], 1), /* remote IP addr */ data.ioc_u32[1], /* remote port */ data.ioc_count, /* tx buffer size */ data.ioc_u32[5], /* rx buffer size */ data.ioc_flags ? "nagle" : "nonagle"); } else if (g_net_is_compatible (NULL, RALND, 0)) { printf ("%-20s [%d]\n", libcfs_nid2str(data.ioc_nid), data.ioc_u32[0] /* device id */); } else { printf ("%s\n", libcfs_nid2str(data.ioc_nid)); } } if (index == 0) { if (errno == ENOENT) { printf ("<no connections>\n"); } else { fprintf(stderr, "Error getting connection list: %s: " "check dmesg.\n", strerror(errno)); } } return 0;}int jt_ptl_disconnect(int argc, char **argv){ struct libcfs_ioctl_data data; lnet_nid_t nid = LNET_NID_ANY; __u32 ipaddr = 0; int rc; if (argc > 3) { fprintf(stderr, "usage: %s [nid] [ipaddr]\n", argv[0]); return 0; } if (!g_net_is_compatible (NULL, SOCKLND, RALND, MXLND, OPENIBLND, CIBLND, IIBLND, VIBLND, O2IBLND, 0)) return 0; if (argc >= 2 && !libcfs_str2anynid(&nid, argv[1])) { fprintf (stderr, "Can't parse nid %s\n", argv[1]); return -1; } if (g_net_is_compatible (NULL, SOCKLND, 0) && argc >= 3 &&
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?