X-Git-Url: https://hackdaworld.org/gitweb/?p=my-code%2Fivac.git;a=blobdiff_plain;f=src%2Finet.c;h=255423d625105acc783d44a2720ca4ce0debf512;hp=7a9e41a94d1da42bcd7d18c38967550df3ae3780;hb=96a136a4a5ac3321cf3d72328b9fd8167c007a17;hpb=488add8be8351cfca34dd7961de14a2a87953e4a diff --git a/src/inet.c b/src/inet.c index 7a9e41a..255423d 100644 --- a/src/inet.c +++ b/src/inet.c @@ -6,5 +6,85 @@ #include "inet.h" +int network_init(t_ivac *ivac) { + + sockaddr_in addr; + + puts("[ivac] inet: initializing network ..."); -int + memset(ivac->net.connection,0,MAX_CONNECTIONS*sizeof(t_connection)); + + if((ivac->net.l_fd=socket(AF_INET,SOCK_STREAM,0))==-1) { + perror("[ivac] inet.c: socket call"); + return ERROR; + } + + memset(&addr,0,sizeof(struct sockaddr)); + addr.sin_family=AF_INET; + addr.sin_port=htons(ivac->net.l_port); + addr.sin_addr.s_addr=INADDR_ANY; + + if(bind(ivac->net.l_fd,(struct sockaddr *)&addr, + sizeof(struct sockaddr))==-1) { + perror("[ivac] inet.c: bind call"); + return ERROR; + } + + printf("[ivac] inet: listen on %s port %d.\n",inet_ntoa(addr.sin_addr.s_addr) + ,ivac->net.l_port); + + return SUCCESS; +} + +int network_manage_connection(t_ivac *ivac) { + + int i; + sockaddr_in addr; + + for(i=0;inet.connection[i].status&C_IN_USE) { + + if(ivac->net.connection[i].status&C_HANGUP) { + close(ivac->net.connection[i].fd); + ivac->net.connection[i].status=0; + } + + if(ivac->net.connection[i].status&C_INFO_A) { + + if(!ivac->net.connection[i].status&C_SOCKET) { + if((ivac->net.connection[i].fd=socket(AF_INET,SOCK_STREAM,0))==-1) { + perror("[ivac] inet.c: socket call"); + return ERROR; + } + } + + if(!ivac->net.connection[i].status&C_ESTABL) { + + memset(&addr,0,sizeof(struct sockaddr)); + addr.sin_family=AF_INET; + addr.sin_port=htons(ivac->net.connection[i].port); + addr.sin_addr_s_addr=inet_aton(ivac->net.connection[i].ip); + + if(connect(ivac->net.connection[i].fd,(struct sockaddr *)&addr, + sizeof(struct sockaddr))==-1) { + perror("[ivac] inet.c: connect call"); + return ERROR; + } + + } + + } + + } + + } + + return SUCCESS; +} + +int network_send(unsigned char *data,int datasize,int sendmask,t_ivac *ivac) { + + + return SUCCESS; +}