summaryrefslogtreecommitdiff
path: root/sys/compat/linux
diff options
context:
space:
mode:
authorAnton Berezin <tobez@FreeBSD.org>2004-03-23 12:16:48 +0000
committerAnton Berezin <tobez@FreeBSD.org>2004-03-23 12:16:48 +0000
commit70d92a380218cddf9a8f55db76931fc63a586c09 (patch)
tree211d1ac4ddf8fd41ee12d67241a17ba5d9b14f7e /sys/compat/linux
parentcadec8d42eac963d957397d3c584ca8c7031bbd7 (diff)
Notes
Diffstat (limited to 'sys/compat/linux')
-rw-r--r--sys/compat/linux/linux_misc.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/sys/compat/linux/linux_misc.c b/sys/compat/linux/linux_misc.c
index 758d882a001d..b5b2a4b96f0e 100644
--- a/sys/compat/linux/linux_misc.c
+++ b/sys/compat/linux/linux_misc.c
@@ -686,6 +686,8 @@ linux_newuname(struct proc *p, struct linux_newuname_args *args)
{
struct l_new_utsname utsname;
char *osrelease, *osname;
+ int name[2];
+ int error, plen, olen;
#ifdef DEBUG
if (ldebug(newuname))
@@ -697,7 +699,14 @@ linux_newuname(struct proc *p, struct linux_newuname_args *args)
bzero(&utsname, sizeof(utsname));
strncpy(utsname.sysname, osname, LINUX_MAX_UTSNAME-1);
- strncpy(utsname.nodename, hostname, LINUX_MAX_UTSNAME-1);
+
+ name[0] = CTL_KERN;
+ name[1] = KERN_HOSTNAME;
+ olen = LINUX_MAX_UTSNAME-1;
+ error = kernel_sysctl(p, name, 2, utsname.nodename, &olen, NULL, 0, &plen);
+ if (error)
+ strncpy(utsname.nodename, hostname, LINUX_MAX_UTSNAME-1);
+
strncpy(utsname.release, osrelease, LINUX_MAX_UTSNAME-1);
strncpy(utsname.version, version, LINUX_MAX_UTSNAME-1);
strncpy(utsname.machine, machine, LINUX_MAX_UTSNAME-1);