]>
git.ipfire.org Git - thirdparty/lldpd.git/blob - src/daemon/dmi.c
1 /* -*- mode: c; c-file-style: "openbsd" -*- */
3 * Copyright (c) 2009 Vincent Bernat <bernat@luffy.cx>
5 * Permission to use, copy, modify, and/or distribute this software for any
6 * purpose with or without fee is hereby granted, provided that the above
7 * copyright notice and this permission notice appear in all copies.
9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
18 #define INCLUDE_LINUX_IF_H
23 /* Fill in inventory stuff:
24 - hardware version: /sys/class/dmi/id/product_version
25 - firmware version: /sys/class/dmi/id/bios_version
26 - software version: `uname -r`
27 - serial number: /sys/class/dmi/id/product_serial
28 - manufacturer: /sys/class/dmi/id/sys_vendor
29 - model: /sys/class/dmi/id/product_name
30 - asset: /sys/class/dmi/id/chassis_asset_tag
33 #if __i386__ || __amd64__
40 if ((dmi
= priv_open(file
)) < 0) {
41 LLOG_DEBUG("cannot get DMI file %s", file
);
44 memset(buffer
, 0, sizeof(buffer
));
45 if ((s
= read(dmi
, buffer
, sizeof(buffer
))) == -1) {
46 LLOG_DEBUG("cannot read DMI file %s", file
);
51 buffer
[sizeof(buffer
) - 1] = '\0';
52 if ((s
> 0) && (buffer
[s
-1] == '\n'))
55 return strdup(buffer
);
62 return dmi_get(SYSFS_CLASS_DMI
"product_version");
68 return dmi_get(SYSFS_CLASS_DMI
"bios_version");
74 return dmi_get(SYSFS_CLASS_DMI
"product_serial");
80 return dmi_get(SYSFS_CLASS_DMI
"sys_vendor");
86 return dmi_get(SYSFS_CLASS_DMI
"product_name");
92 return dmi_get(SYSFS_CLASS_DMI
"chassis_asset_tag");