summaryrefslogtreecommitdiff
path: root/usr/src/lib/libdscfg/common/cfg_impl.h
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/lib/libdscfg/common/cfg_impl.h')
-rw-r--r--usr/src/lib/libdscfg/common/cfg_impl.h247
1 files changed, 0 insertions, 247 deletions
diff --git a/usr/src/lib/libdscfg/common/cfg_impl.h b/usr/src/lib/libdscfg/common/cfg_impl.h
deleted file mode 100644
index a972b2525f..0000000000
--- a/usr/src/lib/libdscfg/common/cfg_impl.h
+++ /dev/null
@@ -1,247 +0,0 @@
-/*
- * CDDL HEADER START
- *
- * The contents of this file are subject to the terms of the
- * Common Development and Distribution License (the "License").
- * You may not use this file except in compliance with the License.
- *
- * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
- * or http://www.opensolaris.org/os/licensing.
- * See the License for the specific language governing permissions
- * and limitations under the License.
- *
- * When distributing Covered Code, include this CDDL HEADER in each
- * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
- * If applicable, add the following below this CDDL HEADER, with the
- * fields enclosed by brackets "[]" replaced with your own identifying
- * information: Portions Copyright [yyyy] [name of copyright owner]
- *
- * CDDL HEADER END
- */
-/*
- * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
- * Use is subject to license terms.
- */
-
-#ifndef _CFG_IMPL_H
-#define _CFG_IMPL_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define MAX_CFG 16 /* Max. number of lines in /etc/dscfg_format */
-
-#define CFG_MAX_KEY 256
-#define CFG_MAX_BUF 1024
-#define CFG_BLOCK_SIZE 512
-#define CFG_VTOC_SIZE 16
-#define CFG_VTOC_SKIP CFG_VTOC_SIZE * CFG_BLOCK_SIZE
-
-/*
- * Parser and file handling routines for Configuration parser.
- *
- * General layout on disk
- *
- * header cfgheader_t
- * parser configuration tag.field1.field2\n
- * configuration data copy1 freeform strings
- * configuration data copy2 freeform strings
- *
- * Strings in freeform fields are seperated by whitespace.
- * End of entry seperated by null.
- */
-
-struct lookup {
- char l_word[CFG_MAX_KEY];
- int l_value;
- struct lookup *l_next;
-};
-
-struct parser {
- struct lookup tag;
- struct lookup *fld;
- struct parser *next;
-};
-
-
-/*
- * cfglist description
- *
- * ________
- * | | the header has (with other things) an array
- * | header | of h_cfg[n].l_size entries. index 4
- * disk layout | | contains cfp->cf_head->h_cfg[4].l_size.
- * |________|
- * cfgfile-mapped->| |
- * CFG_DEFAULT_PARSE_SIZE | parser | cache_hint.device.wrthru.nordcache.cnode
- * | |
- * |________|
- * cfp->cf_head->h_ccopy1>| |
- * CFG_DEFAULT_SSIZE | data | null terminated strings grouped together
- * | copy 1 | in order of cfglist offset. ie data at
- * |________| offset 0 is from h_cfgs[0].l_entry
- * cfp->cf_head->h_ccopy2>| |
- * CFG_DEFAULT_SSIZE | data |
- * | copy 2 | same as above, used for two stage commit
- * |________|
- * cfp->cf_head->h_sizes1>| | here is where lists of sizes go for each
- * CFG_DEFAULT_PSIZE | sizes | cfglist. each array is preceded by the num
- * | copy 1 | of entries. |5|120|130|140|103|125|10|25 is
- * |________| a list with 5 entries 120,130,140,103,125
- * cfp->cf_head->h_sizes2>| | these numbers are used to rebuild l_nentry
- * CFG_DEFAULT_PSIZE | sizes | and l_esiz fields in h_cfg[n]
- * | copy 2 | this list is done as a two stage commit
- * |________|
- *
- *
- *
- * Data is read into cfp->cf_head->h_ccopy1 and cfp->cf_head->h_ccopy2
- * along with thier corresponding size metadata in cfp->cf_head->h_sizes1
- * and cfp->cf_head->h_sizes2. This infomation is used to rebuild the
- * cfglist structures seen below. The data in the cfglist structure is then
- * the ONLY valid data. Additions and/or deletions to the database is done
- * by moving around the cfglists and doing the right things with the size
- * arrays, the actual entries, total list sizes, the total of all the sizes of
- * all the cfglists and memory allocation. After addition/deletions are done,
- * and cfg_close is called, all of the lists are placed back into h_cparse
- * (which is really h_ccopy1 or h_ccopy2) the persistent lists are placed
- * into h_sizes (which is really h_sizes1 or h_sizes2).
- * A copy of each cfglist[n].l_size is kept in the header
- * (cfgheader->cfgsizes[n]).
- *
- *
- *
- *
- * h_cfgs h_cfgs[3]
- * head |-[0]- /|-l_name == sndr
- * |- /|-[1]- / |-l_entry == host dev bmap host..ip sync '\0' ...
- * file |- / |-[2]- / |-l_esiz[0..l_nentry - 1] == [130, 132, 135, 133,..]
- * |--|---------|-[3]---- |-l_enabled[0..l_nentry - 1] == [1,0,0,1,1]
- * |- \ |-[4]- \ |-l_nentry == 5
- * |- \|-[5]- \ |-l_index == 3
- * |-[n]- \|-l_free == 50537
- * |-l_size == 663 (130 + 132 + 135 + 133 + 133)
- *
- *
- *
- * l_name - is set when the parser is read.
- * It is the first tag of a line of parser text.
- * l_entry - is a pointer to the beginning of the null terminated string
- * list that belongs to the cfglist tagged with l_name.
- * l_esiz - is a list of sizes of the strings contained in l_entry.
- * l_esiz[0] tells the size of the string at l_entry[0].
- * l_esiz[n] is the size of the string that begins
- * at l_entry + l_esiz[0] + l_esiz[1]..+ l_esize[n - 1]
- * l_enabled - is a list of ones and zeros telling if this entry is alive
- * in the kernel. indexing is the same as l_esiz. (not implemented)
- * l_index - is the index of the parser tree that corresponds to l_name
- * and is set when the parser tree is built
- * l_free - is how memory is managed. Memory is allocated on a
- * DEFAULT_ENTRY_SIZE boundry.
- * the size of the balance of available memory at the end of l_entry
- * is kept here. when this number is lower than the string we need to add,
- * another block of memory is allocated for l_entry and the balance of
- * the size is added to l_free.
- * l_size - is size of this list. It is the summation of l_esiz[0..n]
- *
- */
-
-typedef struct cfglist {
- char *l_name; /* name of list sndr, ii.. */
- char *l_entry; /* start of list */
- int *l_esiz; /* array of sizes of entries */
- int l_nentry; /* number of entries */
- int l_index; /* index in relation to parser position */
- uint_t l_free; /* num of characters available */
- int l_size; /* size of list */
-} cfglist_t;
-
-/* note: this does not imply DEFAULT_NENTRIES * DEFAULT_ENTRY_SIZE */
-#define DEFAULT_NENTRIES 100 /* value for l_esiz sizes array */
-#define DEFAULT_ENTRY_SIZE (50 * CFG_MAX_BUF) /* 50K for each l_entry */
-
-
-typedef struct cfgheader {
- int32_t h_magic;
- int h_state; /* State flag see below */
- time_t h_stamp; /* time stamp of last update */
- long h_lock; /* lock for update */
- long h_size; /* total file size */
- int h_parseoff; /* parser config offset */
- int h_parsesize; /* parser config size */
- char *h_cparse; /* start of configuration */
- int h_csize; /* size of config section */
- int h_acsize; /* size of alternate config section */
- int *h_sizes; /* sizes of lists */
- int h_psize; /* size of persistent section */
- int h_apsize; /* size of alternate persistent section */
- char *h_ccopy1; /* base of config section 1 */
- char *h_ccopy2; /* base of config section 2 */
- int *h_sizes1; /* sizes of lists on disk 1 */
- int *h_sizes2; /* sizes of lists on disk 2 */
- int h_seq1; /* Sequenece number copy 1 both sections */
- int h_seq2; /* Sequenece number copy 2 both sections */
- char h_ncfgs; /* number of cfgs */
- cfglist_t *h_cfgs; /* start of cfg lists */
- int h_cfgsizes[MAX_CFG]; /* Sizes of configs */
-} cfgheader_t;
-
-#define CFG_HDR_GOOD 0x1
-#define CFG_HDR_INVALID 0x2
-#define CFG_HDR_RDLOCK 0x4
-#define CFG_HDR_WRLOCK 0x8
-
-struct cfg_io_s; /* forward reference */
-typedef struct cfp {
- int cf_fd; /* file descriptor */
- int cf_flag; /* flags - see below */
- long cf_size; /* size of file in fbas */
- int cf_lock; /* lock file descriptor */
- char *cf_mapped; /* mapped location via mmap */
- char *cf_name; /* file name */
- cfgheader_t *cf_head; /* header */
- struct cfg_io_s *cf_pp; /* i/o provider */
-} cfp_t;
-
-typedef struct cfgfile {
- void *cf_node; /* node filter */
- cfp_t cf[2]; /* local & optional cluster file */
-} CFGFILE;
-
-typedef struct cfg_io_s {
- struct cfg_io_s *next; /* Link to next module */
- char *name; /* name of provider */
- cfp_t *(*open)(cfp_t *, char *); /* Open device */
- void (*close)(cfp_t *); /* Close device */
- int (*seek)(cfp_t *, int, int); /* Seek */
- int (*read)(cfp_t *, void *, int); /* read */
- int (*write)(cfp_t *, void *, int); /* write */
- char *(*readcf)(cfp_t *, char *, int, int); /* Read mem config */
- int (*addcf)(cfp_t *, char *, int); /* add to mem config */
- int (*remcf)(cfp_t *, int, int); /* remove an entry */
- int (*replacecf)(cfp_t *, char *, int, int); /* replace entry */
-} cfg_io_t;
-
-#define CFG_FILE 0x1 /* database is in a regular file */
-#define CFG_NOREWIND 0x4 /* don't rewind for each get_string */
-#define CFG_NOWRVTOC 0x8 /* sector starts in vtoc land, skip it */
-#define CFG_RDONLY 0x10 /* database is read only */
-
-/*
- * constants
- */
-#define CFG_RDEV_LOCKFILE "/var/tmp/.dscfg.lck"
-#define CFG_NEW_MAGIC 0x4d414749 /* MAGI */
-#define CFG_DEFAULT_PARSE_SIZE (16 * 1024)
-#define CFG_DEFAULT_SSIZE (2 * 1024 * 1024)
-#define CFG_DEFAULT_PSIZE (512 * 1024)
-#define CFG_DEFAULT_OLDSIZE (96 * 1024)
-#define CFG_CONFIG_SIZE (CFG_DEFAULT_PARSE_SIZE + \
- (2 * CFG_DEFAULT_SSIZE) + \
- (2 * CFG_DEFAULT_PSIZE))
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _CFG_IMPL_H */