From 6ad0fcf2f32f412091d0dfd58da1d8f5dc474809 Mon Sep 17 00:00:00 2001 From: Sander Vrijders Date: Fri, 8 Apr 2016 16:32:35 +0200 Subject: lib, irmd, irm: Add dif_config This adds dif_config to the prototype, in which one is able to specify the parameters a DIF should have. The bootstrap operation of an IPCP takes this as parameter and is oblivious to whether it is a shim or a normal IPCP. The dif_config struct is also correctly serialized and deserialized and passed opaquely to the correct IPCP. This IPCP is in charge of deserializing it correctly. --- src/tools/irm/irm_bootstrap_ipcp.c | 4 +--- src/tools/irm/irm_create_ipcp.c | 21 ++++++++++++++++++--- 2 files changed, 19 insertions(+), 6 deletions(-) (limited to 'src/tools') diff --git a/src/tools/irm/irm_bootstrap_ipcp.c b/src/tools/irm/irm_bootstrap_ipcp.c index 03a913fb..e7acfccd 100644 --- a/src/tools/irm/irm_bootstrap_ipcp.c +++ b/src/tools/irm/irm_bootstrap_ipcp.c @@ -23,7 +23,7 @@ #include #include #include -#include +#include #include "irm_ops.h" #include "irm_utils.h" @@ -36,7 +36,6 @@ static void usage() " [api ]\n"); } - int do_bootstrap_ipcp(int argc, char ** argv) { instance_name_t api = {NULL, 0}; @@ -53,7 +52,6 @@ int do_bootstrap_ipcp(int argc, char ** argv) return -1; } - argc -= 2; argv += 2; } diff --git a/src/tools/irm/irm_create_ipcp.c b/src/tools/irm/irm_create_ipcp.c index 73d20dce..e4a0f22f 100644 --- a/src/tools/irm/irm_create_ipcp.c +++ b/src/tools/irm/irm_create_ipcp.c @@ -20,10 +20,11 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -#include #include #include #include + +#include #include #include #include @@ -31,18 +32,23 @@ #include "irm_ops.h" #include "irm_utils.h" +#define NORMAL "normal" +#define SHIM_UDP "shim-udp" + static void usage() { printf("Usage: irm create_ipcp\n" " ap \n" " [api ]\n" - " type \n"); + " type [TYPE]\n\n" + "where TYPE = {" NORMAL " " SHIM_UDP "}\n"); } int do_create_ipcp(int argc, char ** argv) { char * ipcp_type = NULL; instance_name_t api = {NULL, 0}; + enum ipcp_type type = 0; while (argc > 0) { if (matches(*argv, "type") == 0) { @@ -66,5 +72,14 @@ int do_create_ipcp(int argc, char ** argv) return -1; } - return irm_create_ipcp(&api, ipcp_type); + if (strcmp(ipcp_type, NORMAL) == 0) + type = NORMAL_IPCP; + else if (strcmp(ipcp_type, SHIM_UDP) == 0) + type = SHIM_UDP_IPCP; + else { + usage(); + return -1; + } + + return irm_create_ipcp(&api, type); } -- cgit v1.2.3