static int n = 10;
static meshlink_handle_t **mesh;
+static int nodeindex = 0;
+
static meshlink_node_t **nodes;
static size_t nnodes;
return false;
}
- if(!devtool_export_json_all_edges_state(mesh[0], stream))
+ if(!devtool_export_json_all_edges_state(mesh[nodeindex], stream))
{
fclose(stream);
fprintf(stderr, "could not export graph\n");
return;
}
- invitation = meshlink_invite(mesh[0], arg);
+ invitation = meshlink_invite(mesh[nodeindex], arg);
if(!invitation) {
fprintf(stderr, "Could not invite '%s': %s\n", arg, meshlink_strerror(meshlink_errno));
return;
fprintf(stderr, "/join requires an argument!\n");
return;
}
- meshlink_stop(mesh[0]);
- if(!meshlink_join(mesh[0], arg))
+ meshlink_stop(mesh[nodeindex]);
+ if(!meshlink_join(mesh[nodeindex], arg))
fprintf(stderr, "Could not join using invitation: %s\n", meshlink_strerror(meshlink_errno));
else {
fprintf(stderr, "Invitation accepted!\n");
- meshlink_start(mesh[0]);
+ meshlink_start(mesh[nodeindex]);
}
} else if(!strcasecmp(buf, "kick")) {
if(!arg) {
return;
}
- meshlink_node_t *node = meshlink_get_node(mesh[0], arg);
+ meshlink_node_t *node = meshlink_get_node(mesh[nodeindex], arg);
if(!node) {
fprintf(stderr, "Unknown node '%s'\n", arg);
return;
}
- meshlink_blacklist(mesh[0], node);
+ meshlink_blacklist(mesh[nodeindex], node);
printf("Node '%s' blacklisted.\n", arg);
} else if(!strcasecmp(buf, "who")) {
if(!arg) {
- nodes = meshlink_get_all_nodes(mesh[0], nodes, &nnodes);
+ nodes = meshlink_get_all_nodes(mesh[nodeindex], nodes, &nnodes);
if(!nodes) {
fprintf(stderr, "Could not get list of nodes: %s\n", meshlink_strerror(meshlink_errno));
} else {
printf("\n");
}
} else {
- meshlink_node_t *node = meshlink_get_node(mesh[0], arg);
+ meshlink_node_t *node = meshlink_get_node(mesh[nodeindex], arg);
if(!node) {
fprintf(stderr, "Unknown node '%s'\n", arg);
} else {
- printf("Node %s found, pmtu %zd\n", arg, meshlink_get_pmtu(mesh[0], node));
+ printf("Node %s found, pmtu %zd\n", arg, meshlink_get_pmtu(mesh[nodeindex], node));
}
}
} else if(!strcasecmp(buf, "link")) {
exportmeshgraph_end(NULL);
} else if(!strcasecmp(buf, "test")) {
testmesh();
+ } else if(!strcasecmp(buf, "select")) {
+ if(!arg) {
+ fprintf(stderr, "/select requires an argument!\n");
+ return;
+ }
+ nodeindex = atoi(arg);
+ printf("Index is now %d\n",nodeindex);
+
} else if(!strcasecmp(buf, "quit")) {
printf("Bye!\n");
fclose(stdin);
"/link Link all nodes together.\n"
"/eg <path> Export graph as json file.\n"
"/test Test functionality sending some data to all nodes\n"
+ "/select <number> Select the active node running the user commands\n"
"/quit Exit this program.\n"
);
} else {
if(*msg == ' ')
msg++;
- destination = meshlink_get_node(mesh[0], buf);
+ destination = meshlink_get_node(mesh[nodeindex], buf);
if(!destination) {
fprintf(stderr, "Unknown node '%s'\n", buf);
return;
return;
}
- if(!meshlink_send(mesh[0], destination, msg, strlen(msg) + 1)) {
+ if(!meshlink_send(mesh[nodeindex], destination, msg, strlen(msg) + 1)) {
fprintf(stderr, "Could not send message to '%s': %s\n", destination->name, meshlink_strerror(meshlink_errno));
return;
}