diff options
| author | Dimitri Staessens <dimitri.staessens@intec.ugent.be> | 2016-03-03 17:29:28 +0100 | 
|---|---|---|
| committer | Dimitri Staessens <dimitri.staessens@intec.ugent.be> | 2016-03-03 17:29:28 +0100 | 
| commit | 0a58878e6c499e0757a11c842cc1d0ac6ffb4ab8 (patch) | |
| tree | a2a3d316c2d27eac93e64e60e934cab281d4ac4d /src | |
| parent | 71c93ca569034b1346dc625b6b22ecab83d5bcce (diff) | |
| parent | 6746face5a53d48853cb7f1ad0acc587920183b7 (diff) | |
| download | ouroboros-0a58878e6c499e0757a11c842cc1d0ac6ffb4ab8.tar.gz ouroboros-0a58878e6c499e0757a11c842cc1d0ac6ffb4ab8.zip | |
Merge branch 'be' of bitbucket.org:ouroboros-rina/ouroboros into be-common
Diffstat (limited to 'src')
| -rw-r--r-- | src/irmd/main.c | 11 | ||||
| -rw-r--r-- | src/lib/irm.c | 8 | ||||
| -rw-r--r-- | src/lib/sockets.c | 2 | ||||
| -rw-r--r-- | src/tools/irm/CMakeLists.txt | 9 | ||||
| -rw-r--r-- | src/tools/irm/irm.c | 84 | ||||
| -rw-r--r-- | src/tools/irm/irm_bootstrap_ipcp.c | 68 | ||||
| -rw-r--r-- | src/tools/irm/irm_create_ipcp.c | 74 | ||||
| -rw-r--r-- | src/tools/irm/irm_destroy_ipcp.c | 65 | ||||
| -rw-r--r-- | src/tools/irm/irm_enroll_ipcp.c | 71 | ||||
| -rw-r--r-- | src/tools/irm/irm_ops.h | 28 | ||||
| -rw-r--r-- | src/tools/irm/irm_register_ipcp.c | 84 | ||||
| -rw-r--r-- | src/tools/irm/irm_unregister_ipcp.c | 84 | ||||
| -rw-r--r-- | src/tools/irm/irm_utils.c | 58 | ||||
| -rw-r--r-- | src/tools/irm/irm_utils.h | 27 | ||||
| -rw-r--r-- | src/tools/irm/main.c | 73 | 
15 files changed, 660 insertions, 86 deletions
| diff --git a/src/irmd/main.c b/src/irmd/main.c index 73533ef0..0c69de2f 100644 --- a/src/irmd/main.c +++ b/src/irmd/main.c @@ -78,18 +78,12 @@ static void unreg_ipcp(rina_name_t * name,  int main()  {          int sockfd; -        uint8_t * buf; +        uint8_t buf[IRM_MSG_BUF_SIZE];          sockfd = server_socket_open(IRM_SOCK_PATH);          if (sockfd < 0)                  return -1; -        buf = malloc(sizeof(*buf) * IRM_MSG_BUF_SIZE); -        if (buf == NULL) { -                LOG_ERR("Cannot allocate memory"); -                return -ENOMEM; -        } -          while (true) {                  int cli_sockfd;                  struct irm_msg * msg; @@ -140,12 +134,11 @@ int main()                                  LOG_ERR("Don't know that message code");                                  break;                          } +                        free(msg);                  }                  close(cli_sockfd);          } -        free(buf); -          return 0;  } diff --git a/src/lib/irm.c b/src/lib/irm.c index 97000029..8756d7fc 100644 --- a/src/lib/irm.c +++ b/src/lib/irm.c @@ -26,6 +26,7 @@  #include <ouroboros/common.h>  #include <ouroboros/logs.h>  #include <ouroboros/sockets.h> +#include <stdlib.h>  static int send_irm_msg(struct irm_msg * msg)  { @@ -47,8 +48,11 @@ static int send_irm_msg(struct irm_msg * msg)                 return -1;         } -        close(sockfd); -        return 0; +       free(buf->data); +       free(buf); + +       close(sockfd); +       return 0;  }  int irm_create_ipcp(rina_name_t name, diff --git a/src/lib/sockets.c b/src/lib/sockets.c index c0331063..6cd70a8b 100644 --- a/src/lib/sockets.c +++ b/src/lib/sockets.c @@ -48,7 +48,7 @@ int client_socket_open(char * file_name)          if (connect(sockfd,                      (struct sockaddr *) &serv_addr,                      sizeof(serv_addr))) { -                LOG_ERR("Failed to connect to server"); +                LOG_ERR("Failed to connect to daemon");                  return -1;          } diff --git a/src/tools/irm/CMakeLists.txt b/src/tools/irm/CMakeLists.txt index 82c73e38..b0d2697b 100644 --- a/src/tools/irm/CMakeLists.txt +++ b/src/tools/irm/CMakeLists.txt @@ -6,7 +6,14 @@ include_directories(${CMAKE_BINARY_DIR}/include)  set(SOURCE_FILES          # Add source files here -        main.c +        irm.c +        irm_create_ipcp.c +        irm_destroy_ipcp.c +        irm_bootstrap_ipcp.c +        irm_enroll_ipcp.c +        irm_register_ipcp.c +        irm_unregister_ipcp.c +        irm_utils.c  )  add_executable (irm ${SOURCE_FILES}) diff --git a/src/tools/irm/irm.c b/src/tools/irm/irm.c new file mode 100644 index 00000000..0325c810 --- /dev/null +++ b/src/tools/irm/irm.c @@ -0,0 +1,84 @@ +/* + * Ouroboros - Copyright (C) 2016 + * + * A tool to instruct the IRM daemon + * + *    Sander Vrijders <sander.vrijders@intec.ugent.be> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include <ouroboros/common.h> +#include <ouroboros/irm.h> +#include <stdio.h> +#include <string.h> + +#include "irm_ops.h" +#include "irm_utils.h" + +static void usage() +{ +        printf("Usage: irm [OPERATION]\n\n" +               "where OPERATION = {create_ipcp destroy_ipcp \n" +               "                   bootstrap_ipcp enroll_ipcp\n" +               "                   register_ipcp unregister_ipcp\n"); +} + +static int do_help(int argc, char **argv) +{ +        usage(); +        return 0; +} + +static const struct cmd { +        const char * cmd; +        int (* func)(int argc, char ** argv); +} cmds[] = { +        { "create_ipcp",     do_create_ipcp }, +        { "destroy_ipcp",    do_destroy_ipcp }, +        { "bootstrap_ipcp",  do_bootstrap_ipcp }, +        { "enroll_ipcp",     do_enroll_ipcp }, +        { "register_ipcp",   do_register_ipcp }, +        { "unregister_ipcp", do_unregister_ipcp }, +        { "help",            do_help }, +        { 0 } +}; + +static int do_cmd(const char * argv0, +                  int argc, +                  char ** argv) +{ +        const struct cmd * c; + +        for (c = cmds; c->cmd; ++c) { +                if (matches(argv0, c->cmd) == 0) +                        return c->func(argc - 1, argv + 1); +        } + +        fprintf(stderr, "\"%s\" is unknown, try \"irm help\".\n", argv0); + +        return -1; +} + + +int main (int argc, char ** argv) { + +        if (argc < 2) { +                usage(); +                return 0; +        } + +        return do_cmd(argv[1], argc - 1, argv + 1); +} diff --git a/src/tools/irm/irm_bootstrap_ipcp.c b/src/tools/irm/irm_bootstrap_ipcp.c new file mode 100644 index 00000000..6b640c14 --- /dev/null +++ b/src/tools/irm/irm_bootstrap_ipcp.c @@ -0,0 +1,68 @@ +/* + * Ouroboros - Copyright (C) 2016 + * + * Bootstrap IPC Processes + * + *    Sander Vrijders <sander.vrijders@intec.ugent.be> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include <stdio.h> +#include <ouroboros/irm.h> +#include <ouroboros/common.h> + +#include "irm_ops.h" +#include "irm_utils.h" + +static void usage() +{ +        /* FIXME: Add dif_info stuff */ +        printf("Usage: irm bootstrap_ipcp\n" +               "           ap <application process name>\n" +               "           [api <application process instance>]\n" +               "           [ae <application entity name]\n" +               "           [aei <application entity instance>]\n"); +} + + +int do_bootstrap_ipcp(int argc, char ** argv) +{ +        rina_name_t name; +        struct dif_info info; + +        name.ap_name = NULL; +        name.api_id = 0; +        name.ae_name = ""; +        name.aei_id = 0; + +        while (argc > 0) { +                if (!parse_name(argv, &name)) { +                        printf("\"%s\" is unknown, try \"irm " +                               "enroll_ipcp\".\n", *argv); +                        return -1; +                } + +                argc -= 2; +                argv += 2; +        } + +        if (name.ap_name == NULL) { +                usage(); +                return -1; +        } + +        return irm_bootstrap_ipcp(name, info); +} diff --git a/src/tools/irm/irm_create_ipcp.c b/src/tools/irm/irm_create_ipcp.c new file mode 100644 index 00000000..5c847988 --- /dev/null +++ b/src/tools/irm/irm_create_ipcp.c @@ -0,0 +1,74 @@ +/* + * Ouroboros - Copyright (C) 2016 + * + * Create IPC Processes + * + *    Sander Vrijders <sander.vrijders@intec.ugent.be> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include <stdio.h> +#include <ouroboros/irm.h> +#include <ouroboros/common.h> +#include <stdlib.h> +#include <string.h> +#include <errno.h> + +#include "irm_ops.h" +#include "irm_utils.h" + +static void usage() +{ +        printf("Usage: irm create_ipcp\n" +               "           ap <application process name>\n" +               "           [api <application process instance>]\n" +               "           [ae <application entity name]\n" +               "           [aei <application entity instance>]\n" +               "           type <ipc process type>\n"); +} + +int do_create_ipcp(int argc, char ** argv) +{ +        rina_name_t name; +        char * ipcp_type = NULL; + +        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, "type") == 0) { +                                ipcp_type = *(argv + 1); +                        } else { +                                printf("\"%s\" is unknown, try \"irm " +                                       "create_ipcp\".\n", *argv); +                                return -1; +                        } +                } + +                argc -= 2; +                argv += 2; +        } + +        if (ipcp_type == NULL || name.ap_name == NULL) { +                usage(); +                return -1; +        } + +        return irm_create_ipcp(name, ipcp_type); +} diff --git a/src/tools/irm/irm_destroy_ipcp.c b/src/tools/irm/irm_destroy_ipcp.c new file mode 100644 index 00000000..467d1b50 --- /dev/null +++ b/src/tools/irm/irm_destroy_ipcp.c @@ -0,0 +1,65 @@ +/* + * Ouroboros - Copyright (C) 2016 + * + * Destroy IPC Processes + * + *    Sander Vrijders <sander.vrijders@intec.ugent.be> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include <stdio.h> +#include <ouroboros/irm.h> +#include <ouroboros/common.h> + +#include "irm_ops.h" +#include "irm_utils.h" + +static void usage() +{ +        printf("Usage: irm destroy_ipcp\n" +               "           ap <application process name>\n" +               "           [api <application process instance>]\n" +               "           [ae <application entity name]\n" +               "           [aei <application entity instance>]\n"); +} + +int do_destroy_ipcp(int argc, char ** argv) +{ +        rina_name_t name; + +        name.ap_name = NULL; +        name.api_id = 0; +        name.ae_name = ""; +        name.aei_id = 0; + +        while (argc > 0) { +                if (!parse_name(argv, &name)) { +                        printf("\"%s\" is unknown, try \"irm " +                               "destroy_ipcp\".\n", *argv); +                        return -1; +                } + +                argc -= 2; +                argv += 2; +        } + +        if (name.ap_name == NULL) { +                usage(); +                return -1; +        } + +        return irm_destroy_ipcp(name); +} diff --git a/src/tools/irm/irm_enroll_ipcp.c b/src/tools/irm/irm_enroll_ipcp.c new file mode 100644 index 00000000..94f28f82 --- /dev/null +++ b/src/tools/irm/irm_enroll_ipcp.c @@ -0,0 +1,71 @@ +/* + * Ouroboros - Copyright (C) 2016 + * + * Enroll IPC Processes + * + *    Sander Vrijders <sander.vrijders@intec.ugent.be> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include <stdio.h> +#include <ouroboros/irm.h> +#include <ouroboros/common.h> + +#include "irm_ops.h" +#include "irm_utils.h" + +static void usage() +{ +        printf("Usage: irm enroll_ipcp\n" +               "           ap <application process name>\n" +               "           [api <application process instance>]\n" +               "           [ae <application entity name]\n" +               "           [aei <application entity instance>]\n" +               "           dif <dif to enroll in>\n"); +} + +int do_enroll_ipcp(int argc, char ** argv) +{ +        rina_name_t name; +        char * dif_name = NULL; + +        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) { +                                dif_name = *(argv + 1); +                        } else { +                                printf("\"%s\" is unknown, try \"irm " +                                       "enroll_ipcp\".\n", *argv); +                                return -1; +                        } +                } + +                argc -= 2; +                argv += 2; +        } + +        if (dif_name == NULL || name.ap_name == NULL) { +                usage(); +                return -1; +        } + +        return irm_enroll_ipcp(name, dif_name); +} diff --git a/src/tools/irm/irm_ops.h b/src/tools/irm/irm_ops.h new file mode 100644 index 00000000..ff63b6bf --- /dev/null +++ b/src/tools/irm/irm_ops.h @@ -0,0 +1,28 @@ +/* + * Ouroboros - Copyright (C) 2016 + * + * Functions of the IRM tool that are one level deep + * + *    Sander Vrijders <sander.vrijders@intec.ugent.be> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +int do_create_ipcp(int argc, char ** argv); +int do_destroy_ipcp(int argc, char ** argv); +int do_bootstrap_ipcp(int argc, char ** argv); +int do_enroll_ipcp(int argc, char ** argv); +int do_register_ipcp(int argc, char ** argv); +int do_unregister_ipcp(int argc, char ** argv); diff --git a/src/tools/irm/irm_register_ipcp.c b/src/tools/irm/irm_register_ipcp.c new file mode 100644 index 00000000..c69ad350 --- /dev/null +++ b/src/tools/irm/irm_register_ipcp.c @@ -0,0 +1,84 @@ +/* + * Ouroboros - Copyright (C) 2016 + * + * Register IPC Processes in an N-1 DIF + * + *    Sander Vrijders <sander.vrijders@intec.ugent.be> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include <stdio.h> +#include <ouroboros/irm.h> +#include <ouroboros/common.h> +#include <stdlib.h> +#include <string.h> +#include <errno.h> + +#include "irm_ops.h" +#include "irm_utils.h" + +#define MAX_DIFS 128 + +static void usage() +{ +        printf("Usage: irm register_ipcp\n" +               "           ap <application process name>\n" +               "           [api <application process instance>]\n" +               "           [ae <application entity name]\n" +               "           [aei <application entity instance>]\n" +               "           dif <dif name to register with>\n" +               "           [dif <dif name to register with>]\n" +               "           [... (maximum %d difs)]\n", MAX_DIFS); +} + + +int do_register_ipcp(int argc, char ** argv) +{ +        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 irm_reg_ipcp(name, difs, difs_size); +} diff --git a/src/tools/irm/irm_unregister_ipcp.c b/src/tools/irm/irm_unregister_ipcp.c new file mode 100644 index 00000000..a2dffc6c --- /dev/null +++ b/src/tools/irm/irm_unregister_ipcp.c @@ -0,0 +1,84 @@ +/* + * Ouroboros - Copyright (C) 2016 + * + * Unregister IPC Processes in an N-1 DIF + * + *    Sander Vrijders <sander.vrijders@intec.ugent.be> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include <stdio.h> +#include <ouroboros/irm.h> +#include <ouroboros/common.h> +#include <stdlib.h> +#include <string.h> +#include <errno.h> + +#include "irm_ops.h" +#include "irm_utils.h" + +#define MAX_DIFS 128 + +static void usage() +{ +        printf("Usage: irm unregister_ipcp\n" +               "           ap <application process name>\n" +               "           [api <application process instance>]\n" +               "           [ae <application entity name]\n" +               "           [aei <application entity instance>]\n" +               "           dif <dif name to unregister from>\n" +               "           [dif <dif name to unregister from>]\n" +               "           [... (maximum %d difs)]\n", MAX_DIFS); +} + + +int do_unregister_ipcp(int argc, char ** argv) +{ +        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 " +                                       "unregister_ipcp\".\n", *argv); +                                return -1; +                        } +                } + +                argc -= 2; +                argv += 2; +        } + +        if (difs_size == 0 || name.ap_name == NULL) { +                usage(); +                return -1; +        } + +        return irm_unreg_ipcp(name, difs, difs_size); +} diff --git a/src/tools/irm/irm_utils.c b/src/tools/irm/irm_utils.c new file mode 100644 index 00000000..021227fd --- /dev/null +++ b/src/tools/irm/irm_utils.c @@ -0,0 +1,58 @@ +/* + * Ouroboros - Copyright (C) 2016 + * + * Handy helper functions for the IRM tool + * + *    Sander Vrijders <sander.vrijders@intec.ugent.be> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include <string.h> +#include <stdbool.h> +#include <stdlib.h> +#include <ouroboros/common.h> + +#include "irm_utils.h" + +int matches(const char * cmd, const char * pattern) +{ +        int len = strlen(cmd); + +        if (len > strlen(pattern)) +                return -1; + +        return memcmp(pattern, cmd, len); +} + + +bool parse_name(char ** argv, +                rina_name_t * name) +{ +        bool found = true; + +        if (matches(*argv, "ap") == 0) +                name->ap_name = *(argv + 1); +        else if (matches(*argv, "api") == 0) +                name->api_id = atoi(*(argv + 1)); +        else if (matches(*argv, "ae") == 0) +                name->ae_name = *(argv + 1); +        else if (matches(*argv, "aei") == 0) +                name->aei_id = atoi(*(argv + 1)); +        else +                found = false; + +        return found; +} diff --git a/src/tools/irm/irm_utils.h b/src/tools/irm/irm_utils.h new file mode 100644 index 00000000..9332b108 --- /dev/null +++ b/src/tools/irm/irm_utils.h @@ -0,0 +1,27 @@ +/* + * Ouroboros - Copyright (C) 2016 + * + * Handy helper functions for the IRM tool + * + *    Sander Vrijders <sander.vrijders@intec.ugent.be> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include <stdbool.h> + +int matches(const char * cmd, const char * pattern); + +bool parse_name(char ** argv, rina_name_t * name); diff --git a/src/tools/irm/main.c b/src/tools/irm/main.c deleted file mode 100644 index ac09e1e7..00000000 --- a/src/tools/irm/main.c +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Ouroboros - Copyright (C) 2016 - * - * A tool to instruct the IRM - * - *    Sander Vrijders <sander.vrijders@intec.ugent.be> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -#define OUROBOROS_PREFIX "irm" - -#include <ouroboros/logs.h> -#include <ouroboros/common.h> -#include <ouroboros/irm.h> - -int main () { -        char * ap_name = "test"; -        char * ipcp_type = "normal-ipcp"; -        rina_name_t name; -        name.ap_name = ap_name; -        name.api_id = 1; -        name.ae_name = ""; -        name.aei_id = 0; -        struct dif_info info; -        char * dif_name = "wienerschnitzel"; -        size_t difs_size = 1; - -        if (irm_create_ipcp(name, ipcp_type)) { -                LOG_ERR("Failed to create IPCP"); -                return -1; -        } - -        if (irm_destroy_ipcp(name)) { -                LOG_ERR("Failed to destroy IPCP"); -                return -1; -        } - -        if (irm_bootstrap_ipcp(name, info)) { -                LOG_ERR("Failed to bootstrap IPCP"); -                return -1; -        } - -        if (irm_enroll_ipcp(name, dif_name)) { -                LOG_ERR("Failed to enroll IPCP"); -                return -1; -        } - -        if (irm_reg_ipcp(name, &dif_name, difs_size)) { -                LOG_ERR("Failed to register IPCP"); -                return -1; -        } - -        if (irm_unreg_ipcp(name, &dif_name, difs_size)) { -                LOG_ERR("Failed to unregister IPCP"); -                return -1; -        } - - -        return 0; -} | 
