]> git.sur5r.net Git - openldap/log
openldap
14 years agoITS#6486 - avoid explicit moduleload in examples
Howard Chu [Wed, 3 Mar 2010 20:47:25 +0000 (20:47 +0000)]
ITS#6486 - avoid explicit moduleload in examples

14 years agoFix compare checking in pam_authz
Howard Chu [Wed, 3 Mar 2010 19:30:58 +0000 (19:30 +0000)]
Fix compare checking in pam_authz

14 years agoLookup user DN in pam_authz if it was not provided
Howard Chu [Wed, 3 Mar 2010 00:47:28 +0000 (00:47 +0000)]
Lookup user DN in pam_authz if it was not provided

14 years agoFix pam_authz parameter input
Howard Chu [Wed, 3 Mar 2010 00:15:04 +0000 (00:15 +0000)]
Fix pam_authz parameter input

14 years agoITS#6473 fail delta-sync when unknown attrs are received
Howard Chu [Tue, 2 Mar 2010 21:45:25 +0000 (21:45 +0000)]
ITS#6473 fail delta-sync when unknown attrs are received

14 years agoITS#6484 - cache DB needs to release its own entries
Howard Chu [Tue, 2 Mar 2010 21:29:32 +0000 (21:29 +0000)]
ITS#6484 - cache DB needs to release its own entries

