Revision b62acf40 proto/bgp/packets.c
proto/bgp/packets.c | ||
---|---|---|
1753 | 1753 |
net_addr *n = (net_addr *) &net; |
1754 | 1754 |
|
1755 | 1755 |
int keyAdr = n->data[0] + n->data[1] + n->data[2] + n->data[3]; |
1756 |
char *asCKey = calloc(12, sizeof(char));
|
|
1756 |
char asCKey[12];
|
|
1757 | 1757 |
char local_cKey[12]; |
1758 | 1758 |
sprintf(local_cKey, "%d%d%d%d", n->data[3], n->data[2], n->data[1], n->data[0]); |
1759 | 1759 |
sprintf(cKey, "%d%d%d%d", n->data[3], n->data[2], n->data[1], n->data[0]); |
1760 | 1760 |
//sprintf(nhCKey, "%d", nhKey); |
1761 |
snprintf(asCKey, 13, "%d", ASRicezione);
|
|
1761 |
sprintf(asCKey, "%d", ASRicezione);
|
|
1762 | 1762 |
|
1763 | 1763 |
RTable *objFound; |
1764 | 1764 |
map_iter_t iter; |
1765 | 1765 |
const char *key; |
1766 | 1766 |
int *NHmap; |
1767 |
log(L_INFO "local_cKey: %s, nhCKey: %s, asCKey: %s", local_cKey, nhCKey, *asCKey);
|
|
1767 |
log(L_INFO "local_cKey: %s, nhCKey: %s, asCKey: %s", local_cKey, nhCKey, asCKey); |
|
1768 | 1768 |
statoAttualeDellaMappa(); |
1769 | 1769 |
//log(L_INFO "{type: UPDATE_RX, dest: %I4, from: %s, nh: %s}", net.prefix, asCKey, nhCKey); |
1770 | 1770 |
|
... | ... | |
1834 | 1834 |
objFound = map_get(RTmap, local_cKey); |
1835 | 1835 |
if(objFound != NULL) { |
1836 | 1836 |
if (objFound->interno != 0) { //Se io sono origine e NH allora non aggiungo niente, non ho carico in ingresso per le mie stesse destinazioni |
1837 |
float *LoadInmap = map_get(objFound->loadin, *asCKey);
|
|
1837 |
float *LoadInmap = map_get(objFound->loadin, asCKey); |
|
1838 | 1838 |
if (LoadInmap) { |
1839 | 1839 |
snprintf(output, 50, "%f", loadOutRilevato); |
1840 | 1840 |
log(L_INFO "Aggiorno il valore loadIn per questo NH, loadOutRilevato: %s NNH: %d", output, numeroNHarrivati); |
... | ... | |
1843 | 1843 |
log(L_INFO "Nuovo valore: %s", output); |
1844 | 1844 |
} else { |
1845 | 1845 |
snprintf(output, 50, "%f", loadOutRilevato); |
1846 |
log(L_INFO "LoadIn non trovato nella mappa, lo aggiungo key: %s, loadOutRilevato: %s NNH: %d", *asCKey, output, numeroNHarrivati);
|
|
1846 |
log(L_INFO "LoadIn non trovato nella mappa, lo aggiungo key: %s, loadOutRilevato: %s NNH: %d", asCKey, output, numeroNHarrivati); |
|
1847 | 1847 |
float valoreLoadIn = loadOutRilevato / (numeroNHarrivati * 1.0); |
1848 |
if (map_set(objFound->loadin, asCKey, valoreLoadIn) != 0) {
|
|
1848 |
if (map_set(objFound->loadin, &asCKey[0], valoreLoadIn) != 0) {
|
|
1849 | 1849 |
log(L_INFO "Elemento NON aggiunto alla mappa ERROR"); |
1850 | 1850 |
} |
1851 | 1851 |
} |
... | ... | |
1855 | 1855 |
log(L_INFO "Io NON sono tra i NH del mittente, rimuovo leventuale loadin"); |
1856 | 1856 |
objFound = map_get(RTmap, local_cKey); |
1857 | 1857 |
if(objFound != NULL) { |
1858 |
float *LoadI = map_get(objFound->loadin, *asCKey);
|
|
1858 |
float *LoadI = map_get(objFound->loadin, asCKey); |
|
1859 | 1859 |
if(LoadI != NULL) { |
1860 | 1860 |
char output_tmp[50]; |
1861 | 1861 |
snprintf(output_tmp, 50, "%f", *LoadI); |
1862 | 1862 |
log(L_INFO |
1863 | 1863 |
"con local_ckey: %s e asCkey: %s ho un loadin di: %f da rimuovere", output_tmp); |
1864 |
map_remove(objFound->loadin, *asCKey);
|
|
1864 |
map_remove(objFound->loadin, asCKey); |
|
1865 | 1865 |
} |
1866 | 1866 |
} |
1867 | 1867 |
} |
Also available in: Unified diff