On Tue, Apr 09, 2013 at 06:40:34PM +0800, Wenchao Xia wrote: > Hi, John > Sorry to interrupt but still need you to review this patch, which > make it work more flex on different version. > By the way, I got only 3 fail and they seems small problems in test > suit's code, do you think it is ready to release 0.6.2(with this patch > pushed)?
didn't we want to have the testsuite patches pushed too before the release ? Daniel > > In RH6.4 lldptool query command and output changed a bit, > > to make it work on different version, the string used in search and > > options used in lldptool command should be set in configuration file. > > > > Signed-off-by: Wenchao Xia <[email protected]> > > --- > > libvirt-cim.conf | 12 ++++++++++++ > > libxkutil/misc_util.c | 27 +++++++++++++++++++++++++++ > > libxkutil/misc_util.h | 4 +++- > > src/Virt_SwitchService.c | 31 ++++++++++++++++++++++++------- > > 4 files changed, 66 insertions(+), 8 deletions(-) > > > > diff --git a/libvirt-cim.conf b/libvirt-cim.conf > > index 37d7b0f..40fc94a 100644 > > --- a/libvirt-cim.conf > > +++ b/libvirt-cim.conf > > @@ -30,3 +30,15 @@ > > # Default value: NULL, that is not set. > > # > > # migrate_ssh_temp_key = "/root/vm_migrate_tmp_id_rsa"; > > + > > +# lldptool_query_options (string) > > +# Defines the command used in SwitchService to query VEPA support, will be > > +# used as "lldptool -i [INTERFACE] [OPTIONS]" > > +# > > +# lldptool_query_options = "-t -g ncb -V evbcfg"; > > + > > +# vsi_search_string (string) > > +# Defines the string used in SwitchService to search in lldptool's output > > +# > > +# vsi_search_string0 = "supported forwarding mode: (0x40) reflective > > relay"; > > +# vsi_search_string1 = "supported capabilities: (0x7) RTE ECP VDP"; > > diff --git a/libxkutil/misc_util.c b/libxkutil/misc_util.c > > index 00eb4b1..1a9a1b4 100644 > > --- a/libxkutil/misc_util.c > > +++ b/libxkutil/misc_util.c > > @@ -236,6 +236,33 @@ const char *get_mig_ssh_tmp_key(void) > > return prop.value_string; > > } > > > > +const char *get_lldptool_query_options(void) > > +{ > > + static LibvirtcimConfigProperty prop = { > > + "lldptool_query_options", CONFIG_STRING, {0}, 0}; > > + > > + libvirt_cim_config_get(&prop); > > + return prop.value_string; > > +} > > + > > +const char *get_vsi_search_string0(void) > > +{ > > + static LibvirtcimConfigProperty prop = { > > + "vsi_search_string0", CONFIG_STRING, {0}, 0}; > > + > > + libvirt_cim_config_get(&prop); > > + return prop.value_string; > > +} > > + > > +const char *get_vsi_search_string1(void) > > +{ > > + static LibvirtcimConfigProperty prop = { > > + "vsi_search_string1", CONFIG_STRING, {0}, 0}; > > + > > + libvirt_cim_config_get(&prop); > > + return prop.value_string; > > +} > > + > > virConnectPtr connect_by_classname(const CMPIBroker *broker, > > const char *classname, > > CMPIStatus *s) > > diff --git a/libxkutil/misc_util.h b/libxkutil/misc_util.h > > index 0f52290..06a37cc 100644 > > --- a/libxkutil/misc_util.h > > +++ b/libxkutil/misc_util.h > > @@ -154,7 +154,9 @@ int virt_set_status(const CMPIBroker *broker, > > > > /* get libvirt-cim config */ > > const char *get_mig_ssh_tmp_key(void); > > - > > +const char *get_lldptool_query_options(void); > > +const char *get_vsi_search_string0(void); > > +const char *get_vsi_search_string1(void); > > /* > > * Local Variables: > > * mode: C > > diff --git a/src/Virt_SwitchService.c b/src/Virt_SwitchService.c > > index 8991426..103f125 100644 > > --- a/src/Virt_SwitchService.c > > +++ b/src/Virt_SwitchService.c > > @@ -46,13 +46,24 @@ static CMPIStatus check_vsi_support(char *command) > > CMPIStatus s = {CMPI_RC_OK, NULL}; > > char buff[MAX_LEN]; > > FILE *stream = NULL; > > - const char *searchStr[] = {" supported forwarding mode: " > > - "(0x40) reflective relay", > > - " supported capabilities: " > > - "(0x07) RTE ECP VDP", > > - NULL}; > > + const char *string0 = get_vsi_search_string0(); > > + const char *string1 = get_vsi_search_string1(); > > + const char *searchStr[3]; > > int matched = 0; > > > > + if (!string0) { > > + string0 = " supported forwarding mode: " > > + "(0x40) reflective relay"; > > + } > > + if (!string1) { > > + string1 = " supported capabilities: " > > + "(0x7) RTE ECP VDP"; > > + } > > + CU_DEBUG("vsi searching for string [%s] [%s]", string0, string1); > > + searchStr[0] = string0; > > + searchStr[1] = string1; > > + searchStr[2] = NULL; > > + > > // Run lldptool command to find vsi support. > > stream = popen(command, "r"); > > if (stream == NULL) { > > @@ -214,6 +225,7 @@ static CMPIStatus get_switchservice(const > > CMPIObjectPath *reference, > > int i; > > char **if_list; > > char cmd[MAX_LEN]; > > + const char *lldptool_query_options = NULL; > > > > *_inst = NULL; > > conn = connect_by_classname(broker, CLASSNAME(reference), &s); > > @@ -257,10 +269,15 @@ static CMPIStatus get_switchservice(const > > CMPIObjectPath *reference, > > > > CU_DEBUG("Found %d interfaces", count); > > > > + lldptool_query_options = get_lldptool_query_options(); > > + if (!lldptool_query_options) { > > + lldptool_query_options = "-t -g ncb -V evbcfg"; > > + } > > > > for (i=0; i<count; i++) { > > - sprintf(cmd, "lldptool -i %s -t -V evbcfg", if_list[i]); > > - CU_DEBUG("running command %s ...", cmd); > > + sprintf(cmd, "lldptool -i %s %s", > > + if_list[i], lldptool_query_options); > > + CU_DEBUG("running command [%s]", cmd); > > s = check_vsi_support(cmd); > > if (s.rc == CMPI_RC_OK) { > > vsi = true; > > > > > -- > Best Regards > > Wenchao Xia -- Daniel Veillard | Open Source and Standards, Red Hat [email protected] | libxml Gnome XML XSLT toolkit http://xmlsoft.org/ http://veillard.com/ | virtualization library http://libvirt.org/ _______________________________________________ Libvirt-cim mailing list [email protected] https://www.redhat.com/mailman/listinfo/libvirt-cim
