diff options
Diffstat (limited to 'hicn-light/src/hicn/config/controlAddPolicy.c')
-rw-r--r-- | hicn-light/src/hicn/config/controlAddPolicy.c | 56 |
1 files changed, 32 insertions, 24 deletions
diff --git a/hicn-light/src/hicn/config/controlAddPolicy.c b/hicn-light/src/hicn/config/controlAddPolicy.c index 29120446b..8618c6246 100644 --- a/hicn-light/src/hicn/config/controlAddPolicy.c +++ b/hicn-light/src/hicn/config/controlAddPolicy.c @@ -35,10 +35,14 @@ #include <hicn/utils/token.h> static CommandReturn _controlAddPolicy_Execute(CommandParser *parser, - CommandOps *ops, PARCList *args); + CommandOps *ops, PARCList *args, + char *output, + size_t output_size); static CommandReturn _controlAddPolicy_HelpExecute(CommandParser *parser, CommandOps *ops, - PARCList *args); + PARCList *args, + char *output, + size_t output_size); static const char *_commandAddPolicy = "add policy"; static const char *_commandAddPolicyHelp = "help add policy"; @@ -57,32 +61,36 @@ CommandOps *controlAddPolicy_HelpCreate(ControlState *state) { static CommandReturn _controlAddPolicy_HelpExecute(CommandParser *parser, CommandOps *ops, - PARCList *args) { - printf("commands:\n"); - printf(" add policy <prefix> <app_name>" - #define _(x, y) " FLAG:%s" - foreach_policy_tag - #undef _ - "%s", - #define _(x, y) policy_tag_str[POLICY_TAG_ ## x], - foreach_policy_tag - #undef _ - "\n"); - printf("\n"); - printf( - " prefix: The hicn name as IPv4 or IPv6 address (e.g 1234::0/64)\n"); - printf(" app_name: The application name associated to this policy\n"); - printf(" FLAG:*: A value among [neutral|require|prefer|avoid|prohibit] with an optional '!' character prefix for disabling changes\n"); + PARCList *args, + char *output, + size_t output_size) { + size_t output_offset = snprintf(output, output_size, "commands:\n" + " add policy <prefix> <app_name>"); + + #define _(x, y) output_offset += snprintf(output + output_offset, output_size - output_offset, " FLAG:%s", policy_tag_str[POLICY_TAG_ ## x]); + foreach_policy_tag + #undef _ + + output_offset += snprintf(output + output_offset, output_size - output_offset,"\n"); printf("\n"); + output_offset += snprintf(output + output_offset, output_size - output_offset, + " prefix: The hicn name as IPv4 or IPv6 address (e.g 1234::0/64)\n" + " app_name: The application name associated to this policy\n" + " FLAG:*: A value among [neutral|require|prefer|avoid|prohibit] with an optional '!' character prefix for disabling changes\n" + "\n"); + return CommandReturn_Success; } static CommandReturn _controlAddPolicy_Execute(CommandParser *parser, - CommandOps *ops, PARCList *args) { + CommandOps *ops, + PARCList *args, + char *output, + size_t output_size) { ControlState *state = ops->closure; if (parcList_Size(args) != 11) { - _controlAddPolicy_HelpExecute(parser, ops, args); + _controlAddPolicy_HelpExecute(parser, ops, args, output, output_size); return CommandReturn_Failure; } @@ -106,7 +114,7 @@ static CommandReturn _controlAddPolicy_Execute(CommandParser *parser, // check and set IP address if (inet_pton(AF_INET, addr, &addPolicyCommand->address.v4.as_u32) == 1) { if (len > 32) { - printf("ERROR: exceeded INET mask length, max=32\n"); + snprintf(output, output_size, "ERROR: exceeded INET mask length, max=32\n"); parcMemory_Deallocate(&addPolicyCommand); free(addr); return CommandReturn_Failure; @@ -114,14 +122,14 @@ static CommandReturn _controlAddPolicy_Execute(CommandParser *parser, addPolicyCommand->addressType = ADDR_INET; } else if (inet_pton(AF_INET6, addr, &addPolicyCommand->address.v6.as_in6addr) == 1) { if (len > 128) { - printf("ERROR: exceeded INET6 mask length, max=128\n"); + snprintf(output, output_size, "ERROR: exceeded INET6 mask length, max=128\n"); parcMemory_Deallocate(&addPolicyCommand); free(addr); return CommandReturn_Failure; } addPolicyCommand->addressType = ADDR_INET6; } else { - printf("Error: %s is not a valid network address \n", addr); + snprintf(output, output_size, "Error: %s is not a valid network address \n", addr); parcMemory_Deallocate(&addPolicyCommand); free(addr); return CommandReturn_Failure; @@ -148,7 +156,7 @@ static CommandReturn _controlAddPolicy_Execute(CommandParser *parser, } else if (strcmp(&tag[tag_state.disabled], "prohibit") == 0) { tag_state.state = POLICY_STATE_PROHIBIT; } else { - printf("ERROR: invalid tag value '%s'\n", tag); + snprintf(output, output_size, "ERROR: invalid tag value '%s'\n", tag); parcMemory_Deallocate(&addPolicyCommand); free(addr); return CommandReturn_Failure; |