+ {
+ ptr->distribution= (memcached_server_distribution)(data);
+ if (ptr->distribution == MEMCACHED_DISTRIBUTION_RANDOM)
+ {
+ srandom((uint32_t) time(NULL));
+ }
+ run_distribution(ptr);
+ break;
+ }
+ case MEMCACHED_BEHAVIOR_KETAMA:
+ {
+ if (data)
+ {
+ ptr->hash= MEMCACHED_HASH_MD5;
+ ptr->distribution= MEMCACHED_DISTRIBUTION_CONSISTENT_KETAMA;
+ }
+ else
+ {
+ ptr->hash= 0;
+ ptr->distribution= 0;
+ }
+ run_distribution(ptr);
+ break;
+ }
+ case MEMCACHED_BEHAVIOR_KETAMA_WEIGHTED:
+ {
+ ptr->hash= MEMCACHED_HASH_MD5;
+ ptr->distribution= MEMCACHED_DISTRIBUTION_CONSISTENT_KETAMA;
+ set_behavior_flag(ptr, MEM_KETAMA_WEIGHTED, data);
+ run_distribution(ptr);
+ break;
+ }
+ case MEMCACHED_BEHAVIOR_KETAMA_COMPAT_MODE:
+ switch (data)
+ {
+ case MEMCACHED_KETAMA_COMPAT_LIBMEMCACHED:
+ ptr->hash= MEMCACHED_HASH_MD5;
+ ptr->distribution= MEMCACHED_DISTRIBUTION_CONSISTENT_KETAMA;
+ break;
+ case MEMCACHED_KETAMA_COMPAT_SPY:
+ ptr->hash= MEMCACHED_HASH_MD5;
+ ptr->distribution= MEMCACHED_DISTRIBUTION_CONSISTENT_KETAMA_SPY;
+ break;
+ default:
+ return MEMCACHED_FAILURE;
+ }
+ run_distribution(ptr);