Changeset 02a09ed in mainline for uspace/srv/net/ethip/pdu.c


Ignore:
Timestamp:
2013-06-28T20:20:03Z (11 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
1d24ad3
Parents:
edf0d27
Message:

add basic infrastructure for IPv6 (inactive)
make inet_addr_t a universal address type

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/net/ethip/pdu.c

    redf0d27 r02a09ed  
    6262
    6363        hdr = (eth_header_t *)data;
    64         mac48_encode(&frame->src, hdr->src);
    65         mac48_encode(&frame->dest, hdr->dest);
     64        addr48(frame->src, hdr->src);
     65        addr48(frame->dest, hdr->dest);
    6666        hdr->etype_len = host2uint16_t_be(frame->etype_len);
    6767
     
    6969            frame->size);
    7070
    71         log_msg(LOG_DEFAULT, LVL_DEBUG, "Encoding Ethernet frame "
    72             "src=%" PRIx64 " dest=%" PRIx64 " etype=%x",
    73             frame->src.addr, frame->dest.addr, frame->etype_len);
    7471        log_msg(LOG_DEFAULT, LVL_DEBUG, "Encoded Ethernet frame (%zu bytes)", size);
    7572
     
    9895                return ENOMEM;
    9996
    100         mac48_decode(hdr->src, &frame->src);
    101         mac48_decode(hdr->dest, &frame->dest);
     97        addr48(hdr->src, frame->src);
     98        addr48(hdr->dest, frame->dest);
    10299        frame->etype_len = uint16_t_be2host(hdr->etype_len);
    103100
     
    105102            frame->size);
    106103
    107         log_msg(LOG_DEFAULT, LVL_DEBUG, "Decoding Ethernet frame "
    108             "src=%" PRIx64 " dest=%" PRIx64 " etype=%x",
    109             frame->src.addr, frame->dest.addr, frame->etype_len);
    110104        log_msg(LOG_DEFAULT, LVL_DEBUG, "Decoded Ethernet frame payload (%zu bytes)", frame->size);
    111105
    112106        return EOK;
    113 }
    114 
    115 void mac48_encode(mac48_addr_t *addr, void *buf)
    116 {
    117         uint64_t val;
    118         uint8_t *bbuf = (uint8_t *)buf;
    119         int i;
    120 
    121         val = addr->addr;
    122         for (i = 0; i < MAC48_BYTES; i++)
    123                 bbuf[i] = (val >> (8 * (MAC48_BYTES - i - 1))) & 0xff;
    124 }
    125 
    126 void mac48_decode(void *data, mac48_addr_t *addr)
    127 {
    128         uint64_t val;
    129         uint8_t *bdata = (uint8_t *)data;
    130         int i;
    131 
    132         val = 0;
    133         for (i = 0; i < MAC48_BYTES; i++)
    134                 val |= (uint64_t)bdata[i] << (8 * (MAC48_BYTES - i - 1));
    135 
    136         addr->addr = val;
    137107}
    138108
     
    168138        pfmt->proto_addr_size = IPV4_ADDR_SIZE;
    169139        pfmt->opcode = host2uint16_t_be(fopcode);
    170         mac48_encode(&packet->sender_hw_addr, pfmt->sender_hw_addr);
     140        addr48(packet->sender_hw_addr, pfmt->sender_hw_addr);
    171141        pfmt->sender_proto_addr =
    172142            host2uint32_t_be(packet->sender_proto_addr);
    173         mac48_encode(&packet->target_hw_addr, pfmt->target_hw_addr);
     143        addr48(packet->target_hw_addr, pfmt->target_hw_addr);
    174144        pfmt->target_proto_addr =
    175145            host2uint32_t_be(packet->target_proto_addr);
     
    227197        }
    228198
    229         mac48_decode(pfmt->sender_hw_addr, &packet->sender_hw_addr);
     199        addr48(pfmt->sender_hw_addr, packet->sender_hw_addr);
    230200        packet->sender_proto_addr =
    231201            uint32_t_be2host(pfmt->sender_proto_addr);
    232         mac48_decode(pfmt->target_hw_addr, &packet->target_hw_addr);
     202        addr48(pfmt->target_hw_addr, packet->target_hw_addr);
    233203        packet->target_proto_addr =
    234204            uint32_t_be2host(pfmt->target_proto_addr);
Note: See TracChangeset for help on using the changeset viewer.