Home | History | Annotate | Download | only in mountns
      1 /* Copyright (c) 2014 Red Hat, Inc.
      2  *
      3  * This program is free software: you can redistribute it and/or modify
      4  * it under the terms of version 2 the GNU General Public License as
      5  * published by the Free Software Foundation.
      6  *
      7  * This program is distributed in the hope that it will be useful,
      8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
      9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     10  * GNU General Public License for more details.
     11  *
     12  * You should have received a copy of the GNU General Public License
     13  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
     14  */
     15 
     16 #include "libclone.h"
     17 #include "test.h"
     18 #include "safe_macros.h"
     19 
     20 #define DIRA "A"
     21 #define DIRB "B"
     22 
     23 static int dummy_child(void *v)
     24 {
     25 	(void) v;
     26 	return 0;
     27 }
     28 
     29 static int check_newns(void)
     30 {
     31 	int pid, status;
     32 
     33 	if (tst_kvercmp(2, 4, 19) < 0)
     34 		tst_brkm(TCONF, NULL, "CLONE_NEWNS not supported");
     35 
     36 	pid = do_clone_unshare_test(T_CLONE, CLONE_NEWNS, dummy_child, NULL);
     37 	if (pid == -1)
     38 		tst_brkm(TCONF | TERRNO, NULL, "CLONE_NEWNS not supported");
     39 	SAFE_WAIT(NULL, &status);
     40 
     41 	return 0;
     42 }
     43 
     44 static void cleanup(void)
     45 {
     46 	umount(DIRA);
     47 	umount(DIRB);
     48 	tst_rmdir();
     49 }
     50 
     51 static void setup(void)
     52 {
     53 	tst_require_root();
     54 	check_newns();
     55 	tst_tmpdir();
     56 	TST_CHECKPOINT_INIT(tst_rmdir);
     57 	SAFE_MKDIR(cleanup, DIRA, 0777);
     58 	SAFE_MKDIR(cleanup, DIRB, 0777);
     59 	SAFE_TOUCH(cleanup, DIRA"/A", 0, NULL);
     60 	SAFE_TOUCH(cleanup, DIRB"/B", 0, NULL);
     61 }
     62