[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [OPW PATCH V3] tools: xl: refactor code to parse network device options
On Tue, Oct 21, 2014 at 05:19:35PM +0300, Alexandra Sandulescu wrote: > From: Alexandra Sandulescu <alexandra.sandulescu1@xxxxxxxx> > > This patch removes duplicate code in /tools/libxl/xl_cmdimpl.c by > adding parse_nic_config function. This function parses configuration > data and adds the information into libxl_device_nic struct. It is > called in both main_networkattach and parse_config_data functions > to replace duplicate code. > > Signed-off-by: Alexandra Sandulescu <alecsandra.sandulescu@xxxxxxxxx> > --- > tools/libxl/xl_cmdimpl.c | 188 > ++++++++++++++++++----------------------------- > 1 file changed, 71 insertions(+), 117 deletions(-) > > diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c > index ea43761..31a0dcb 100644 > --- a/tools/libxl/xl_cmdimpl.c > +++ b/tools/libxl/xl_cmdimpl.c > @@ -903,6 +903,74 @@ static void replace_string(char **str, const char *val) > *str = xstrdup(val); > } > > +/* for now used only by main_networkattach, but can be reused elsewhere */ > +static int match_option_size(const char *prefix, size_t len, > + char *arg, char **argopt) > +{ > + int rc = strncmp(prefix, arg, len); > + if (!rc) *argopt = arg+len; > + return !rc; > +} > +#define MATCH_OPTION(prefix, arg, oparg) \ > + match_option_size((prefix "="), sizeof((prefix)), (arg), &(oparg)) > + > +/* Parses network data and adds info into nic > + * Returns 1 if the input token does not match one of the keys > + * or parsed values are not correct. Successful parse returns 0 */ > +static int parse_nic_config(libxl_device_nic *nic, XLU_Config **config, char > *token) > +{ > + char *endptr, *oparg; > + int i; > + unsigned int val; > + > + if (MATCH_OPTION("type", token, oparg)) { > + if (!strcmp("vif", oparg)) { > + nic->nictype = LIBXL_NIC_TYPE_VIF; > + } else if (!strcmp("ioemu", oparg)) { > + nic->nictype = LIBXL_NIC_TYPE_VIF_IOEMU; > + } else { > + fprintf(stderr, "Invalid parameter `type'.\n"); > + return 1; > + } > + } else if (MATCH_OPTION("mac", token, oparg)) { > + for (i = 0; i < 6; i++){ Your '{' needs a space beforehand. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |