Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/net/inetsrv/reass.c

    rfeeac0d ra1a101d  
    129129        assert(fibril_mutex_is_locked(&reass_dgram_map_lock));
    130130
    131         list_foreach(reass_dgram_map, map_link, reass_dgram_t, rdg) {
     131        list_foreach(reass_dgram_map, link) {
     132                reass_dgram_t *rdg = list_get_instance(link, reass_dgram_t,
     133                    map_link);
     134
    132135                link_t *f1_link = list_first(&rdg->frags);
    133136                assert(f1_link != NULL);
     
    136139                    dgram_link);
    137140
    138                 if ((inet_addr_compare(&f1->packet.src, &packet->src)) &&
    139                     (inet_addr_compare(&f1->packet.dest, &packet->dest)) &&
    140                     (f1->packet.proto == packet->proto) &&
    141                     (f1->packet.ident == packet->ident)) {
     141                if (f1->packet.src.ipv4 == packet->src.ipv4 &&
     142                    f1->packet.dest.ipv4 == packet->dest.ipv4 &&
     143                    f1->packet.proto == packet->proto &&
     144                    f1->packet.ident == packet->ident) {
    142145                        /* Match */
    143146                        return rdg;
     
    161164                return NULL;
    162165
    163         list_append(&rdg->map_link, &reass_dgram_map);
     166        link_initialize(&rdg->map_link);
    164167        list_initialize(&rdg->frags);
    165168
     
    286289        size_t fragoff_limit;
    287290        inet_dgram_t dgram;
     291        reass_frag_t *frag;
    288292        uint8_t proto;
    289         reass_frag_t *frag;
    290293
    291294        /*
     
    294297         */
    295298        frag = NULL;
    296         list_foreach(rdg->frags, dgram_link, reass_frag_t, cfrag) {
    297                 if (!cfrag->packet.mf) {
    298                         frag = cfrag;
     299        list_foreach(rdg->frags, link) {
     300                frag = list_get_instance(link, reass_frag_t, dgram_link);
     301
     302                if (!frag->packet.mf)
    299303                        break;
    300                 }
    301304        }
    302305
     
    327330        size_t doffs = 0;
    328331
    329         list_foreach(rdg->frags, dgram_link, reass_frag_t, cfrag) {
     332        frag = NULL;
     333        list_foreach(rdg->frags, link) {
     334                frag = list_get_instance(link, reass_frag_t, dgram_link);
     335
    330336                size_t cb, ce;
    331337
    332                 cb = max(doffs, cfrag->packet.offs);
    333                 ce = min(dgram_size, cfrag->packet.offs + cfrag->packet.size);
     338                cb = max(doffs, frag->packet.offs);
     339                ce = min(dgram_size, frag->packet.offs + frag->packet.size);
    334340
    335341                if (ce > cb) {
    336342                        memcpy(dgram.data + cb,
    337                             cfrag->packet.data + cb - cfrag->packet.offs,
     343                            frag->packet.data + cb - frag->packet.offs,
    338344                            ce - cb);
    339345                }
    340346
    341                 if (!cfrag->packet.mf)
     347                if (!frag->packet.mf)
    342348                        break;
    343349        }
Note: See TracChangeset for help on using the changeset viewer.