static void executeDelete(int tokenCount, char **tokens) { time_t refTime; time_t timestamp; uvast fromNodeNbr; uvast toNodeNbr; if (tokenCount < 2) { printText("Delete what?"); return; } if (tokenCount != 5) { SYNTAX_ERROR; return; } if (tokens[2][0] == '*') { timestamp = 0; } else { refTime = _referenceTime(NULL); timestamp = readTimestampUTC(tokens[2], refTime); if (timestamp == 0) { SYNTAX_ERROR; return; } } fromNodeNbr = strtouvast(tokens[3]); toNodeNbr = strtouvast(tokens[4]); if (strcmp(tokens[1], "contact") == 0) { oK(rfx_remove_contact(timestamp, fromNodeNbr, toNodeNbr)); //oK(_forecastNeeded(1)); return; } if (strcmp(tokens[1], "range") == 0) { oK(rfx_remove_range(timestamp, fromNodeNbr, toNodeNbr)); return; } SYNTAX_ERROR; }
static void executeChange(int tokenCount, char **tokens) { if (tokenCount != 3) { SYNTAX_ERROR; return; } imc_updateKin(strtouvast(tokens[1]), atoi(tokens[2])); }
static void executeDelete(int tokenCount, char **tokens) { if (tokenCount != 2) { SYNTAX_ERROR; return; } imc_removeKin(strtouvast(tokens[1])); }
int aoslso(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, int a10) { char *endpointSpec = (char *) a1; unsigned int txbps = (a2 != 0 ? strtoul((char *) a2, NULL, 0) : 0); uvast remoteEngineId = a3 != 0 ? strtouvast((char *) a3) : 0; #else int main(int argc, char *argv[]) { char *endpointSpec = argc > 1 ? argv[1] : NULL; unsigned int txbps = (argc > 2 ? strtoul(argv[2], NULL, 0) : 0); uvast remoteEngineId = argc > 3 ? strtouvast(argv[3]) : 0; #endif Sdr sdr; LtpVspan *vspan; PsmAddress vspanElt; unsigned short portNbr = 0; unsigned int ipAddress = 0; char ownHostName[MAXHOSTNAMELEN]; int running = 1; int segmentLength; char *segment; struct sockaddr socketName; struct sockaddr_in *inetName; int linkSocket; int bytesSent = 0; if( txbps != 0 && remoteEngineId == 0 ) { remoteEngineId = txbps; txbps = 0; } if (remoteEngineId == 0 || endpointSpec == NULL) { PUTS("Usage: aoslso {<remote engine's host name> | @}[:\ <its port number>] <txbps (0=unlimited)> <remote engine ID>"); return 0; }
static void executeInfo(int tokenCount, char **tokens) { ImcDB imcdb; if (tokenCount != 2) { SYNTAX_ERROR; return; } sdr_read(getIonsdr(), (char *) &imcdb, getImcDbObject(), sizeof(ImcDB)); printKin(strtouvast(tokens[1]), imcdb.parent); }
void initializeNode(int tokenCount, char **tokens) { char *ownNodeNbrString = tokens[1]; IonParms parms; if (tokenCount < 2 || *ownNodeNbrString == '\0') { return; } if (ionInitialize(&parms, strtouvast(ownNodeNbrString)) < 0) { putErrmsg("ionadmin can't initialize ION.", NULL); } }
static void executeInfo(int tokenCount, char **tokens) { Sdr sdr = getIonsdr(); ImcDB imcdb; if (tokenCount != 2) { SYNTAX_ERROR; return; } CHKVOID(sdr_begin_xn(sdr)); sdr_read(getIonsdr(), (char *) &imcdb, getImcDbObject(), sizeof(ImcDB)); printKin(strtouvast(tokens[1]), imcdb.parent); sdr_exit_xn(sdr); }
int sdatest(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, int a10) { uvast destEngineId = (uvast) a1; #else int main(int argc, char **argv) { uvast destEngineId = 0; if (argc > 2) argc = 2; switch (argc) { case 2: destEngineId = strtouvast(argv[1]); default: break; } #endif return run_sdatest(destEngineId); }
void executeAdd(int tokenCount, char **tokens) { time_t refTime; time_t fromTime; time_t toTime; uvast fromNodeNbr; uvast toNodeNbr; unsigned int xmitRate; float prob; unsigned int owlt; if (tokenCount < 2) { //printText("Add what?"); return; } switch (tokenCount) { case 8: prob = atof(tokens[7]); break; case 7: prob = 1.0; break; default: SYNTAX_ERROR; return; } refTime = _referenceTime(NULL); fromTime = readTimestampUTC(tokens[2], refTime); toTime = readTimestampUTC(tokens[3], refTime); if (toTime <= fromTime) { printText("Interval end time must be later than start time."); return; } fromNodeNbr = strtouvast(tokens[4]); toNodeNbr = strtouvast(tokens[5]); if (strcmp(tokens[1], "contact") == 0) { xmitRate = strtol(tokens[6], NULL, 0); oK(rfx_insert_contact(fromTime, toTime, fromNodeNbr, toNodeNbr, xmitRate, prob)); //oK(_forecastNeeded(1)); return; } if (strcmp(tokens[1], "range") == 0) { owlt = atoi(tokens[6]); oK(rfx_insert_range(fromTime, toTime, fromNodeNbr, toNodeNbr, owlt)); return; } SYNTAX_ERROR; }
static void executeInfo(int tokenCount, char **tokens) { Sdr sdr = getIonsdr(); PsmPartition ionwm = getIonwm(); IonVdb *vdb = getIonVdb(); time_t refTime; time_t timestamp; uvast fromNode; uvast toNode; IonCXref arg1; PsmAddress elt; PsmAddress addr; PsmAddress nextElt; char buffer[RFX_NOTE_LEN]; IonRXref arg2; if (tokenCount < 2) { printText("Information on what?"); return; } if (tokenCount != 5) { SYNTAX_ERROR; return; } refTime = _referenceTime(NULL); timestamp = readTimestampUTC(tokens[2], refTime); fromNode = strtouvast(tokens[3]); toNode = strtouvast(tokens[4]); if (strcmp(tokens[1], "contact") == 0) { memset((char *) &arg1, 0, sizeof(IonCXref)); arg1.fromNode = fromNode; arg1.toNode = toNode; arg1.fromTime = timestamp; CHKVOID(sdr_begin_xn(sdr)); elt = sm_rbt_search(ionwm, vdb->contactIndex, rfx_order_contacts, &arg1, &nextElt); if (elt) { addr = sm_rbt_data(ionwm, elt); oK(rfx_print_contact(addr, buffer)); printText(buffer); } else { printText("Contact not found in database."); } sdr_exit_xn(sdr); return; } if (strcmp(tokens[1], "range") == 0) { memset((char *) &arg2, 0, sizeof(IonRXref)); arg2.fromNode = fromNode; arg2.toNode = toNode; arg2.fromTime = timestamp; CHKVOID(sdr_begin_xn(sdr)); elt = sm_rbt_search(ionwm, vdb->rangeIndex, rfx_order_ranges, &arg2, &nextElt); if (elt) { addr = sm_rbt_data(ionwm, elt); oK(rfx_print_range(addr, buffer)); printText(buffer); } else { printText("Range not found in database."); } sdr_exit_xn(sdr); return; } SYNTAX_ERROR; }
int pmqlso(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, int a10) { char *mqName = (char *) a1; uvast remoteEngineId = a2 != 0 ? strtouvast((char *) a2) : 0; #else int main(int argc, char *argv[]) { char *mqName = argc > 1 ? argv[1] : NULL; uvast remoteEngineId = argc > 2 ? strtouvast(argv[2]) : 0; #endif Sdr sdr; LtpVspan *vspan; PsmAddress vspanElt; struct mq_attr mqAttributes = { 0, PMQLSA_MAXMSG, PMQLSA_MSGSIZE, 0 }; mqd_t mq; int running; int segmentLength; char *segment; if (remoteEngineId == 0 || mqName == NULL) { puts("Usage: pmqlso <message queue name> <remote engine ID>"); return 0; } /* Note that ltpadmin must be run before the first * invocation of ltplso, to initialize the LTP database * (as necessary) and dynamic database. */ if (ltpInit(0) < 0) { putErrmsg("pmqlso can't initialize LTP.", NULL); return 1; } sdr = getIonsdr(); CHKERR(sdr_begin_xn(sdr)); /* Just to lock memory. */ findSpan(remoteEngineId, &vspan, &vspanElt); if (vspanElt == 0) { sdr_exit_xn(sdr); putErrmsg("No such engine in database.", itoa(remoteEngineId)); return 1; } if (vspan->lsoPid > 0 && vspan->lsoPid != sm_TaskIdSelf()) { sdr_exit_xn(sdr); putErrmsg("LSO task is already started for this span.", itoa(vspan->lsoPid)); return 1; } /* All command-line arguments are now validated. */ sdr_exit_xn(sdr); mq = mq_open(mqName, O_RDWR | O_CREAT, 0777, &mqAttributes); if (mq == (mqd_t) -1) { putSysErrmsg("pmqlso can't open message queue", mqName); return 1; } oK(_pmqlsoSemaphore(&vspan->segSemaphore)); isignal(SIGTERM, interruptThread); /* Can now begin transmitting to remote engine. */ writeMemo("[i] pmqlso is running."); running = 1; while (running && !(sm_SemEnded(_pmqlsoSemaphore(NULL)))) { segmentLength = ltpDequeueOutboundSegment(vspan, &segment); if (segmentLength < 0) { running = 0; /* Terminate LSO. */ continue; } if (segmentLength == 0) /* Interrupted. */ { continue; } if (segmentLength > PMQLSA_MSGSIZE) { putErrmsg("Segment is too big for PMQ LSO.", itoa(segmentLength)); running = 0; /* Terminate LSO. */ continue; } if (sendSegmentByPMQ(mq, segment, segmentLength) < 0) { putSysErrmsg("pmqlso failed sending segment", mqName); running = 0; /* Terminate LSO. */ continue; } /* Make sure other tasks have a chance to run. */ sm_TaskYield(); } mq_close(mq); writeErrmsgMemos(); writeMemo("[i] pmqlso duct has ended."); ionDetach(); return 0; }