Revision b62acf40 proto/bgp/packets.c

View differences:

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