LVS
lvs-devel
Google
 
Web LinuxVirtualServer.org

Re: [PATCH] Sloppy TCP, SH rebalancing, SHP scheduling

To: Alexander Frolkin <avf@xxxxxxxxxxxxxx>
Subject: Re: [PATCH] Sloppy TCP, SH rebalancing, SHP scheduling
Cc: lvs-devel@xxxxxxxxxxxxxxx
From: Julian Anastasov <ja@xxxxxx>
Date: Mon, 17 Jun 2013 22:48:39 +0300 (EEST)
        Hello,

On Mon, 17 Jun 2013, Alexander Frolkin wrote:

>  /* check the options based on the commands_v_options table */
>  static void generic_opt_check(int command, int options);
> @@ -363,7 +366,7 @@ parse_options(int argc, char **argv, struct 
> ipvs_command_entry *ce,
>  {
>       int c, parse;
>       poptContext context;
> -     char *optarg=NULL;
> +     char *optarg=NULL, sched_flags_arg[128];
>       struct poptOption options_table[] = {
>               { "add-service", 'A', POPT_ARG_NONE, NULL, 'A', NULL, NULL },
>               { "edit-service", 'E', POPT_ARG_NONE, NULL, 'E', NULL, NULL },
> @@ -426,9 +429,12 @@ parse_options(int argc, char **argv, struct 
> ipvs_command_entry *ce,
>               { "ops", 'o', POPT_ARG_NONE, NULL, 'o', NULL, NULL },
>               { "pe", '\0', POPT_ARG_STRING, &optarg, TAG_PERSISTENCE_ENGINE,
>                 NULL, NULL },
> +             { "sched-flags", 'b', POPT_ARG_STRING, &optarg, 'b', NULL, NULL 
> },
>               { NULL, 0, 0, NULL, 0, NULL, NULL }
>       };
>  
> +     sched_flags_arg[0] = '\0';
> +
>       context = poptGetContext("ipvsadm", argc, (const char **)argv,
>                                options_table, 0);
>  
> @@ -656,6 +662,10 @@ parse_options(int argc, char **argv, struct 
> ipvs_command_entry *ce,
>                       set_option(options, OPT_PERSISTENCE_ENGINE);
>                       strncpy(ce->svc.pe_name, optarg, IP_VS_PENAME_MAXLEN);
>                       break;
> +             case 'b':
> +                     set_option(options, OPT_SCHED_FLAGS);
> +                     strncpy(sched_flags_arg, optarg, 
> sizeof(sched_flags_arg));

        Such strncpy calls are not very safe, they should be
strncpy(dest, src, space - 1); dest[space - 1] = 0;

        Better to use
        snprintf(sched_flags_arg, sizeof(sched_flags_arg), "%s", optarg);

> +                     break;

> +static unsigned int parse_sched_flags(const char *sched, char *optarg)
> +{
> +     unsigned int flags = 0;
> +     char *flag;
> +     const char *scheduler = (sched && *sched) ? sched : DEF_SCHED;

        We can reuse 'sched' here, no need for 'scheduler':

        sched = (sched && *sched) ? sched : DEF_SCHED;

Regards

--
Julian Anastasov <ja@xxxxxx>
--
To unsubscribe from this list: send the line "unsubscribe lvs-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

<Prev in Thread] Current Thread [Next in Thread>