diff options
| author | dimitri staessens <dimitri.staessens@ugent.be> | 2017-08-28 20:10:22 +0000 | 
|---|---|---|
| committer | Sander Vrijders <sander.vrijders@ugent.be> | 2017-08-28 20:10:22 +0000 | 
| commit | e8875c08ac04a1d9aca342d94d4f788239334f72 (patch) | |
| tree | 4a96be10ea1b9f3d03bb2fd10f3f2e403c1dd934 /src/tools/irm | |
| parent | c3185b9a6e471b534a370b2d913425962af88654 (diff) | |
| parent | 999b5dec615ce4cfb30ee909bdd16e79a5e2a1ce (diff) | |
| download | ouroboros-e8875c08ac04a1d9aca342d94d4f788239334f72.tar.gz ouroboros-e8875c08ac04a1d9aca342d94d4f788239334f72.zip | |
Merged in dstaesse/ouroboros/be-deprecate-gam (pull request #572)
Be deprecate gam
Diffstat (limited to 'src/tools/irm')
| -rw-r--r-- | src/tools/irm/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | src/tools/irm/irm_ipcp.c | 18 | ||||
| -rw-r--r-- | src/tools/irm/irm_ipcp_bootstrap.c | 25 | ||||
| -rw-r--r-- | src/tools/irm/irm_ipcp_connect.c | 94 | ||||
| -rw-r--r-- | src/tools/irm/irm_ipcp_disconnect.c | 94 | ||||
| -rw-r--r-- | src/tools/irm/irm_ops.h | 6 | 
6 files changed, 207 insertions, 32 deletions
| diff --git a/src/tools/irm/CMakeLists.txt b/src/tools/irm/CMakeLists.txt index 300ad982..895bc746 100644 --- a/src/tools/irm/CMakeLists.txt +++ b/src/tools/irm/CMakeLists.txt @@ -14,6 +14,8 @@ set(SOURCE_FILES    irm_ipcp_destroy.c    irm_ipcp_bootstrap.c    irm_ipcp_enroll.c +  irm_ipcp_connect.c +  irm_ipcp_disconnect.c    irm_unbind_ap.c    irm_unbind_api.c    irm_unbind_ipcp.c diff --git a/src/tools/irm/irm_ipcp.c b/src/tools/irm/irm_ipcp.c index 2850ac89..2f7b01c9 100644 --- a/src/tools/irm/irm_ipcp.c +++ b/src/tools/irm/irm_ipcp.c @@ -45,17 +45,19 @@ static const struct cmd {          const char * cmd;          int (* func)(int argc, char ** argv);  } cmds[] = { -        { "create",    do_create_ipcp }, -        { "destroy",   do_destroy_ipcp }, -        { "bootstrap", do_bootstrap_ipcp }, -        { "enroll",    do_enroll_ipcp }, -        { "help",      do_help }, -        { NULL,        NULL } +        { "create",     do_create_ipcp }, +        { "destroy",    do_destroy_ipcp }, +        { "bootstrap",  do_bootstrap_ipcp }, +        { "enroll",     do_enroll_ipcp }, +        { "connect",    do_connect_ipcp }, +        { "disconnect", do_disconnect_ipcp }, +        { "help",       do_help }, +        { NULL,         NULL }  };  static int do_cmd(const char * argv0, -                  int argc, -                  char ** argv) +                  int          argc, +                  char **      argv)  {          const struct cmd * c; diff --git a/src/tools/irm/irm_ipcp_bootstrap.c b/src/tools/irm/irm_ipcp_bootstrap.c index 264fbfd5..a4a4d326 100644 --- a/src/tools/irm/irm_ipcp_bootstrap.c +++ b/src/tools/irm/irm_ipcp_bootstrap.c @@ -48,13 +48,9 @@  #define DEFAULT_FD_SIZE    2  #define DEFAULT_DDNS       0  #define DEFAULT_ADDR_AUTH  FLAT_RANDOM -#define DEFAULT_DT_GAM     COMPLETE -#define DEFAULT_RM_GAM     COMPLETE  #define DEFAULT_ROUTING    LINK_STATE  #define DEFAULT_HASH_ALGO  DIR_HASH_SHA3_256  #define ADDR_AUTH_FLAT     "flat" -#define DT_GAM_COMPLETE    "complete" -#define RM_GAM_COMPLETE    "complete"  #define ROUTING_LINK_STATE "link_state"  static void usage(void) @@ -71,10 +67,6 @@ static void usage(void)                 "                [fd <fd size> (default: %d)]\n"                 "                [ttl (add time to live value in the PCI)]\n"                 "                [addr_auth <address policy> (default: %s)]\n" -               "                [dt_gam <data transfer graph adjacency manager>" -               " (default: %s)]\n" -               "                [rm_gam <rib manager graph adjacency manager>" -               " (default: %s)]\n"                 "                [routing <routing policy> (default: %s)]\n"                 "                [hash [ALGORITHM] (default: %s)]\n"                 "where ALGORITHM = {" SHA3_224 " " SHA3_256 " " @@ -86,8 +78,7 @@ static void usage(void)                 "if TYPE == " SHIM_ETH_LLC "\n"                 "                if_name <interface name>\n",                 DEFAULT_ADDR_SIZE, DEFAULT_FD_SIZE, -               ADDR_AUTH_FLAT, DT_GAM_COMPLETE, RM_GAM_COMPLETE, -               ROUTING_LINK_STATE, SHA3_256); +               ADDR_AUTH_FLAT, ROUTING_LINK_STATE, SHA3_256);  }  int do_bootstrap_ipcp(int argc, char ** argv) @@ -99,8 +90,6 @@ int do_bootstrap_ipcp(int argc, char ** argv)          uint8_t            fd_size        = DEFAULT_FD_SIZE;          bool               has_ttl        = false;          enum pol_addr_auth addr_auth_type = DEFAULT_ADDR_AUTH; -        enum pol_gam       dt_gam_type    = DEFAULT_DT_GAM; -        enum pol_gam       rm_gam_type    = DEFAULT_RM_GAM;          enum pol_routing   routing_type   = DEFAULT_ROUTING;          enum pol_dir_hash  hash_algo      = DEFAULT_HASH_ALGO;          uint32_t           ip_addr        = 0; @@ -151,16 +140,6 @@ int do_bootstrap_ipcp(int argc, char ** argv)                                  addr_auth_type = FLAT_RANDOM;                          else                                  goto unknown_param; -                } else if (matches(*argv, "dt_gam") == 0) { -                        if (strcmp(DT_GAM_COMPLETE, *(argv + 1)) == 0) -                                dt_gam_type = COMPLETE; -                        else -                                goto unknown_param; -                } else if (matches(*argv, "rm_gam") == 0) { -                        if (strcmp(RM_GAM_COMPLETE, *(argv + 1)) == 0) -                                rm_gam_type = COMPLETE; -                        else -                                goto unknown_param;                  } else if (matches(*argv, "routing") == 0) {                          if (strcmp(ROUTING_LINK_STATE, *(argv + 1)) == 0)                                  routing_type = LINK_STATE; @@ -188,8 +167,6 @@ int do_bootstrap_ipcp(int argc, char ** argv)                  conf.fd_size = fd_size;                  conf.has_ttl = has_ttl;                  conf.addr_auth_type = addr_auth_type; -                conf.dt_gam_type = dt_gam_type; -                conf.rm_gam_type = rm_gam_type;                  conf.routing_type = routing_type;                  conf.dif_info.dir_hash_algo = hash_algo;          } else if (strcmp(ipcp_type, SHIM_UDP) == 0) { diff --git a/src/tools/irm/irm_ipcp_connect.c b/src/tools/irm/irm_ipcp_connect.c new file mode 100644 index 00000000..168c8d17 --- /dev/null +++ b/src/tools/irm/irm_ipcp_connect.c @@ -0,0 +1,94 @@ +/* + * Ouroboros - Copyright (C) 2016 - 2017 + * + * Connect components of normal IPC Processes + * + *    Dimitri Staessens <dimitri.staessens@ugent.be> + *    Sander Vrijders   <sander.vrijders@ugent.be> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * 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., http://www.fsf.org/about/contact/. + */ + +#include <ouroboros/irm.h> + +#include "irm_ops.h" +#include "irm_utils.h" + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#define DT      "dt" +#define MGMT    "mgmt" + +static void usage(void) +{ +        printf("Usage: irm ipcp connect\n" +               "                name <ipcp name>\n" +               "                comp <COMPONENT>\n" +               "                dst  <name of destination IPCP>\n" +               "where COMPONENT = {" DT " " MGMT "},\n\n"); +} + +int do_connect_ipcp(int     argc, +                    char ** argv) +{ +        char *  name      = NULL; +        char *  dst_name  = NULL; +        char *  comp_name = NULL; +        pid_t * apis      = NULL; +        ssize_t len       = 0; + +        while (argc > 0) { +                if (strcmp(*argv, "name") == 0) { +                        name = *(argv + 1); +                } else if (matches(*argv, "dst") == 0) { +                        dst_name = *(argv + 1); +                } else if (matches(*argv, "comp") == 0) { +                        comp_name = *(argv + 1); +                } else { +                        printf("\"%s\" is unknown, try \"irm " +                               "ipcpi connect\".\n", *argv); +                        return -1; +                } + +                argc -= 2; +                argv += 2; +        } + +        if (name == NULL || dst_name == NULL || comp_name == NULL) { +                usage(); +                return -1; +        } + +        len = irm_list_ipcps(name, &apis); +        if (len != 1) +                return -1; + +        if (!strcmp(comp_name, DT)) +                comp_name = DT_AE; + +        if (!strcmp(comp_name , MGMT)) +                comp_name = MGMT_AE; + +        if (irm_connect_ipcp(apis[0], dst_name, comp_name)) { +                free(apis); +                return -1; +        } + +        if (apis != NULL) +                free(apis); + +        return 0; +} diff --git a/src/tools/irm/irm_ipcp_disconnect.c b/src/tools/irm/irm_ipcp_disconnect.c new file mode 100644 index 00000000..8f83f3e8 --- /dev/null +++ b/src/tools/irm/irm_ipcp_disconnect.c @@ -0,0 +1,94 @@ +/* + * Ouroboros - Copyright (C) 2016 - 2017 + * + * Connect components of normal IPC Processes + * + *    Dimitri Staessens <dimitri.staessens@ugent.be> + *    Sander Vrijders   <sander.vrijders@ugent.be> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * 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., http://www.fsf.org/about/contact/. + */ + +#include <ouroboros/irm.h> + +#include "irm_ops.h" +#include "irm_utils.h" + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#define DT      "dt" +#define MGMT    "mgmt" + +static void usage(void) +{ +        printf("Usage: irm ipcp disconnect\n" +               "                name <ipcp name>\n" +               "                comp <COMPONENT>\n" +               "                dst  <name of destination IPCP>\n" +               "where COMPONENT = {" DT " " MGMT "},\n\n"); +} + +int do_disconnect_ipcp(int     argc, +                       char ** argv) +{ +        char *  name      = NULL; +        char *  dst_name  = NULL; +        char *  comp_name = NULL; +        pid_t * apis      = NULL; +        ssize_t len       = 0; + +        while (argc > 0) { +                if (strcmp(*argv, "name") == 0) { +                        name = *(argv + 1); +                } else if (matches(*argv, "dst") == 0) { +                        dst_name = *(argv + 1); +                } else if (matches(*argv, "comp") == 0) { +                        comp_name = *(argv + 1); +                } else { +                        printf("\"%s\" is unknown, try \"irm " +                               "ipcpi connect\".\n", *argv); +                        return -1; +                } + +                argc -= 2; +                argv += 2; +        } + +        if (name == NULL || dst_name == NULL || comp_name == NULL) { +                usage(); +                return -1; +        } + +        len = irm_list_ipcps(name, &apis); +        if (len != 1) +                return -1; + +        if (!strcmp(comp_name, DT)) +                comp_name = DT_AE; + +        if (!strcmp(comp_name , MGMT)) +                comp_name = MGMT_AE; + +        if (irm_disconnect_ipcp(apis[0], dst_name, comp_name)) { +                free(apis); +                return -1; +        } + +        if (apis != NULL) +                free(apis); + +        return 0; +} diff --git a/src/tools/irm/irm_ops.h b/src/tools/irm/irm_ops.h index 749ea13d..a2bc40b4 100644 --- a/src/tools/irm/irm_ops.h +++ b/src/tools/irm/irm_ops.h @@ -35,6 +35,12 @@ int do_bootstrap_ipcp(int     argc,  int do_enroll_ipcp(int     argc,                     char ** argv); +int do_connect_ipcp(int     argc, +                    char ** argv); + +int do_disconnect_ipcp(int     argc, +                       char ** argv); +  int bind_cmd(int     argc,               char ** argv); | 
