void dataArriveNotif(unsigned int assocID, unsigned short streamID, unsigned int len, unsigned short streamSN,unsigned int TSN, unsigned int protoID, unsigned int unordered, void* ulpDataPtr) { unsigned char chunk[MAXIMUM_PAYLOAD_LENGTH]; unsigned int length; unsigned short ssn; unsigned int the_tsn; if (vverbose) { fprintf(stdout, "%-8x: Data arrived (%u bytes on stream %u, %s)\n", assocID, len, streamID, (unordered==SCTP_ORDERED_DELIVERY)?"ordered":"unordered"); fflush(stdout); } /* read it */ length = sizeof(chunk); if (firstLength == 0) firstLength = len; SCTP_receive(assocID, streamID, chunk, &length, &ssn, &the_tsn, SCTP_MSG_DEFAULT); if (firstData == 0) { gettimeofday(&startTime, NULL); firstData = 1; } /* update counter */ ((struct ulp_data *) ulpDataPtr)->nrOfReceivedChunks += 1; ((struct ulp_data *) ulpDataPtr)->nrOfReceivedBytes += length; }
void dataArriveNotif(unsigned int assocID, unsigned short streamID, unsigned int len, unsigned short streamSN,unsigned int TSN, unsigned int protoID, unsigned int unordered, void* ulpDataPtr) { unsigned char chunk[MAXIMUM_PAYLOAD_LENGTH]; unsigned int length; int index=0, result; unsigned short ssn; unsigned int the_tsn; if (vverbose) { fprintf(stdout, "%-8x: Data arrived (%u bytes on stream %u, %s)\n", assocID, len, streamID, (unordered==SCTP_ORDERED_DELIVERY)?"ordered":"unordered"); fflush(stdout); } /* read it */ length = sizeof(chunk); SCTP_receive(assocID, streamID, chunk, &length, &ssn, &the_tsn, SCTP_MSG_DEFAULT); /* update counter */ ((struct ulp_data *) ulpDataPtr)->nrOfReceivedChunks += 1; ((struct ulp_data *) ulpDataPtr)->nrOfReceivedBytes += length; /* and send it */ if (sendToAll) { for (index=0; index < MAXIMUM_NUMBER_OF_ASSOCIATIONS; index++) { if ((ulpData[index].maximumStreamID != -1)&& (!(ulpData[index].ShutdownReceived))) { result = SCTP_send(ulpData[index].assocID, (unsigned short)min(streamID, (unsigned int)(ulpData[index].maximumStreamID)), chunk, length, protoID, SCTP_USE_PRIMARY, SCTP_NO_CONTEXT, timeToLive, unordered, SCTP_BUNDLING_DISABLED); if (vverbose) { fprintf(stdout, "%-8x: Data sent (%u bytes on stream %u, %s) Result: %d\n", ulpData[index].assocID, len, min(streamID, (unsigned int)ulpData[index].maximumStreamID), (unordered==SCTP_ORDERED_DELIVERY)?"ordered":"unordered", result); fflush(stdout); } } } } else { result = SCTP_send(assocID, (unsigned short)min(streamID, (unsigned int)(((struct ulp_data *) ulpDataPtr)->maximumStreamID)), chunk, length, protoID, SCTP_USE_PRIMARY, SCTP_NO_CONTEXT, timeToLive, unordered, SCTP_BUNDLING_DISABLED); if (vverbose) { fprintf(stdout, "%-8x: Data sent (%u bytes on stream %u, %s) Result: %d\n", ulpData[index].assocID, len, min(streamID, (unsigned int)(((struct ulp_data *) ulpDataPtr)->maximumStreamID)), (unordered==SCTP_ORDERED_DELIVERY)?"ordered":"unordered", result); fflush(stdout); } } }
void clientDataArriveNotif(unsigned int assocID, unsigned short streamID, unsigned int len, unsigned short streamSN,unsigned int TSN, unsigned int protoID, unsigned int unordered, void* ulpDataPtr) { unsigned char chunk[MAXIMUM_PAYLOAD_LENGTH]; unsigned int length; unsigned short ssn; unsigned int the_tsn; chunkCount++; length = sizeof(chunk); SCTP_receive(assocID, streamID, chunk, &length, &ssn, &the_tsn, SCTP_MSG_DEFAULT); SCTP_send(assocID, streamID, chunk, length, protoID, SCTP_USE_PRIMARY, SCTP_NO_CONTEXT, SCTP_INFINITE_LIFETIME, unordered, SCTP_BUNDLING_DISABLED); if (chunkCount > ende) SCTP_shutdown(assocID); }
void dataArriveNotif(unsigned int assocID, unsigned short streamID, unsigned int len, unsigned short streamSN, unsigned int TSN, unsigned int protoID, unsigned int unordered, void* ulpDataPtr) { unsigned char chunk[SCTP_MAXIMUM_DATA_LENGTH]; unsigned int length; unsigned short ssn; unsigned int the_tsn; if (vverbose) { fprintf(stdout, "%-8x: Data arrived (%u bytes on stream %u, %s)\n", assocID, len, streamID, (unordered==SCTP_ORDERED_DELIVERY)?"ordered":"unordered"); fflush(stdout); } /* read it */ length = SCTP_MAXIMUM_DATA_LENGTH; SCTP_receive(assocID, streamID, chunk, &length, &ssn, &the_tsn, SCTP_MSG_DEFAULT); fprintf(stdout, "%.*s", length, chunk); fflush(stdout); }
void serverDataArriveNotif(unsigned int assocID, unsigned short streamID, unsigned int len, unsigned short streamSN,unsigned int TSN, unsigned int protoID, unsigned int unordered, void* ulpDataPtr) { unsigned char chunk[MAXIMUM_PAYLOAD_LENGTH]; unsigned int length; unsigned short ssn; unsigned int the_tsn; /* read it */ length = sizeof(chunk); SCTP_receive(assocID, streamID, chunk, &length, &ssn, &the_tsn, SCTP_MSG_DEFAULT); /* update counter */ ((struct ulp_data *) ulpDataPtr)->nrOfReceivedChunks += 1; ((struct ulp_data *) ulpDataPtr)->nrOfReceivedBytes += length; /* and send it */ SCTP_send(assocID, (unsigned short)min(streamID, ((struct ulp_data *) ulpDataPtr)->maximumStreamID), chunk, length, protoID, SCTP_USE_PRIMARY, SCTP_NO_CONTEXT, SCTP_INFINITE_LIFETIME, unordered, SCTP_BUNDLING_DISABLED); }
void dataArriveNotif(unsigned int assocID, unsigned short streamID, unsigned int len, unsigned short streamSN,unsigned int TSN, unsigned int protoID, unsigned int unordered, void* ulpDataPtr) { unsigned char chunk[MAXIMUM_PAYLOAD_LENGTH]; unsigned int length; unsigned short ssn; unsigned int tsn; if (vverbose) { fprintf(stdout, "%-8x: Data arrived (%u bytes on stream %u, %s)\n", assocID, len, streamID, (unordered==SCTP_ORDERED_DELIVERY)?"ordered":"unordered"); fflush(stdout); } /* read it */ length = MAXIMUM_PAYLOAD_LENGTH; SCTP_receive(assocID, streamID, chunk, &length,&ssn, &tsn, SCTP_MSG_DEFAULT); /* and send it */ SCTP_send(assocID, (unsigned short)min(streamID, ((struct ulp_data *) ulpDataPtr)->maximumStreamID), chunk, length, protoID, SCTP_USE_PRIMARY, SCTP_NO_CONTEXT, timeToLive, unordered, SCTP_BUNDLING_DISABLED); }