tunnel config
This commit is contained in:
@@ -134,6 +134,7 @@ static nn_Exit ne_modemBullshit(nn_ModemRequest *req) {
|
|||||||
return NN_OK;
|
return NN_OK;
|
||||||
}
|
}
|
||||||
if(req->action == NN_MODEM_SEND) {
|
if(req->action == NN_MODEM_SEND) {
|
||||||
|
req->send.strengthSent = req->modem->maxRange;
|
||||||
printf("Transmission from %s to %s (port %zu) of %zu bytes (%zu values)\n", req->localAddress, req->send.address == NULL ? "*" : req->send.address, req->send.port, req->send.contents->buflen, req->send.contents->valueCount);
|
printf("Transmission from %s to %s (port %zu) of %zu bytes (%zu values)\n", req->localAddress, req->send.address == NULL ? "*" : req->send.address, req->send.port, req->send.contents->buflen, req->send.contents->valueCount);
|
||||||
return nn_pushModemMessage(C, req->localAddress, nn_getComputerAddress(C), req->send.port, 0, req->send.contents);
|
return nn_pushModemMessage(C, req->localAddress, nn_getComputerAddress(C), req->send.port, 0, req->send.contents);
|
||||||
}
|
}
|
||||||
@@ -488,7 +489,7 @@ int main(int argc, char **argv) {
|
|||||||
nn_setComponentHandler(ocelotCard, sandbox_handler);
|
nn_setComponentHandler(ocelotCard, sandbox_handler);
|
||||||
|
|
||||||
nn_Component *dataCard = nn_createDataCard(u, NULL, &nn_defaultDataCards[2], NULL, ne_dataBullshit);
|
nn_Component *dataCard = nn_createDataCard(u, NULL, &nn_defaultDataCards[2], NULL, ne_dataBullshit);
|
||||||
nn_Component *modem = nn_createModem(u, NULL, &nn_defaultWiredModem, NULL, ne_modemBullshit);
|
nn_Component *modem = nn_createModem(u, NULL, &nn_defaultWirelessModems[1], NULL, ne_modemBullshit);
|
||||||
|
|
||||||
char *eepromCode = (char *)minBIOS;
|
char *eepromCode = (char *)minBIOS;
|
||||||
size_t eepromSize = strlen(minBIOS);
|
size_t eepromSize = strlen(minBIOS);
|
||||||
|
|||||||
@@ -6195,6 +6195,7 @@ static nn_Exit nn_dataHandler(nn_ComponentRequest *req) {
|
|||||||
dreq.action = NN_DATA_ENCODE64;
|
dreq.action = NN_DATA_ENCODE64;
|
||||||
dreq.data = nn_tolstring(C, 0, &dreq.datalen);
|
dreq.data = nn_tolstring(C, 0, &dreq.datalen);
|
||||||
if(dreq.datalen > dataCard.limit) return NN_ELIMIT;
|
if(dreq.datalen > dataCard.limit) return NN_ELIMIT;
|
||||||
|
nn_removeEnergy(C, dataCard.trivialCost + dataCard.trivialCostByte * dreq.datalen);
|
||||||
e = state->handler(&dreq);
|
e = state->handler(&dreq);
|
||||||
if(e) return e;
|
if(e) return e;
|
||||||
req->returnCount = 1;
|
req->returnCount = 1;
|
||||||
@@ -6206,6 +6207,7 @@ static nn_Exit nn_dataHandler(nn_ComponentRequest *req) {
|
|||||||
dreq.action = NN_DATA_DECODE64;
|
dreq.action = NN_DATA_DECODE64;
|
||||||
dreq.data = nn_tolstring(C, 0, &dreq.datalen);
|
dreq.data = nn_tolstring(C, 0, &dreq.datalen);
|
||||||
if(dreq.datalen > dataCard.limit) return NN_ELIMIT;
|
if(dreq.datalen > dataCard.limit) return NN_ELIMIT;
|
||||||
|
nn_removeEnergy(C, dataCard.trivialCost + dataCard.trivialCostByte * dreq.datalen);
|
||||||
e = state->handler(&dreq);
|
e = state->handler(&dreq);
|
||||||
if(e) return e;
|
if(e) return e;
|
||||||
req->returnCount = 1;
|
req->returnCount = 1;
|
||||||
@@ -6217,6 +6219,7 @@ static nn_Exit nn_dataHandler(nn_ComponentRequest *req) {
|
|||||||
dreq.action = NN_DATA_DEFLATE;
|
dreq.action = NN_DATA_DEFLATE;
|
||||||
dreq.data = nn_tolstring(C, 0, &dreq.datalen);
|
dreq.data = nn_tolstring(C, 0, &dreq.datalen);
|
||||||
if(dreq.datalen > dataCard.limit) return NN_ELIMIT;
|
if(dreq.datalen > dataCard.limit) return NN_ELIMIT;
|
||||||
|
nn_removeEnergy(C, dataCard.complexCost + dataCard.complexCostByte * dreq.datalen);
|
||||||
e = state->handler(&dreq);
|
e = state->handler(&dreq);
|
||||||
if(e) return e;
|
if(e) return e;
|
||||||
req->returnCount = 1;
|
req->returnCount = 1;
|
||||||
@@ -6228,6 +6231,7 @@ static nn_Exit nn_dataHandler(nn_ComponentRequest *req) {
|
|||||||
dreq.action = NN_DATA_INFLATE;
|
dreq.action = NN_DATA_INFLATE;
|
||||||
dreq.data = nn_tolstring(C, 0, &dreq.datalen);
|
dreq.data = nn_tolstring(C, 0, &dreq.datalen);
|
||||||
if(dreq.datalen > dataCard.limit) return NN_ELIMIT;
|
if(dreq.datalen > dataCard.limit) return NN_ELIMIT;
|
||||||
|
nn_removeEnergy(C, dataCard.complexCost + dataCard.complexCostByte * dreq.datalen);
|
||||||
e = state->handler(&dreq);
|
e = state->handler(&dreq);
|
||||||
if(e) return e;
|
if(e) return e;
|
||||||
req->returnCount = 1;
|
req->returnCount = 1;
|
||||||
@@ -6239,6 +6243,7 @@ static nn_Exit nn_dataHandler(nn_ComponentRequest *req) {
|
|||||||
dreq.action = NN_DATA_CRC32;
|
dreq.action = NN_DATA_CRC32;
|
||||||
dreq.crc32.data = nn_tolstring(C, 0, &dreq.crc32.datalen);
|
dreq.crc32.data = nn_tolstring(C, 0, &dreq.crc32.datalen);
|
||||||
if(dreq.crc32.datalen > dataCard.limit) return NN_ELIMIT;
|
if(dreq.crc32.datalen > dataCard.limit) return NN_ELIMIT;
|
||||||
|
nn_removeEnergy(C, dataCard.trivialCost + dataCard.trivialCostByte * dreq.crc32.datalen);
|
||||||
e = state->handler(&dreq);
|
e = state->handler(&dreq);
|
||||||
if(e) return e;
|
if(e) return e;
|
||||||
req->returnCount = 1;
|
req->returnCount = 1;
|
||||||
@@ -6250,6 +6255,7 @@ static nn_Exit nn_dataHandler(nn_ComponentRequest *req) {
|
|||||||
dreq.action = NN_DATA_MD5;
|
dreq.action = NN_DATA_MD5;
|
||||||
dreq.md5.data = nn_tolstring(C, 0, &dreq.md5.datalen);
|
dreq.md5.data = nn_tolstring(C, 0, &dreq.md5.datalen);
|
||||||
if(dreq.md5.datalen > dataCard.limit) return NN_ELIMIT;
|
if(dreq.md5.datalen > dataCard.limit) return NN_ELIMIT;
|
||||||
|
nn_removeEnergy(C, dataCard.simpleCost + dataCard.simpleCostByte * dreq.md5.datalen);
|
||||||
e = state->handler(&dreq);
|
e = state->handler(&dreq);
|
||||||
if(e) return e;
|
if(e) return e;
|
||||||
req->returnCount = 1;
|
req->returnCount = 1;
|
||||||
@@ -6261,6 +6267,7 @@ static nn_Exit nn_dataHandler(nn_ComponentRequest *req) {
|
|||||||
dreq.action = NN_DATA_SHA256;
|
dreq.action = NN_DATA_SHA256;
|
||||||
dreq.sha256.data = nn_tolstring(C, 0, &dreq.sha256.datalen);
|
dreq.sha256.data = nn_tolstring(C, 0, &dreq.sha256.datalen);
|
||||||
if(dreq.sha256.datalen > dataCard.limit) return NN_ELIMIT;
|
if(dreq.sha256.datalen > dataCard.limit) return NN_ELIMIT;
|
||||||
|
nn_removeEnergy(C, dataCard.complexCost + dataCard.complexCostByte * dreq.sha256.datalen);
|
||||||
e = state->handler(&dreq);
|
e = state->handler(&dreq);
|
||||||
if(e) return e;
|
if(e) return e;
|
||||||
req->returnCount = 1;
|
req->returnCount = 1;
|
||||||
@@ -6274,6 +6281,7 @@ static nn_Exit nn_dataHandler(nn_ComponentRequest *req) {
|
|||||||
n = 1;
|
n = 1;
|
||||||
}
|
}
|
||||||
if(n > dataCard.maxRandom) return NN_ELIMIT;
|
if(n > dataCard.maxRandom) return NN_ELIMIT;
|
||||||
|
nn_removeEnergy(C, dataCard.complexCost + dataCard.complexCostByte * n);
|
||||||
char *buf = nn_alloc(ctx, n);
|
char *buf = nn_alloc(ctx, n);
|
||||||
dreq.action = NN_DATA_RANDOM;
|
dreq.action = NN_DATA_RANDOM;
|
||||||
dreq.randbuf.buf = buf;
|
dreq.randbuf.buf = buf;
|
||||||
@@ -6296,6 +6304,7 @@ static nn_Exit nn_dataHandler(nn_ComponentRequest *req) {
|
|||||||
dreq.action = NN_DATA_ENCRYPT;
|
dreq.action = NN_DATA_ENCRYPT;
|
||||||
dreq.encrypt.data = nn_tolstring(C, 0, &dreq.encrypt.datalen);
|
dreq.encrypt.data = nn_tolstring(C, 0, &dreq.encrypt.datalen);
|
||||||
if(dreq.encrypt.datalen > dataCard.limit) return NN_ELIMIT;
|
if(dreq.encrypt.datalen > dataCard.limit) return NN_ELIMIT;
|
||||||
|
nn_removeEnergy(C, dataCard.simpleCost + dataCard.simpleCostByte * dreq.encrypt.datalen);
|
||||||
size_t len;
|
size_t len;
|
||||||
dreq.encrypt.key = nn_tolstring(C, 1, &len);
|
dreq.encrypt.key = nn_tolstring(C, 1, &len);
|
||||||
if(len != 16) {
|
if(len != 16) {
|
||||||
@@ -6320,6 +6329,7 @@ static nn_Exit nn_dataHandler(nn_ComponentRequest *req) {
|
|||||||
dreq.action = NN_DATA_ENCRYPT;
|
dreq.action = NN_DATA_ENCRYPT;
|
||||||
dreq.encrypt.data = nn_tolstring(C, 0, &dreq.encrypt.datalen);
|
dreq.encrypt.data = nn_tolstring(C, 0, &dreq.encrypt.datalen);
|
||||||
if(dreq.encrypt.datalen > dataCard.limit) return NN_ELIMIT;
|
if(dreq.encrypt.datalen > dataCard.limit) return NN_ELIMIT;
|
||||||
|
nn_removeEnergy(C, dataCard.simpleCost + dataCard.simpleCostByte * dreq.encrypt.datalen);
|
||||||
size_t len;
|
size_t len;
|
||||||
dreq.encrypt.key = nn_tolstring(C, 1, &len);
|
dreq.encrypt.key = nn_tolstring(C, 1, &len);
|
||||||
if(len != 16) {
|
if(len != 16) {
|
||||||
@@ -6502,9 +6512,11 @@ static nn_Exit nn_modemHandler(nn_ComponentRequest *req) {
|
|||||||
mreq.send.address = NULL;
|
mreq.send.address = NULL;
|
||||||
mreq.send.port = port;
|
mreq.send.port = port;
|
||||||
mreq.send.contents = &data;
|
mreq.send.contents = &data;
|
||||||
|
mreq.send.strengthSent = 0;
|
||||||
e = state->handler(&mreq);
|
e = state->handler(&mreq);
|
||||||
nn_dropNetworkContents(&data);
|
nn_dropNetworkContents(&data);
|
||||||
if(!e) {
|
if(!e) {
|
||||||
|
nn_removeEnergy(C, state->modem.basePacketCost + state->modem.fullPacketCost * cost / state->modem.maxPacketSize + state->modem.costPerStrength * mreq.send.strengthSent);
|
||||||
req->returnCount = 1;
|
req->returnCount = 1;
|
||||||
e = nn_pushbool(C, true);
|
e = nn_pushbool(C, true);
|
||||||
}
|
}
|
||||||
@@ -6534,9 +6546,11 @@ static nn_Exit nn_modemHandler(nn_ComponentRequest *req) {
|
|||||||
mreq.send.address = addr;
|
mreq.send.address = addr;
|
||||||
mreq.send.port = port;
|
mreq.send.port = port;
|
||||||
mreq.send.contents = &data;
|
mreq.send.contents = &data;
|
||||||
|
mreq.send.strengthSent = 0;
|
||||||
e = state->handler(&mreq);
|
e = state->handler(&mreq);
|
||||||
nn_dropNetworkContents(&data);
|
nn_dropNetworkContents(&data);
|
||||||
if(!e) {
|
if(!e) {
|
||||||
|
nn_removeEnergy(C, state->modem.basePacketCost + state->modem.fullPacketCost * cost / state->modem.maxPacketSize + state->modem.costPerStrength * mreq.send.strengthSent);
|
||||||
req->returnCount = 1;
|
req->returnCount = 1;
|
||||||
e = nn_pushbool(C, true);
|
e = nn_pushbool(C, true);
|
||||||
}
|
}
|
||||||
@@ -6599,10 +6613,11 @@ nn_Modem nn_defaultWiredModem = {
|
|||||||
.maxPacketSize = 8192,
|
.maxPacketSize = 8192,
|
||||||
.maxOpenPorts = 16,
|
.maxOpenPorts = 16,
|
||||||
.isWired = true,
|
.isWired = true,
|
||||||
.basePacketCost = 0.5,
|
.basePacketCost = 0.05,
|
||||||
.fullPacketCost = 1,
|
.fullPacketCost = 0.1,
|
||||||
.costPerStrength = 0,
|
.costPerStrength = 0,
|
||||||
};
|
};
|
||||||
|
|
||||||
nn_Modem nn_defaultWirelessModems[2] = {
|
nn_Modem nn_defaultWirelessModems[2] = {
|
||||||
NN_INIT(nn_Modem) {
|
NN_INIT(nn_Modem) {
|
||||||
.maxRange = 16,
|
.maxRange = 16,
|
||||||
@@ -6610,8 +6625,8 @@ nn_Modem nn_defaultWirelessModems[2] = {
|
|||||||
.maxPacketSize = 8192,
|
.maxPacketSize = 8192,
|
||||||
.maxOpenPorts = 16,
|
.maxOpenPorts = 16,
|
||||||
.isWired = true,
|
.isWired = true,
|
||||||
.basePacketCost = 1,
|
.basePacketCost = 0.1,
|
||||||
.fullPacketCost = 5,
|
.fullPacketCost = 0.5,
|
||||||
.costPerStrength = 0.05,
|
.costPerStrength = 0.05,
|
||||||
},
|
},
|
||||||
NN_INIT(nn_Modem) {
|
NN_INIT(nn_Modem) {
|
||||||
@@ -6620,8 +6635,15 @@ nn_Modem nn_defaultWirelessModems[2] = {
|
|||||||
.maxPacketSize = 8192,
|
.maxPacketSize = 8192,
|
||||||
.maxOpenPorts = 16,
|
.maxOpenPorts = 16,
|
||||||
.isWired = true,
|
.isWired = true,
|
||||||
.basePacketCost = 2,
|
.basePacketCost = 0.2,
|
||||||
.fullPacketCost = 10,
|
.fullPacketCost = 1,
|
||||||
.costPerStrength = 0.05,
|
.costPerStrength = 0.05,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
nn_Tunnel nn_defaultTunnel = {
|
||||||
|
.maxValues = 8,
|
||||||
|
.maxPacketSize = 8192,
|
||||||
|
.basePacketCost = 100,
|
||||||
|
.fullPacketCost = 256,
|
||||||
|
};
|
||||||
|
|||||||
@@ -1902,6 +1902,9 @@ typedef struct nn_ModemRequest {
|
|||||||
// NULL for broadcast
|
// NULL for broadcast
|
||||||
const char *address;
|
const char *address;
|
||||||
size_t port;
|
size_t port;
|
||||||
|
// The signal strength it was sent at
|
||||||
|
// This is an *OUT* field, it is assumed the handler keeps track of the correct strength
|
||||||
|
size_t strengthSent;
|
||||||
} send;
|
} send;
|
||||||
// for getStrength, setStrength.
|
// for getStrength, setStrength.
|
||||||
size_t strength;
|
size_t strength;
|
||||||
@@ -1927,6 +1930,10 @@ typedef struct nn_Tunnel {
|
|||||||
size_t maxValues;
|
size_t maxValues;
|
||||||
// maximum logical packet size. Note that the encoding is more efficient than the packet size algorithm estimates
|
// maximum logical packet size. Note that the encoding is more efficient than the packet size algorithm estimates
|
||||||
size_t maxPacketSize;
|
size_t maxPacketSize;
|
||||||
|
// minimum energy cost of 1 transmission
|
||||||
|
double basePacketCost;
|
||||||
|
// extra energy cost of 1 full transmission
|
||||||
|
double fullPacketCost;
|
||||||
} nn_Tunnel;
|
} nn_Tunnel;
|
||||||
|
|
||||||
extern nn_Tunnel nn_defaultTunnel;
|
extern nn_Tunnel nn_defaultTunnel;
|
||||||
|
|||||||
Reference in New Issue
Block a user