From bd2dc6141b59d8fe67e7765b5dfce5b819ed7e33 Mon Sep 17 00:00:00 2001 From: Sander Vrijders Date: Thu, 3 Mar 2016 14:09:57 +0100 Subject: tools: irm: Provide all IRM calls This commit makes all IRM calls available to the user of the 'irm' tool. The bootstrap_ipcp call does not yet take the anything except the AP name. This will be added once we stabilize what should be configurable in the IPCP. --- src/tools/irm/irm_register_ipcp.c | 56 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 54 insertions(+), 2 deletions(-) (limited to 'src/tools/irm/irm_register_ipcp.c') diff --git a/src/tools/irm/irm_register_ipcp.c b/src/tools/irm/irm_register_ipcp.c index f271afc4..c69ad350 100644 --- a/src/tools/irm/irm_register_ipcp.c +++ b/src/tools/irm/irm_register_ipcp.c @@ -21,12 +21,64 @@ */ #include +#include +#include +#include +#include +#include #include "irm_ops.h" +#include "irm_utils.h" + +#define MAX_DIFS 128 + +static void usage() +{ + printf("Usage: irm register_ipcp\n" + " ap \n" + " [api ]\n" + " [ae ]\n" + " dif \n" + " [dif ]\n" + " [... (maximum %d difs)]\n", MAX_DIFS); +} + int do_register_ipcp(int argc, char ** argv) { - printf("Nothing here in %s\n", __FUNCTION__); + rina_name_t name; + char * difs[MAX_DIFS]; + size_t difs_size = 0; + + name.ap_name = NULL; + name.api_id = 0; + name.ae_name = ""; + name.aei_id = 0; + + while (argc > 0) { + if (!parse_name(argv, &name)) { + if (matches(*argv, "dif") == 0) { + difs[difs_size++] = *(argv + 1); + if (difs_size > MAX_DIFS) { + printf("Too many difs specified\n"); + return -1; + } + } else { + printf("\"%s\" is unknown, try \"irm " + "register_ipcp\".\n", *argv); + return -1; + } + } + + argc -= 2; + argv += 2; + } + + if (difs_size == 0 || name.ap_name == NULL) { + usage(); + return -1; + } - return -1; + return irm_reg_ipcp(name, difs, difs_size); } -- cgit v1.2.3