Ignore:
File:
1 edited

Legend:

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

    r8d7ec69d r77a69ea  
    22 * Copyright (c) 2009 Lukas Mejdrech
    33 * Copyright (c) 2011 Radim Vansa
    4  * Copyright (c) 2011 Jiri Svoboda
    54 * All rights reserved.
    65 *
     
    7069DEVICE_MAP_IMPLEMENT(nildummy_devices, nildummy_device_t);
    7170
    72 static void nildummy_nic_cb_conn(ipc_callid_t iid, ipc_call_t *icall,
    73     void *arg);
    74 
    75 static int nildummy_device_state(nic_device_id_t device_id, sysarg_t state)
     71int nil_device_state_msg_local(nic_device_id_t device_id, sysarg_t state)
    7672{
    7773        fibril_rwlock_read_lock(&nildummy_globals.protos_lock);
     
    8278       
    8379        return EOK;
    84 }
    85 
    86 static int nildummy_addr_changed(nic_device_id_t device_id)
    87 {
    88         return ENOTSUP;
    8980}
    9081
     
    182173        }
    183174       
    184         int rc = nic_callback_create(device->sess, device_id,
    185             nildummy_nic_cb_conn, NULL);
    186         if (rc != EOK) {
    187                 async_hangup(device->sess);
    188                
    189                 return ENOENT;
    190         }
     175        nic_connect_to_nil(device->sess, SERVICE_NILDUMMY, device_id);
    191176       
    192177        /* Get hardware address */
    193         rc = nic_get_address(device->sess, &device->addr);
     178        int rc = nic_get_address(device->sess, &device->addr);
    194179        if (rc != EOK) {
    195180                fibril_rwlock_write_unlock(&nildummy_globals.devices_lock);
     
    460445                *answer_count = 1;
    461446                return rc;
     447        case NET_NIL_DEVICE_STATE:
     448                rc = nil_device_state_msg_local(IPC_GET_DEVICE(*call),
     449                    IPC_GET_STATE(*call));
     450                async_answer_0(callid, (sysarg_t) rc);
     451                return rc;
     452       
     453        case NET_NIL_RECEIVED:
     454                rc = nildummy_received(IPC_GET_ARG1(*call));
     455                async_answer_0(callid, (sysarg_t) rc);
     456                return rc;
    462457        }
    463458       
    464459        return ENOTSUP;
    465460}
    466 
    467 static void nildummy_nic_cb_conn(ipc_callid_t iid, ipc_call_t *icall, void *arg)
    468 {
    469         int rc;
    470        
    471         async_answer_0(iid, EOK);
    472        
    473         while (true) {
    474                 ipc_call_t call;
    475                 ipc_callid_t callid = async_get_call(&call);
    476                
    477                 if (!IPC_GET_IMETHOD(call))
    478                         break;
    479                
    480                 switch (IPC_GET_IMETHOD(call)) {
    481                 case NIC_EV_DEVICE_STATE:
    482                         rc = nildummy_device_state(IPC_GET_ARG1(call),
    483                             IPC_GET_ARG2(call));
    484                         async_answer_0(callid, (sysarg_t) rc);
    485                         break;
    486                 case NIC_EV_RECEIVED:
    487                         rc = nildummy_received(IPC_GET_ARG1(call));
    488                         async_answer_0(callid, (sysarg_t) rc);
    489                         break;
    490                 case NIC_EV_ADDR_CHANGED:
    491                         rc = nildummy_addr_changed(IPC_GET_ARG1(call));
    492                         async_answer_0(callid, (sysarg_t) rc);
    493                         break;
    494                 default:
    495                         async_answer_0(callid, ENOTSUP);
    496                 }
    497         }
    498 }
    499 
    500461
    501462int main(int argc, char *argv[])
Note: See TracChangeset for help on using the changeset viewer.