add function sf_set_address_family_by_ip

use_iouring
YuQing 2023-12-05 08:16:54 +08:00
parent a969a0df07
commit c2e7b6e711
2 changed files with 43 additions and 5 deletions

View File

@ -794,6 +794,41 @@ int sf_alloc_rdma_pd(SFContext *sf_context,
return 0; return 0;
} }
void sf_set_address_family_by_ip(SFContext *sf_context,
FCAddressPtrArray *address_array)
{
SFAddressFamilyHandler *handler;
SFAddressFamilyHandler *hend;
FCAddressInfo **pp_addr;
FCAddressInfo **addr_end;
if (sf_context->address_family != sf_address_family_auto) {
return;
}
hend = sf_context->handlers + SF_ADDRESS_FAMILY_COUNT;
for (handler=sf_context->handlers; handler<hend; handler++) {
if (handler->af == AF_UNSPEC) {
continue;
}
if (*(handler->inner_bind_addr) == '\0' &&
*(handler->outer_bind_addr) == '\0')
{
handler->af = AF_UNSPEC;
}
}
addr_end = address_array->addrs + address_array->count;
for (pp_addr=address_array->addrs; pp_addr<addr_end; pp_addr++) {
if ((*pp_addr)->conn.af == AF_INET) {
sf_context->handlers[SF_IPV4_ADDRESS_FAMILY_INDEX].af = AF_INET;
} else {
sf_context->handlers[SF_IPV6_ADDRESS_FAMILY_INDEX].af = AF_INET6;
}
}
}
static void combine_bind_addr(char *bind_addr, const char *ip_addr) static void combine_bind_addr(char *bind_addr, const char *ip_addr)
{ {
char *p; char *p;

View File

@ -123,13 +123,13 @@ extern SFContext g_sf_context;
#define SF_G_EPOLL_EDGE_TRIGGER g_sf_global_vars.epoll_edge_trigger #define SF_G_EPOLL_EDGE_TRIGGER g_sf_global_vars.epoll_edge_trigger
#define SF_WORK_THREADS(sf_context) sf_context.work_threads #define SF_WORK_THREADS(sf_context) (sf_context).work_threads
#define SF_ALIVE_THREAD_COUNT(sf_context) sf_context.thread_count #define SF_ALIVE_THREAD_COUNT(sf_context) (sf_context).thread_count
#define SF_THREAD_INDEX(sf_context, tdata) (int)(tdata - sf_context.thread_data) #define SF_THREAD_INDEX(sf_context, tdata) (int)(tdata - (sf_context).thread_data)
#define SF_IPV4_ENABLED(sf_context) (sf_context.handlers \ #define SF_IPV4_ENABLED(sf_context) ((sf_context).handlers \
[SF_IPV4_ADDRESS_FAMILY_INDEX].af == AF_INET) [SF_IPV4_ADDRESS_FAMILY_INDEX].af == AF_INET)
#define SF_IPV6_ENABLED(sf_context) (sf_context.handlers \ #define SF_IPV6_ENABLED(sf_context) ((sf_context).handlers \
[SF_IPV6_ADDRESS_FAMILY_INDEX].af == AF_INET6) [SF_IPV6_ADDRESS_FAMILY_INDEX].af == AF_INET6)
#define SF_CHOWN_RETURN_ON_ERROR(path, current_uid, current_gid) \ #define SF_CHOWN_RETURN_ON_ERROR(path, current_uid, current_gid) \
@ -255,6 +255,9 @@ static inline int sf_load_context_from_config(SFContext *sf_context,
int sf_alloc_rdma_pd(SFContext *sf_context, int sf_alloc_rdma_pd(SFContext *sf_context,
FCAddressPtrArray *address_array); FCAddressPtrArray *address_array);
void sf_set_address_family_by_ip(SFContext *sf_context,
FCAddressPtrArray *address_array);
int sf_load_log_config(IniFullContext *ini_ctx, LogContext *log_ctx, int sf_load_log_config(IniFullContext *ini_ctx, LogContext *log_ctx,
SFLogConfig *log_cfg); SFLogConfig *log_cfg);