You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
71 lines
1.4 KiB
71 lines
1.4 KiB
7 months ago
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||
|
/*
|
||
|
* Copyright (c) 2019 Petr Vorel <petr.vorel@gmail.com>
|
||
|
*/
|
||
|
|
||
|
#ifndef SETDOMAINNAME_H__
|
||
|
#define SETDOMAINNAME_H__
|
||
|
|
||
|
#include <string.h>
|
||
|
#include "lapi/utsname.h"
|
||
|
#include "lapi/syscalls.h"
|
||
|
#include "tst_test.h"
|
||
|
|
||
|
#define TST_VALID_DOMAIN_NAME "test_dom"
|
||
|
|
||
|
#ifdef TEST_SETHOSTNAME
|
||
|
# define GET_SYSCALL gethostname
|
||
|
# define SET_SYSCALL sethostname
|
||
|
# define SYSCALL_NAME "hostname"
|
||
|
# define SYSCALL_NR __NR_sethostname
|
||
|
#else
|
||
|
# define GET_SYSCALL getdomainname
|
||
|
# define SET_SYSCALL setdomainname
|
||
|
# define SYSCALL_NAME "domainname"
|
||
|
# define SYSCALL_NR __NR_setdomainname
|
||
|
#endif
|
||
|
|
||
|
static char backup[_UTSNAME_DOMAIN_LENGTH];
|
||
|
|
||
|
#define TEST_VARIANTS 2
|
||
|
|
||
|
static void setdomainname_info(void)
|
||
|
{
|
||
|
switch (tst_variant) {
|
||
|
case 0:
|
||
|
tst_res(TINFO, "Testing libc set" SYSCALL_NAME "()");
|
||
|
break;
|
||
|
case 1:
|
||
|
tst_res(TINFO, "Testing __NR_set" SYSCALL_NAME " syscall");
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
static int do_setdomainname(char *new, size_t len)
|
||
|
{
|
||
|
switch (tst_variant) {
|
||
|
case 0:
|
||
|
return SET_SYSCALL(new, len);
|
||
|
break;
|
||
|
case 1:
|
||
|
return tst_syscall(SYSCALL_NR, new, len);
|
||
|
}
|
||
|
|
||
|
return -1;
|
||
|
}
|
||
|
|
||
|
static void setup(void)
|
||
|
{
|
||
|
setdomainname_info();
|
||
|
if ((GET_SYSCALL(backup, sizeof(backup))) < 0)
|
||
|
tst_brk(TBROK | TERRNO, "get" SYSCALL_NAME "() failed");
|
||
|
}
|
||
|
|
||
|
static void cleanup(void)
|
||
|
{
|
||
|
if ((SET_SYSCALL(backup, strlen(backup))) < 0)
|
||
|
tst_res(TWARN | TERRNO, "set" SYSCALL_NAME "() failed ('%s')", backup);
|
||
|
}
|
||
|
|
||
|
#endif /* SETDOMAINNAME_H__ */
|