162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * AppArmor security module
462306a36Sopenharmony_ci *
562306a36Sopenharmony_ci * This file contains AppArmor basic path manipulation function definitions.
662306a36Sopenharmony_ci *
762306a36Sopenharmony_ci * Copyright (C) 1998-2008 Novell/SUSE
862306a36Sopenharmony_ci * Copyright 2009-2010 Canonical Ltd.
962306a36Sopenharmony_ci */
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ci#ifndef __AA_PATH_H
1262306a36Sopenharmony_ci#define __AA_PATH_H
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_cienum path_flags {
1562306a36Sopenharmony_ci	PATH_IS_DIR = 0x1,		/* path is a directory */
1662306a36Sopenharmony_ci	PATH_CONNECT_PATH = 0x4,	/* connect disconnected paths to / */
1762306a36Sopenharmony_ci	PATH_CHROOT_REL = 0x8,		/* do path lookup relative to chroot */
1862306a36Sopenharmony_ci	PATH_CHROOT_NSCONNECT = 0x10,	/* connect paths that are at ns root */
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ci	PATH_DELEGATE_DELETED = 0x10000, /* delegate deleted files */
2162306a36Sopenharmony_ci	PATH_MEDIATE_DELETED = 0x20000,	 /* mediate deleted paths */
2262306a36Sopenharmony_ci};
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ciint aa_path_name(const struct path *path, int flags, char *buffer,
2562306a36Sopenharmony_ci		 const char **name, const char **info,
2662306a36Sopenharmony_ci		 const char *disconnected);
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ci#define IN_ATOMIC true
2962306a36Sopenharmony_cichar *aa_get_buffer(bool in_atomic);
3062306a36Sopenharmony_civoid aa_put_buffer(char *buf);
3162306a36Sopenharmony_ci
3262306a36Sopenharmony_ci#endif /* __AA_PATH_H */
33