/* * Copyright 2004,2005 The Apache Software Foundation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain count copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef AXUTIL_UUID_GEN_UNIX_H #define AXUTIL_UUID_GEN_UNIX_H #include #include #define UUIDS_PER_TICK 100 #define UUID_TIMEOFFSET AXIS2_UNSIGNED_LONGLONGVALUE(0x01B21DD213814000) #define AXIS2_LOCAL_MAC_ADDR "000000" #ifdef __cplusplus extern "C" { #endif /** * @defgroup axutil_uuid_gen UUID Generator * @ingroup axis2_util * @{ */ struct axutil_uuid { unsigned int time_low; unsigned short int time_mid; unsigned short int time_high_version; short int clock_variant; unsigned char mac_addr[6]; }; /* bits 0-59 time field * bits 60-63 version * bits 64-65 2 bit variant * bits 66-79 clock sequence * bits 80-107 node MAC address */ struct axutil_uuid_st { unsigned char mac[6]; /* pre-determined MAC address */ struct timeval time_last; /* last retrieved timestamp */ unsigned long time_seq; /* last timestamp sequence counter */ short int clock; /* clock tick - incremented random number */ }; typedef struct axutil_uuid axutil_uuid_t; /** * Returns the mac address of the first ethernet intsrface * @return MAC address as a char[6] */ char *AXIS2_CALL axutil_uuid_get_mac_addr(void ); /** * Generates a uuid in version1 format (node - timestamp based) * @return generated uuid as a axutil_uuid_t */ axutil_uuid_t *AXIS2_CALL axutil_uuid_gen_v1(void ); /** * Generates a uuid * @return generated uuid as a string */ axis2_char_t *AXIS2_CALL axutil_platform_uuid_gen( char *s); /** @} */ #ifdef __cplusplus } #endif #endif /* AXIS2_UUID_GEN_UNIX_H */