14 years agoignore non-critical control with unrecognized flags (ITS#6480)
Pierangelo Masarati [Mon, 22 Feb 2010 21:53:38 +0000 (21:53 +0000)]
ignore non-critical control with unrecognized flags (ITS#6480)

14 years agoBring back destructor, to keep ABI compatibile (at least for now)
Ralf Haferkamp [Fri, 19 Feb 2010 14:02:32 +0000 (14:02 +0000)]
Bring back destructor, to keep ABI compatibile (at least for now)

14 years agoExample for TlsOptions usage
Ralf Haferkamp [Thu, 18 Feb 2010 16:46:23 +0000 (16:46 +0000)]
Example for TlsOptions usage

14 years agoexclude some internal structs from documentation
Ralf Haferkamp [Thu, 18 Feb 2010 16:24:41 +0000 (16:24 +0000)]
exclude some internal structs from documentation

14 years agoTlsOptions documentation
Ralf Haferkamp [Thu, 18 Feb 2010 16:23:40 +0000 (16:23 +0000)]
TlsOptions documentation

14 years agoHide internal use only constructor
Ralf Haferkamp [Thu, 18 Feb 2010 16:22:49 +0000 (16:22 +0000)]
Hide internal use only constructor

14 years agofix return
Pierangelo Masarati [Wed, 17 Feb 2010 20:08:07 +0000 (20:08 +0000)]
fix return

14 years agomethod to renew the tlsctx
Ralf Haferkamp [Tue, 16 Feb 2010 17:48:14 +0000 (17:48 +0000)]
method to renew the tlsctx

14 years agoMake TlsOptions accessible per connection
Ralf Haferkamp [Tue, 16 Feb 2010 17:47:05 +0000 (17:47 +0000)]
Make TlsOptions accessible per connection

14 years agouse const where appropriate
Ralf Haferkamp [Tue, 16 Feb 2010 17:44:22 +0000 (17:44 +0000)]
use const where appropriate

14 years agoremoved buggy destructor, use default instead
Ralf Haferkamp [Tue, 16 Feb 2010 15:20:05 +0000 (15:20 +0000)]
removed buggy destructor, use default instead

14 years agofixed start_tls() error handling
Ralf Haferkamp [Tue, 16 Feb 2010 15:17:53 +0000 (15:17 +0000)]
fixed start_tls() error handling

14 years agosilenced compiler warning
Ralf Haferkamp [Tue, 16 Feb 2010 11:55:33 +0000 (11:55 +0000)]
silenced compiler warning

14 years agouninitialized variable
Ralf Haferkamp [Tue, 16 Feb 2010 11:55:05 +0000 (11:55 +0000)]
uninitialized variable

14 years agoautomake changes for TlsOptions
Ralf Haferkamp [Mon, 15 Feb 2010 17:24:45 +0000 (17:24 +0000)]
automake changes for TlsOptions

14 years agoNew class "TlsOptions" to handle TLS/SSL related settings
Ralf Haferkamp [Mon, 15 Feb 2010 17:17:42 +0000 (17:17 +0000)]
New class "TlsOptions" to handle TLS/SSL related settings

14 years agotab<->spaces cleanup
Ralf Haferkamp [Mon, 15 Feb 2010 17:07:46 +0000 (17:07 +0000)]
tab<->spaces cleanup

14 years agoITS#6467, use memcpy instead for strcpy when copying across array
Ralf Haferkamp [Mon, 15 Feb 2010 15:25:47 +0000 (15:25 +0000)]
ITS#6467, use memcpy instead for strcpy when copying across array
boundaries. To account for stricter checks when using -D_FORTIFY_SOURCE=2
with GCC 4.5

14 years agoreduce code duplication
Pierangelo Masarati [Fri, 12 Feb 2010 08:55:34 +0000 (08:55 +0000)]
reduce code duplication

14 years agoITS#6469, don't touch op_attrs when updatedn is modifying contextCSN
Ralf Haferkamp [Fri, 5 Feb 2010 11:49:49 +0000 (11:49 +0000)]
ITS#6469, don't touch op_attrs when updatedn is modifying contextCSN

14 years agoAdd minimal doc for pbind overlay. Note both chain and pbind are built in
Howard Chu [Thu, 4 Feb 2010 04:11:17 +0000 (04:11 +0000)]
Add minimal doc for pbind overlay. Note both chain and pbind are built in
to back-ldap.

14 years agoAdd pbind proxybind overlay. Just intercepts Bind requests on a regular DB
Howard Chu [Thu, 4 Feb 2010 01:59:58 +0000 (01:59 +0000)]
Add pbind proxybind overlay. Just intercepts Bind requests on a regular DB
and proxies them to a remote server.

14 years agoConnTTL, NetworkTimeout, and ProtocolVersion were missing from the
Howard Chu [Thu, 4 Feb 2010 01:02:51 +0000 (01:02 +0000)]
ConnTTL, NetworkTimeout, and ProtocolVersion were missing from the
config OC, thus inaccessible from cn=config

14 years agoITS#6468: Implement bi_access_allowed.
Rein Tollevik [Tue, 2 Feb 2010 15:51:32 +0000 (15:51 +0000)]
ITS#6468: Implement bi_access_allowed.

14 years agoITS#6465, don't unparse empty uri string
Ralf Haferkamp [Tue, 2 Feb 2010 14:43:21 +0000 (14:43 +0000)]
ITS#6465, don't unparse empty uri string

14 years agoITS#6466 certificateListValidate: Empty Sequence-of is legal
Howard Chu [Sat, 30 Jan 2010 23:32:50 +0000 (23:32 +0000)]
ITS#6466 certificateListValidate: Empty Sequence-of is legal

14 years agoSet res parameter to NULL upon ldap_search_ext_s entry. Likewise for friends.
Kurt Zeilenga [Fri, 29 Jan 2010 23:11:24 +0000 (23:11 +0000)]
Set res parameter to NULL upon ldap_search_ext_s entry.  Likewise for friends.
Note in manual that res parameter should be freed regardless of return value
of ldap_search_ext_s (or friends).

14 years agoskip the serial, whatever its length (ITS#6460)
Pierangelo Masarati [Sun, 24 Jan 2010 19:16:57 +0000 (19:16 +0000)]
skip the serial, whatever its length (ITS#6460)

14 years agoplugged one time memory leak (found with valgrind)
Ralf Haferkamp [Fri, 22 Jan 2010 18:01:25 +0000 (18:01 +0000)]
plugged one time memory leak (found with valgrind)

14 years agoPlugged memory leak. Syncentry wasn't free'd when sending
Ralf Haferkamp [Thu, 21 Jan 2010 13:33:21 +0000 (13:33 +0000)]
Plugged memory leak. Syncentry wasn't free'd when sending
LDAP_SYNC_NEW_COOKIE intermediate results. (ITS#6459)

14 years agoimplement support for selective iteration in slaptools (ITS#6442)
Pierangelo Masarati [Mon, 18 Jan 2010 15:00:40 +0000 (15:00 +0000)]
implement support for selective iteration in slaptools (ITS#6442)

14 years agosync with code
Pierangelo Masarati [Mon, 18 Jan 2010 14:52:41 +0000 (14:52 +0000)]
sync with code

14 years agoGentler message when falling back to ch_malloc
Hallvard Furuseth [Fri, 15 Jan 2010 18:53:13 +0000 (18:53 +0000)]
Gentler message when falling back to ch_malloc

14 years agodn2id_lock is no longer needed
Howard Chu [Mon, 11 Jan 2010 22:14:15 +0000 (22:14 +0000)]
dn2id_lock is no longer needed

14 years agoITS#6441 cyrus-sasl 2.1.24 auxprop_lookup plugin returns status.
Rein Tollevik [Wed, 6 Jan 2010 13:55:35 +0000 (13:55 +0000)]
ITS#6441 cyrus-sasl 2.1.24 auxprop_lookup plugin returns status.

14 years agoITS#6437 FORCED COMMIT: 1.62's Ensure Align >= sizeof(ber_len_t) anticipated
Hallvard Furuseth [Wed, 6 Jan 2010 09:14:08 +0000 (09:14 +0000)]
ITS#6437 FORCED COMMIT: 1.62's Ensure Align >= sizeof(ber_len_t) anticipated
1.64 sl_malloc()'s size=(size +...+ Align-1 + !size)... to make room for tail.

14 years agoITS#6437: Fix pool version misalignment: It aligned heads, not returned blocks
Hallvard Furuseth [Tue, 5 Jan 2010 23:31:14 +0000 (23:31 +0000)]
ITS#6437: Fix pool version misalignment: It aligned heads, not returned blocks

14 years agoITS#6437, move structs slab_object and slab_heap from slap.h to sl_malloc.c
Hallvard Furuseth [Tue, 5 Jan 2010 23:14:14 +0000 (23:14 +0000)]
ITS#6437, move structs slab_object and slab_heap from slap.h to sl_malloc.c

14 years agoITS#6437, save space: Do not allocate the tail, except if size==0.
Hallvard Furuseth [Tue, 5 Jan 2010 22:11:24 +0000 (22:11 +0000)]
ITS#6437, save space: Do not allocate the tail, except if size==0.
Store a tail only in freed blocks.  (Alignment ensures there will
be room.)  Put the freed mark in next block's head.

14 years agoITS#6437 cleanup (noop patch): Join SLAP_NO_SL_MALLOC code with identical
Hallvard Furuseth [Tue, 5 Jan 2010 19:40:28 +0000 (19:40 +0000)]
ITS#6437 cleanup (noop patch): Join SLAP_NO_SL_MALLOC code with identical
ctx==NULL code.  Add enum No_sl_malloc to avoid #ifdef SLAP_NO_SL_MALLOC.

14 years agoITS#6437, follow up previous fixes:
Hallvard Furuseth [Tue, 5 Jan 2010 19:25:28 +0000 (19:25 +0000)]
ITS#6437, follow up previous fixes:
Ensure Align >= sizeof(ber_len_t), to clarify the code's requirements.
Rearrange a slap_sl_malloc() branch to factor out ch_malloc fallbacks.
Fix range check (ptr+size >= endptr) -> (size >= endptr-ptr).  Fix debug msg.

14 years agoITS#6438 check for redundant syncops_free() ?
Howard Chu [Tue, 5 Jan 2010 03:50:10 +0000 (03:50 +0000)]
ITS#6438 check for redundant syncops_free() ?

14 years agoAdd comments
Hallvard Furuseth [Sat, 2 Jan 2010 23:42:31 +0000 (23:42 +0000)]
Add comments

14 years agoITS#6437, slap_sl_calloc():
Hallvard Furuseth [Sat, 2 Jan 2010 22:53:22 +0000 (22:53 +0000)]
ITS#6437, slap_sl_calloc():
Check count*size overflow. Omit slap_sl_malloc failure check, it cannot fail.

14 years agoITS#6437, failure/fallback/debug handling:
Hallvard Furuseth [Sat, 2 Jan 2010 22:41:41 +0000 (22:41 +0000)]
ITS#6437, failure/fallback/debug handling:
slap_sl_malloc could return failure. Exit instead, like the rest of sl_malloc.
Since we increase size, reduce it before Debug() and/or fallback to ch_malloc.
Debug() before exit() on failure.  Tweak debug formats and a comment.

14 years agoITS#6437 cleanup (noop change):
Hallvard Furuseth [Sat, 2 Jan 2010 22:03:48 +0000 (22:03 +0000)]
ITS#6437 cleanup (noop change):
Move thread/nothread code to macros SET_MEMCTX()/GET_MEMCTX().
Rename some thread/memory contexts 'ctx' to thrctx/memctx to avoid confusion.

14 years agoITS#6437, fixes for stack implementation of slap_sl_realloc():
Hallvard Furuseth [Sat, 2 Jan 2010 21:39:46 +0000 (21:39 +0000)]
ITS#6437, fixes for stack implementation of slap_sl_realloc():
Preserve 2*int alignment on hosts where sizeof(int) == sizeof(ber_len_t).
If realloc of last block falls back to ch_malloc, free last block properly.
Fix range check (ptr + size < endptr) --> (size < endptr - ptr).

14 years agoITS#6437: Fix alignment after slap_sl_realloc().
Hallvard Furuseth [Sat, 2 Jan 2010 21:05:11 +0000 (21:05 +0000)]
ITS#6437: Fix alignment after slap_sl_realloc().
Also use -Align instead of ~pad: Valid also for non-twos complement.

14 years agoITS#6437 cleanup (noop change): Simplify slap_sl_free() code reclaiming space
Hallvard Furuseth [Sat, 2 Jan 2010 18:42:33 +0000 (18:42 +0000)]
ITS#6437 cleanup (noop change): Simplify slap_sl_free() code reclaiming space

14 years agoITS#6437 cleanup (noop change): Compute pad,order_start at compile time
Hallvard Furuseth [Sat, 2 Jan 2010 18:27:51 +0000 (18:27 +0000)]
ITS#6437 cleanup (noop change): Compute pad,order_start at compile time

14 years agoITS#6437, slap_sl_mem_create():
Hallvard Furuseth [Sat, 2 Jan 2010 18:05:56 +0000 (18:05 +0000)]
ITS#6437, slap_sl_mem_create():
Bugfix: Switching implementation stack<->pool on an old context could
        crash or leak, it ran the wrong implementation's cleanup code.
Cleanup:  Factor out identical stack/pool code.  Call
          slap_sl_mem_destroy(NULL,) instead of copying its pool code.
API change: slap_sl_mem_destroy(key=NULL,) gets a new meaning.  Does
            not affect current OpenLDAP code, it never passed NULL.

14 years agoITS#6322 cleanup close_listeners()
Howard Chu [Wed, 30 Dec 2009 20:33:27 +0000 (20:33 +0000)]
ITS#6322 cleanup close_listeners()

14 years agoallow direct insert/delete of olcRwmMap (ITS#6436)
Pierangelo Masarati [Mon, 21 Dec 2009 18:58:21 +0000 (18:58 +0000)]
allow direct insert/delete of olcRwmMap (ITS#6436)

14 years agobetter fix to ITS#6434 (olcRwmMap needs work to allow atomic mods)
Pierangelo Masarati [Mon, 21 Dec 2009 17:32:05 +0000 (17:32 +0000)]
better fix to ITS#6434 (olcRwmMap needs work to allow atomic mods)

14 years agoITS#6435: Added optional SLAP_SCHEMA_EXPOSE define.
Rein Tollevik [Mon, 21 Dec 2009 17:28:45 +0000 (17:28 +0000)]
ITS#6435: Added optional SLAP_SCHEMA_EXPOSE define.

14 years agoITS#6434 (forced commit)
Pierangelo Masarati [Mon, 21 Dec 2009 13:06:52 +0000 (13:06 +0000)]
ITS#6434 (forced commit)

14 years agofix in-database configuration of olcRwmMap (no ITS# yet)
Pierangelo Masarati [Sun, 20 Dec 2009 18:31:08 +0000 (18:31 +0000)]
fix in-database configuration of olcRwmMap (no ITS# yet)

14 years agoplug one-time leaks
Pierangelo Masarati [Fri, 18 Dec 2009 19:07:16 +0000 (19:07 +0000)]
plug one-time leaks

14 years agoITS#6403: do not require *ent == NULL on entry to null_back_entry_get()
Hallvard Furuseth [Wed, 16 Dec 2009 09:12:48 +0000 (09:12 +0000)]
ITS#6403: do not require *ent == NULL on entry to null_back_entry_get()

14 years agoITS#6290 dynamic group documentation
Gavin Henry [Tue, 15 Dec 2009 13:09:34 +0000 (13:09 +0000)]
ITS#6290 dynamic group documentation

14 years ago(ITS#6382) Error in set example (groups of groups)
Gavin Henry [Tue, 15 Dec 2009 12:42:02 +0000 (12:42 +0000)]
(ITS#6382) Error in set example (groups of groups)

14 years agodeclaration after code (introduced by ITS#6428 fix)
Ralf Haferkamp [Fri, 11 Dec 2009 18:09:47 +0000 (18:09 +0000)]
declaration after code (introduced by ITS#6428 fix)

14 years agoRevert prev commit, wrong branch
Howard Chu [Fri, 11 Dec 2009 11:05:12 +0000 (11:05 +0000)]
Revert prev commit, wrong branch

14 years agoNew access_allowed()
Howard Chu [Fri, 11 Dec 2009 11:00:17 +0000 (11:00 +0000)]
New access_allowed()

14 years agoFix typo in last commit (ITS#5340: REP_ENTRY_MUSTFLUSH) ACLCHECK_0
Hallvard Furuseth [Thu, 10 Dec 2009 19:54:57 +0000 (19:54 +0000)]
Fix typo in last commit (ITS#5340: REP_ENTRY_MUSTFLUSH)

14 years agoFix rev 1.403 (ITS#6428): C90 does not accept mixed declarations and code
Hallvard Furuseth [Thu, 10 Dec 2009 19:53:10 +0000 (19:53 +0000)]
Fix rev 1.403 (ITS#6428): C90 does not accept mixed declarations and code

14 years agoITS#6428 fixes for olcTimeLimit
Ralf Haferkamp [Thu, 10 Dec 2009 14:57:12 +0000 (14:57 +0000)]
ITS#6428 fixes for olcTimeLimit

14 years agoglobal limits can also be set in "cn=config" (more forITS#6428)
Ralf Haferkamp [Thu, 10 Dec 2009 14:22:26 +0000 (14:22 +0000)]
global limits can also be set in "cn=config" (more forITS#6428)

14 years agoapply frontend limits when deleting olcSizeLimit from a database (more forITS#6428)
Ralf Haferkamp [Thu, 10 Dec 2009 13:07:13 +0000 (13:07 +0000)]
apply frontend limits when deleting olcSizeLimit from a database (more forITS#6428)

14 years agoITS#6428 apply global sizelimit changes to all databases
Ralf Haferkamp [Thu, 10 Dec 2009 11:56:52 +0000 (11:56 +0000)]
ITS#6428 apply global sizelimit changes to all databases

14 years agoITS#5340: REP_ENTRY_MUSTFLUSH, rs_replace_entry(), rs_ensure_entry_modifiable()
Hallvard Furuseth [Thu, 10 Dec 2009 00:07:34 +0000 (00:07 +0000)]
ITS#5340: REP_ENTRY_MUSTFLUSH, rs_replace_entry(), rs_ensure_entry_modifiable()

14 years agodocument keepalive (ITS#6389)
Pierangelo Masarati [Wed, 9 Dec 2009 12:35:49 +0000 (12:35 +0000)]
document keepalive (ITS#6389)

14 years agoITS#6425 fix uninit'd vars
Howard Chu [Wed, 9 Dec 2009 00:04:58 +0000 (00:04 +0000)]
ITS#6425 fix uninit'd vars

14 years agoguard against simultaneous REP_ENTRY_MUSTRELEASE and REP_ENTRY_MODIFIABLE (related...
Pierangelo Masarati [Tue, 8 Dec 2009 20:53:39 +0000 (20:53 +0000)]
guard against simultaneous REP_ENTRY_MUSTRELEASE and REP_ENTRY_MODIFIABLE (related to ITS#6423)

14 years agoissue a useful error message
Pierangelo Masarati [Tue, 8 Dec 2009 19:49:15 +0000 (19:49 +0000)]
issue a useful error message

14 years agoguard against simultaneous REP_ENTRY_MUSTRELEASE and REP_ENTRY_MODIFIABLE (ITS#6423)
Pierangelo Masarati [Tue, 8 Dec 2009 19:36:10 +0000 (19:36 +0000)]
guard against simultaneous REP_ENTRY_MUSTRELEASE and REP_ENTRY_MODIFIABLE (ITS#6423)

14 years agoITS#5810 undo last commit: s/^#${AC_null}#// would remove #mod#, not #nullmod#
Hallvard Furuseth [Tue, 8 Dec 2009 19:07:12 +0000 (19:07 +0000)]
ITS#5810 undo last commit: s/^#${AC_null}#// would remove #mod#, not #nullmod#

14 years agoITS#6424
Pierangelo Masarati [Tue, 8 Dec 2009 18:54:24 +0000 (18:54 +0000)]
ITS#6424

14 years agoITS#6418
Pierangelo Masarati [Tue, 8 Dec 2009 18:49:09 +0000 (18:49 +0000)]
ITS#6418

14 years agoremove REP_ENTRY_MUSTRELEASE when copying (ITS#6423)
Pierangelo Masarati [Tue, 8 Dec 2009 18:47:17 +0000 (18:47 +0000)]
remove REP_ENTRY_MUSTRELEASE when copying (ITS#6423)

14 years agoFix unparse in prev commit
Howard Chu [Tue, 8 Dec 2009 11:59:29 +0000 (11:59 +0000)]
Fix unparse in prev commit

14 years agoITS#6419 also init for ldaps:// URIs
Howard Chu [Tue, 8 Dec 2009 11:50:39 +0000 (11:50 +0000)]
ITS#6419 also init for ldaps:// URIs

14 years agolog about invalid URI (more about ITS#6421)
Pierangelo Masarati [Tue, 8 Dec 2009 01:34:22 +0000 (01:34 +0000)]
log about invalid URI (more about ITS#6421)

14 years agohandle simple filters with no brackets (ITS#6421)
Pierangelo Masarati [Tue, 8 Dec 2009 00:17:25 +0000 (00:17 +0000)]
handle simple filters with no brackets (ITS#6421)

14 years agoFix last commit, and also define AC_ldif
Hallvard Furuseth [Mon, 7 Dec 2009 21:19:47 +0000 (21:19 +0000)]
Fix last commit, and also define AC_ldif

14 years agoITS#6419 starttls keyword should trigger bindconf TLS settings
Howard Chu [Mon, 7 Dec 2009 20:06:54 +0000 (20:06 +0000)]
ITS#6419 starttls keyword should trigger bindconf TLS settings

14 years agoSupport back-null after all
Hallvard Furuseth [Sun, 6 Dec 2009 23:13:22 +0000 (23:13 +0000)]
Support back-null after all

14 years agoWait for central master to start after final restart.
Hallvard Furuseth [Sun, 6 Dec 2009 21:01:45 +0000 (21:01 +0000)]
Wait for central master to start after final restart.
Narrow tests for failed entry removal: 'RC = success' -> 'rc != noSuchObject'.

14 years agoFix typo "KILL -HUP" -> "kill -HUP" (after some failures)
Hallvard Furuseth [Sun, 6 Dec 2009 19:58:13 +0000 (19:58 +0000)]
Fix typo "KILL -HUP" -> "kill -HUP" (after some failures)

14 years agoSupport back-null
Hallvard Furuseth [Sun, 6 Dec 2009 16:08:13 +0000 (16:08 +0000)]
Support back-null

14 years agoUpdate aged test: recognize olcAddContentAcl,olcMonitoring,olcSyncUseSubentry
Hallvard Furuseth [Sun, 6 Dec 2009 14:54:09 +0000 (14:54 +0000)]
Update aged test: recognize olcAddContentAcl,olcMonitoring,olcSyncUseSubentry

14 years agoITS#5810: exclude instead of include backends, explain exclusion
Hallvard Furuseth [Sun, 6 Dec 2009 14:04:51 +0000 (14:04 +0000)]
ITS#5810: exclude instead of include backends, explain exclusion

14 years agoITS#5810: fix previous commit - skip back-null
Hallvard Furuseth [Sun, 6 Dec 2009 14:04:02 +0000 (14:04 +0000)]
ITS#5810: fix previous commit - skip back-null

14 years agoITS#5810: tweak previous commit - explain backend exclusion
Hallvard Furuseth [Sun, 6 Dec 2009 14:03:27 +0000 (14:03 +0000)]
ITS#5810: tweak previous commit - explain backend exclusion