]> git.ipfire.org Git - thirdparty/lldpd.git/commitdiff
lldpd: Only grab DMI information once.
authorVincent Bernat <bernat@luffy.cx>
Wed, 19 Oct 2011 21:49:00 +0000 (23:49 +0200)
committerVincent Bernat <bernat@luffy.cx>
Wed, 19 Oct 2011 21:49:00 +0000 (23:49 +0200)
CHANGELOG
src/lldpd.c

index a5bc8ba7f298946f199b04b8cb75e098c0cdafed..6740478c3af17a60e802f98b41e292f5e9fe6a70 100644 (file)
--- 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:
index 4d12b020b7d5851b8f56fc80cf93f9f3c2332785..a846ca64f0b1b378ea78d94fa236969b2c6b0a19 100644 (file)
@@ -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