unsigned int libcfs_debug;
unsigned int libcfs_printk = D_CANTMASK;
-static int g_net_set;
+static bool g_net_interactive;
+static bool g_net_set;
static __u32 g_net;
#define IOC_BUF_SIZE 8192
return 0;
}
-int g_net_is_set (char *cmd)
+static int g_net_is_set(char *cmd)
{
- if (g_net_set)
- return 1;
+ if (g_net_set)
+ return 1;
- if (cmd != NULL)
- fprintf(stderr,
- "You must run the 'network' command before '%s'.\n",
- cmd);
- return 0;
+ if (cmd != NULL) {
+ char *net;
+
+ if (g_net_interactive)
+ net = "network";
+ else
+ net = "--net";
+
+ fprintf(stderr,
+ "You must run '%s <network>' command before '%s'\n",
+ cmd, net);
+ return 0;
+ }
+
+ return 0;
}
-int g_net_is_compatible (char *cmd, ...)
+static int g_net_is_compatible(char *cmd, ...)
{
- va_list ap;
- int nal;
+ va_list ap;
+ int nal;
- if (!g_net_is_set(cmd))
- return 0;
+ if (!g_net_is_set(cmd))
+ return 0;
- va_start(ap, cmd);
+ va_start(ap, cmd);
- do {
- nal = va_arg (ap, int);
+ do {
+ nal = va_arg(ap, int);
if (nal == LNET_NETTYP(g_net)) {
va_end (ap);
return 1;
"Command %s not compatible with %s NAL\n",
cmd,
libcfs_lnd2str(LNET_NETTYP(g_net)));
+
return 0;
}
int ptl_initialize(int argc, char **argv)
{
+ if (argc > 1)
+ g_net_interactive = true;
+
register_ioc_dev(LNET_DEV_ID, LNET_DEV_PATH,
LNET_DEV_MAJOR, LNET_DEV_MINOR);
return 0;
int jt_ptl_network(int argc, char **argv)
{
- struct libcfs_ioctl_data data;
- __u32 net = LNET_NIDNET(LNET_NID_ANY);
- int rc;
+ struct libcfs_ioctl_data data;
+ __u32 net = LNET_NIDNET(LNET_NID_ANY);
+ int rc;
- if (argc < 2) {
- fprintf(stderr, "usage: %s <net>|up|down\n", argv[0]);
- return 0;
- }
-
- if (!strcmp(argv[1], "unconfigure") ||
- !strcmp(argv[1], "down")) {
- LIBCFS_IOC_INIT(data);
- rc = l_ioctl(LNET_DEV_ID, IOC_LIBCFS_UNCONFIGURE, &data);
+ if (argc != 2) {
+ fprintf(stderr, "usage: %s <net>|up|down\n", argv[0]);
+ return -1;
+ }
- if (rc == 0) {
- printf ("LNET ready to unload\n");
- return 0;
- }
+ if (!strcmp(argv[1], "unconfigure") || !strcmp(argv[1], "down")) {
+ LIBCFS_IOC_INIT(data);
+ rc = l_ioctl(LNET_DEV_ID, IOC_LIBCFS_UNCONFIGURE, &data);
- if (errno == EBUSY)
- fprintf(stderr, "LNET busy\n");
- else
- fprintf(stderr, "LNET unconfigure error %d: %s\n",
- errno, strerror(errno));
- return -1;
- }
+ if (rc == 0) {
+ printf("LNET ready to unload\n");
+ return 0;
+ }
- if (!strcmp(argv[1], "configure") ||
- !strcmp(argv[1], "up")) {
- LIBCFS_IOC_INIT(data);
- rc = l_ioctl(LNET_DEV_ID, IOC_LIBCFS_CONFIGURE, &data);
+ if (errno == EBUSY)
+ fprintf(stderr, "LNET busy\n");
+ else
+ fprintf(stderr, "LNET unconfigure error %d: %s\n",
+ errno, strerror(errno));
+ return -1;
+ } else if (!strcmp(argv[1], "configure") || !strcmp(argv[1], "up")) {
+ LIBCFS_IOC_INIT(data);
+ rc = l_ioctl(LNET_DEV_ID, IOC_LIBCFS_CONFIGURE, &data);
- if (rc == 0) {
- printf ("LNET configured\n");
- return 0;
- }
+ if (rc == 0) {
+ printf("LNET configured\n");
+ return 0;
+ }
- fprintf(stderr, "LNET configure error %d: %s\n",
- errno, strerror(errno));
- return -1;
- }
+ fprintf(stderr, "LNET configure error %d: %s\n",
+ errno, strerror(errno));
+ return -1;
+ }
- net = libcfs_str2net(argv[1]);
- if (net == LNET_NIDNET(LNET_NID_ANY)) {
- fprintf(stderr, "Can't parse net %s\n", argv[1]);
- return -1;
- }
+ net = libcfs_str2net(argv[1]);
+ if (net == LNET_NIDNET(LNET_NID_ANY)) {
+ fprintf(stderr, "Can't parse net %s\n", argv[1]);
+ return -1;
+ }
- if (LNET_NETTYP(net) == CIBLND ||
- LNET_NETTYP(net) == OPENIBLND ||
- LNET_NETTYP(net) == IIBLND ||
- LNET_NETTYP(net) == VIBLND) {
- fprintf(stderr, "Net %s obsoleted\n", libcfs_lnd2str(net));
- return -1;
- }
+ if (LNET_NETTYP(net) == QSWLND || LNET_NETTYP(net) == GMLND ||
+ LNET_NETTYP(net) == PTLLND || LNET_NETTYP(net) == CIBLND ||
+ LNET_NETTYP(net) == OPENIBLND || LNET_NETTYP(net) == IIBLND ||
+ LNET_NETTYP(net) == RALND || LNET_NETTYP(net) == VIBLND ||
+ LNET_NETTYP(net) == MXLND) {
+ fprintf(stderr, "Net %s obsoleted\n", libcfs_lnd2str(net));
+ return -1;
+ }
- g_net_set = 1;
- g_net = net;
- return 0;
+ g_net_set = true;
+ g_net = net;
+ return 0;
}
int
return 0;
}
-int
-jt_ptl_add_peer (int argc, char **argv)
+int jt_ptl_add_peer(int argc, char **argv)
{
- struct libcfs_ioctl_data data;
- lnet_nid_t nid;
- __u32 ip = 0;
- int port = 0;
- int rc;
+ 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, GNILND, 0))
- return -1;
+ return -1;
- if (argc != 4) {
- fprintf (stderr, "usage(tcp,ra,gni): %s nid ipaddr port\n",
- argv[0]);
- return 0;
- }
+ if (argc != 4) {
+ fprintf(stderr, "usage(tcp,gni): %s nid ipaddr port\n",
+ argv[0]);
+ return 0;
+ }
nid = libcfs_str2nid(argv[1]);
if (nid == LNET_NID_ANY) {
/* Network configuration commands */
{"===== network config =====", jt_noop, 0, "network config"},
- {"--net", jt_opt_net, 0,"run <command> after setting network to <net>\n"
- "usage: --net <tcp/elan/o2ib/...> <command>"},
- {"network", jt_ptl_network, 0, "configure LNET"
- "usage: network up|down"},
- {"net", jt_ptl_network, 0, "configure LNET"
- "usage: net up|down"},
- {"list_nids", jt_ptl_list_nids, 0, "list local NIDs"
- "usage: list_nids [all]"},
- {"which_nid", jt_ptl_which_nid, 0, "choose a NID"
- "usage: which_nid NID [NID...]"},
+ {"--net", jt_opt_net, 0, "run <command> after selecting network <net>\n"
+ "usage: --net <tcp/o2ib/...> <command>"},
+ {"network", jt_ptl_network, 0, "configure LNET"
+ "usage: network up|down"},
+ {"net", jt_ptl_network, 0, "configure LNET"
+ "usage: net up|down"},
+ {"list_nids", jt_ptl_list_nids, 0, "list local NIDs"
+ "usage: list_nids [all]"},
+ {"which_nid", jt_ptl_which_nid, 0, "choose a NID"
+ "usage: which_nid NID [NID...]"},
{"replace_nids", jt_replace_nids, 0,
"replace primary NIDs for a device\n"
"usage: replace_nids <device> <nid1>[,nid2,nid3]"},
- {"interface_list", jt_ptl_print_interfaces,0,"print interface entries\n"
- "usage: interface_list"},
- {"peer_list", jt_ptl_print_peers, 0, "print peer entries\n"
- "usage: peer_list"},
- {"conn_list", jt_ptl_print_connections, 0,
- "print all the connected remote nid\n"
- "usage: conn_list"},
- {"route_list", jt_ptl_print_routes, 0,
- "print the portals routing table, same as show_route\n"
- "usage: route_list"},
- {"show_route", jt_ptl_print_routes, 0,
- "print the portals routing table, same as route_list\n"
- "usage: show_route"},
- {"ping", jt_ptl_ping, 0, "Check LNET connectivity\n"
- "usage: ping nid [timeout] [pid]"},
+ {"interface_list", jt_ptl_print_interfaces, 0,
+ "print network interface entries\n"
+ "usage: interface_list"},
+ {"peer_list", jt_ptl_print_peers, 0, "print peer LNet NIDs\n"
+ "usage: peer_list"},
+ {"conn_list", jt_ptl_print_connections, 0,
+ "print all the remote LNet connections\n"
+ "usage: conn_list"},
+ {"route_list", jt_ptl_print_routes, 0,
+ "print the LNet routing table, same as show_route\n"
+ "usage: route_list"},
+ {"show_route", jt_ptl_print_routes, 0,
+ "print the LNet routing table, same as route_list\n"
+ "usage: show_route"},
+ {"ping", jt_ptl_ping, 0, "Check LNET connectivity\n"
+ "usage: ping nid [timeout] [pid]"},
{"net_drop_add", jt_ptl_drop_add, 0, "Add LNet drop rule\n"
"usage: net_drop_add <-s | --source NID>\n"
" <-d | --dest NID>\n"
"usage: nodemap_del <nodemap_name>"},
{"nodemap_add_range", jt_nodemap_add_range, 0,
"add a range to a nodemap\n"
- "usage: nodemap_add_range <NID range>"},
+ "usage: nodemap_add_range <nid_range>"},
{"nodemap_del_range", jt_nodemap_del_range, 0,
"add a range to a nodemap\n"
- "usage: nodemap_del_range <NID range>"},
+ "usage: nodemap_del_range <nid_range>"},
{"nodemap_modify", jt_nodemap_modify, 0,
"modify a nodemap parameters"
"usage: nodemap_modify nodemap_name param value"},
"disable writes to the underlying device\n"},
{"notransno", jt_obd_no_transno, 0,
"disable sending of committed-transno updates\n"},
- {"add_uuid", jt_lcfg_add_uuid, 0, "associate a UUID with a nid\n"
- "usage: add_uuid <uuid> <nid>"},
- {"del_uuid", jt_lcfg_del_uuid, 0, "delete a UUID association\n"
- "usage: del_uuid <uuid>"},
- {"add_peer", jt_ptl_add_peer, 0, "add an peer entry\n"
- "usage: add_peer <nid> <host> <port>"},
- {"del_peer", jt_ptl_del_peer, 0, "remove an peer entry\n"
- "usage: del_peer [<nid>] [<ipaddr|pid>]"},
- {"add_conn ", jt_lcfg_add_conn, 0,
- "usage: add_conn <conn_uuid> [priority]\n"},
- {"del_conn ", jt_lcfg_del_conn, 0,
- "usage: del_conn <conn_uuid> \n"},
- {"disconnect", jt_ptl_disconnect, 0, "disconnect from a remote nid\n"
- "usage: disconnect [<nid>]"},
- {"push", jt_ptl_push_connection, 0, "flush connection to a remote nid\n"
- "usage: push [<nid>]"},
- {"mynid", jt_ptl_mynid, 0, "inform the socknal of the local nid. "
- "The nid defaults to hostname for tcp networks and is automatically "
- "setup for elan/myrinet networks.\n"
- "usage: mynid [<nid>]"},
- {"fail", jt_ptl_fail_nid, 0, "fail/restore communications.\n"
- "Omitting the count means indefinitely, 0 means restore, "
- "otherwise fail 'count' messages.\n"
- "usage: fail nid|_all_ [count]"},
+ {"add_uuid", jt_lcfg_add_uuid, 0, "associate a UUID with a NID\n"
+ "usage: add_uuid <uuid> <nid>"},
+ {"del_uuid", jt_lcfg_del_uuid, 0, "delete a UUID association\n"
+ "usage: del_uuid <uuid>"},
+ {"add_peer", jt_ptl_add_peer, 0, "add an peer entry\n"
+ "usage: add_peer <nid> <host> <port>"},
+ {"del_peer", jt_ptl_del_peer, 0, "remove an peer entry\n"
+ "usage: del_peer [<nid>] [<ipaddr|pid>]"},
+ {"add_conn ", jt_lcfg_add_conn, 0,
+ "usage: add_conn <conn_uuid> [priority]\n"},
+ {"del_conn ", jt_lcfg_del_conn, 0,
+ "usage: del_conn <conn_uuid>"},
+ {"disconnect", jt_ptl_disconnect, 0, "disconnect from a remote NID\n"
+ "usage: disconnect [<nid>]"},
+ {"push", jt_ptl_push_connection, 0, "flush connection to a remote NID\n"
+ "usage: push [<nid>]"},
+ {"mynid", jt_ptl_mynid, 0, "inform the LND of the local NID. "
+ "The NID defaults to hostname for TCP networks.\n"
+ "usage: mynid [<nid>]"},
+ {"fail", jt_ptl_fail_nid, 0, "fail/restore network communications\n"
+ "Omitting the count means indefinitely, 0 means restore, "
+ "otherwise fail 'count' messages.\n"
+ "usage: fail nid|_all_ [count]"},
/*Test commands for echo client*/
{"test_create", jt_obd_test_create, 0,
{"del_interface", jt_ptl_del_interface, 0, "del interface entry\n"
"usage: del_interface [ip]"},
{"add_route", jt_ptl_add_route, 0,
- "add an entry to the portals routing table\n"
+ "add an entry to the LNet routing table\n"
"usage: add_route <gateway> [<hops> [<priority>]]"},
{"del_route", jt_ptl_del_route, 0,
- "delete route via gateway to targets from the portals routing table\n"
+ "delete route via gateway to targets from the LNet routing table\n"
"usage: del_route <gateway> [<target>] [<target>]"},
{"set_route", jt_ptl_notify_router, 0,
- "enable/disable routes via gateway in the portals routing table\n"
+ "enable/disable routes via gateway in the LNet routing table\n"
"usage: set_route <gateway> <up/down> [<time>]"},
{ 0, 0, 0, NULL }
setlinebuf(stdout);
- ptl_initialize(argc, argv);
+ if (ptl_initialize(argc, argv) < 0)
+ exit(1);
if (obd_initialize(argc, argv) < 0)
exit(2);
if (dbg_initialize(argc, argv) < 0)