Exemple #1
0
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;
}
Exemple #2
0
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);
        }
    }
}
Exemple #3
0
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);
}
Exemple #4
0
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);
}
Exemple #5
0
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);
}
Exemple #6
0
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);
}