Ignore:
File:
1 edited

Legend:

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

    r6b82009 r79ae36dd  
    164164}
    165165
    166 static int arp_clean_cache_req(void)
     166static int arp_clean_cache_req(int arp_phone)
    167167{
    168168        int count;
     
    190190}
    191191
    192 static int arp_clear_address_req(device_id_t device_id, services_t protocol,
    193     measured_string_t *address)
     192static int arp_clear_address_req(int arp_phone, device_id_t device_id,
     193    services_t protocol, measured_string_t *address)
    194194{
    195195        fibril_mutex_lock(&arp_globals.lock);
     
    218218}
    219219
    220 static int arp_clear_device_req(device_id_t device_id)
     220static int arp_clear_device_req(int arp_phone, device_id_t device_id)
    221221{
    222222        fibril_mutex_lock(&arp_globals.lock);
     
    375375                                return rc;
    376376                       
    377                         nil_send_msg(device->sess, device_id, packet,
     377                        nil_send_msg(device->phone, device_id, packet,
    378378                            SERVICE_ARP);
    379379                        return 1;
     
    416416 * @param[in]     iid   Message identifier.
    417417 * @param[in,out] icall Message parameters.
    418  * @param[in]     arg   Local argument.
    419  *
    420  */
    421 static void arp_receiver(ipc_callid_t iid, ipc_call_t *icall, void *arg)
     418 *
     419 */
     420static void arp_receiver(ipc_callid_t iid, ipc_call_t *icall)
    422421{
    423422        packet_t *packet;
     
    432431               
    433432                case NET_IL_RECEIVED:
    434                         rc = packet_translate_remote(arp_globals.net_sess, &packet,
     433                        rc = packet_translate_remote(arp_globals.net_phone, &packet,
    435434                            IPC_GET_PACKET(*icall));
    436435                        if (rc == EOK) {
     
    440439                                        rc = arp_receive_message(IPC_GET_DEVICE(*icall), packet);
    441440                                        if (rc != 1) {
    442                                                 pq_release_remote(arp_globals.net_sess,
     441                                                pq_release_remote(arp_globals.net_phone,
    443442                                                    packet_get_id(packet));
    444443                                        }
     
    565564               
    566565                /* Bind */
    567                 device->sess = nil_bind_service(device->service,
     566                device->phone = nil_bind_service(device->service,
    568567                    (sysarg_t) device->device_id, SERVICE_ARP,
    569568                    arp_receiver);
    570                 if (device->sess == NULL) {
     569                if (device->phone < 0) {
    571570                        fibril_mutex_unlock(&arp_globals.lock);
    572571                        arp_protos_destroy(&device->protos, free);
     
    576575               
    577576                /* Get packet dimensions */
    578                 rc = nil_packet_size_req(device->sess, device_id,
     577                rc = nil_packet_size_req(device->phone, device_id,
    579578                    &device->packet_dimension);
    580579                if (rc != EOK) {
     
    586585               
    587586                /* Get hardware address */
    588                 rc = nil_get_addr_req(device->sess, device_id, &device->addr,
     587                rc = nil_get_addr_req(device->phone, device_id, &device->addr,
    589588                    &device->addr_data);
    590589                if (rc != EOK) {
     
    596595               
    597596                /* Get broadcast address */
    598                 rc = nil_get_broadcast_addr_req(device->sess, device_id,
     597                rc = nil_get_broadcast_addr_req(device->phone, device_id,
    599598                    &device->broadcast_addr, &device->broadcast_data);
    600599                if (rc != EOK) {
     
    628627}
    629628
    630 int il_initialize(async_sess_t *net_sess)
     629int il_initialize(int net_phone)
    631630{
    632631        fibril_mutex_initialize(&arp_globals.lock);
    633632       
    634633        fibril_mutex_lock(&arp_globals.lock);
    635         arp_globals.net_sess = net_sess;
     634        arp_globals.net_phone = net_phone;
    636635        int rc = arp_cache_initialize(&arp_globals.cache);
    637636        fibril_mutex_unlock(&arp_globals.lock);
     
    648647                return ELIMIT;
    649648       
    650         packet_t *packet = packet_get_4_remote(arp_globals.net_sess,
     649        packet_t *packet = packet_get_4_remote(arp_globals.net_phone,
    651650            device->packet_dimension.addr_len, device->packet_dimension.prefix,
    652651            length, device->packet_dimension.suffix);
     
    656655        arp_header_t *header = (arp_header_t *) packet_suffix(packet, length);
    657656        if (!header) {
    658                 pq_release_remote(arp_globals.net_sess, packet_get_id(packet));
     657                pq_release_remote(arp_globals.net_phone, packet_get_id(packet));
    659658                return ENOMEM;
    660659        }
     
    681680            (uint8_t *) device->broadcast_addr->value, device->addr->length);
    682681        if (rc != EOK) {
    683                 pq_release_remote(arp_globals.net_sess, packet_get_id(packet));
     682                pq_release_remote(arp_globals.net_phone, packet_get_id(packet));
    684683                return rc;
    685684        }
    686685       
    687         nil_send_msg(device->sess, device_id, packet, SERVICE_ARP);
     686        nil_send_msg(device->phone, device_id, packet, SERVICE_ARP);
    688687        return EOK;
    689688}
     
    891890       
    892891        case NET_ARP_CLEAR_DEVICE:
    893                 return arp_clear_device_req(IPC_GET_DEVICE(*call));
     892                return arp_clear_device_req(0, IPC_GET_DEVICE(*call));
    894893       
    895894        case NET_ARP_CLEAR_ADDRESS:
     
    898897                        return rc;
    899898               
    900                 arp_clear_address_req(IPC_GET_DEVICE(*call),
     899                arp_clear_address_req(0, IPC_GET_DEVICE(*call),
    901900                    IPC_GET_SERVICE(*call), address);
    902901                free(address);
     
    905904       
    906905        case NET_ARP_CLEAN_CACHE:
    907                 return arp_clean_cache_req();
     906                return arp_clean_cache_req(0);
    908907        }
    909908       
Note: See TracChangeset for help on using the changeset viewer.