1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
|
/** BEGIN COPYRIGHT BLOCK
* Copyright 2001 Sun Microsystems, Inc.
* Portions copyright 1999, 2001-2003 Netscape Communications Corporation.
* All rights reserved.
* END COPYRIGHT BLOCK **/
/* tel.c - telephonenumber syntax routines */
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include "syntax.h"
static int tel_filter_ava( Slapi_PBlock *pb, struct berval *bvfilter,
Slapi_Value **bvals, int ftype, Slapi_Value **retVal );
static int tel_filter_sub( Slapi_PBlock *pb, char *initial, char **any,
char *final, Slapi_Value **bvals );
static int tel_values2keys( Slapi_PBlock *pb, Slapi_Value **val,
Slapi_Value ***ivals, int ftype );
static int tel_assertion2keys_ava( Slapi_PBlock *pb, Slapi_Value *val,
Slapi_Value ***ivals, int ftype );
static int tel_assertion2keys_sub( Slapi_PBlock *pb, char *initial, char **any,
char *final, Slapi_Value ***ivals );
static int tel_compare(struct berval *v1, struct berval *v2);
/* the first name is the official one from RFC 2252 */
static char *names[] = { "TelephoneNumber", "tel", TELEPHONE_SYNTAX_OID, 0 };
static Slapi_PluginDesc pdesc = { "tele-syntax", PLUGIN_MAGIC_VENDOR_STR, PRODUCTTEXT,
"telephoneNumber attribute syntax plugin" };
int
tel_init( Slapi_PBlock *pb )
{
int rc, flags;
LDAPDebug( LDAP_DEBUG_PLUGIN, "=> tel_init\n", 0, 0, 0 );
rc = slapi_pblock_set( pb, SLAPI_PLUGIN_VERSION,
(void *) SLAPI_PLUGIN_VERSION_01 );
rc |= slapi_pblock_set( pb, SLAPI_PLUGIN_DESCRIPTION,
(void *)&pdesc );
rc |= slapi_pblock_set( pb, SLAPI_PLUGIN_SYNTAX_FILTER_AVA,
(void *) tel_filter_ava );
rc |= slapi_pblock_set( pb, SLAPI_PLUGIN_SYNTAX_FILTER_SUB,
(void *) tel_filter_sub );
rc |= slapi_pblock_set( pb, SLAPI_PLUGIN_SYNTAX_VALUES2KEYS,
(void *) tel_values2keys );
rc |= slapi_pblock_set( pb, SLAPI_PLUGIN_SYNTAX_ASSERTION2KEYS_AVA,
(void *) tel_assertion2keys_ava );
rc |= slapi_pblock_set( pb, SLAPI_PLUGIN_SYNTAX_ASSERTION2KEYS_SUB,
(void *) tel_assertion2keys_sub );
flags = SLAPI_PLUGIN_SYNTAX_FLAG_ORDERING;
rc |= slapi_pblock_set( pb, SLAPI_PLUGIN_SYNTAX_FLAGS,
(void *) &flags );
rc |= slapi_pblock_set( pb, SLAPI_PLUGIN_SYNTAX_NAMES,
(void *) names );
rc |= slapi_pblock_set( pb, SLAPI_PLUGIN_SYNTAX_OID,
(void *) TELEPHONE_SYNTAX_OID );
rc |= slapi_pblock_set( pb, SLAPI_PLUGIN_SYNTAX_COMPARE,
(void *) tel_compare );
LDAPDebug( LDAP_DEBUG_PLUGIN, "<= tel_init %d\n", rc, 0, 0 );
return( rc );
}
static int
tel_filter_ava(
Slapi_PBlock *pb,
struct berval *bvfilter,
Slapi_Value **bvals,
int ftype,
Slapi_Value **retVal
)
{
return( string_filter_ava( bvfilter, bvals, SYNTAX_TEL | SYNTAX_CIS,
ftype, retVal ) );
}
static int
tel_filter_sub(
Slapi_PBlock *pb,
char *initial,
char **any,
char *final,
Slapi_Value **bvals
)
{
return( string_filter_sub( pb, initial, any, final, bvals, SYNTAX_TEL | SYNTAX_CIS ) );
}
static int
tel_values2keys(
Slapi_PBlock *pb,
Slapi_Value **vals,
Slapi_Value ***ivals,
int ftype
)
{
return( string_values2keys( pb, vals, ivals, SYNTAX_TEL | SYNTAX_CIS,
ftype ) );
}
static int
tel_assertion2keys_ava(
Slapi_PBlock *pb,
Slapi_Value *val,
Slapi_Value ***ivals,
int ftype
)
{
return(string_assertion2keys_ava( pb, val, ivals,
SYNTAX_TEL | SYNTAX_CIS, ftype ));
}
static int
tel_assertion2keys_sub(
Slapi_PBlock *pb,
char *initial,
char **any,
char *final,
Slapi_Value ***ivals
)
{
return( string_assertion2keys_sub( pb, initial, any, final, ivals,
SYNTAX_TEL | SYNTAX_CIS ) );
}
static int tel_compare(
struct berval *v1,
struct berval *v2
)
{
return value_cmp(v1, v2, SYNTAX_TEL|SYNTAX_CIS, 3 /* Normalise both values */);
}
|