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


Ignore:
Timestamp:
2021-08-08T08:28:24Z (5 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
d5ed54b
Parents:
98a935e
Message:

Make addr48_t a structure

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

Legend:

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

    r98a935e rf05edcb  
    11/*
    2  * Copyright (c) 2012 Jiri Svoboda
     2 * Copyright (c) 2021 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    7979
    8080        (void) atrans_add(packet.sender_proto_addr,
    81             packet.sender_hw_addr);
     81            &packet.sender_hw_addr);
    8282
    8383        if (packet.opcode == aop_request) {
     
    8585
    8686                reply.opcode = aop_reply;
    87                 addr48(nic->mac_addr, reply.sender_hw_addr);
     87                addr48(&nic->mac_addr, &reply.sender_hw_addr);
    8888                reply.sender_proto_addr = laddr_v4;
    89                 addr48(packet.sender_hw_addr, reply.target_hw_addr);
     89                addr48(&packet.sender_hw_addr, &reply.target_hw_addr);
    9090                reply.target_proto_addr = packet.sender_proto_addr;
    9191
     
    9595
    9696errno_t arp_translate(ethip_nic_t *nic, addr32_t src_addr, addr32_t ip_addr,
    97     addr48_t mac_addr)
     97    addr48_t *mac_addr)
    9898{
    9999        /* Broadcast address */
    100100        if (ip_addr == addr32_broadcast_all_hosts) {
    101                 addr48(addr48_broadcast, mac_addr);
     101                addr48(&addr48_broadcast, mac_addr);
    102102                return EOK;
    103103        }
     
    110110
    111111        packet.opcode = aop_request;
    112         addr48(nic->mac_addr, packet.sender_hw_addr);
     112        addr48(&nic->mac_addr, &packet.sender_hw_addr);
    113113        packet.sender_proto_addr = src_addr;
    114         addr48(addr48_broadcast, packet.target_hw_addr);
     114        addr48(&addr48_broadcast, &packet.target_hw_addr);
    115115        packet.target_proto_addr = ip_addr;
    116116
     
    138138                return rc;
    139139
    140         addr48(packet->target_hw_addr, frame.dest);
    141         addr48(packet->sender_hw_addr, frame.src);
     140        addr48(&packet->target_hw_addr, &frame.dest);
     141        addr48(&packet->sender_hw_addr, &frame.src);
    142142        frame.etype_len = ETYPE_ARP;
    143143        frame.data = pdata;
  • uspace/srv/net/ethip/arp.h

    r98a935e rf05edcb  
    11/*
    2  * Copyright (c) 2012 Jiri Svoboda
     2 * Copyright (c) 2021 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    4343
    4444extern void arp_received(ethip_nic_t *, eth_frame_t *);
    45 extern errno_t arp_translate(ethip_nic_t *, addr32_t, addr32_t, addr48_t);
     45extern errno_t arp_translate(ethip_nic_t *, addr32_t, addr32_t, addr48_t *);
    4646
    4747#endif
  • uspace/srv/net/ethip/atrans.c

    r98a935e rf05edcb  
    11/*
    2  * Copyright (c) 2012 Jiri Svoboda
     2 * Copyright (c) 2021 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    5959}
    6060
    61 errno_t atrans_add(addr32_t ip_addr, addr48_t mac_addr)
     61errno_t atrans_add(addr32_t ip_addr, addr48_t *mac_addr)
    6262{
    6363        ethip_atrans_t *atrans;
     
    6969
    7070        atrans->ip_addr = ip_addr;
    71         addr48(mac_addr, atrans->mac_addr);
     71        addr48(mac_addr, &atrans->mac_addr);
    7272
    7373        fibril_mutex_lock(&atrans_list_lock);
     
    103103}
    104104
    105 static errno_t atrans_lookup_locked(addr32_t ip_addr, addr48_t mac_addr)
     105static errno_t atrans_lookup_locked(addr32_t ip_addr, addr48_t *mac_addr)
    106106{
    107107        ethip_atrans_t *atrans = atrans_find(ip_addr);
     
    109109                return ENOENT;
    110110
    111         addr48(atrans->mac_addr, mac_addr);
     111        addr48(&atrans->mac_addr, mac_addr);
    112112        return EOK;
    113113}
    114114
    115 errno_t atrans_lookup(addr32_t ip_addr, addr48_t mac_addr)
     115errno_t atrans_lookup(addr32_t ip_addr, addr48_t *mac_addr)
    116116{
    117117        errno_t rc;
     
    135135
    136136errno_t atrans_lookup_timeout(addr32_t ip_addr, usec_t timeout,
    137     addr48_t mac_addr)
     137    addr48_t *mac_addr)
    138138{
    139139        fibril_timer_t *t;
  • uspace/srv/net/ethip/atrans.h

    r98a935e rf05edcb  
    11/*
    2  * Copyright (c) 2012 Jiri Svoboda
     2 * Copyright (c) 2021 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    4242#include "ethip.h"
    4343
    44 extern errno_t atrans_add(addr32_t, addr48_t);
     44extern errno_t atrans_add(addr32_t, addr48_t *);
    4545extern errno_t atrans_remove(addr32_t);
    46 extern errno_t atrans_lookup(addr32_t, addr48_t);
    47 extern errno_t atrans_lookup_timeout(addr32_t, usec_t, addr48_t);
     46extern errno_t atrans_lookup(addr32_t, addr48_t *);
     47extern errno_t atrans_lookup_timeout(addr32_t, usec_t, addr48_t *);
    4848
    4949#endif
  • uspace/srv/net/ethip/ethip.c

    r98a935e rf05edcb  
    11/*
    2  * Copyright (c) 2012 Jiri Svoboda
     2 * Copyright (c) 2021 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    177177        eth_frame_t frame;
    178178
    179         errno_t rc = arp_translate(nic, sdu->src, sdu->dest, frame.dest);
     179        errno_t rc = arp_translate(nic, sdu->src, sdu->dest, &frame.dest);
    180180        if (rc != EOK) {
    181181                log_msg(LOG_DEFAULT, LVL_WARN, "Failed to look up IPv4 address 0x%"
     
    184184        }
    185185
    186         addr48(nic->mac_addr, frame.src);
     186        addr48(&nic->mac_addr, &frame.src);
    187187        frame.etype_len = ETYPE_IP;
    188188        frame.data = sdu->data;
     
    208208        eth_frame_t frame;
    209209
    210         addr48(sdu->dest, frame.dest);
    211         addr48(nic->mac_addr, frame.src);
     210        addr48(&sdu->dest, &frame.dest);
     211        addr48(&nic->mac_addr, &frame.src);
    212212        frame.etype_len = ETYPE_IPV6;
    213213        frame.data = sdu->data;
     
    281281
    282282        ethip_nic_t *nic = (ethip_nic_t *) srv->arg;
    283         addr48(nic->mac_addr, *mac);
     283        addr48(&nic->mac_addr, mac);
    284284
    285285        return EOK;
     
    291291
    292292        ethip_nic_t *nic = (ethip_nic_t *) srv->arg;
    293         addr48(*mac, nic->mac_addr);
     293        addr48(mac, &nic->mac_addr);
    294294
    295295        return EOK;
  • uspace/srv/net/ethip/ethip_nic.c

    r98a935e rf05edcb  
    11/*
    2  * Copyright (c) 2012 Jiri Svoboda
     2 * Copyright (c) 2021 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    193193        }
    194194
    195         addr48(nic_address.address, nic->mac_addr);
     195        mac48_decode(nic_address.address, &nic->mac_addr);
    196196
    197197        rc = nic_set_state(nic->sess, NIC_STATE_ACTIVE);
     
    400400
    401401                addr48_t mac;
    402                 addr48_solicited_node(v6, mac);
     402                addr48_solicited_node(v6, &mac);
    403403
    404404                /* Avoid duplicate addresses in the list */
     
    407407
    408408                for (size_t j = 0; j < i; j++) {
    409                         if (addr48_compare(mac_list[j].address, mac)) {
     409                        addr48_t mac_entry;
     410                        mac48_decode(mac_list[j].address, &mac_entry);
     411                        if (addr48_compare(&mac_entry, &mac)) {
    410412                                found = true;
    411413                                break;
     
    414416
    415417                if (!found) {
    416                         addr48(mac, mac_list[i].address);
     418                        mac48_encode(&mac, mac_list[i].address);
    417419                        i++;
    418                 } else
     420                } else {
    419421                        count--;
     422                }
    420423        }
    421424
  • uspace/srv/net/ethip/pdu.c

    r98a935e rf05edcb  
    11/*
    2  * Copyright (c) 2012 Jiri Svoboda
     2 * Copyright (c) 2021 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    6060
    6161        hdr = (eth_header_t *)data;
    62         addr48(frame->src, hdr->src);
    63         addr48(frame->dest, hdr->dest);
     62        mac48_encode(&frame->src, hdr->src);
     63        mac48_encode(&frame->dest, hdr->dest);
    6464        hdr->etype_len = host2uint16_t_be(frame->etype_len);
    6565
     
    9393                return ENOMEM;
    9494
    95         addr48(hdr->src, frame->src);
    96         addr48(hdr->dest, frame->dest);
     95        mac48_decode(hdr->src, &frame->src);
     96        mac48_decode(hdr->dest, &frame->dest);
    9797        frame->etype_len = uint16_t_be2host(hdr->etype_len);
    9898
     
    140140        pfmt->proto_addr_size = IPV4_ADDR_SIZE;
    141141        pfmt->opcode = host2uint16_t_be(fopcode);
    142         addr48(packet->sender_hw_addr, pfmt->sender_hw_addr);
     142        mac48_encode(&packet->sender_hw_addr, pfmt->sender_hw_addr);
    143143        pfmt->sender_proto_addr =
    144144            host2uint32_t_be(packet->sender_proto_addr);
    145         addr48(packet->target_hw_addr, pfmt->target_hw_addr);
     145        mac48_encode(&packet->target_hw_addr, pfmt->target_hw_addr);
    146146        pfmt->target_proto_addr =
    147147            host2uint32_t_be(packet->target_proto_addr);
     
    203203        }
    204204
    205         addr48(pfmt->sender_hw_addr, packet->sender_hw_addr);
     205        mac48_decode(pfmt->sender_hw_addr, &packet->sender_hw_addr);
    206206        packet->sender_proto_addr =
    207207            uint32_t_be2host(pfmt->sender_proto_addr);
    208         addr48(pfmt->target_hw_addr, packet->target_hw_addr);
     208        mac48_decode(pfmt->target_hw_addr, &packet->target_hw_addr);
    209209        packet->target_proto_addr =
    210210            uint32_t_be2host(pfmt->target_proto_addr);
  • uspace/srv/net/ethip/pdu.h

    r98a935e rf05edcb  
    11/*
    2  * Copyright (c) 2012 Jiri Svoboda
     2 * Copyright (c) 2021 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    4444extern errno_t arp_pdu_encode(arp_eth_packet_t *, void **, size_t *);
    4545extern errno_t arp_pdu_decode(void *, size_t, arp_eth_packet_t *);
     46extern void mac48_encode(addr48_t *, void *);
     47extern void mac48_decode(void *, addr48_t *);
    4648
    4749#endif
  • uspace/srv/net/ethip/std.h

    r98a935e rf05edcb  
    11/*
    2  * Copyright (c) 2012 Jiri Svoboda
     2 * Copyright (c) 2021 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    3939
    4040#include <stdint.h>
    41 #include <inet/addr.h>
    4241
    4342#define ETH_ADDR_SIZE       6
     
    4847typedef struct {
    4948        /** Destination Address */
    50         addr48_t dest;
     49        uint8_t dest[ETH_ADDR_SIZE];
    5150        /** Source Address */
    52         addr48_t src;
     51        uint8_t src[ETH_ADDR_SIZE];
    5352        /** Ethertype or Length */
    5453        uint16_t etype_len;
     
    6867        uint16_t opcode;
    6968        /** Sender hardware address */
    70         addr48_t sender_hw_addr;
     69        uint8_t sender_hw_addr[ETH_ADDR_SIZE];
    7170        /** Sender protocol address */
    72         addr32_t sender_proto_addr;
     71        uint32_t sender_proto_addr;
    7372        /** Target hardware address */
    74         addr48_t target_hw_addr;
     73        uint8_t target_hw_addr[ETH_ADDR_SIZE];
    7574        /** Target protocol address */
    76         addr32_t target_proto_addr;
     75        uint32_t target_proto_addr;
    7776} __attribute__((packed)) arp_eth_packet_fmt_t;
    7877
Note: See TracChangeset for help on using the changeset viewer.