Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/net/nil/eth/eth.c

    r4ef32e0c r0a3fbc7  
    4242#include <byteorder.h>
    4343#include <str.h>
    44 #include <errno.h>
     44#include <err.h>
    4545
    4646#include <ipc/ipc.h>
     
    196196int nil_initialize(int net_phone)
    197197{
    198         int rc;
     198        ERROR_DECLARE;
    199199
    200200        fibril_rwlock_initialize(&eth_globals.devices_lock);
     
    208208            CONVERT_SIZE(uint8_t, char, ETH_ADDR));
    209209        if (!eth_globals.broadcast_addr) {
    210                 rc = ENOMEM;
     210                ERROR_CODE = ENOMEM;
    211211                goto out;
    212212        }
    213         rc = eth_devices_initialize(&eth_globals.devices);
    214         if (rc != EOK) {
     213        if (ERROR_OCCURRED(eth_devices_initialize(&eth_globals.devices))) {
    215214                free(eth_globals.broadcast_addr);
    216215                goto out;
    217216        }
    218         rc = eth_protos_initialize(&eth_globals.protos);
    219         if (rc != EOK) {
     217        if (ERROR_OCCURRED(eth_protos_initialize(&eth_globals.protos))) {
    220218                free(eth_globals.broadcast_addr);
    221219                eth_devices_destroy(&eth_globals.devices);
     
    225223        fibril_rwlock_write_unlock(&eth_globals.devices_lock);
    226224       
    227         return rc;
     225        return ERROR_CODE;
    228226}
    229227
     
    236234static void eth_receiver(ipc_callid_t iid, ipc_call_t *icall)
    237235{
     236        ERROR_DECLARE;
     237
    238238        packet_t packet;
    239         int rc;
    240239
    241240        while (true) {
     
    247246                        break;
    248247                case NET_NIL_RECEIVED:
    249                         rc = packet_translate_remote(eth_globals.net_phone,
    250                             &packet, IPC_GET_PACKET(icall));
    251                         if (rc == EOK) {
    252                                 rc = nil_received_msg_local(0,
     248                        if (ERROR_NONE(packet_translate_remote(
     249                            eth_globals.net_phone, &packet,
     250                            IPC_GET_PACKET(icall)))) {
     251                                ERROR_CODE = nil_received_msg_local(0,
    253252                                    IPC_GET_DEVICE(icall), packet, 0);
    254253                        }
    255                         ipc_answer_0(iid, (ipcarg_t) rc);
     254                        ipc_answer_0(iid, (ipcarg_t) ERROR_CODE);
    256255                        break;
    257256                default:
     
    283282eth_device_message(device_id_t device_id, services_t service, size_t mtu)
    284283{
     284        ERROR_DECLARE;
     285
    285286        eth_device_ref device;
    286287        int index;
     
    299300        char *data;
    300301        eth_proto_ref proto;
    301         int rc;
    302302
    303303        fibril_rwlock_write_lock(&eth_globals.devices_lock);
     
    351351
    352352        configuration = &names[0];
    353         rc = net_get_device_conf_req(eth_globals.net_phone, device->device_id,
    354             &configuration, count, &data);
    355         if (rc != EOK) {
     353        if (ERROR_OCCURRED(net_get_device_conf_req(eth_globals.net_phone,
     354            device->device_id, &configuration, count, &data))) {
    356355                fibril_rwlock_write_unlock(&eth_globals.devices_lock);
    357356                free(device);
    358                 return rc;
     357                return ERROR_CODE;
    359358        }
    360359        if (configuration) {
     
    388387       
    389388        // get hardware address
    390         rc = netif_get_addr_req(device->phone, device->device_id, &device->addr,
    391             &device->addr_data);
    392         if (rc != EOK) {
     389        if (ERROR_OCCURRED(netif_get_addr_req(device->phone, device->device_id,
     390            &device->addr, &device->addr_data))) {
    393391                fibril_rwlock_write_unlock(&eth_globals.devices_lock);
    394392                free(device);
    395                 return rc;
     393                return ERROR_CODE;
    396394        }
    397395       
     
    431429static eth_proto_ref eth_process_packet(int flags, packet_t packet)
    432430{
     431        ERROR_DECLARE;
     432
    433433        eth_header_snap_ref header;
    434434        size_t length;
     
    437437        size_t suffix;
    438438        eth_fcs_ref fcs;
    439         uint8_t *data;
    440         int rc;
     439        uint8_t * data;
    441440
    442441        length = packet_get_data_length(packet);
     
    489488       
    490489        if (IS_DUMMY(flags)) {
    491                 if (~compute_crc32(~0U, data, length * 8) != ntohl(*fcs))
     490                if ((~compute_crc32(~0U, data, length * 8)) != ntohl(*fcs))
    492491                        return NULL;
    493492                suffix += sizeof(eth_fcs_t);
    494493        }
    495494       
    496         rc = packet_set_addr(packet, header->header.source_address,
    497             header->header.destination_address, ETH_ADDR);
    498         if (rc != EOK)
     495        if (ERROR_OCCURRED(packet_set_addr(packet,
     496            header->header.source_address, header->header.destination_address,
     497            ETH_ADDR)) || ERROR_OCCURRED(packet_trim(packet, prefix, suffix))) {
    499498                return NULL;
    500 
    501         rc = packet_trim(packet, prefix, suffix);
    502         if (rc != EOK)
    503                 return NULL;
     499        }
    504500       
    505501        return eth_protos_find(&eth_globals.protos, type);
     
    785781eth_send_message(device_id_t device_id, packet_t packet, services_t sender)
    786782{
     783        ERROR_DECLARE;
     784
    787785        eth_device_ref device;
    788786        packet_t next;
    789787        packet_t tmp;
    790788        int ethertype;
    791         int rc;
    792789
    793790        ethertype = htons(protocol_map(SERVICE_ETHERNET, sender));
     
    807804        next = packet;
    808805        do {
    809                 rc = eth_prepare_packet(device->flags, next,
    810                     (uint8_t *) device->addr->value, ethertype, device->mtu);
    811                 if (rc != EOK) {
     806                if (ERROR_OCCURRED(eth_prepare_packet(device->flags, next,
     807                    (uint8_t *) device->addr->value, ethertype, device->mtu))) {
    812808                        // release invalid packet
    813809                        tmp = pq_detach(next);
     
    836832    ipc_call_t *answer, int *answer_count)
    837833{
     834        ERROR_DECLARE;
     835       
    838836        measured_string_ref address;
    839837        packet_t packet;
     
    842840        size_t suffix;
    843841        size_t content;
    844         int rc;
    845842       
    846843        *answer_count = 0;
     
    853850                    IPC_GET_SERVICE(call), IPC_GET_MTU(call));
    854851        case NET_NIL_SEND:
    855                 rc = packet_translate_remote(eth_globals.net_phone, &packet,
    856                     IPC_GET_PACKET(call));
    857                 if (rc != EOK)
    858                         return rc;
     852                ERROR_PROPAGATE(packet_translate_remote(eth_globals.net_phone,
     853                    &packet, IPC_GET_PACKET(call)));
    859854                return eth_send_message(IPC_GET_DEVICE(call), packet,
    860855                    IPC_GET_SERVICE(call));
    861856        case NET_NIL_PACKET_SPACE:
    862                 rc = eth_packet_space_message(IPC_GET_DEVICE(call), &addrlen,
    863                     &prefix, &content, &suffix);
    864                 if (rc != EOK)
    865                         return rc;
     857                ERROR_PROPAGATE(eth_packet_space_message(IPC_GET_DEVICE(call),
     858                    &addrlen, &prefix, &content, &suffix));
    866859                IPC_SET_ADDR(answer, addrlen);
    867860                IPC_SET_PREFIX(answer, prefix);
     
    871864                return EOK;
    872865        case NET_NIL_ADDR:
    873                 rc = eth_addr_message(IPC_GET_DEVICE(call), ETH_LOCAL_ADDR,
    874                     &address);
    875                 if (rc != EOK)
    876                         return rc;
     866                ERROR_PROPAGATE(eth_addr_message(IPC_GET_DEVICE(call),
     867                    ETH_LOCAL_ADDR, &address));
    877868                return measured_strings_reply(address, 1);
    878869        case NET_NIL_BROADCAST_ADDR:
    879                 rc = eth_addr_message(IPC_GET_DEVICE(call), ETH_BROADCAST_ADDR,
    880                     &address);
    881                 if (rc != EOK)
    882                         return EOK;
     870                ERROR_PROPAGATE(eth_addr_message(IPC_GET_DEVICE(call),
     871                    ETH_BROADCAST_ADDR, &address));
    883872                return measured_strings_reply(address, 1);
    884873        case IPC_M_CONNECT_TO_ME:
     
    934923int main(int argc, char *argv[])
    935924{
    936         int rc;
     925        ERROR_DECLARE;
    937926       
    938927        /* Start the module */
    939         rc = nil_module_start_standalone(nil_client_connection);
    940         return rc;
     928        ERROR_PROPAGATE(nil_module_start_standalone(nil_client_connection));
     929        return EOK;
    941930}
    942931
Note: See TracChangeset for help on using the changeset viewer.