parameter use_storage_id in tracker.conf MUST set to true and

id_type_in_filename MUST set to id when IPv6 enabled
pull/687/head
YuQing 2023-12-01 16:50:01 +08:00
parent 7cae2bfb2b
commit bd79b4d35b
8 changed files with 53 additions and 28 deletions

View File

@ -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

View File

@ -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

View File

@ -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';

View File

@ -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++;

View File

@ -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);
}

View File

@ -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;

View File

@ -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, \

View File

@ -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);
}