Changeset a2e3ee6 in mainline for uspace/srv/net/ethip


Ignore:
Timestamp:
2013-06-20T16:45:58Z (12 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
08bb73b
Parents:
19a4f73
Message:

use new network address infrastructure (towards IPv6 support)

Location:
uspace/srv/net/ethip
Files:
9 edited

Legend:

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

    r19a4f73 ra2e3ee6  
    6666
    6767        log_msg(LOG_DEFAULT, LVL_DEBUG, "ARP PDU decoded, opcode=%d, tpa=%x",
    68             packet.opcode, packet.target_proto_addr.ipv4);
     68            packet.opcode, packet.target_proto_addr);
    6969
    70         laddr = ethip_nic_addr_find(nic, &packet.target_proto_addr);
     70        laddr = ethip_nic_addr_find(nic, packet.target_proto_addr);
    7171        if (laddr != NULL) {
    7272                log_msg(LOG_DEFAULT, LVL_DEBUG, "Request/reply to my address");
    7373
    74                 (void) atrans_add(&packet.sender_proto_addr,
     74                (void) atrans_add(packet.sender_proto_addr,
    7575                    &packet.sender_hw_addr);
    7676
     
    8787}
    8888
    89 int arp_translate(ethip_nic_t *nic, iplink_srv_addr_t *src_addr,
    90     iplink_srv_addr_t *ip_addr, mac48_addr_t *mac_addr)
     89int arp_translate(ethip_nic_t *nic, uint32_t src_addr, uint32_t ip_addr,
     90    mac48_addr_t *mac_addr)
    9191{
    9292        int rc;
     
    9999        packet.opcode = aop_request;
    100100        packet.sender_hw_addr = nic->mac_addr;
    101         packet.sender_proto_addr = *src_addr;
     101        packet.sender_proto_addr = src_addr;
    102102        packet.target_hw_addr.addr = MAC48_BROADCAST;
    103         packet.target_proto_addr = *ip_addr;
     103        packet.target_proto_addr = ip_addr;
    104104
    105105        rc = arp_send_packet(nic, &packet);
  • uspace/srv/net/ethip/arp.h

    r19a4f73 ra2e3ee6  
    4242
    4343extern void arp_received(ethip_nic_t *, eth_frame_t *);
    44 extern int arp_translate(ethip_nic_t *, iplink_srv_addr_t *,
    45     iplink_srv_addr_t *, mac48_addr_t *);
     44extern int arp_translate(ethip_nic_t *, uint32_t, uint32_t, mac48_addr_t *);
    4645
    4746#endif
  • uspace/srv/net/ethip/atrans.c

    r19a4f73 ra2e3ee6  
    4949static FIBRIL_CONDVAR_INITIALIZE(atrans_cv);
    5050
    51 static ethip_atrans_t *atrans_find(iplink_srv_addr_t *ip_addr)
     51static ethip_atrans_t *atrans_find(uint32_t ip_addr)
    5252{
    5353        list_foreach(atrans_list, link) {
     
    5555                    ethip_atrans_t, atrans_list);
    5656
    57                 if (atrans->ip_addr.ipv4 == ip_addr->ipv4)
     57                if (atrans->ip_addr == ip_addr)
    5858                        return atrans;
    5959        }
     
    6262}
    6363
    64 int atrans_add(iplink_srv_addr_t *ip_addr, mac48_addr_t *mac_addr)
     64int atrans_add(uint32_t ip_addr, mac48_addr_t *mac_addr)
    6565{
    6666        ethip_atrans_t *atrans;
     
    7171                return ENOMEM;
    7272
    73         atrans->ip_addr = *ip_addr;
     73        atrans->ip_addr = ip_addr;
    7474        atrans->mac_addr = *mac_addr;
    7575
     
    8888}
    8989
    90 int atrans_remove(iplink_srv_addr_t *ip_addr)
     90int atrans_remove(uint32_t ip_addr)
    9191{
    9292        ethip_atrans_t *atrans;
     
    106106}
    107107
    108 int atrans_lookup(iplink_srv_addr_t *ip_addr, mac48_addr_t *mac_addr)
     108int atrans_lookup(uint32_t ip_addr, mac48_addr_t *mac_addr)
    109109{
    110110        ethip_atrans_t *atrans;
  • uspace/srv/net/ethip/atrans.h

    r19a4f73 ra2e3ee6  
    4141#include "ethip.h"
    4242
    43 extern int atrans_add(iplink_srv_addr_t *, mac48_addr_t *);
    44 extern int atrans_remove(iplink_srv_addr_t *);
    45 extern int atrans_lookup(iplink_srv_addr_t *, mac48_addr_t *);
     43extern int atrans_add(uint32_t, mac48_addr_t *);
     44extern int atrans_remove(uint32_t);
     45extern int atrans_lookup(uint32_t, mac48_addr_t *);
    4646extern int atrans_wait_timeout(suseconds_t);
    4747
  • uspace/srv/net/ethip/ethip.c

    r19a4f73 ra2e3ee6  
    5757static int ethip_send(iplink_srv_t *srv, iplink_srv_sdu_t *sdu);
    5858static int ethip_get_mtu(iplink_srv_t *srv, size_t *mtu);
    59 static int ethip_addr_add(iplink_srv_t *srv, iplink_srv_addr_t *addr);
    60 static int ethip_addr_remove(iplink_srv_t *srv, iplink_srv_addr_t *addr);
     59static int ethip_addr_add(iplink_srv_t *srv, uint32_t addr);
     60static int ethip_addr_remove(iplink_srv_t *srv, uint32_t addr);
    6161
    6262static void ethip_client_conn(ipc_callid_t iid, ipc_call_t *icall, void *arg);
     
    175175        log_msg(LOG_DEFAULT, LVL_DEBUG, "ethip_send()");
    176176
    177         rc = arp_translate(nic, &sdu->lsrc, &sdu->ldest, &dest_mac_addr);
     177        rc = arp_translate(nic, sdu->lsrc, sdu->ldest, &dest_mac_addr);
    178178        if (rc != EOK) {
    179179                log_msg(LOG_DEFAULT, LVL_WARN, "Failed to look up IP address 0x%" PRIx32,
    180                     sdu->ldest.ipv4);
     180                    sdu->ldest);
    181181                return rc;
    182182        }
     
    221221        case ETYPE_IP:
    222222                log_msg(LOG_DEFAULT, LVL_DEBUG, " - construct SDU");
    223                 sdu.lsrc.ipv4 = 0;
    224                 sdu.ldest.ipv4 = 0;
     223                sdu.lsrc = 0;
     224                sdu.ldest = 0;
    225225                sdu.data = frame.data;
    226226                sdu.size = frame.size;
     
    244244}
    245245
    246 static int ethip_addr_add(iplink_srv_t *srv, iplink_srv_addr_t *addr)
    247 {
     246static int ethip_addr_add(iplink_srv_t *srv, uint32_t addr)
     247{
     248        log_msg(LOG_DEFAULT, LVL_DEBUG, "ethip_addr_add(0x%" PRIx32 ")", addr);
     249       
     250        ethip_nic_t *nic = (ethip_nic_t *) srv->arg;
     251       
     252        return ethip_nic_addr_add(nic, addr);
     253}
     254
     255static int ethip_addr_remove(iplink_srv_t *srv, uint32_t addr)
     256{
     257        log_msg(LOG_DEFAULT, LVL_DEBUG, "ethip_addr_remove(0x%" PRIx32 ")", addr);
     258       
    248259        ethip_nic_t *nic = (ethip_nic_t *)srv->arg;
    249 
    250         log_msg(LOG_DEFAULT, LVL_DEBUG, "ethip_addr_add(0x%" PRIx32 ")", addr->ipv4);
    251         return ethip_nic_addr_add(nic, addr);
    252 }
    253 
    254 static int ethip_addr_remove(iplink_srv_t *srv, iplink_srv_addr_t *addr)
    255 {
    256         ethip_nic_t *nic = (ethip_nic_t *)srv->arg;
    257 
    258         log_msg(LOG_DEFAULT, LVL_DEBUG, "ethip_addr_remove(0x%" PRIx32 ")", addr->ipv4);
     260       
    259261        return ethip_nic_addr_add(nic, addr);
    260262}
  • uspace/srv/net/ethip/ethip.h

    r19a4f73 ra2e3ee6  
    4848typedef struct {
    4949        link_t addr_list;
    50         iplink_srv_addr_t addr;
     50        uint32_t addr;
    5151} ethip_link_addr_t;
    5252
     
    104104        mac48_addr_t sender_hw_addr;
    105105        /** Sender protocol address */
    106         iplink_srv_addr_t sender_proto_addr;
     106        uint32_t sender_proto_addr;
    107107        /** Target hardware address */
    108108        mac48_addr_t target_hw_addr;
    109109        /** Target protocol address */
    110         iplink_srv_addr_t target_proto_addr;
     110        uint32_t target_proto_addr;
    111111} arp_eth_packet_t;
    112112
     
    114114typedef struct {
    115115        link_t atrans_list;
    116         iplink_srv_addr_t ip_addr;
     116        uint32_t ip_addr;
    117117        mac48_addr_t mac_addr;
    118118} ethip_atrans_t;
  • uspace/srv/net/ethip/ethip_nic.c

    r19a4f73 ra2e3ee6  
    121121}
    122122
    123 static ethip_link_addr_t *ethip_nic_addr_new(iplink_srv_addr_t *addr)
     123static ethip_link_addr_t *ethip_nic_addr_new(uint32_t addr)
    124124{
    125125        ethip_link_addr_t *laddr = calloc(1, sizeof(ethip_link_addr_t));
    126 
    127126        if (laddr == NULL) {
    128127                log_msg(LOG_DEFAULT, LVL_ERROR, "Failed allocating NIC address structure. "
     
    130129                return NULL;
    131130        }
    132 
     131       
    133132        link_initialize(&laddr->addr_list);
    134         laddr->addr.ipv4 = addr->ipv4;
     133        laddr->addr = addr;
     134       
    135135        return laddr;
    136136}
     
    335335}
    336336
    337 int ethip_nic_addr_add(ethip_nic_t *nic, iplink_srv_addr_t *addr)
    338 {
    339         ethip_link_addr_t *laddr;
    340 
     337int ethip_nic_addr_add(ethip_nic_t *nic, uint32_t addr)
     338{
    341339        log_msg(LOG_DEFAULT, LVL_DEBUG, "ethip_nic_addr_add()");
    342         laddr = ethip_nic_addr_new(addr);
     340       
     341        ethip_link_addr_t *laddr = ethip_nic_addr_new(addr);
    343342        if (laddr == NULL)
    344343                return ENOMEM;
    345 
     344       
    346345        list_append(&laddr->addr_list, &nic->addr_list);
    347346        return EOK;
    348347}
    349348
    350 int ethip_nic_addr_remove(ethip_nic_t *nic, iplink_srv_addr_t *addr)
    351 {
    352         ethip_link_addr_t *laddr;
    353 
     349int ethip_nic_addr_remove(ethip_nic_t *nic, uint32_t addr)
     350{
    354351        log_msg(LOG_DEFAULT, LVL_DEBUG, "ethip_nic_addr_remove()");
    355 
    356         laddr = ethip_nic_addr_find(nic, addr);
     352       
     353        ethip_link_addr_t *laddr = ethip_nic_addr_find(nic, addr);
    357354        if (laddr == NULL)
    358355                return ENOENT;
    359 
     356       
    360357        list_remove(&laddr->addr_list);
    361358        ethip_link_addr_delete(laddr);
     
    364361
    365362ethip_link_addr_t *ethip_nic_addr_find(ethip_nic_t *nic,
    366     iplink_srv_addr_t *addr)
     363    uint32_t addr)
    367364{
    368365        log_msg(LOG_DEFAULT, LVL_DEBUG, "ethip_nic_addr_find()");
     
    372369                    ethip_link_addr_t, addr_list);
    373370
    374                 if (addr->ipv4 == laddr->addr.ipv4)
     371                if (addr == laddr->addr)
    375372                        return laddr;
    376373        }
  • uspace/srv/net/ethip/ethip_nic.h

    r19a4f73 ra2e3ee6  
    4444extern ethip_nic_t *ethip_nic_find_by_iplink_sid(service_id_t);
    4545extern int ethip_nic_send(ethip_nic_t *, void *, size_t);
    46 extern int ethip_nic_addr_add(ethip_nic_t *, iplink_srv_addr_t *);
    47 extern int ethip_nic_addr_remove(ethip_nic_t *, iplink_srv_addr_t *);
    48 extern ethip_link_addr_t *ethip_nic_addr_find(ethip_nic_t *,
    49     iplink_srv_addr_t *);
     46extern int ethip_nic_addr_add(ethip_nic_t *, uint32_t);
     47extern int ethip_nic_addr_remove(ethip_nic_t *, uint32_t);
     48extern ethip_link_addr_t *ethip_nic_addr_find(ethip_nic_t *, uint32_t);
    5049
    5150#endif
  • uspace/srv/net/ethip/pdu.c

    r19a4f73 ra2e3ee6  
    170170        mac48_encode(&packet->sender_hw_addr, pfmt->sender_hw_addr);
    171171        pfmt->sender_proto_addr =
    172             host2uint32_t_be(packet->sender_proto_addr.ipv4);
     172            host2uint32_t_be(packet->sender_proto_addr);
    173173        mac48_encode(&packet->target_hw_addr, pfmt->target_hw_addr);
    174174        pfmt->target_proto_addr =
    175             host2uint32_t_be(packet->target_proto_addr.ipv4);
     175            host2uint32_t_be(packet->target_proto_addr);
    176176
    177177        *rdata = data;
     
    228228
    229229        mac48_decode(pfmt->sender_hw_addr, &packet->sender_hw_addr);
    230         packet->sender_proto_addr.ipv4 =
     230        packet->sender_proto_addr =
    231231            uint32_t_be2host(pfmt->sender_proto_addr);
    232232        mac48_decode(pfmt->target_hw_addr, &packet->target_hw_addr);
    233         packet->target_proto_addr.ipv4 =
     233        packet->target_proto_addr =
    234234            uint32_t_be2host(pfmt->target_proto_addr);
    235235        log_msg(LOG_DEFAULT, LVL_DEBUG, "packet->tpa = %x\n", pfmt->target_proto_addr);
     
    238238}
    239239
    240 
    241240/** @}
    242241 */
Note: See TracChangeset for help on using the changeset viewer.