END_TEST START_TEST(test_udpv6) { int server_socket, client_socket; char buffer[BUFFERSIZE]; char *msg; ck_assert_int_ge((server_socket = OS_Bindportudp(PORT, IPV6, 1)), 0); ck_assert_int_ge((client_socket = OS_ConnectUDP(PORT, IPV6, 1, NULL)) , 0); //TODO: ck_assert_int_eq(OS_SendUDP(client_socket, SENDSTRING), 0); ck_assert_int_eq(OS_SendUDPbySize(client_socket, strlen(SENDSTRING), SENDSTRING), 0); //TODO: not null-terminated ck_assert_int_eq(OS_RecvConnUDP(server_socket, buffer, BUFFERSIZE), strlen(SENDSTRING)); ck_assert_str_eq(buffer, SENDSTRING); ck_assert_int_eq(OS_SendUDPbySize(client_socket, 5, SENDSTRING), 0); ck_assert_ptr_ne((msg = OS_RecvUDP(server_socket, BUFFERSIZE)), NULL); ck_assert_str_eq(msg, "Hello"); /* only 5 bytes send */ free(msg); OS_CloseSocket(client_socket); OS_CloseSocket(server_socket); }
/** void HandleRemote(int position, int uid) v0.2 2005/11/09 * Handle remote connections * v0.2, 2005/11/09 * v0.1, 2004/7/30 */ void HandleRemote(int position, int uid) { /* If syslog connection and allowips is not defined, exit */ if(logr.conn[position] == SYSLOG_CONN) { if(logr.allowips == NULL) { ErrorExit(NO_SYSLOG, ARGV0); } else { os_ip **tmp_ips; tmp_ips = logr.allowips; while(*tmp_ips) { verbose("%s: Remote syslog allowed from: '%s'", ARGV0, (*tmp_ips)->ip); tmp_ips++; } } } /* Bind TCP */ if(logr.proto[position] == TCP_PROTO) { if((logr.sock = OS_Bindporttcp(logr.port[position],logr.lip[position], logr.ipv6[position])) < 0) { ErrorExit(BIND_ERROR, ARGV0, logr.port[position]); } } else { /* Using UDP. Fast, unreliable.. perfect */ if((logr.sock = OS_Bindportudp(logr.port[position], logr.lip[position], logr.ipv6[position])) < 0) { ErrorExit(BIND_ERROR, ARGV0, logr.port[position]); } } /* Revoking the privileges */ if(Privsep_SetUser(uid) < 0) { ErrorExit(SETUID_ERROR,ARGV0, REMUSER); } /* Creating PID */ if(CreatePID(ARGV0, getpid()) < 0) { ErrorExit(PID_ERROR,ARGV0); } /* Start up message */ verbose(STARTUP_MSG, ARGV0, (int)getpid()); /* If Secure connection, deal with it */ if(logr.conn[position] == SECURE_CONN) { HandleSecure(); } else if(logr.proto[position] == TCP_PROTO) { HandleSyslogTCP(); } /* If not, deal with syslog */ else { HandleSyslog(); } return; }