RNS2SendResult RNS2_Windows_Linux_360::Send_Windows_Linux_360NoVDP( RNS2Socket rns2Socket, RNS2_SendParameters *sendParameters, const char *file, unsigned int line ) { int len=0; do { (void) file; (void) line; int oldTTL=-1; if (sendParameters->ttl>0) { socklen_t opLen=sizeof(oldTTL); // Get the current TTL if (getsockopt__(rns2Socket, sendParameters->systemAddress.GetIPPROTO(), IP_TTL, ( char * ) & oldTTL, &opLen ) != -1) { int newTTL=sendParameters->ttl; setsockopt__(rns2Socket, sendParameters->systemAddress.GetIPPROTO(), IP_TTL, ( char * ) & newTTL, sizeof ( newTTL ) ); } } if (sendParameters->systemAddress.address.addr4.sin_family==AF_INET) { len = sendto__( rns2Socket, sendParameters->data, sendParameters->length, 0, ( const sockaddr* ) & sendParameters->systemAddress.address.addr4, sizeof( sockaddr_in ) ); } else { #if RAKNET_SUPPORT_IPV6==1 len = sendto__( rns2Socket, sendParameters->data, sendParameters->length, 0, ( const sockaddr* ) & sendParameters->systemAddress.address.addr6, sizeof( sockaddr_in6 ) ); #endif } if (len<0) { RAKNET_DEBUG_PRINTF("sendto failed with code %i for char %i and length %i.\n", len, sendParameters->data[0], sendParameters->length); } if (oldTTL!=-1) { setsockopt__(rns2Socket, sendParameters->systemAddress.GetIPPROTO(), IP_TTL, ( char * ) & oldTTL, sizeof ( oldTTL ) ); } } while ( len == 0 ); return len; }
int vpi_mmap_interface_send(vpi_interface_t* _vi, unsigned char* data, int len) { VICAST(vi, _vi); return sendto__(vi, (char*)data, len); }