From 55606d4bf4a065a6148ac8844f92eb5ee0740840 Mon Sep 17 00:00:00 2001 From: Vincent Bernat Date: Wed, 19 Oct 2011 23:49:00 +0200 Subject: [PATCH] lldpd: Only grab DMI information once. --- CHANGELOG | 1 + src/lldpd.c | 22 ++++++++++------------ 2 files changed, 11 insertions(+), 12 deletions(-) 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 -- 2.39.5