tndb.h revision 45916cd2fec6e79bca5dee0421bd39e3c2910d1e
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * CDDL HEADER START
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 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * See the License for the specific language governing permissions
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * and limitations under the License.
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 * CDDL HEADER END
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * Use is subject to license terms.
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * from "tndb.h 7.34 01/08/31 SMI; TSOL 2.x"
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk#pragma ident "%Z%%M% %I% %E% SMI"
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpkextern "C" {
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk/* same on ILP32 and LP64 */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpktypedef union tnaddr {
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk (((addr1)->ta_family == AF_INET && (addr2)->ta_family == AF_INET && \
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk (addr1)->ta_addr_v4.s_addr == (addr2)->ta_addr_v4.s_addr) || \
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk ((addr1)->ta_family == AF_INET6 && (addr2)->ta_family == AF_INET6 && \
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk IN6_ARE_ADDR_EQUAL(&(addr1)->ta_addr_v6, &(addr2)->ta_addr_v6)))
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * structure for TN database access routines and TN system calls
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpktypedef enum tsol_dbops {
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * For tnrhdb access library routines and tnrh(2TSOL)
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * same for both ILP32 and LP64.
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpktypedef struct tsol_rhent {
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpktypedef struct tsol_rhstr_s {
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * host types recognized by tsol hosts
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpktypedef enum {
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpktypedef enum {
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpktypedef struct cipso_tag_type_1 {
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpktypedef struct cipso_option {
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * RIPSO classifications
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * RIPSO protection authorities
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * this mask is only used for tndb structures, and is different
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * from t6mask_t bits definitions
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpktypedef unsigned int tnmask_t;
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * unlabeled host structure for the tnrhtp template.
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * same for both ILP32 and LP64.
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk tnmask_t mask; /* tells which attributes are returned by the library */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * CIPSO host structure for the tnrhtp template
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * same for both ILP32 and LP64.
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk tnmask_t mask; /* tells which attributes are returned by the library */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * Valid keys and values of the key=value pairs for tnrhtp
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * For tnrhtp access library routines and tnrhtp(2TSOL)
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * same for both ILP32 and LP64.
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpktypedef struct tsol_tpent {
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpktypedef struct tsol_tpstr_s {
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * For tnmlp(2TSOL); same for both ILP32 and LP64.
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpktypedef struct tsol_mlpent {
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk#define TSOL_MEF_SHARED 0x00000001 /* MLP defined on shared addresses */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * For tnzonecfg access library routines.
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * List of MLPs ends with null entry, where protocol and port are both zero.
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpktypedef struct tsol_zcent {
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk#define TSOL_MLP_END(mlp) ((mlp)->mlp_ipp == 0 && (mlp)->mlp_port == 0)
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpktypedef struct tsol_tpc {
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpktypedef struct tsol_tnrhc {
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk/* Size of remote host hash tables in kernel */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk#define TNRHC_HOLD(a) { \
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk#define TNRHC_RELE(a) { \
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk if (--(a)->rhc_refcnt <= 0) \
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk#define TPC_HOLD(a) { \
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk#define TPC_RELE(a) { \
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk if (--(a)->tpc_refcnt <= 0) \
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk#endif /* _KERNEL */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * The next three hashing macros are copied from macros in ip_ire.h.
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk (((((addr) >> 16) ^ (addr)) ^ ((((addr) >> 16) ^ (addr))>> 8)) \
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk (addr).s6_addr8[14] ^ (addr).s6_addr8[15]) % (table_size))
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk/* This assumes that table_size is a power of 2. */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk ((addr).s6_addr8[15] & (mask).s6_addr8[15])) & ((table_size) - 1))
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * Constants used for getting the mask value in struct tsol_tpent
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * mask definitions
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk#define TSOL_MSK_SL_RANGE_TSOL tsol_tntmask(TNT_SL_RANGE_TSOL)
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * TN errors
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk#define TSOL_PARSE_ERANGE 1 /* result buffer not allocated */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk#define TSOL_NOT_SUPPORTED 2 /* address family not supported */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk#define TSOL_NOT_FOUND 3 /* search by * routines target not found */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * Structure used to hold a list of IP addresses.
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpktypedef struct tsol_address {
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk/* This is shared between tcache and mdb */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpktypedef struct tnrhc_hash_s {
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpktypedef enum {
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpkextern tsol_tpc_t *find_tpc(const void *, uchar_t, boolean_t);
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpkextern void tcache_init(void);
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpkextern in_port_t tsol_next_port(zone_t *, in_port_t, int, boolean_t);
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpkextern mlp_type_t tsol_mlp_port_type(zone_t *, uchar_t, uint16_t, mlp_type_t);
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpkextern int tsol_mlp_anon(zone_t *, mlp_type_t, uchar_t, uint16_t, boolean_t);
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpkextern void tsol_print_label(const blevel_t *, const char *);
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpkextern struct tsol_gc_s *gc_create(struct rtsa_s *, struct tsol_gcgrp_s *,
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpkextern struct tsol_gcgrp_s *gcgrp_lookup(struct tsol_gcgrp_addr_s *, boolean_t);
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk#endif /* _KERNEL */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk#endif /* _SYS_TSOL_TNDB_H */