diff --git a/conf/storage.conf b/conf/storage.conf index 3b2691c..c90322a 100644 --- a/conf/storage.conf +++ b/conf/storage.conf @@ -12,11 +12,13 @@ group_name = group1 # bind an address of this host # empty for bind all addresses of this host -# IPv4: -# for example: 192.168.2.100 # -# IPv6: -# or example: [2409:8a20:42d:2f40:587a:4c47:72c0:ad8e] +# bind IPv4 example: 192.168.2.100 +# +# bind IPv6 example: 2409:8a20:42d:2f40:587a:4c47:72c0:ad8e +# +# bind IPv4 and IPv6 example: 192.168.2.100,2409:8a20:42d:2f40:587a:4c47:72c0:ad8e +# bind_addr = # if bind an address of this host when connect to other servers @@ -31,7 +33,7 @@ port = 23000 # the address family of service, value list: ## IPv4: IPv4 stack ## IPv6: IPv6 stack -## auto: auto detect, IPv4 first, then IPv6 +## auto: auto detect by bind_addr, IPv4 first then IPv6 when bind_addr is empty ## both: IPv4 and IPv6 dual stacks # default value is auto address_family = auto diff --git a/conf/tracker.conf b/conf/tracker.conf index 84c830f..f5e8ce4 100644 --- a/conf/tracker.conf +++ b/conf/tracker.conf @@ -5,11 +5,13 @@ disabled = false # bind an address of this host # empty for bind all addresses of this host -# IPv4: -# for example: 192.168.2.100 # -# IPv6: -# or example: [2409:8a20:42d:2f40:587a:4c47:72c0:ad8e] +# bind IPv4 example: 192.168.2.100 +# +# bind IPv6 example: 2409:8a20:42d:2f40:587a:4c47:72c0:ad8e +# +# bind IPv4 and IPv6 example: 192.168.2.100,2409:8a20:42d:2f40:587a:4c47:72c0:ad8e +# bind_addr = # the tracker server port @@ -18,8 +20,12 @@ port = 22122 # the address family of service, value list: ## IPv4: IPv4 stack ## IPv6: IPv6 stack -## auto: auto detect, IPv4 first, then IPv6 +## auto: auto detect by bind_addr, IPv4 first then IPv6 when bind_addr is empty ## both: IPv4 and IPv6 dual stacks +# +# following parameter use_storage_id MUST set to true and +# id_type_in_filename MUST set to id when IPv6 enabled +# # default value is auto address_family = auto diff --git a/storage/tracker_client_thread.c b/storage/tracker_client_thread.c index c034b41..3e080fc 100644 --- a/storage/tracker_client_thread.c +++ b/storage/tracker_client_thread.c @@ -293,7 +293,6 @@ static void *tracker_report_thread_entrance(void *arg) tcpsetserveropt(conn->sock, SF_G_NETWORK_TIMEOUT); getSockIpaddr(conn->sock, tracker_client_ip, IP_ADDRESS_SIZE); - if (nContinuousFail == 0) { *szFailPrompt = '\0'; diff --git a/tracker/fdfs_shared_func.c b/tracker/fdfs_shared_func.c index 0cbbf0c..3a83f95 100644 --- a/tracker/fdfs_shared_func.c +++ b/tracker/fdfs_shared_func.c @@ -490,8 +490,8 @@ int fdfs_parse_server_info_ex(char *server_str, const int default_port, { if (resolve) { - if (getIpaddrByName(hosts[i], conn->ip_addr, - sizeof(conn->ip_addr)) == INADDR_NONE) + if (getIpaddrByNameEx(hosts[i], conn->ip_addr, + sizeof(conn->ip_addr), &conn->af) == INADDR_NONE) { logError("file: "__FILE__", line: %d, " "host \"%s\" is invalid, error info: %s", @@ -503,6 +503,7 @@ int fdfs_parse_server_info_ex(char *server_str, const int default_port, { snprintf(conn->ip_addr, sizeof(conn->ip_addr), "%s", hosts[i]); } + conn->port = port; conn->sock = -1; conn++; diff --git a/tracker/tracker_func.c b/tracker/tracker_func.c index 50b2dfb..825f004 100644 --- a/tracker/tracker_func.c +++ b/tracker/tracker_func.c @@ -89,7 +89,7 @@ static int tracker_load_store_lookup(const char *filename, \ if (fdfs_validate_group_name(g_groups.store_group) != 0) \ { logError("file: "__FILE__", line: %d, " \ - "conf file \"%s\", " \ + "config file \"%s\", " \ "the group name \"%s\" is invalid!", \ __LINE__, filename, g_groups.store_group); return EINVAL; @@ -98,7 +98,7 @@ static int tracker_load_store_lookup(const char *filename, \ return 0; } -static int tracker_load_storage_id_info(const char *config_filename, \ +static int tracker_load_storage_id_info(const char *config_filename, IniContext *pItemContext) { char *pIdType; @@ -107,19 +107,33 @@ static int tracker_load_storage_id_info(const char *config_filename, \ pItemContext, false); if (!g_use_storage_id) { + if (SF_G_IPV6_ENABLED) + { + logError("file: "__FILE__", line: %d, " + "config file: %s, use_storage_id MUST set to true " + "when IPv6 enabled!", __LINE__, config_filename); + return EINVAL; + } + return 0; } - pIdType = iniGetStrValue(NULL, "id_type_in_filename", \ - pItemContext); + pIdType = iniGetStrValue(NULL, "id_type_in_filename", pItemContext); if (pIdType != NULL && strcasecmp(pIdType, "id") == 0) { g_id_type_in_filename = FDFS_ID_TYPE_SERVER_ID; } else - { - g_id_type_in_filename = FDFS_ID_TYPE_IP_ADDRESS; - } + { + if (SF_G_IPV6_ENABLED) + { + logError("file: "__FILE__", line: %d, " + "config file: %s, id_type_in_filename MUST set to id " + "when IPv6 enabled!", __LINE__, config_filename); + return EINVAL; + } + g_id_type_in_filename = FDFS_ID_TYPE_IP_ADDRESS; + } return fdfs_load_storage_ids_from_file(config_filename, pItemContext); } diff --git a/tracker/tracker_mem.c b/tracker/tracker_mem.c index 19c5ce0..9cfdb92 100644 --- a/tracker/tracker_mem.c +++ b/tracker/tracker_mem.c @@ -3459,7 +3459,7 @@ int tracker_mem_delete_storage(FDFSGroupInfo *pGroup, const char *id) return 0; } -int tracker_mem_storage_ip_changed(FDFSGroupInfo *pGroup, \ +int tracker_mem_storage_ip_changed(FDFSGroupInfo *pGroup, const char *old_storage_ip, const char *new_storage_ip) { FDFSStorageDetail *pOldStorageServer; diff --git a/tracker/tracker_mem.h b/tracker/tracker_mem.h index 4083bfb..82f358d 100644 --- a/tracker/tracker_mem.h +++ b/tracker/tracker_mem.h @@ -59,16 +59,16 @@ FDFSStorageDetail *tracker_mem_get_storage(FDFSGroupInfo *pGroup, \ FDFSStorageDetail *tracker_mem_get_storage_by_ip(FDFSGroupInfo *pGroup, \ const char *ip_addr); -const FDFSStorageDetail *tracker_mem_set_trunk_server( \ +const FDFSStorageDetail *tracker_mem_set_trunk_server( FDFSGroupInfo *pGroup, const char *pStroageId, int *result); int tracker_mem_delete_group(const char *group_name); int tracker_mem_delete_storage(FDFSGroupInfo *pGroup, const char *id); -int tracker_mem_storage_ip_changed(FDFSGroupInfo *pGroup, \ +int tracker_mem_storage_ip_changed(FDFSGroupInfo *pGroup, const char *old_storage_ip, const char *new_storage_ip); -int tracker_mem_add_group_and_storage(TrackerClientInfo *pClientInfo, \ - const char *ip_addr, FDFSStorageJoinBody *pJoinBody, \ +int tracker_mem_add_group_and_storage(TrackerClientInfo *pClientInfo, + const char *ip_addr, FDFSStorageJoinBody *pJoinBody, const bool bNeedSleep); int tracker_mem_offline_store_server(FDFSGroupInfo *pGroup, \ diff --git a/tracker/tracker_service.c b/tracker/tracker_service.c index 723d001..786a40f 100644 --- a/tracker/tracker_service.c +++ b/tracker/tracker_service.c @@ -902,10 +902,13 @@ static int tracker_deal_get_storage_id(struct fast_task_info *pTask) else { // 当IP地址为IPv6时,其storage_id值为IP地址的short code - if (is_ipv6_addr(ip_addr)) { + if (is_ipv6_addr(ip_addr)) + { storage_id.ptr = fdfs_ip_to_shortcode(ip_addr, storage_id.holder); - } else { + } + else + { storage_id.ptr = ip_addr; } } @@ -2005,7 +2008,7 @@ static int tracker_deal_storage_report_ip_changed(struct fast_task_info *pTask) } pTask->send.ptr->length = sizeof(TrackerHeader); - return tracker_mem_storage_ip_changed(pGroup, \ + return tracker_mem_storage_ip_changed(pGroup, pOldIpAddr, pNewIpAddr); }