2N/A/*
2N/A * CDDL HEADER START
2N/A *
2N/A * The contents of this file are subject to the terms of the
2N/A * Common Development and Distribution License (the "License").
2N/A * You may not use this file except in compliance with the License.
2N/A *
2N/A * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
2N/A * or http://www.opensolaris.org/os/licensing.
2N/A * See the License for the specific language governing permissions
2N/A * and limitations under the License.
2N/A *
2N/A * When distributing Covered Code, include this CDDL HEADER in each
2N/A * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
2N/A * If applicable, add the following below this CDDL HEADER, with the
2N/A * fields enclosed by brackets "[]" replaced with your own identifying
2N/A * information: Portions Copyright [yyyy] [name of copyright owner]
2N/A *
2N/A * CDDL HEADER END
2N/A */
2N/A/*
2N/A * Copyright (c) 2006, 2011, Oracle and/or its affiliates. All rights reserved.
2N/A */
2N/A
2N/A#ifndef _LABELD_H
2N/A#define _LABELD_H
2N/A
2N/A#include <sys/types.h>
2N/A#include <tsol/label.h>
2N/A#include <sys/tsol/label_macro.h>
2N/A
2N/A#ifdef __cplusplus
2N/Aextern "C" {
2N/A#endif
2N/A
2N/A/*
2N/A * Definitions for the call parameters for the door-based label
2N/A * translation service.
2N/A */
2N/A
2N/A#define BUFSIZE 4096
2N/A
2N/A#define DOOR_PATH "/var/tsol/doors/"
2N/A#define DOOR_NAME "labeld"
2N/A#define COOKIE (void *)0x6c616264 /* "labd" */
2N/A
2N/A/* Op codes */
2N/A
2N/A/* Labeld Commands */
2N/A
2N/A#define LABELDNULL 1
2N/A
2N/A/* Miscellaneous */
2N/A
2N/A#define BLINSET 10
2N/A#define BSLVALID 11
2N/A#define BILVALID 12
2N/A#define BCLEARVALID 13
2N/A#define LABELINFO 14
2N/A#define LABELVERS 15
2N/A#define BLTOCOLOR 16
2N/A
2N/A/* Binary to String Label Translation */
2N/A
2N/A#define BSLTOS 23
2N/A#define BCLEARTOS 25
2N/A
2N/A/* String to Binary Label Translation */
2N/A
2N/A#define STOBSL 31
2N/A#define STOBCLEAR 33
2N/A
2N/A/*
2N/A * Dimming List Routines
2N/A * Contract private for label builders
2N/A */
2N/A
2N/A#define BSLCVT 40
2N/A#define BCLEARCVT 42
2N/A#define LABELFIELDS 43
2N/A#define UDEFS 44
2N/A
2N/A#define GETFLABEL 45
2N/A#define SETFLABEL 46
2N/A
2N/A/* NEW LABELS */
2N/A/* DIA printer banner labels */
2N/A
2N/A#define PR_CAVEATS 101
2N/A#define PR_CHANNELS 102
2N/A#define PR_LABEL 103
2N/A#define PR_TOP 104
2N/A
2N/A/* DIA label to string */
2N/A
2N/A#define LTOS 105
2N/A
2N/A/* DIA string to label */
2N/A
2N/A#define STOL 106
2N/A
2N/A/* Structures */
2N/A
2N/Atypedef uint_t bufp_t; /* offset into buf[] in/out string buffer */
2N/A
2N/A/* Null call */
2N/A
2N/Atypedef struct {
2N/A int null;
2N/A} null_call_t;
2N/A
2N/Atypedef struct {
2N/A int null;
2N/A} null_ret_t;
2N/A
2N/A/* Miscellaneous interfaces */
2N/A
2N/Atypedef struct {
2N/A bslabel_t label;
2N/A int type;
2N/A} inset_call_t;
2N/A
2N/Atypedef struct {
2N/A int inset;
2N/A} inset_ret_t;
2N/A
2N/Atypedef struct {
2N/A bslabel_t label;
2N/A} slvalid_call_t;
2N/A
2N/Atypedef struct {
2N/A int valid;
2N/A} slvalid_ret_t;
2N/A
2N/Atypedef struct {
2N/A bclear_t clear;
2N/A} clrvalid_call_t;
2N/A
2N/Atypedef struct {
2N/A int valid;
2N/A} clrvalid_ret_t;
2N/A
2N/Atypedef struct {
2N/A int null;
2N/A} info_call_t;
2N/A
2N/Atypedef struct {
2N/A struct label_info info;
2N/A} info_ret_t;
2N/A
2N/Atypedef struct {
2N/A int null;
2N/A} vers_call_t;
2N/A
2N/Atypedef struct {
2N/A char vers[BUFSIZE];
2N/A} vers_ret_t;
2N/A
2N/Atypedef struct {
2N/A blevel_t label;
2N/A} color_call_t;
2N/A
2N/Atypedef struct {
2N/A char color[BUFSIZE];
2N/A} color_ret_t;
2N/A
2N/A/* Binary Label to String interfaces */
2N/A
2N/Atypedef struct {
2N/A bslabel_t label;
2N/A uint_t flags;
2N/A} bsltos_call_t;
2N/A
2N/Atypedef struct {
2N/A char slabel[BUFSIZE];
2N/A} bsltos_ret_t;
2N/A
2N/Atypedef struct {
2N/A bclear_t clear;
2N/A uint_t flags;
2N/A} bcleartos_call_t;
2N/A
2N/Atypedef struct {
2N/A char cslabel[BUFSIZE];
2N/A} bcleartos_ret_t;
2N/A
2N/A/* String to Binary Label interfaces */
2N/A
2N/Atypedef struct {
2N/A bslabel_t label;
2N/A uint_t flags;
2N/A char string[BUFSIZE];
2N/A} stobsl_call_t;
2N/A
2N/Atypedef struct {
2N/A bslabel_t label;
2N/A} stobsl_ret_t;
2N/A
2N/Atypedef struct {
2N/A bclear_t clear;
2N/A uint_t flags;
2N/A char string[BUFSIZE];
2N/A} stobclear_call_t;
2N/A
2N/Atypedef struct {
2N/A bclear_t clear;
2N/A} stobclear_ret_t;
2N/A
2N/A/*
2N/A * The following Dimming List and Miscellaneous interfaces
2N/A * implement contract private interfaces for the label builder
2N/A * interfaces.
2N/A */
2N/A
2N/A/* Dimming List interfaces */
2N/A
2N/Atypedef struct {
2N/A bslabel_t label;
2N/A brange_t bounds;
2N/A uint_t flags;
2N/A} bslcvt_call_t;
2N/A
2N/Atypedef struct {
2N/A bufp_t string;
2N/A bufp_t dim;
2N/A bufp_t lwords;
2N/A bufp_t swords;
2N/A size_t d_len;
2N/A size_t l_len;
2N/A size_t s_len;
2N/A int first_comp;
2N/A int first_mark;
2N/A char buf[BUFSIZE];
2N/A} cvt_ret_t;
2N/A
2N/Atypedef cvt_ret_t bslcvt_ret_t;
2N/A
2N/Atypedef struct {
2N/A bclear_t clear;
2N/A brange_t bounds;
2N/A uint_t flags;
2N/A} bclearcvt_call_t;
2N/A
2N/Atypedef cvt_ret_t bclearcvt_ret_t;
2N/A
2N/A/* Miscellaneous interfaces */
2N/A
2N/Atypedef struct {
2N/A int null;
2N/A} fields_call_t;
2N/A
2N/Atypedef struct {
2N/A bufp_t classi;
2N/A bufp_t compsi;
2N/A bufp_t marksi;
2N/A char buf[BUFSIZE];
2N/A} fields_ret_t;
2N/A
2N/Atypedef struct {
2N/A int null;
2N/A} udefs_call_t;
2N/A
2N/Atypedef struct {
2N/A bslabel_t sl;
2N/A bclear_t clear;
2N/A} udefs_ret_t;
2N/A
2N/Atypedef struct {
2N/A bslabel_t sl;
2N/A char pathname[BUFSIZE];
2N/A} setfbcl_call_t;
2N/A
2N/Atypedef struct {
2N/A int status;
2N/A} setfbcl_ret_t;
2N/A
2N/Atypedef struct {
2N/A m_label_t label;
2N/A uint_t flags;
2N/A} pr_call_t;
2N/A
2N/Atypedef struct {
2N/A char buf[BUFSIZE];
2N/A} pr_ret_t;
2N/A
2N/Atypedef struct {
2N/A m_label_t label;
2N/A uint_t flags;
2N/A} ls_call_t;
2N/A
2N/Atypedef struct {
2N/A char buf[BUFSIZE];
2N/A} ls_ret_t;
2N/A
2N/Atypedef struct {
2N/A m_label_t label;
2N/A uint_t flags;
2N/A char string[BUFSIZE];
2N/A} sl_call_t;
2N/A
2N/Atypedef struct {
2N/A m_label_t label;
2N/A} sl_ret_t;
2N/A
2N/A/* Labeld operation call structure */
2N/A
2N/Atypedef struct {
2N/A uint_t op;
2N/A union {
2N/A null_call_t null_arg;
2N/A
2N/A inset_call_t inset_arg;
2N/A slvalid_call_t slvalid_arg;
2N/A clrvalid_call_t clrvalid_arg;
2N/A info_call_t info_arg;
2N/A vers_call_t vers_arg;
2N/A color_call_t color_arg;
2N/A
2N/A bsltos_call_t bsltos_arg;
2N/A bcleartos_call_t bcleartos_arg;
2N/A
2N/A stobsl_call_t stobsl_arg;
2N/A stobclear_call_t stobclear_arg;
2N/A
2N/A bslcvt_call_t bslcvt_arg;
2N/A bclearcvt_call_t bclearcvt_arg;
2N/A fields_call_t fields_arg;
2N/A udefs_call_t udefs_arg;
2N/A setfbcl_call_t setfbcl_arg;
2N/A pr_call_t pr_arg;
2N/A ls_call_t ls_arg;
2N/A sl_call_t sl_arg;
2N/A } cargs;
2N/A} labeld_call_t;
2N/A
2N/A/* Labeld operation return structure */
2N/A
2N/Atypedef struct {
2N/A int ret; /* labeld return codes */
2N/A int err; /* function error codes */
2N/A union {
2N/A null_ret_t null_ret;
2N/A
2N/A inset_ret_t inset_ret;
2N/A slvalid_ret_t slvalid_ret;
2N/A clrvalid_ret_t clrvalid_ret;
2N/A info_ret_t info_ret;
2N/A vers_ret_t vers_ret;
2N/A color_ret_t color_ret;
2N/A
2N/A bsltos_ret_t bsltos_ret;
2N/A bcleartos_ret_t bcleartos_ret;
2N/A
2N/A stobsl_ret_t stobsl_ret;
2N/A stobclear_ret_t stobclear_ret;
2N/A
2N/A bslcvt_ret_t bslcvt_ret;
2N/A bclearcvt_ret_t bclearcvt_ret;
2N/A fields_ret_t fields_ret;
2N/A udefs_ret_t udefs_ret;
2N/A setfbcl_ret_t setfbcl_ret;
2N/A pr_ret_t pr_ret;
2N/A ls_ret_t ls_ret;
2N/A sl_ret_t sl_ret;
2N/A } rvals;
2N/A} labeld_ret_t;
2N/A
2N/A/* Labeld call/return structure */
2N/A
2N/Atypedef struct {
2N/A union {
2N/A labeld_call_t acall;
2N/A labeld_ret_t aret;
2N/A } param;
2N/A} labeld_data_t;
2N/A
2N/A#define callop param.acall.op
2N/A#define retret param.aret.ret
2N/A#define reterr param.aret.err
2N/A
2N/A#define CALL_SIZE(type, buf) (size_t)(sizeof (type) + sizeof (int) + (buf))
2N/A#define RET_SIZE(type, buf) (size_t)(sizeof (type) + 2*sizeof (int) + (buf))
2N/A#define CALL_SIZE_STR(type, buf) CALL_SIZE(type, (-BUFSIZE +(buf)))
2N/A
2N/A/* Labeld common client call function */
2N/A
2N/Aint
2N/A__call_labeld(labeld_data_t **dptr, size_t *ndata, size_t *adata);
2N/A
2N/A/* Return Codes */
2N/A
2N/A#define SUCCESS 1 /* Call OK */
2N/A#define NOTFOUND -1 /* Function not found */
2N/A#define SERVERFAULT -2 /* Internal labeld error */
2N/A#define NOSERVER -3 /* No server thread available, try later */
2N/A
2N/A/* Flag Translation Values */
2N/A
2N/A#define L_NEW_LABEL 0x10000000
2N/A
2N/A/* GFI FLAGS */
2N/A
2N/A#define GFI_FLAG_MASK 0x0000FFFF
2N/A#define GFI_ACCESS_RELATED 0x00000001
2N/A
2N/A/* binary to ASCII */
2N/A
2N/A#define LABELS_NO_CLASS 0x00010000
2N/A#define LABELS_SHORT_CLASS 0x00020000
2N/A#define LABELS_SHORT_WORDS 0x00040000
2N/A
2N/A/* Label view */
2N/A
2N/A#define LABELS_VIEW_INTERNAL 0x00100000
2N/A#define LABELS_VIEW_EXTERNAL 0x00200000
2N/A
2N/A/* Dimming list (convert -- b*cvt* ) */
2N/A
2N/A#define LABELS_FULL_CONVERT 0x00010000
2N/A
2N/A/* ASCII to binary */
2N/A
2N/A#define LABELS_NEW_LABEL 0x00010000
2N/A#define LABELS_FULL_PARSE 0x00020000
2N/A#define LABELS_ONLY_INFO_LABEL 0x00040000
2N/A
2N/A#define MOVE_FILE 0
2N/A#define COPY_FILE 1
2N/A#define LINK_FILE 2
2N/A
2N/A#define PIPEMSG_FILEOP_ERROR 1
2N/A#define PIPEMSG_EXIST_ERROR 2
2N/A#define PIPEMSG_DONE 7
2N/A#define PIPEMSG_PATH_ERROR 20
2N/A#define PIPEMSG_ZONE_ERROR 21
2N/A#define PIPEMSG_LABEL_ERROR 22
2N/A#define PIPEMSG_READ_ERROR 23
2N/A#define PIPEMSG_READONLY_ERROR 24
2N/A#define PIPEMSG_WRITE_ERROR 25
2N/A#define PIPEMSG_CREATE_ERROR 26
2N/A#define PIPEMSG_DELETE_ERROR 27
2N/A#define PIPEMSG_CANCEL 101
2N/A#define PIPEMSG_PROCEED 102
2N/A#define PIPEMSG_MERGE 103
2N/A#define PIPEMSG_REPLACE_BUFFER 104
2N/A#define PIPEMSG_RENAME_BUFFER 105
2N/A#define PIPEMSG_MULTI_PROCEED 106
2N/A#define PIPEMSG_RENAME_FILE 107
2N/A
2N/A#ifdef __cplusplus
2N/A}
2N/A#endif
2N/A
2N/A#endif /* _LABELD_H */