diff options
Diffstat (limited to 'usr/src/lib/libldap4/include/fe.h')
-rw-r--r-- | usr/src/lib/libldap4/include/fe.h | 420 |
1 files changed, 0 insertions, 420 deletions
diff --git a/usr/src/lib/libldap4/include/fe.h b/usr/src/lib/libldap4/include/fe.h deleted file mode 100644 index 1842a77352..0000000000 --- a/usr/src/lib/libldap4/include/fe.h +++ /dev/null @@ -1,420 +0,0 @@ -/* - * - * Copyright 1999 Sun Microsystems, Inc. All rights reserved. - * Use is subject to license terms. - * - */ - -#pragma ident "%Z%%M% %I% %E% SMI" - -#ifndef _FE_H -#define _FE_H - -/* - * Get context const . Used to retreive info in context : fe_get_ctx - * Return values depend on requested info : - */ -#define CTX_FENAME 1 /* To get the Front End name */ - /* return value is (char *) */ -#define CTX_NBTABLE 2 /* To get the number of sub-section */ - /* return value is (int *) */ -#define CTX_TABLENAME 3 /* To get name(s) of sub section */ - /* return value is (char **) */ -#define CTX_TABLEPTR 4 /* To get the ptr to a sub section definition */ - /* return value is (FE_Table *) */ - /* !! This is not a copy */ -#define CTX_CUSTOMS 5 /* get customs attributes */ - /* third parameter is the variable name (char *) */ - -/* - * Get Tables const - */ -#define TABLE_NAME 1 /* table or subsection name, return value is (char *) */ - /* third parms is null */ -#define TABLE_OBJ_LST 2 /* object class list, return value is (char **) */ - /* third parms is null */ -#define TABLE_COM_HLD 3 /* stored ldap, connection return value is (LDAP *) */ -#define TABLE_CUSTOMS 4 /* get customs attributes */ - /* third parameter is the variable name (char *) */ - /* return value is an array of string (char **) */ -#define TABLE_FEATTR 5 /* to get the attribute definition. If no attribute name */ - /* is provided to get the list of attributes */ - /* third parms is the attribute name */ - /* return a FE_Attr * if attribute name provided */ - /* return a char ** (null term) if no attribute name provided */ - -#define TABLE_SUNDSATTR 6 /* idem TABLE_FEATTR but for SunDS definition */ - -/* - * Tokens/Attributes - */ -#define FETABLE 0 -#define SUNDSTABLE 1 -#define SUNDSATTRLIST 2 -#define SUNDSTOKENLIST 3 -#define FEATTRLIST 4 -#define FETOKENLIST 5 -#define FEBUILDLIST 6 -#define SUNDSBUILDLIST 7 - -/* - * Errors consts - */ -#define NOERROR 0 -#define INVALID_PARMS 1 -#define VALUE_NOT_FOUND 2 -#define CREATE_FAILED 3 -#define SYNTAX_ERROR 4 - -/* - * SPLIT way - */ -#define LEFT2RIGHT 0 -#define RIGHT2LEFT 1 -/* - * Data structures - */ - -/* - * This struct is used to run regex with "reg_expression" - * and assigned values (braelist) with "token" links - * Functional schema : - * step(input,reg_expression) - * => token[0] = braslist[0]..braelist[0] - * => token[1] = braslist[1]..braelist[1] - * => ... - * => token[i] = braslist[i]..braelist[i] - */ -typedef struct _reg_mapp { - char *reg_expression; /* Compiled regular expression */ - int Nbra; /* nbra result */ - int NbToken_Defined; /* Nb tokens defined in reg_expression */ - int *Token_ID; /* Tokens place (index) in input value */ -} Reg_Map; - -/* - * Tokens definition, including input attribute and number of expressions - * and link to each rule. - */ -typedef struct _tokens_def { - int attr_ID; /* Attributes ID (in SD or FE Table) */ - /* Used as input in regular expression */ - int NbRules; /* Number of expressions seperated by | */ - Reg_Map **TokenRules; /* Array of tokens rules */ -} Token_Def; - -/* - * Attribute mapping definition. SD attributes are composed of FE attributes and - * SD tokens. - */ -typedef struct _attr_mapping { - char *AttrName; /* Attribute Name */ - char *Expr; /* Value expression */ - int AttrStatus; /* Store several attr's info such as */ - /* Key || Exist || Frozen */ - /* Key is used to generate wizard filter */ - /* Exist is used to generate wizard filter */ - /* Frozen is used control access on attribute */ - int NbItem; /* Nb Attributes & Tokens need to build val */ - int *AttrID; /* Set of attributes including tokens */ -} Attr_Mapping; - -/* - * Builder_map : defined builder expression - */ -typedef struct _builder_map { - char *build_exp; /* the sentence to build */ - int NbInput; - int *Input_ID; /* List of attr ID to used as input in semtence */ -}Builder_map; - -/* - * Data used for split/string2instances/instances2string/exclude functions - */ -typedef struct _builder_fct { - int Input_ID; - char *value; /* input data */ - char *prefix; /* string2instances and reverse : prefix */ - /* exclude : val 2 exclude */ - int Parm_ID; /* only for exclude funct : ID of val 2 exclude */ - char *suffix; - char *separator; - int readIndicator; -} Builder_fct; - -/* - * Builder tokens : used to build special value (named builder token) from other tokens - * or input value. They look like ouput attributes, but they allow to apply rules, if - * input value does exist. They also permit to split input sentence into attribute instances - */ -typedef struct _builder { - char *builder_name; - int builder_ID; - int NbRules; - int BuilderType; - Builder_map *Mapp; - Builder_fct *Fct; -} Build_def; - - -/* - * Full definition of table mapping. - */ -typedef struct _table_mapping { - int NbTokens; /* Nb extract tokens defined */ - int NbAttributes; /* Nb attributes in the entry */ - int NbBuilder; /* Nb builder tokens defined */ - Token_Def **Tokens_list; /* Array of tokens needed for translation */ - Build_def *Build_list; /* Array of builder tokens */ - Attr_Mapping **Attr_list; /* Array of Attributes defined in an entry */ -} Table_Mapping; - -typedef struct _custo_info { - char *InfoName; - int NbValues; - char **Values; /* Null terminated array of instance */ -} Cust_Info; - -typedef struct _sds_com { - LDAP *lhd; /* LDAP communication handle */ - char **fe_object_list; /* Array of ObjectClasses (null term list) */ -} SDS_Com; - -typedef struct _dynrule { - char *ResName; /* Result (or Rule) name */ - int opType; /* Extrac, Cond, split, str2ins, ins2str, */ - /* getrdn, exclude */ - int NbExpr; /* Nb rules found use only in extract & cond */ - int *NbItems; /* Nb variable in expression, usefull for */ - /* extract and cond. IT's a null terminated */ - /* array which contains the Number of var in */ - char **Expression; /* The sentence (make sense only in cond) */ - char **ConstVal; /* use when funct parm are const not used for */ - /* extract and cond cases */ - char **VarName; /* Var can be 1)DynRule 2)InputData 3)Common */ -} DynRule; - -typedef struct _fe_table { - char *fe_section; /* Section table name */ - int nb_fe_attr; /* Nb FE attributes defined */ - int nb_sds_attr; /* Nb SDS attributes defined */ - int nb_fe_tokens; /* Nb tokens defined in FE section */ - int nb_sds_tokens; /* Nb tokens defined in SunDS section */ - int nb_cust; /* Nb custom attributes in common section */ - int nb_fe_build; /* Nb tokens build in FE section */ - int nb_sds_build; /* Nb tokens build in SUNDS section */ - int nb_dyn_rules; /* Nb dynamic rules in Dynamic section */ - char **fe_token_list; /* Array of FE token */ - char **sds_token_list; /* List of SunDS token */ - char **fe_attr_list; /* Array of attributes (null term list) */ - char **sds_attr_list; /* Array of attributes (null term list) */ - char **fe_build_list; /* Array of FE build */ - char **sds_build_list; /* List of SunDS build */ - Table_Mapping *sds_schema; /* SDS attributes definition */ - Table_Mapping *fe_schema; /* FE attributes definition */ - SDS_Com *comm_items; /* Communication attributes */ - Cust_Info **custo_info; /* Customs info */ - DynRule *dyn_rules; /* Ordered dynamic rules */ -} FE_Table; - -typedef struct _fe_context { - char *fe_name; /* Is it really usefull ?? */ - int NbSection; /* Nb section */ - int NbGlobals; /* Nb global customs info */ - Cust_Info **globals; /* Customs info */ - FE_Table **fe_section_list; /* All sub-section in mapping file */ -} FE_Context; - -/* Entries values definition */ -/* Instance values definition */ -typedef struct _fe_values { - int Length; - void *Val; -} FE_Values; - -/* Attribute value definition */ -typedef struct _fe_attr { - char *AttrType; - int NbInstance; - FE_Values **ValInstances; -} FE_Attr; - -/* Full entry definition */ -typedef struct _fe_entry { - char *DN; - int Nb_items; - FE_Attr **AttributesArray; -} FE_Entry; - -typedef struct _fe_couple { - char *Value2Subst; - char *SubstValue; -} FE_Couple; - -/* - * libfe.a exported functions - */ - -/* - * Read config file and create "fe_name" context - * NB : This init read all tables mapping - * libldap context use : before all action - */ -extern FE_Context *fe_ctx_init(char *config_path, char *fe_name); - -/* - * Free All fe context all tables ... - * libldap context usage : ldap_close - */ -extern int fe_ctx_free(FE_Context **Ctx); - -/* - * Return the pointer to requested item in context - * libldap context usage : before all action - */ -extern void *fe_ctx_get(FE_Context *Ctx, int FieldID, void *Value); - -/* - * Search for information from Subsection/Table ? - * You can check also Get/Table/Paragraph - * libldap context usage : ldap_* - */ -extern void *fe_table_get(FE_Table *MapTable, int FieldID, void *Void); - -/* - * Set tables item is mainly used for communication items. other information - * sets will be forbid - * libldap context usage : after ldap_open or ldap_bind - */ -/* -extern int fe_table_set(FE_Table *MapTable, int FieldID, void *Void); -*/ -/* - * You have the attribute name ?! fe_ent_get_attr returns pointer to the requested - * attributes with instances, status... from a specific entry - * libldap context usage : after ldap_search - */ -extern FE_Attr *fe_ent_get_attr(FE_Table *MapTable, FE_Entry *fe_item, char *AttrName); - -/* - * Create the entry according to the "schema" defined in mapping file for a specific table - * libladp context usage : before ldap_add - */ -extern FE_Entry *fe_ent_create(FE_Table *MapTable, int TableType); - -/* - * Add new attributes in a new entry - * libladp context usage : before ldap_add - */ -extern FE_Attr *fe_ent_get_attr(FE_Table *MapTable,FE_Entry *Entry, char *AttrName); - -/* - * Add new instance value - * libladp context usage : before ldap_add - */ -extern int fe_ent_add_val(FE_Table *MapTable, FE_Attr *attr, int ValLength, void *Val); -extern FE_Attr *fe_ent_add_attr_val(FE_Table *MapTable, FE_Entry *Entry, char *AttrName, int ValLength, void *Val); - -/* - * explode DN into an attributes array - * libladp context usage : after ldap_search - */ -extern FE_Attr **fe_ent_show_dn(FE_Table *MapTable, FE_Entry *Entry); - -/* - * free entry (including attributes) - */ -extern void fe_ent_free(FE_Entry **Entry); - -/* - * Substitute all vars defined in inputString (with syntax ${varName}) by values found in - * fe_couple array. For errors returned check the errors consts upper - */ -extern int fe_subst(char *inputString, char **outputString, FE_Couple **fe_couple); - -/* - * Split a sentence, add prefix (for each token) and suffix (exept for the last) - */ -extern char *fe_split(char *inputData, char *Separator, char *Prefix, char *Suffix, int way ); - -/* - * Dynamic translation, use only definition in dynamic section - */ -extern char **fe_dynamic(FE_Table *MapTable, char *Var2stop, char **DynVal); - -/* - * Return the translated attribute. TableType is the original table of AttrName. - * if translation rules is one to one translation, the function return a copy of translated - * attribute name. - * else the function return a copy of the rules - */ -extern char **fe_trans_attrName(FE_Table *MapTable, char *AttrName, int TableType); -extern int *fe_trans_attrID(FE_Table *MapTable, char *AttrName, int TableType); - -/* - * Return the translated SD entry - * libladp context usage : after ldap_search - */ -extern FE_Entry *fe_trans_all_sds2fe(FE_Table *MapTable, LDAP *ld, LDAPMessage *sd_entry); - -/* - * Return the translated FE entry - * libladp context usage : after ldap_search - */ -extern LDAPMod **fe_trans_all_fe2sds(FE_Table *MapTable, LDAP *ld, FE_Entry *fe_entry); - -/* - * Close to "fe_trans_all_sds2fe" but output is Entry pointer as defined in SunDS server - */ -extern FE_Entry *fe_trans_all_sunds2fe(FE_Table *MapTable, Entry *sd_entry); -extern Entry *fe_trans_all_fe2sunds(FE_Table *MapTable, FE_Entry *fe_entry); - -/* An example an example .... - * Translation from fe to sunds - * - * FE_Context *MyContext = NULL; - * FE_Table *HostTable = NULL; - * FE_Entry *fe_entry = NULL; - * FE_Attr *fe_attr = NULL; - * Entry *lentry = NULL; - * - * if((MyContext = fe_ctx_init("..../sunds_map.conf","NIS")) == NULL){ - * ldaplog(LDAP_DEBUG_CONFIG,"Can't load mapping file\n", 0, 0, 0); - * exit(1); - * } - * if((HostTable = fe_ctx_get(MyContext,CTX_TABLEPTR,"dummy")) == NULL) - * { - * ldaplog(LDAP_DEBUG_CONFIG,"Can't retreive HOSTS table\n", 0, 0, 0); - * exit(1); - * } - * if((fe_entry = fe_ent_create(HostTable, FETABLE))==NULL) - * { - * ldaplog(LDAP_DEBUG_CONFIG,"Can't create entry\n", 0, 0, 0); - * exit(1); - * } - * if ((fe_attr = fe_ent_add_attr_val(HostTable, fe_entry, "niskey", 16, "109.107.179.131")) == NULL) - * { - * ldaplog(LDAP_DEBUG_CONFIG,"Can't add attr=%s, val=%s\n", "niskey", "109.107.179.131", 0); - * exit(1); - * } - * if((fe_attr = fe_ent_add_attr_val(HostTable, - * fe_entry, - * "NISVALUE", - * strlen("olivaw OLIVAW oLiVaW # regis Host") +1, - * "olivaw OLIVAW oLiVaW # regis Host")) == NULL) - * { - * ldaplog(...); - * exit(1); - * } - * if((lentry = fe_trans_all_fe2sunds(HostTable, fe_entry)) ==NULL) - * { - * ldaplog(LDAP_DEBUG_CONFIG,".... \n", 0); - * } - * - */ - -#endif /* _FE_H */ - - - - |