ftest: debug parser name func, combine 2 macros num and ptr
This commit is contained in:
+7
-3
@@ -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)
|
||||
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -99,10 +99,100 @@ 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[v4].fd=-1; fds[v4].events = POLLIN;
|
||||
fds[v6].fd=-1; fds[v6].events = POLLIN;
|
||||
|
||||
struct addrinfo hints, *result, *rp;
|
||||
@@ -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(;;){
|
||||
|
||||
@@ -59,7 +59,11 @@ 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");
|
||||
|
||||
@@ -82,6 +86,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,7 +116,12 @@ TEST(searchNode){
|
||||
nA.addr.ss_family=AF_INET;
|
||||
nB.addr.ss_family=AF_INET;
|
||||
|
||||
//((struct sockaddr_in*)&(nA.addr))->sin_addr.s_addr = inet_addr("192.168.1.2");
|
||||
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");
|
||||
|
||||
GET_IN_type_ADDR(&(nA.addr),) = inet_addr("1.1.1.1");
|
||||
@@ -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.
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user