]> git.ipfire.org Git - people/amarx/ipfire-3.x.git/blobdiff - lldpd/patches/lldpd-0.52.x-os-release.patch
lldpd: Update to 0.5.4.
[people/amarx/ipfire-3.x.git] / lldpd / patches / lldpd-0.52.x-os-release.patch
diff --git a/lldpd/patches/lldpd-0.52.x-os-release.patch b/lldpd/patches/lldpd-0.52.x-os-release.patch
deleted file mode 100644 (file)
index 3d45fee..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-commit ae87586a12eaf4e8329b88f6e0c629e7b14f27bc
-Author: Michael Tremer <michael.tremer@ipfire.org>
-Date:   Sat May 28 14:29:33 2011 +0200
-
-    Add support to read /etc/os-release for system information.
-    
-    /etc/os-release is introduced with systemd which will be in all the
-    major distributions, soon. For backwards-compatibility, the lsb_release
-    method is still there and will be used if no /etc/os-release is available.
-
-diff --git a/src/lldpd.c b/src/lldpd.c
-index b19af11..1641f13 100644
---- a/src/lldpd.c
-+++ b/src/lldpd.c
-@@ -89,6 +89,7 @@ static void           lldpd_decode(struct lldpd *, char *, int,
- static void            lldpd_update_chassis(struct lldpd_chassis *,
-                           const struct lldpd_chassis *);
- static char           *lldpd_get_lsb_release(void);
-+static char           *lldpd_get_os_release(void);
- #ifdef ENABLE_LLDPMED
- static void            lldpd_med(struct lldpd_chassis *);
- #endif
-@@ -553,6 +554,46 @@ lldpd_get_lsb_release() {
-       return NULL;
- }
-+/* Same like lldpd_get_lsb_release but reads /etc/os-release for PRETTY_NAME=. */
-+static char *
-+lldpd_get_os_release() {
-+      static char release[1024];
-+
-+      FILE *fp = fopen("/etc/os-release", "r");
-+      if (!fp) {
-+              LLOG_WARN("Could not open /etc/os-release to read system information");
-+              return NULL;
-+      }
-+
-+      char line[1024];
-+      char *key, *val;
-+
-+      while ((fgets(line, 1024, fp) != NULL)) {
-+              key = strtok(line, "=");
-+              val = strtok(NULL, "=");
-+
-+              if (strncmp(key, "PRETTY_NAME", 1024) == 0) {
-+                      strncpy(release, val, 1024);
-+                      break;
-+              }
-+      }
-+      fclose(fp);
-+
-+      /* Remove trailing newline and all " in the string. */
-+      char *ptr1 = release;
-+      char *ptr2 = release;
-+      while (*ptr1 != 0) {
-+              if ((*ptr1 == '"') || (*ptr1 == '\n')) {
-+                      ++ptr1;
-+              } else {
-+                      *ptr2++ = *ptr1++;
-+              }
-+      }
-+      *ptr2 = 0;
-+
-+      return release;
-+}
-+
- int
- lldpd_callback_add(struct lldpd *cfg, int fd, void(*fn)(CALLBACK_SIG), void *data)
- {
-@@ -889,7 +930,7 @@ lldpd_update_localchassis(struct lldpd *cfg)
-                       fatal("failed to set full system description");
-         } else {
-               if (cfg->g_advertise_version) {
--                      if (asprintf(&LOCAL_CHASSIS(cfg)->c_descr, "%s%s %s %s",
-+                      if (asprintf(&LOCAL_CHASSIS(cfg)->c_descr, "%s %s %s %s",
-                               cfg->g_lsb_release?cfg->g_lsb_release:"",
-                               un.sysname, un.release, un.machine)
-                                 == -1)
-@@ -1189,7 +1230,12 @@ lldpd_main(int argc, char *argv[])
-               close(pid);
-       }
--      lsb_release = lldpd_get_lsb_release();
-+      /* Try to read system information from /etc/os-release if possible.
-+         Fall back to lsb_release for compatibility. */
-+      lsb_release = lldpd_get_os_release();
-+      if (!lsb_release) {
-+              lsb_release = lldpd_get_lsb_release();
-+      }
-       priv_init(PRIVSEP_CHROOT);