tunnel config
This commit is contained in:
@@ -134,6 +134,7 @@ static nn_Exit ne_modemBullshit(nn_ModemRequest *req) {
|
||||
return NN_OK;
|
||||
}
|
||||
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);
|
||||
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_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;
|
||||
size_t eepromSize = strlen(minBIOS);
|
||||
|
||||
@@ -6195,6 +6195,7 @@ static nn_Exit nn_dataHandler(nn_ComponentRequest *req) {
|
||||
dreq.action = NN_DATA_ENCODE64;
|
||||
dreq.data = nn_tolstring(C, 0, &dreq.datalen);
|
||||
if(dreq.datalen > dataCard.limit) return NN_ELIMIT;
|
||||
nn_removeEnergy(C, dataCard.trivialCost + dataCard.trivialCostByte * dreq.datalen);
|
||||
e = state->handler(&dreq);
|
||||
if(e) return e;
|
||||
req->returnCount = 1;
|
||||
@@ -6206,6 +6207,7 @@ static nn_Exit nn_dataHandler(nn_ComponentRequest *req) {
|
||||
dreq.action = NN_DATA_DECODE64;
|
||||
dreq.data = nn_tolstring(C, 0, &dreq.datalen);
|
||||
if(dreq.datalen > dataCard.limit) return NN_ELIMIT;
|
||||
nn_removeEnergy(C, dataCard.trivialCost + dataCard.trivialCostByte * dreq.datalen);
|
||||
e = state->handler(&dreq);
|
||||
if(e) return e;
|
||||
req->returnCount = 1;
|
||||
@@ -6217,6 +6219,7 @@ static nn_Exit nn_dataHandler(nn_ComponentRequest *req) {
|
||||
dreq.action = NN_DATA_DEFLATE;
|
||||
dreq.data = nn_tolstring(C, 0, &dreq.datalen);
|
||||
if(dreq.datalen > dataCard.limit) return NN_ELIMIT;
|
||||
nn_removeEnergy(C, dataCard.complexCost + dataCard.complexCostByte * dreq.datalen);
|
||||
e = state->handler(&dreq);
|
||||
if(e) return e;
|
||||
req->returnCount = 1;
|
||||
@@ -6228,6 +6231,7 @@ static nn_Exit nn_dataHandler(nn_ComponentRequest *req) {
|
||||
dreq.action = NN_DATA_INFLATE;
|
||||
dreq.data = nn_tolstring(C, 0, &dreq.datalen);
|
||||
if(dreq.datalen > dataCard.limit) return NN_ELIMIT;
|
||||
nn_removeEnergy(C, dataCard.complexCost + dataCard.complexCostByte * dreq.datalen);
|
||||
e = state->handler(&dreq);
|
||||
if(e) return e;
|
||||
req->returnCount = 1;
|
||||
@@ -6239,6 +6243,7 @@ static nn_Exit nn_dataHandler(nn_ComponentRequest *req) {
|
||||
dreq.action = NN_DATA_CRC32;
|
||||
dreq.crc32.data = nn_tolstring(C, 0, &dreq.crc32.datalen);
|
||||
if(dreq.crc32.datalen > dataCard.limit) return NN_ELIMIT;
|
||||
nn_removeEnergy(C, dataCard.trivialCost + dataCard.trivialCostByte * dreq.crc32.datalen);
|
||||
e = state->handler(&dreq);
|
||||
if(e) return e;
|
||||
req->returnCount = 1;
|
||||
@@ -6250,6 +6255,7 @@ static nn_Exit nn_dataHandler(nn_ComponentRequest *req) {
|
||||
dreq.action = NN_DATA_MD5;
|
||||
dreq.md5.data = nn_tolstring(C, 0, &dreq.md5.datalen);
|
||||
if(dreq.md5.datalen > dataCard.limit) return NN_ELIMIT;
|
||||
nn_removeEnergy(C, dataCard.simpleCost + dataCard.simpleCostByte * dreq.md5.datalen);
|
||||
e = state->handler(&dreq);
|
||||
if(e) return e;
|
||||
req->returnCount = 1;
|
||||
@@ -6261,6 +6267,7 @@ static nn_Exit nn_dataHandler(nn_ComponentRequest *req) {
|
||||
dreq.action = NN_DATA_SHA256;
|
||||
dreq.sha256.data = nn_tolstring(C, 0, &dreq.sha256.datalen);
|
||||
if(dreq.sha256.datalen > dataCard.limit) return NN_ELIMIT;
|
||||
nn_removeEnergy(C, dataCard.complexCost + dataCard.complexCostByte * dreq.sha256.datalen);
|
||||
e = state->handler(&dreq);
|
||||
if(e) return e;
|
||||
req->returnCount = 1;
|
||||
@@ -6274,6 +6281,7 @@ static nn_Exit nn_dataHandler(nn_ComponentRequest *req) {
|
||||
n = 1;
|
||||
}
|
||||
if(n > dataCard.maxRandom) return NN_ELIMIT;
|
||||
nn_removeEnergy(C, dataCard.complexCost + dataCard.complexCostByte * n);
|
||||
char *buf = nn_alloc(ctx, n);
|
||||
dreq.action = NN_DATA_RANDOM;
|
||||
dreq.randbuf.buf = buf;
|
||||
@@ -6296,6 +6304,7 @@ static nn_Exit nn_dataHandler(nn_ComponentRequest *req) {
|
||||
dreq.action = NN_DATA_ENCRYPT;
|
||||
dreq.encrypt.data = nn_tolstring(C, 0, &dreq.encrypt.datalen);
|
||||
if(dreq.encrypt.datalen > dataCard.limit) return NN_ELIMIT;
|
||||
nn_removeEnergy(C, dataCard.simpleCost + dataCard.simpleCostByte * dreq.encrypt.datalen);
|
||||
size_t len;
|
||||
dreq.encrypt.key = nn_tolstring(C, 1, &len);
|
||||
if(len != 16) {
|
||||
@@ -6320,6 +6329,7 @@ static nn_Exit nn_dataHandler(nn_ComponentRequest *req) {
|
||||
dreq.action = NN_DATA_ENCRYPT;
|
||||
dreq.encrypt.data = nn_tolstring(C, 0, &dreq.encrypt.datalen);
|
||||
if(dreq.encrypt.datalen > dataCard.limit) return NN_ELIMIT;
|
||||
nn_removeEnergy(C, dataCard.simpleCost + dataCard.simpleCostByte * dreq.encrypt.datalen);
|
||||
size_t len;
|
||||
dreq.encrypt.key = nn_tolstring(C, 1, &len);
|
||||
if(len != 16) {
|
||||
@@ -6502,9 +6512,11 @@ static nn_Exit nn_modemHandler(nn_ComponentRequest *req) {
|
||||
mreq.send.address = NULL;
|
||||
mreq.send.port = port;
|
||||
mreq.send.contents = &data;
|
||||
mreq.send.strengthSent = 0;
|
||||
e = state->handler(&mreq);
|
||||
nn_dropNetworkContents(&data);
|
||||
if(!e) {
|
||||
nn_removeEnergy(C, state->modem.basePacketCost + state->modem.fullPacketCost * cost / state->modem.maxPacketSize + state->modem.costPerStrength * mreq.send.strengthSent);
|
||||
req->returnCount = 1;
|
||||
e = nn_pushbool(C, true);
|
||||
}
|
||||
@@ -6534,9 +6546,11 @@ static nn_Exit nn_modemHandler(nn_ComponentRequest *req) {
|
||||
mreq.send.address = addr;
|
||||
mreq.send.port = port;
|
||||
mreq.send.contents = &data;
|
||||
mreq.send.strengthSent = 0;
|
||||
e = state->handler(&mreq);
|
||||
nn_dropNetworkContents(&data);
|
||||
if(!e) {
|
||||
nn_removeEnergy(C, state->modem.basePacketCost + state->modem.fullPacketCost * cost / state->modem.maxPacketSize + state->modem.costPerStrength * mreq.send.strengthSent);
|
||||
req->returnCount = 1;
|
||||
e = nn_pushbool(C, true);
|
||||
}
|
||||
@@ -6599,10 +6613,11 @@ nn_Modem nn_defaultWiredModem = {
|
||||
.maxPacketSize = 8192,
|
||||
.maxOpenPorts = 16,
|
||||
.isWired = true,
|
||||
.basePacketCost = 0.5,
|
||||
.fullPacketCost = 1,
|
||||
.basePacketCost = 0.05,
|
||||
.fullPacketCost = 0.1,
|
||||
.costPerStrength = 0,
|
||||
};
|
||||
|
||||
nn_Modem nn_defaultWirelessModems[2] = {
|
||||
NN_INIT(nn_Modem) {
|
||||
.maxRange = 16,
|
||||
@@ -6610,8 +6625,8 @@ nn_Modem nn_defaultWirelessModems[2] = {
|
||||
.maxPacketSize = 8192,
|
||||
.maxOpenPorts = 16,
|
||||
.isWired = true,
|
||||
.basePacketCost = 1,
|
||||
.fullPacketCost = 5,
|
||||
.basePacketCost = 0.1,
|
||||
.fullPacketCost = 0.5,
|
||||
.costPerStrength = 0.05,
|
||||
},
|
||||
NN_INIT(nn_Modem) {
|
||||
@@ -6620,8 +6635,15 @@ nn_Modem nn_defaultWirelessModems[2] = {
|
||||
.maxPacketSize = 8192,
|
||||
.maxOpenPorts = 16,
|
||||
.isWired = true,
|
||||
.basePacketCost = 2,
|
||||
.fullPacketCost = 10,
|
||||
.basePacketCost = 0.2,
|
||||
.fullPacketCost = 1,
|
||||
.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
|
||||
const char *address;
|
||||
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;
|
||||
// for getStrength, setStrength.
|
||||
size_t strength;
|
||||
@@ -1927,6 +1930,10 @@ typedef struct nn_Tunnel {
|
||||
size_t maxValues;
|
||||
// maximum logical packet size. Note that the encoding is more efficient than the packet size algorithm estimates
|
||||
size_t maxPacketSize;
|
||||
// minimum energy cost of 1 transmission
|
||||
double basePacketCost;
|
||||
// extra energy cost of 1 full transmission
|
||||
double fullPacketCost;
|
||||
} nn_Tunnel;
|
||||
|
||||
extern nn_Tunnel nn_defaultTunnel;
|
||||
|
||||
Reference in New Issue
Block a user