From: Vincent Bernat Date: Wed, 19 Oct 2011 21:49:00 +0000 (+0200) Subject: lldpd: Only grab DMI information once. X-Git-Tag: 0.5.5~6 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=55606d4bf4a065a6148ac8844f92eb5ee0740840;p=thirdparty%2Flldpd.git lldpd: Only grab DMI information once. --- diff --git a/CHANGELOG b/CHANGELOG index a5bc8ba7..6740478c 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -5,6 +5,7 @@ lldpd (0.5.5) + Key/value output was incorrect when a dot was present in interface names. This is fixed but it is preferable to use XML output since the parsing is more difficult in this case. + + Only grab DMI information once. lldpd (0.5.4) * Features: diff --git a/src/lldpd.c b/src/lldpd.c index 4d12b020..a846ca64 100644 --- a/src/lldpd.c +++ b/src/lldpd.c @@ -921,18 +921,16 @@ lldpd_send_all(struct lldpd *cfg) static void lldpd_med(struct lldpd_chassis *chassis) { - free(chassis->c_med_hw); - free(chassis->c_med_fw); - free(chassis->c_med_sn); - free(chassis->c_med_manuf); - free(chassis->c_med_model); - free(chassis->c_med_asset); - chassis->c_med_hw = dmi_hw(); - chassis->c_med_fw = dmi_fw(); - chassis->c_med_sn = dmi_sn(); - chassis->c_med_manuf = dmi_manuf(); - chassis->c_med_model = dmi_model(); - chassis->c_med_asset = dmi_asset(); + static short int once = 0; + if (!once) { + chassis->c_med_hw = dmi_hw(); + chassis->c_med_fw = dmi_fw(); + chassis->c_med_sn = dmi_sn(); + chassis->c_med_manuf = dmi_manuf(); + chassis->c_med_model = dmi_model(); + chassis->c_med_asset = dmi_asset(); + once = 1; + } } #endif