aboutsummaryrefslogtreecommitdiff
path: root/lib/libspl/os/linux/gethostid.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libspl/os/linux/gethostid.c')
-rw-r--r--lib/libspl/os/linux/gethostid.c84
1 files changed, 0 insertions, 84 deletions
diff --git a/lib/libspl/os/linux/gethostid.c b/lib/libspl/os/linux/gethostid.c
deleted file mode 100644
index d39f3dda3b8d..000000000000
--- a/lib/libspl/os/linux/gethostid.c
+++ /dev/null
@@ -1,84 +0,0 @@
-// SPDX-License-Identifier: CDDL-1.0
-/*
- * CDDL HEADER START
- *
- * The contents of this file are subject to the terms of the
- * Common Development and Distribution License (the "License").
- * You may not use this file except in compliance with the License.
- *
- * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
- * or https://opensource.org/licenses/CDDL-1.0.
- * See the License for the specific language governing permissions
- * and limitations under the License.
- *
- * When distributing Covered Code, include this CDDL HEADER in each
- * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
- * If applicable, add the following below this CDDL HEADER, with the
- * fields enclosed by brackets "[]" replaced with your own identifying
- * information: Portions Copyright [yyyy] [name of copyright owner]
- *
- * CDDL HEADER END
- */
-/*
- * Copyright (c) 2017, Lawrence Livermore National Security, LLC.
- */
-
-#include <fcntl.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <sys/systeminfo.h>
-
-static unsigned long
-get_spl_hostid(void)
-{
- FILE *f;
- unsigned long hostid;
- char *env;
-
- /*
- * Allow the hostid to be subverted for testing.
- */
- env = getenv("ZFS_HOSTID");
- if (env)
- return (strtoull(env, NULL, 0));
-
- f = fopen("/proc/sys/kernel/spl/hostid", "re");
- if (!f)
- return (0);
-
- if (fscanf(f, "%lx", &hostid) != 1)
- hostid = 0;
-
- fclose(f);
-
- return (hostid);
-}
-
-unsigned long
-get_system_hostid(void)
-{
- unsigned long hostid = get_spl_hostid();
- uint32_t system_hostid;
-
- /*
- * We do not use gethostid(3) because it can return a bogus ID,
- * depending on the libc and /etc/hostid presence,
- * and the kernel and userspace must agree.
- * See comments above hostid_read() in the SPL.
- */
- if (hostid == 0) {
- int fd = open("/etc/hostid", O_RDONLY | O_CLOEXEC);
- if (fd >= 0) {
- if (read(fd, &system_hostid, sizeof (system_hostid))
- != sizeof (system_hostid))
- hostid = 0;
- else
- hostid = system_hostid;
- (void) close(fd);
- }
- }
-
- return (hostid & HOSTID_MASK);
-}