Arthur de Jong

Open Source / Free Software developer

summaryrefslogtreecommitdiffstats
path: root/nslcd/attmap.c
diff options
context:
space:
mode:
Diffstat (limited to 'nslcd/attmap.c')
-rw-r--r--nslcd/attmap.c177
1 files changed, 19 insertions, 158 deletions
diff --git a/nslcd/attmap.c b/nslcd/attmap.c
index bec4a51..f3cd025 100644
--- a/nslcd/attmap.c
+++ b/nslcd/attmap.c
@@ -27,173 +27,42 @@
#include "attmap.h"
-
const char *attmap_objectClass = "objectClass";
-
-/**
- * Vendor-specific attributes and object classes.
- * (Mainly from Sun.)
- * ( 1.3.6.1.4.1.42.2.27.1.2.5 NAME 'nisMailAlias' SUP top STRUCTURAL
- * DESC 'NIS mail alias'
- * MUST cn
- * MAY rfc822MailMember )
- */
-const char *attmap_alias_objectClass = "nisMailAlias";
-const char *attmap_alias_cn = "cn";
-const char *attmap_alias_rfc822MailMember = "rfc822MailMember";
-
-/*
- * ( nisSchema.2.11 NAME 'ieee802Device' SUP top AUXILIARY
- * DESC 'A device with a MAC address; device SHOULD be
- * used as a structural class'
- * MAY macAddress )
- */
-const char *attmap_ether_objectClass = "ieee802Device";
-const char *attmap_ether_cn = "cn";
-const char *attmap_ether_macAddress = "macAddress";
-
-/*
- * ( nisSchema.2.2 NAME 'posixGroup' SUP top STRUCTURAL
- * DESC 'Abstraction of a group of accounts'
- * MUST ( cn $ gidNumber )
- * MAY ( userPassword $ uidMember $ description ) )
- */
-const char *attmap_group_objectClass = "posixGroup";
-const char *attmap_group_cn = "cn";
-const char *attmap_group_userPassword = "userPassword";
-const char *attmap_group_gidNumber = "gidNumber";
-const char *attmap_group_memberUid = "memberUid";
-const char *attmap_group_uniqueMember = "uniqueMember";
-const char *attmap_group_memberOf = "memberOf";
-
-/*
- * ( nisSchema.2.6 NAME 'ipHost' SUP top AUXILIARY
- * DESC 'Abstraction of a host, an IP device. The distinguished
- * value of the cn attribute denotes the host's canonical
- * name. Device SHOULD be used as a structural class'
- * MUST ( cn $ ipHostNumber )
- * MAY ( l $ description $ manager ) )
- */
-const char *attmap_host_objectClass = "ipHost";
-const char *attmap_host_cn = "cn";
-const char *attmap_host_ipHostNumber = "ipHostNumber";
-
-/*
- * ( nisSchema.2.8 NAME 'nisNetgroup' SUP top STRUCTURAL
- * DESC 'Abstraction of a netgroup. May refer to other netgroups'
- * MUST cn
- * MAY ( nisNetgroupTriple $ memberNisNetgroup $ description ) )
- */
-const char *attmap_netgroup_objectClass = "nisNetgroup";
-const char *attmap_netgroup_cn = "cn";
-const char *attmap_netgroup_nisNetgroupTriple = "nisNetgroupTriple";
-const char *attmap_netgroup_memberNisNetgroup = "memberNisNetgroup";
-
-/*
- * ( nisSchema.2.7 NAME 'ipNetwork' SUP top STRUCTURAL
- * DESC 'Abstraction of a network. The distinguished value of
- * MUST ( cn $ ipNetworkNumber )
- * MAY ( ipNetmaskNumber $ l $ description $ manager ) )
- */
-const char *attmap_network_objectClass = "ipNetwork";
-const char *attmap_network_cn = "cn";
-const char *attmap_network_ipNetworkNumber = "ipNetworkNumber";
-/*const char *attmap_network_ipNetmaskNumber = "ipNetmaskNumber"; */
-
-/*
- * ( nisSchema.2.0 NAME 'posixAccount' SUP top AUXILIARY
- * DESC 'Abstraction of an account with POSIX attributes'
- * MUST ( cn $ uid $ uidNumber $ gidNumber $ homeDirectory )
- * MAY ( userPassword $ loginShell $ gecos $ description ) )
- */
-const char *attmap_passwd_objectClass = "posixAccount";
-const char *attmap_passwd_uid = "uid";
-const char *attmap_passwd_userPassword = "userPassword";
-const char *attmap_passwd_uidNumber = "uidNumber";
-const char *attmap_passwd_gidNumber = "gidNumber";
-const char *attmap_passwd_gecos = "gecos";
-const char *attmap_passwd_cn = "cn";
-const char *attmap_passwd_homeDirectory = "homeDirectory";
-const char *attmap_passwd_loginShell = "loginShell";
-
-/*
- * ( nisSchema.2.4 NAME 'ipProtocol' SUP top STRUCTURAL
- * DESC 'Abstraction of an IP protocol. Maps a protocol number
- * to one or more names. The distinguished value of the cn
- * attribute denotes the protocol's canonical name'
- * MUST ( cn $ ipProtocolNumber )
- * MAY description )
- */
-const char *attmap_protocol_objectClass = "ipProtocol";
-const char *attmap_protocol_cn = "cn";
-const char *attmap_protocol_ipProtocolNumber = "ipProtocolNumber";
-
-/*
- * ( nisSchema.2.5 NAME 'oncRpc' SUP top STRUCTURAL
- * DESC 'Abstraction of an Open Network Computing (ONC)
- * [RFC1057] Remote Procedure Call (RPC) binding.
- * This class maps an ONC RPC number to a name.
- * The distinguished value of the cn attribute denotes
- * the RPC service's canonical name'
- * MUST ( cn $ oncRpcNumber )
- * MAY description )
- */
-const char *attmap_rpc_objectClass = "oncRpc";
-const char *attmap_rpc_cn = "cn";
-const char *attmap_rpc_oncRpcNumber = "oncRpcNumber";
-
-/*
- * ( nisSchema.2.3 NAME 'ipService' SUP top STRUCTURAL
- * DESC 'Abstraction an Internet Protocol service.
- * Maps an IP port and protocol (such as tcp or udp)
- * to one or more names; the distinguished value of
- * the cn attribute denotes the service's canonical
- * name'
- * MUST ( cn $ ipServicePort $ ipServiceProtocol )
- * MAY ( description ) )
- */
-const char *attmap_service_objectClass = "ipService";
-const char *attmap_service_cn = "cn";
-const char *attmap_service_ipServicePort = "ipServicePort";
-const char *attmap_service_ipServiceProtocol = "ipServiceProtocol";
-
-/*
- * ( nisSchema.2.1 NAME 'shadowAccount' SUP top AUXILIARY
- * DESC 'Additional attributes for shadow passwords'
- * MUST uid
- * MAY ( userPassword $ shadowLastChange $ shadowMin
- * shadowMax $ shadowWarning $ shadowInactive $
- * shadowExpire $ shadowFlag $ description ) )
- */
-const char *attmap_shadow_objectClass = "shadowAccount";
-const char *attmap_shadow_uid = "uid";
-const char *attmap_shadow_userPassword = "userPassword";
-const char *attmap_shadow_shadowLastChange = "shadowLastChange";
-const char *attmap_shadow_shadowMin = "shadowMin";
-const char *attmap_shadow_shadowMax = "shadowMax";
-const char *attmap_shadow_shadowWarning = "shadowWarning";
-const char *attmap_shadow_shadowInactive = "shadowInactive";
-const char *attmap_shadow_shadowExpire = "shadowExpire";
-const char *attmap_shadow_shadowFlag = "shadowFlag";
+const char **filter_get_var(enum ldap_map_selector map)
+{
+ switch (map)
+ {
+ case LM_ALIASES: return &alias_filter;
+ case LM_ETHERS: return &ether_filter;
+ case LM_GROUP: return &group_filter;
+ case LM_HOSTS: return &host_filter;
+ case LM_NETGROUP: return &netgroup_filter;
+ case LM_NETWORKS: return &network_filter;
+ case LM_PASSWD: return &passwd_filter;
+ case LM_PROTOCOLS: return &protocol_filter;
+ case LM_RPC: return &rpc_filter;
+ case LM_SERVICES: return &service_filter;
+ case LM_SHADOW: return &shadow_filter;
+ case LM_NONE:
+ default: return NULL;
+ }
+}
const char **attmap_get_var(enum ldap_map_selector map,const char *name)
{
if (map==LM_ALIASES)
{
- if (strcasecmp(name,"objectClass")==0) return &attmap_alias_objectClass;
if (strcasecmp(name,"cn")==0) return &attmap_alias_cn;
if (strcasecmp(name,"rfc822MailMember")==0) return &attmap_alias_rfc822MailMember;
}
else if (map==LM_ETHERS)
{
- if (strcasecmp(name,"objectClass")==0) return &attmap_ether_objectClass;
if (strcasecmp(name,"cn")==0) return &attmap_ether_cn;
if (strcasecmp(name,"macAddress")==0) return &attmap_ether_macAddress;
}
else if (map==LM_GROUP)
{
- if (strcasecmp(name,"objectClass")==0) return &attmap_group_objectClass;
if (strcasecmp(name,"cn")==0) return &attmap_group_cn;
if (strcasecmp(name,"userPassword")==0) return &attmap_group_userPassword;
if (strcasecmp(name,"gidNumber")==0) return &attmap_group_gidNumber;
@@ -203,26 +72,22 @@ const char **attmap_get_var(enum ldap_map_selector map,const char *name)
}
else if (map==LM_HOSTS)
{
- if (strcasecmp(name,"objectClass")==0) return &attmap_host_objectClass;
if (strcasecmp(name,"cn")==0) return &attmap_host_cn;
if (strcasecmp(name,"ipHostNumber")==0) return &attmap_host_ipHostNumber;
}
else if (map==LM_NETGROUP)
{
- if (strcasecmp(name,"objectClass")==0) return &attmap_netgroup_objectClass;
if (strcasecmp(name,"cn")==0) return &attmap_netgroup_cn;
if (strcasecmp(name,"nisNetgroupTriple")==0) return &attmap_netgroup_nisNetgroupTriple;
if (strcasecmp(name,"memberNisNetgroup")==0) return &attmap_netgroup_memberNisNetgroup;
}
else if (map==LM_NETWORKS)
{
- if (strcasecmp(name,"objectClass")==0) return &attmap_network_objectClass;
if (strcasecmp(name,"cn")==0) return &attmap_network_cn;
if (strcasecmp(name,"ipNetworkNumber")==0) return &attmap_network_ipNetworkNumber;
}
else if (map==LM_PASSWD)
{
- if (strcasecmp(name,"objectClass")==0) return &attmap_passwd_objectClass;
if (strcasecmp(name,"uid")==0) return &attmap_passwd_uid;
if (strcasecmp(name,"userPassword")==0) return &attmap_passwd_userPassword;
if (strcasecmp(name,"uidNumber")==0) return &attmap_passwd_uidNumber;
@@ -234,26 +99,22 @@ const char **attmap_get_var(enum ldap_map_selector map,const char *name)
}
else if (map==LM_PROTOCOLS)
{
- if (strcasecmp(name,"objectClass")==0) return &attmap_protocol_objectClass;
if (strcasecmp(name,"cn")==0) return &attmap_protocol_cn;
if (strcasecmp(name,"ipProtocolNumber")==0) return &attmap_protocol_ipProtocolNumber;
}
else if (map==LM_RPC)
{
- if (strcasecmp(name,"objectClass")==0) return &attmap_rpc_objectClass;
if (strcasecmp(name,"cn")==0) return &attmap_rpc_cn;
if (strcasecmp(name,"oncRpcNumber")==0) return &attmap_rpc_oncRpcNumber;
}
else if (map==LM_SERVICES)
{
- if (strcasecmp(name,"objectClass")==0) return &attmap_service_objectClass;
if (strcasecmp(name,"cn")==0) return &attmap_service_cn;
if (strcasecmp(name,"ipServicePort")==0) return &attmap_service_ipServicePort;
if (strcasecmp(name,"ipServiceProtocol")==0) return &attmap_service_ipServiceProtocol;
}
else if (map==LM_SHADOW)
{
- if (strcasecmp(name,"objectClass")==0) return &attmap_shadow_objectClass;
if (strcasecmp(name,"uid")==0) return &attmap_shadow_uid;
if (strcasecmp(name,"userPassword")==0) return &attmap_shadow_userPassword;
if (strcasecmp(name,"shadowLastChange")==0) return &attmap_shadow_shadowLastChange;