Changeset c028b22 in mainline for uspace/srv/net/il/arp/arp.c


Ignore:
Timestamp:
2011-07-08T17:01:01Z (13 years ago)
Author:
Martin Sucha <sucha14@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
cc1a727
Parents:
4e36219 (diff), 026793d (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge mainline changes

File:
1 edited

Legend:

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

    r4e36219 rc028b22  
    164164}
    165165
    166 static int arp_clean_cache_req(int arp_phone)
     166static int arp_clean_cache_req(void)
    167167{
    168168        int count;
     
    190190}
    191191
    192 static int arp_clear_address_req(int arp_phone, device_id_t device_id,
    193     services_t protocol, measured_string_t *address)
     192static int arp_clear_address_req(device_id_t device_id, services_t protocol,
     193    measured_string_t *address)
    194194{
    195195        fibril_mutex_lock(&arp_globals.lock);
     
    218218}
    219219
    220 static int arp_clear_device_req(int arp_phone, device_id_t device_id)
     220static int arp_clear_device_req(device_id_t device_id)
    221221{
    222222        fibril_mutex_lock(&arp_globals.lock);
     
    375375                                return rc;
    376376                       
    377                         nil_send_msg(device->phone, device_id, packet,
     377                        nil_send_msg(device->sess, device_id, packet,
    378378                            SERVICE_ARP);
    379379                        return 1;
     
    416416 * @param[in]     iid   Message identifier.
    417417 * @param[in,out] icall Message parameters.
    418  *
    419  */
    420 static void arp_receiver(ipc_callid_t iid, ipc_call_t *icall)
     418 * @param[in]     arg   Local argument.
     419 *
     420 */
     421static void arp_receiver(ipc_callid_t iid, ipc_call_t *icall, void *arg)
    421422{
    422423        packet_t *packet;
     
    431432               
    432433                case NET_IL_RECEIVED:
    433                         rc = packet_translate_remote(arp_globals.net_phone, &packet,
     434                        rc = packet_translate_remote(arp_globals.net_sess, &packet,
    434435                            IPC_GET_PACKET(*icall));
    435436                        if (rc == EOK) {
     
    439440                                        rc = arp_receive_message(IPC_GET_DEVICE(*icall), packet);
    440441                                        if (rc != 1) {
    441                                                 pq_release_remote(arp_globals.net_phone,
     442                                                pq_release_remote(arp_globals.net_sess,
    442443                                                    packet_get_id(packet));
    443444                                        }
     
    564565               
    565566                /* Bind */
    566                 device->phone = nil_bind_service(device->service,
     567                device->sess = nil_bind_service(device->service,
    567568                    (sysarg_t) device->device_id, SERVICE_ARP,
    568569                    arp_receiver);
    569                 if (device->phone < 0) {
     570                if (device->sess == NULL) {
    570571                        fibril_mutex_unlock(&arp_globals.lock);
    571572                        arp_protos_destroy(&device->protos, free);
     
    575576               
    576577                /* Get packet dimensions */
    577                 rc = nil_packet_size_req(device->phone, device_id,
     578                rc = nil_packet_size_req(device->sess, device_id,
    578579                    &device->packet_dimension);
    579580                if (rc != EOK) {
     
    585586               
    586587                /* Get hardware address */
    587                 rc = nil_get_addr_req(device->phone, device_id, &device->addr,
     588                rc = nil_get_addr_req(device->sess, device_id, &device->addr,
    588589                    &device->addr_data);
    589590                if (rc != EOK) {
     
    595596               
    596597                /* Get broadcast address */
    597                 rc = nil_get_broadcast_addr_req(device->phone, device_id,
     598                rc = nil_get_broadcast_addr_req(device->sess, device_id,
    598599                    &device->broadcast_addr, &device->broadcast_data);
    599600                if (rc != EOK) {
     
    627628}
    628629
    629 int il_initialize(int net_phone)
     630int il_initialize(async_sess_t *net_sess)
    630631{
    631632        fibril_mutex_initialize(&arp_globals.lock);
    632633       
    633634        fibril_mutex_lock(&arp_globals.lock);
    634         arp_globals.net_phone = net_phone;
     635        arp_globals.net_sess = net_sess;
    635636        int rc = arp_cache_initialize(&arp_globals.cache);
    636637        fibril_mutex_unlock(&arp_globals.lock);
     
    647648                return ELIMIT;
    648649       
    649         packet_t *packet = packet_get_4_remote(arp_globals.net_phone,
     650        packet_t *packet = packet_get_4_remote(arp_globals.net_sess,
    650651            device->packet_dimension.addr_len, device->packet_dimension.prefix,
    651652            length, device->packet_dimension.suffix);
     
    655656        arp_header_t *header = (arp_header_t *) packet_suffix(packet, length);
    656657        if (!header) {
    657                 pq_release_remote(arp_globals.net_phone, packet_get_id(packet));
     658                pq_release_remote(arp_globals.net_sess, packet_get_id(packet));
    658659                return ENOMEM;
    659660        }
     
    680681            (uint8_t *) device->broadcast_addr->value, device->addr->length);
    681682        if (rc != EOK) {
    682                 pq_release_remote(arp_globals.net_phone, packet_get_id(packet));
     683                pq_release_remote(arp_globals.net_sess, packet_get_id(packet));
    683684                return rc;
    684685        }
    685686       
    686         nil_send_msg(device->phone, device_id, packet, SERVICE_ARP);
     687        nil_send_msg(device->sess, device_id, packet, SERVICE_ARP);
    687688        return EOK;
    688689}
     
    845846       
    846847        *count = 0;
     848       
     849        if (!IPC_GET_IMETHOD(*call))
     850                return EOK;
     851       
    847852        switch (IPC_GET_IMETHOD(*call)) {
    848         case IPC_M_PHONE_HUNGUP:
    849                 return EOK;
    850        
    851853        case NET_ARP_DEVICE:
    852854                rc = measured_strings_receive(&address, &data, 1);
     
    889891       
    890892        case NET_ARP_CLEAR_DEVICE:
    891                 return arp_clear_device_req(0, IPC_GET_DEVICE(*call));
     893                return arp_clear_device_req(IPC_GET_DEVICE(*call));
    892894       
    893895        case NET_ARP_CLEAR_ADDRESS:
     
    896898                        return rc;
    897899               
    898                 arp_clear_address_req(0, IPC_GET_DEVICE(*call),
     900                arp_clear_address_req(IPC_GET_DEVICE(*call),
    899901                    IPC_GET_SERVICE(*call), address);
    900902                free(address);
     
    903905       
    904906        case NET_ARP_CLEAN_CACHE:
    905                 return arp_clean_cache_req(0);
     907                return arp_clean_cache_req();
    906908        }
    907909       
Note: See TracChangeset for help on using the changeset viewer.