45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk/*
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * CDDL HEADER START
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk *
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * The contents of this file are subject to the terms of the
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * Common Development and Distribution License (the "License").
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * You may not use this file except in compliance with the License.
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk *
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * or http://www.opensolaris.org/os/licensing.
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * See the License for the specific language governing permissions
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * and limitations under the License.
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk *
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * When distributing Covered Code, include this CDDL HEADER in each
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * If applicable, add the following below this CDDL HEADER, with the
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * fields enclosed by brackets "[]" replaced with your own identifying
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * information: Portions Copyright [yyyy] [name of copyright owner]
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk *
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * CDDL HEADER END
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk/*
42096647a1cb1ee493b238f2713f001b8b039514Tony Nguyen * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * Use is subject to license terms.
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk#ifndef _TSOL_LABEL_H
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk#define _TSOL_LABEL_H
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk
42096647a1cb1ee493b238f2713f001b8b039514Tony Nguyen#include <sys/types32.h>
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk#include <sys/tsol/label.h>
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk#include <priv.h>
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk#ifdef __cplusplus
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpkextern "C" {
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk#endif
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk/* Procedural Interface Structure Definitions */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpkstruct label_info { /* structure returned by label_info */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk short ilabel_len; /* max Information Label length */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk short slabel_len; /* max Sensitivity Label length */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk short clabel_len; /* max CMW Label length */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk short clear_len; /* max Clearance Label length */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk short vers_len; /* version string length */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk short header_len; /* max len of banner page header */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk short protect_as_len; /* max len of banner page protect as */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk short caveats_len; /* max len of banner page caveats */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk short channels_len; /* max len of banner page channels */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk};
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpktypedef struct label_set_identifier { /* valid label set identifier */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk int type; /* type of the set */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk char *name; /* name of the set if needed */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk} set_id;
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpkstruct name_fields { /* names for label builder fields */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk char *class_name; /* Classifications field name */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk char *comps_name; /* Compartments field name */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk char *marks_name; /* Markings field name */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk};
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk/* Label Set Identifier Types */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk/*
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * The accreditation ranges as specified in the label encodings file.
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * The name parameter is ignored.
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk *
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * System Accreditation Range is all valid labels plus Admin High and Low.
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk *
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * User Accreditation Range is valid user labels as defined in the
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * ACCREDITATION RANGE: section of the label encodings file.
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk#define SYSTEM_ACCREDITATION_RANGE 1
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk#define USER_ACCREDITATION_RANGE 2
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk/* System Call Interface Definitions */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpkextern int getlabel(const char *, m_label_t *);
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpkextern int fgetlabel(int, m_label_t *);
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpkextern int getplabel(m_label_t *);
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpkextern int setflabel(const char *, m_label_t *);
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpkextern char *getpathbylabel(const char *, char *, size_t,
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk const m_label_t *sl);
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpkextern m_label_t *getzonelabelbyid(zoneid_t);
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpkextern m_label_t *getzonelabelbyname(const char *);
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpkextern zoneid_t getzoneidbylabel(const m_label_t *);
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpkextern char *getzonenamebylabel(const m_label_t *);
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpkextern char *getzonerootbyid(zoneid_t);
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpkextern char *getzonerootbyname(const char *);
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpkextern char *getzonerootbylabel(const m_label_t *);
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpkextern m_label_t *getlabelbypath(const char *);
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk/* Flag word values */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk#define ALL_ENTRIES 0x00000000
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk#define ACCESS_RELATED 0x00000001
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk#define ACCESS_MASK 0x0000FFFF
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk#define ACCESS_SHIFT 0
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk#define LONG_WORDS 0x00010000 /* use long names */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk#define SHORT_WORDS 0x00020000 /* use short names if present */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk#define LONG_CLASSIFICATION 0x00040000 /* use long classification */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk#define SHORT_CLASSIFICATION 0x00080000 /* use short classification */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk#define NO_CLASSIFICATION 0x00100000 /* don't translate the class */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk#define VIEW_INTERNAL 0x00200000 /* don't promote/demote */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk#define VIEW_EXTERNAL 0x00400000 /* promote/demote label */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk#define NEW_LABEL 0x00000001 /* create a full new label */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk#define NO_CORRECTION 0x00000002 /* don't correct label errors */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk /* implies NEW_LABEL */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk#define CVT_DIM 0x01 /* display word dimmed */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk#define CVT_SET 0x02 /* display word currently set */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk/* Procedure Interface Definitions available to user */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk/* APIs shared with the kernel are in <sys/tsol/label.h */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpkextern m_label_t *blabel_alloc(void);
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpkextern void blabel_free(m_label_t *);
42096647a1cb1ee493b238f2713f001b8b039514Tony Nguyenextern size32_t blabel_size(void);
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpkextern char *bsltoh(const m_label_t *);
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpkextern char *bcleartoh(const m_label_t *);
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpkextern char *bsltoh_r(const m_label_t *, char *);
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpkextern char *bcleartoh_r(const m_label_t *, char *);
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpkextern char *h_alloc(uint8_t);
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpkextern void h_free(char *);
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpkextern int htobsl(const char *, m_label_t *);
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpkextern int htobclear(const char *, m_label_t *);
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpkextern m_range_t *getuserrange(const char *);
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpkextern m_range_t *getdevicerange(const char *);
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpkextern int set_effective_priv(priv_op_t, int, ...);
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpkextern int set_inheritable_priv(priv_op_t, int, ...);
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpkextern int set_permitted_priv(priv_op_t, int, ...);
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpkextern int is_system_labeled(void);
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk/* Procedures needed for multi-level printing */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpkextern int tsol_check_admin_auth(uid_t uid);
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk/* APIs implemented via labeld */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpkextern int blinset(const m_label_t *, const set_id *);
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpkextern int labelinfo(struct label_info *);
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpkextern ssize_t labelvers(char **, size_t);
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpkextern char *bltocolor(const m_label_t *);
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpkextern char *bltocolor_r(const m_label_t *, size_t, char *);
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpkextern ssize_t bsltos(const m_label_t *, char **, size_t, int);
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpkextern ssize_t bcleartos(const m_label_t *, char **, size_t, int);
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpkextern char *sbsltos(const m_label_t *, size_t);
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpkextern char *sbcleartos(const m_label_t *, size_t);
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpkextern int stobsl(const char *, m_label_t *, int, int *);
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpkextern int stobclear(const char *, m_label_t *, int, int *);
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpkextern int bslvalid(const m_label_t *);
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpkextern int bclearvalid(const m_label_t *);
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk/* DIA label conversion and parsing */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk/* Conversion types */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpktypedef enum _m_label_str {
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk M_LABEL = 1, /* process or user clearance */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk M_INTERNAL = 2, /* internal form for use in public databases */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk M_COLOR = 3, /* process label color */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk PRINTER_TOP_BOTTOM = 4, /* DIA banner page top/bottom */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk PRINTER_LABEL = 5, /* DIA banner page label */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk PRINTER_CAVEATS = 6, /* DIA banner page caveats */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk PRINTER_CHANNELS = 7 /* DIA banner page handling channels */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk} m_label_str_t;
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk/* Flags for conversion, not all flags apply to all types */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk#define DEF_NAMES 0x1
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk#define SHORT_NAMES 0x3 /* short names are prefered where defined */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk#define LONG_NAMES 0x4 /* long names are prefered where defined */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpkextern int label_to_str(const m_label_t *, char **, const m_label_str_t,
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk uint_t);
4201a95e0468170d576f82c3aa63afecf718497aRic Aleshireextern int l_to_str_internal(const m_label_t *, char **);
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk/* Parsing types */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpktypedef enum _m_label_type {
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk MAC_LABEL = 1, /* process or object label */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk USER_CLEAR = 2 /* user's clearance (LUB) */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk} m_label_type_t;
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk/* Flags for parsing */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk#define L_DEFAULT 0x0
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk#define L_MODIFY_EXISTING 0x1 /* start parsing with existing label */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk#define L_NO_CORRECTION 0x2 /* must be correct by l_e rules */
ad355aa08e9604678c01500ffc9c6b83cf0a23cdgww#define L_CHECK_AR 0x10 /* must be in l_e AR */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk/* EINVAL sub codes */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk
ad355aa08e9604678c01500ffc9c6b83cf0a23cdgww#define M_OUTSIDE_AR -4 /* not in l_e AR */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk#define M_BAD_STRING -3 /* DIA L_BAD_LABEL */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk /* bad requested label type, bad previous label type */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk#define M_BAD_LABEL -2 /* DIA L_BAD_CLASSIFICATION, */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpkextern int str_to_label(const char *, m_label_t **, const m_label_type_t,
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk uint_t, int *);
4201a95e0468170d576f82c3aa63afecf718497aRic Aleshireextern int hexstr_to_label(const char *, m_label_t *);
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpkextern m_label_t *m_label_alloc(const m_label_type_t);
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpkextern int m_label_dup(m_label_t **, const m_label_t *);
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpkextern void m_label_free(m_label_t *);
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk/* Contract Private interfaces with the label builder GUIs */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpkextern int bslcvtfull(const m_label_t *, const m_range_t *, int,
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk char **, char **[], char **[], char *[], int *, int *);
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpkextern int bslcvt(const m_label_t *, int, char **, char *[]);
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpkextern int bclearcvtfull(const m_label_t *, const m_range_t *, int,
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk char **, char **[], char **[], char *[], int *, int *);
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpkextern int bclearcvt(const m_label_t *, int, char **, char *[]);
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpkextern int labelfields(struct name_fields *);
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpkextern int userdefs(m_label_t *, m_label_t *);
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpkextern int zonecopy(m_label_t *, char *, char *, char *, int);
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk
facf4a8d7b59fde89a8662b4f4c73a758e6c402cllai#ifdef DEBUG
facf4a8d7b59fde89a8662b4f4c73a758e6c402cllai/* testing hook: see devfsadm.c, mkdevalloc.c and allocate.c */
facf4a8d7b59fde89a8662b4f4c73a758e6c402cllai#define is_system_labeled_debug(statbufp) \
facf4a8d7b59fde89a8662b4f4c73a758e6c402cllai ((stat("/ALLOCATE_FORCE_LABEL", (statbufp)) == 0) ? 1 : 0)
facf4a8d7b59fde89a8662b4f4c73a758e6c402cllai#else /* DEBUG */
facf4a8d7b59fde89a8662b4f4c73a758e6c402cllai#define is_system_labeled_debug(statbufp) 0
facf4a8d7b59fde89a8662b4f4c73a758e6c402cllai#endif /* DEBUG */
facf4a8d7b59fde89a8662b4f4c73a758e6c402cllai
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk#ifdef __cplusplus
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk}
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk#endif
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk#endif /* !_TSOL_LABEL_H */