Changeset 3e66428 in mainline for uspace/srv/net/dnsrsrv/dnsrsrv.c


Ignore:
Timestamp:
2013-06-20T14:10:51Z (12 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
19a4f73
Parents:
b49d872
Message:

new network address infrastructure (towards IPv6 support)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/net/dnsrsrv/dnsrsrv.c

    rb49d872 r3e66428  
    116116                return;
    117117        }
     118       
     119        uint32_t addr;
     120        rc = inet2_addr_pack(&hinfo->addr, &addr);
     121        if (rc != EOK) {
     122                async_answer_0(rcallid, rc);
     123                async_answer_0(callid, rc);
     124                return;
     125        }
    118126
    119127        act_size = str_size(hinfo->cname);
     
    125133
    126134        retval = async_data_read_finalize(rcallid, hinfo->cname, act_size);
    127         async_answer_1(callid, retval, hinfo->addr.ipv4);
     135        async_answer_1(callid, retval, (sysarg_t) addr);
    128136
    129137        dns_hostinfo_destroy(hinfo);
    130138}
    131139
    132 static void dnsr_get_srvaddr_srv(dnsr_client_t *client, ipc_callid_t callid,
    133     ipc_call_t *call)
     140static void dnsr_get_srvaddr_srv(dnsr_client_t *client, ipc_callid_t iid,
     141    ipc_call_t *icall)
    134142{
    135143        log_msg(LOG_DEFAULT, LVL_DEBUG, "inet_get_srvaddr_srv()");
    136         async_answer_1(callid, EOK, dns_server_addr.ipv4);
    137 }
    138 
    139 static void dnsr_set_srvaddr_srv(dnsr_client_t *client, ipc_callid_t callid,
    140     ipc_call_t *call)
     144       
     145        ipc_callid_t callid;
     146        size_t size;
     147        if (!async_data_read_receive(&callid, &size)) {
     148                async_answer_0(callid, EREFUSED);
     149                async_answer_0(iid, EREFUSED);
     150                return;
     151        }
     152       
     153        if (size != sizeof(inet2_addr_t)) {
     154                async_answer_0(callid, EINVAL);
     155                async_answer_0(iid, EINVAL);
     156                return;
     157        }
     158       
     159        // FIXME locking
     160       
     161        sysarg_t retval =
     162            async_data_read_finalize(callid, &dns_server_addr, size);
     163        async_answer_0(iid, retval);
     164}
     165
     166static void dnsr_set_srvaddr_srv(dnsr_client_t *client, ipc_callid_t iid,
     167    ipc_call_t *icall)
    141168{
    142169        log_msg(LOG_DEFAULT, LVL_DEBUG, "dnsr_set_srvaddr_srv()");
    143 
    144         dns_server_addr.ipv4 = IPC_GET_ARG1(*call);
    145 
    146         async_answer_0(callid, EOK);
     170       
     171        ipc_callid_t callid;
     172        size_t size;
     173        if (!async_data_write_receive(&callid, &size)) {
     174                async_answer_0(callid, EREFUSED);
     175                async_answer_0(iid, EREFUSED);
     176                return;
     177        }
     178       
     179        if (size != sizeof(inet2_addr_t)) {
     180                async_answer_0(callid, EINVAL);
     181                async_answer_0(iid, EINVAL);
     182                return;
     183        }
     184       
     185        // FIXME locking
     186       
     187        sysarg_t retval =
     188            async_data_write_finalize(callid, &dns_server_addr, size);
     189        async_answer_0(iid, retval);
    147190}
    148191
Note: See TracChangeset for help on using the changeset viewer.