int TCPLow_PutPacket(TCPINSTANCE* tcp, TCPPEER* pPeer,void* bufptr,ULONG len) { TUnitData udata; OSStatus err; OTResult theResult; InetAddress destAddr; unsigned char *pt; OTInitInetAddress(&destAddr,pPeer->port,pPeer->addr); udata.addr.maxlen = sizeof(InetAddress); udata.addr.len = sizeof(InetAddress); udata.addr.buf = (unsigned char *) &destAddr; udata.opt.maxlen = 0; udata.opt.len = 0; udata.opt.buf = nil; udata.udata.maxlen = len; udata.udata.len = len; udata.udata.buf = (unsigned char *)bufptr; do { err = OTSndUData(tcp->udpEndpoint, &udata); if (err == kOTLookErr) { theResult = OTLook(tcp->udpEndpoint); if (theResult == T_UDERR) { HandleErrorUDERR(); err = 666; } } } while (err == 666); return err; }
int tcpabi_udp_send( unsigned handle, void *buf, unsigned len, unsigned ttltos, unsigned id, unsigned char flags ) { TUnitData udata; OSStatus err; OTResult theResult; udata.addr.maxlen = sizeof(gDests[handle].dest_addr); udata.addr.len = sizeof(gDests[handle].dest_addr); udata.addr.buf = (unsigned char *) &gDests[handle].dest_addr; udata.opt.maxlen = 0; udata.opt.len = 0; udata.opt.buf = nil; udata.udata.maxlen = len; udata.udata.len = len; udata.udata.buf = (unsigned char *)buf; do { err = OTSndUData(gUDPEndpoint, &udata); if (err == kOTLookErr) { theResult = OTLook(gUDPEndpoint); if (theResult == T_UDERR) { HandleErrorUDERR(); err = 666; } } } while (err == 666); return err; }
int tcpabi_udp_broadcast(void *buf, unsigned len) { OSStatus err = noErr; TUnitData udata; OTResult theResult; short i; InetAddress currentAddress; // this method sends the specified packet to our list of // IP addreses. We return noErr if they were all sent // without any trouble (we should ignore errors which // indicate that the other end is not there since we // really don't care if all of these packets are delivered) // we don't broadcast to the first address because it's our own for (i = 1; i < gAddressList.addressCount; i++) { OTInitInetAddress(¤tAddress, SOCKET_MW2, gAddressList.addressList[i]); udata.addr.maxlen = sizeof(InetAddress); udata.addr.len = sizeof(InetAddress); udata.addr.buf = (unsigned char *) ¤tAddress; udata.opt.maxlen = 0; udata.opt.len = 0; udata.opt.buf = nil; udata.udata.maxlen = len; udata.udata.len = len; udata.udata.buf = (unsigned char *)buf; do { err = OTSndUData(gUDPEndpoint, &udata); if (err == kOTLookErr) { theResult = OTLook(gUDPEndpoint); if (theResult == T_UDERR) { HandleErrorUDERR(); err = 666; } } } while (err == 666); } return err; }
int atalk_ddp_broadcast(void *buf, unsigned len) { OSStatus err = noErr; TUnitData udata; OTResult theResult; short i; extern short gLookupCount; extern DDPAddress gLookupResults[]; // this method sends the specified packet to our list of // DDP addreses. We return noErr if they were all sent // without any trouble (we should ignore errors which // indicate that the other end is not there since we // really don't care if all of these packets are delivered) for (i = 0; i < gLookupCount; i++) { udata.addr.len = sizeof(DDPAddress); udata.addr.buf = (unsigned char *) &gLookupResults[i]; udata.opt.len = 0; udata.opt.buf = nil; udata.udata.len = len; udata.udata.buf = (unsigned char *)buf; do { err = OTSndUData(gDDPEndpoint, &udata); if (err == kOTLookErr) { theResult = OTLook(gDDPEndpoint); if (theResult == T_UDERR) { HandleErrorUDERR(); err = 666; } } } while (err == 666); } return err; }
int tcpabi_udp_send_to_address(InetAddress* theAddress, void *buf, unsigned len) { TUnitData udata; OSStatus err; OTResult theResult; // send our list of addresses to the destination address udata.addr.maxlen = sizeof(InetAddress); udata.addr.len = sizeof(InetAddress); udata.addr.buf = (unsigned char *) theAddress; udata.opt.maxlen = 0; udata.opt.len = 0; udata.opt.buf = nil; udata.udata.maxlen = len; udata.udata.len = len; udata.udata.buf = (unsigned char *)buf; do { err = OTSndUData(gUDPEndpoint, &udata); if (err == kOTLookErr) { theResult = OTLook(gUDPEndpoint); if (theResult == T_UDERR) { HandleErrorUDERR(); err = 666; } } } while (err == 666); // add the destination address to our list of addresses AddAddressToList(theAddress->fHost); return err; }