ftest: debug parser name func, combine 2 macros num and ptr

This commit is contained in:
2025-06-09 22:36:04 +02:00
parent b7f7bb26c5
commit 05ac1f2f3c
7 changed files with 144 additions and 10 deletions
+7 -3
View File
@@ -6,8 +6,10 @@ SOCDIR=$(PWD)
#$(wildcard $(PWD)/**/include)
YLISTDIR=$(PWD)/../list_t
YWORKDIR=$(PWD)/../y_worker_t
INCLUDE=-I$(INCLUDE_DIRS) -I$(YLISTDIR)/src
INCLUDE=-I$(INCLUDE_DIRS) -I$(YLISTDIR)/src -I$(YWORKDIR)/include
CFLAGS=-g -lpthread -Wall -Werror -fpic $(INCLUDE) #"-D DEBUG=1"
#LDFLAGS=
@@ -21,13 +23,15 @@ YNODESRC_O=$(YNODESRC:.c=.o)
YLISTSRC=$(YLISTDIR)/src/list_t/list_t.c
YLISTSRC_O=$(YLISTSRC:.c=.o)
WORKSRC_0=$(YWORKDIR)/src/y_worker_t/y_worker_t.o
YTASKSRC_0=$(YWORKDIR)/src/y_worker_t/y_task_t.o
TOPTARGETS := all clean
DEPS=$(YLISTDIR)
DEPS=$(YLISTDIR) $(YWORKDIR)
OBJ=$(YSOCKSRC_O) $(YNODESRC_O) $(YLISTSRC_O)
OBJ=$(YSOCKSRC_O) $(YNODESRC_O) $(YLISTSRC_O) $(WORKSRC_0) $(YTASKSRC_0)
$(TOPTARGETS): $(DEPS)
+1 -1
View File
@@ -26,6 +26,6 @@ int y_NODE_T_cmp(y_NODE_T nodeA, y_NODE_T nodeB);
struct list_y_NODE_T * search_node_in_list_y_NODE_T(struct main_list_y_NODE_T *listNodes, y_NODE_T node);
int set_addr_y_NODE_T(y_NODE_T *node, char * addrStr);
void set_port_y_NODE_T(y_NODE_T *node, int port);
#endif /* __Y_NODE_T_H__C */
+10
View File
@@ -74,3 +74,13 @@ int set_addr_y_NODE_T(y_NODE_T *node, char * addrStr){
}
void set_port_y_NODE_T(y_NODE_T *node, int port){
int af = node->addr.ss_family;
if(af==AF_INET)
((struct sockaddr_in*)(&(node->addr)))->sin_port = port;
else if(af == AF_INET6)
((struct sockaddr_in6*)(&(node->addr)))->sin6_port = port;
}
+103
View File
@@ -99,9 +99,99 @@ int get_fds_with_getaddrinfo(char *port /*service */, char * node, struct pollfd
}
struct get_fds_arg{
struct pollfd *fds;
//int size_fds;
char * port ;/*service */
char * addrDistant;
};
void *y_get_fds_func(void *arg){
struct get_fds_arg * argSock = (struct get_fds_arg*)arg;
struct pollfd *fds = argSock->fds;
fds[v4].fd=-1; fds[v4].events = POLLIN;
fds[v6].fd=-1; fds[v6].events = POLLIN;
struct addrinfo hints, *result, *rp;
int status;
// ssize_t nread;
// char buf[BUF_SIZE];
memset(&hints, 0, sizeof(struct addrinfo));
hints.ai_family = AF_UNSPEC; // Allow all IPv4 and IPv6
hints.ai_socktype = SOCK_DGRAM; // udp
hints.ai_flags = AI_PASSIVE; // anyIP
//
hints.ai_protocol = 0;
hints.ai_canonname = NULL;
hints.ai_addr = NULL;
hints.ai_next = NULL;
//status = getaddrinfo(NULL, argSock->port, &hints, &result);
status = getaddrinfo(argSock->addrDistant, argSock->port, &hints, &result);
if(status != 0){
fprintf(stderr, "getaddrinfo :%s\n", gai_strerror(status));
return NULL;
}
int af, optValueV6 = 1;
for(rp = result; rp != NULL; rp=rp->ai_next){
for(af=v4; af<=v6; ++af){
if((rp->ai_family == af_array[af]) && (fds[af].fd ==-1)){
fds[af].fd = socket(rp->ai_family, rp->ai_socktype, rp->ai_protocol);
if(fds[af].fd == -1)
continue;
// android
#ifdef IPV6_V6ONLY
if(af == v6){
if(setsockopt(fds[af].fd, IPPROTO_IPV6, IPV6_V6ONLY,
&optValueV6, sizeof(optValueV6)) == -1){
perror("error setsockopt v6 :");
close(fds[af].fd);
fds[af].fd = -1;
continue;
}
}
#endif
if(bind(fds[af].fd, rp->ai_addr, rp->ai_addrlen)==-1){
close(fds[af].fd);
fds[af].fd=-1;
}
}
}
}
freeaddrinfo(result);
// ssize_t nread;
// char buf[BUF_SIZE];
// int status, af;
// status = get_fds_with_getaddrinfo(argSock->port, NULL, fds);
// if(status != 0)
/*
if(status == 1)
fprintf(stderr, " v4 or v6 not listening, we leave!");
else
fprintf(stderr, " not enough allocatation for fds, we leave!");
*/
/*
if((fds[v4].fd==-1) || (fds[v6].fd==-1)){
fprintf(stderr, " v4 or v6 not listening, we leave!");
return NULL;
}*/
return fds;
}
void *y_pollSocketsFunc(void *arg){
struct y_socket_t * argSock = (struct y_socket_t*)arg;
struct pollfd *fds = argSock->fds;
/*
fds[v4].fd=-1; fds[v4].events = POLLIN;
fds[v6].fd=-1; fds[v6].events = POLLIN;
@@ -155,6 +245,8 @@ void *y_pollSocketsFunc(void *arg){
freeaddrinfo(result);
*/
// ssize_t nread;
// char buf[BUF_SIZE];
@@ -169,6 +261,14 @@ void *y_pollSocketsFunc(void *arg){
fprintf(stderr, " not enough allocatation for fds, we leave!");
*/
struct get_fds_arg argGET_addr, *arg_get;//=malloc(sizeof(struct get_fds_arg) );
arg_get = &argGET_addr;
arg_get->fds = fds;
arg_get->addrDistant = NULL;
arg_get->port = argSock->port;
fds = (struct pollfd*) y_get_fds_func(arg_get);
if((fds[v4].fd==-1) || (fds[v6].fd==-1)){
fprintf(stderr, " v4 or v6 not listening, we leave!");
return NULL;
@@ -182,6 +282,9 @@ void *y_pollSocketsFunc(void *arg){
char buf_send[BUF_SIZE];
int fd_file;
int retread;
int af, status;
ssize_t nread;
char buf[BUF_SIZE];
// char msgRet[BUF_SIZE + NI_MAXHOST + NI_MAXSERV + 100];
// int len_msgRet;
for(;;){
+16
View File
@@ -60,6 +60,10 @@ TEST(equalNode){
nA.addr.ss_family=AF_INET;
nB.addr.ss_family=AF_INET;
//((struct sockaddr_in*)(&(nA.addr)))->sin_port = 22;
//((struct sockaddr_in*)(&(nB.addr)))->sin_port = 22;
set_port_y_NODE_T(&nA, 22);
set_port_y_NODE_T(&nB, 22);
//((struct sockaddr_in*)&(nA.addr))->sin_addr.s_addr = inet_addr("192.168.1.2");
//((struct sockaddr_in*)&(nB.addr))->sin_addr.s_addr = inet_addr("192.168.1.2");
@@ -83,6 +87,11 @@ TEST(equalNode6){
nA.addr.ss_family=AF_INET6;
nB.addr.ss_family=AF_INET6;
set_port_y_NODE_T(&nA, 22);
set_port_y_NODE_T(&nB, 22);
//((struct sockaddr_in6*)(&(nA.addr)))->sin6_port = 22;
//((struct sockaddr_in6*)(&(nB.addr)))->sin6_port = 22;
//((struct sockaddr_in*)&(nA.addr))->sin_addr.s_addr = inet_addr("192.168.1.2");
//((struct sockaddr_in*)&(nB.addr))->sin_addr.s_addr = inet_addr("192.168.1.2");
@@ -107,6 +116,11 @@ TEST(searchNode){
nA.addr.ss_family=AF_INET;
nB.addr.ss_family=AF_INET;
set_port_y_NODE_T(&nA, 22);
set_port_y_NODE_T(&nB, 22);
//((struct sockaddr_in*)(&(nA.addr)))->sin_port = 22;
//((struct sockaddr_in*)(&(nB.addr)))->sin_port = 22;
//((struct sockaddr_in*)&(nA.addr))->sin_addr.s_addr = inet_addr("192.168.1.2");
//((struct sockaddr_in*)&(nB.addr))->sin_addr.s_addr = inet_addr("192.168.1.2");
@@ -132,7 +146,9 @@ TEST(searchNode){
EXPECT_FALSE(NULL == search_node_in_list_y_NODE_T(listNodes, nA));
//inet_pton(AF_INET6, "::1", GET_IN_type_ADDR(&(nB.addr),6));
//((struct sockaddr_in6*)(&(nB.addr)))->sin6_port = 22;
ret = set_addr_y_NODE_T(&nB, "::1");
set_port_y_NODE_T(&nB, 22);
LOG("return of set =%d\n", ret);
push_back_list_y_NODE_T(listNodes, nB);
Binary file not shown.
+4 -3
View File
@@ -1014,9 +1014,9 @@ bool is_in_array_##type(type *array, type val){\
for(size_t i = 0; i < cur_array_##type; ++i){\
char * strarr = type##_TO_STR(array[i]), *strval = type##_TO_STR(val);\
PRINT_DEBUG("compare |%s| in array and val: |%s|\n",strarr, strval);\
free(strarr);free(strval);\
if(strcmp(#type, "TYPE_STRING" ) != 0 ){ free(strarr);free(strval); }\
/*PRINT_DEBUG("compare |%s| in array and val: |%s|\n",type##_TO_STR(array[i]), type##_TO_STR(val));*/\
if(COMPARE_N_##type((void*)(array[i]),(void*)val ) == 0 ){\
if(COMPARE_N_##type((void*)(&array[i]),(void*)&val ) == 0 ){\
found = true;\
break;\
}\
@@ -1025,6 +1025,7 @@ bool is_in_array_##type(type *array, type val){\
return found;\
}\
// no need anymore, combined with above!!
#define GEN_IS_IN_ARRAY_NUM(type)\
bool is_in_array_##type(type *array, type val){\
bool found = false;\
@@ -1044,7 +1045,7 @@ bool is_in_array_##type(type *array, type val){\
GEN_IS_IN_ARRAY_PTR(TYPE_STRING)
GEN_IS_IN_ARRAY_NUM(TYPE_SIZE_T)
GEN_IS_IN_ARRAY_PTR(TYPE_SIZE_T)
/*
* extract name test between () because the syntax is TEST(name_test)