@@ -305,19 +305,19 @@ static uint32_t get_tei(void *pack)
* requires the receiving GSN to send a response, with the same information
* as in the original response. For most messages this happens automatically:
*
- * Echo: Automatically dublicates the original response
+ * Echo: Automatically duplicates the original response
* Create pdp context: The SGSN may send create context request even if
- * a context allready exist (imsi+nsapi?). This means that the reply will
- automatically dublicate the original response. It might however have
+ * a context already exist (imsi+nsapi?). This means that the reply will
+ * automatically duplicate the original response. It might however have
* side effects in the application which is asked twice to validate
* the login.
- * Update pdp context: Automatically dublicates the original response???
+ * Update pdp context: Automatically duplicates the original response???
* Delete pdp context. Automatically in gtp0, but in gtp1 will generate
* a nonexist reply message.
*
* The correct solution will be to make a queue containing response messages.
* This queue should be checked whenever a request is received. If the
- * response is allready in the queue that response should be transmitted.
+ * response is already in the queue that response should be transmitted.
* It should be possible to find messages in this queue on the basis of
* the sequence number and peer GSN IP address (The sequense number is unique
* within each path). This need to be implemented by a hash table. Furthermore
@@ -614,7 +614,7 @@ int gtp_notification(struct gsn_t *gsn, int version,
return 0;
}
-int gtp_dublicate(struct gsn_t *gsn, int version,
+int gtp_duplicate(struct gsn_t *gsn, int version,
struct sockaddr_in *peer, uint16_t seq)
{
struct qmsg_t *qmsg;
@@ -873,8 +873,8 @@ int gtp_echo_ind(struct gsn_t *gsn, int version, struct sockaddr_in *peer,
int fd, void *pack, unsigned len)
{
- /* Check if it was a dublicate request */
- if (!gtp_dublicate(gsn, 0, peer, get_seq(pack)))
+ /* Check if it was a duplicate request */
+ if (!gtp_duplicate(gsn, 0, peer, get_seq(pack)))
return 0;
/* Send off reply to request */
@@ -1258,13 +1258,15 @@ int gtp_create_pdp_ind(struct gsn_t *gsn, int version,
uint8_t linked_nsapi = 0;
struct pdp_t *linked_pdp = NULL;
- if (!gtp_dublicate(gsn, version, peer, seq))
+ /* TODO describe what this is all about: */
+ if (!gtp_duplicate(gsn, version, peer, seq))
return 0;
pdp = &pdp_buf;
memset(pdp, 0, sizeof(struct pdp_t));
if (version == 0) {
+ /* TODO code dup: get_tid() */
uint64_t tid = be64toh(((union gtp_packet *)pack)->gtp0.h.tid);
pdp_set_imsi_nsapi(pdp, tid);
@@ -1511,7 +1513,7 @@ int gtp_create_pdp_ind(struct gsn_t *gsn, int version,
if (!pdp_getimsi(&pdp_old, pdp->imsi, pdp->nsapi)) {
/* Found old pdp with same tid. Now the voodoo begins! */
/* 09.60 / 29.060 allows create on existing context to "steal" */
- /* the context which was allready established */
+ /* the context which was already established */
/* We check that the APN, selection mode and MSISDN is the same */
DEBUGP(DLGTP, "gtp_create_pdp_ind: Old context found\n");
if ((pdp->apn_req.l == pdp_old->apn_req.l)
@@ -1953,9 +1955,9 @@ int gtp_update_pdp_ind(struct gsn_t *gsn, int version,
uint64_t imsi;
uint8_t nsapi;
- /* Is this a dublicate ? */
- if (!gtp_dublicate(gsn, version, peer, seq)) {
- return 0; /* We allready send of response once */
+ /* Is this a duplicate ? */
+ if (!gtp_duplicate(gsn, version, peer, seq)) {
+ return 0; /* We already sent of response once */
}
/* Decode information elements */
@@ -2085,7 +2087,7 @@ int gtp_update_pdp_ind(struct gsn_t *gsn, int version,
}
/* TEIC (conditional) */
- /* If TEIC is not included it means that we have allready received it */
+ /* If TEIC is not included it means that we have already received it */
/* TODO: From 29.060 it is not clear if TEI_C MUST be included for */
/* all updated contexts, or only for one of the linked contexts */
gtpie_gettv4(ie, GTPIE_TEI_C, 0, &pdp->teic_gn);
@@ -2424,9 +2426,9 @@ int gtp_delete_pdp_ind(struct gsn_t *gsn, int version,
int n;
int count = 0;
- /* Is this a dublicate ? */
- if (!gtp_dublicate(gsn, version, peer, seq)) {
- return 0; /* We allready send off response once */
+ /* Is this a duplicate ? */
+ if (!gtp_duplicate(gsn, version, peer, seq)) {
+ return 0; /* We already sent off response once */
}
/* Find the linked context in question */
@@ -2638,7 +2640,7 @@ int gtp_gpdu_ind(struct gsn_t *gsn, int version,
return 0;
}
-/* Receives GTP packet and sends off for further processing
+/* Receives GTP packet and sends off for further processing.
* Function will check the validity of the header. If the header
* is not valid the packet is either dropped or a version not
* supported is returned to the peer.
@@ -147,7 +147,7 @@ struct ul16_t;
struct gtp0_header { /* Descriptions from 3GPP 09.60 */
uint8_t flags; /* 01 bitfield, with typical values */
- /* 000..... Version: 1 (0) */
+ /* 000..... Version: 0 */
/* ...1111. Spare (7) */
/* .......0 SNDCP N-PDU Number flag (0) */
uint8_t type; /* 02 Message type. T-PDU = 0xff */
@@ -223,7 +223,7 @@ union gtp_packet {
* application this struct is provided in order to store all
* relevant information related to the gsn.
*
- * Note that this does not include information storage for '
+ * Note that this does not include information storage for
* each pdp context. This is stored in another struct.
*************************************************************/
@@ -1569,7 +1569,7 @@ int main(int argc, char **argv)
512 = Flat rate, 256 = Hot billing */
/* Create context */
- /* We send this of once. Retransmissions are handled by gtplib */
+ /* We send this off once. Retransmissions are handled by gtplib */
gtp_create_context_req(gsn, pdp, &iparr[n]);
}
@@ -1577,9 +1577,9 @@ int main(int argc, char **argv)
printf("Waiting for response from ggsn........\n\n");
- /******************************************************************/
+ /******************************************************************/
/* Main select loop */
- /******************************************************************/
+ /******************************************************************/
while ((0 != state) && (5 != state)) {
@@ -1613,7 +1613,7 @@ int main(int argc, char **argv)
state = 3;
}
- /* Send off disconnect */
+ /* Send disconnect */
if (3 == state) {
state = 4;
stoptime = time(NULL) + 5; /* Extra seconds to allow disconnect */
@@ -1628,17 +1628,23 @@ int main(int argc, char **argv)
}
}
- /* Send of ping packets */
+ /* Send ping packets */
diff = 0;
while ((diff <= 0) &&
/* Send off an ICMP ping packet */
- /*if ( */ (options.pinghost.s_addr) && (2 == state) &&
+ /*if */ (options.pinghost.s_addr) && (2 == state) &&
((pingseq < options.pingcount)
|| (options.pingcount == 0))) {
+
if (!pingseq)
gettimeofday(&firstping, &tz); /* Set time of first ping */
gettimeofday(&tv, &tz);
- diff = 1000000 / options.pingrate * pingseq - 1000000 * (tv.tv_sec - firstping.tv_sec) - (tv.tv_usec - firstping.tv_usec); /* Microseconds safe up to 500 sec */
+
+ /* Microseconds safe up to 500 sec */
+ diff = 1e6 / options.pingrate * pingseq
+ - 1e6 * (tv.tv_sec - firstping.tv_sec)
+ - (tv.tv_usec - firstping.tv_usec);
+
if (diff <= 0) {
if (options.debug)
printf("Create_ping %d\n", diff);