add function sf_set_address_family_by_ip
parent
a969a0df07
commit
c2e7b6e711
|
|
@ -794,6 +794,41 @@ int sf_alloc_rdma_pd(SFContext *sf_context,
|
|||
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)
|
||||
{
|
||||
char *p;
|
||||
|
|
|
|||
|
|
@ -123,13 +123,13 @@ extern SFContext g_sf_context;
|
|||
|
||||
#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_ALIVE_THREAD_COUNT(sf_context) sf_context.thread_count
|
||||
#define SF_THREAD_INDEX(sf_context, tdata) (int)(tdata - sf_context.thread_data)
|
||||
#define SF_WORK_THREADS(sf_context) (sf_context).work_threads
|
||||
#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_IPV4_ENABLED(sf_context) (sf_context.handlers \
|
||||
#define SF_IPV4_ENABLED(sf_context) ((sf_context).handlers \
|
||||
[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)
|
||||
|
||||
#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,
|
||||
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,
|
||||
SFLogConfig *log_cfg);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue