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


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)

Location:
uspace/srv/net/dnsrsrv
Files:
6 edited

Legend:

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

    rb49d872 r3e66428  
    299299        assert(buf_size >= 4);
    300300
    301         w = ((uint32_t)buf[0] << 24) +
    302             ((uint32_t)buf[1] << 16) +
    303             ((uint32_t)buf[2] << 8) +
     301        w = ((uint32_t) buf[0] << 24) +
     302            ((uint32_t) buf[1] << 16) +
     303            ((uint32_t) buf[2] << 8) +
    304304            buf[3];
    305305
  • uspace/srv/net/dnsrsrv/dns_type.h

    rb49d872 r3e66428  
    3939#include <adt/list.h>
    4040#include <inet/inet.h>
     41#include <inet/addr2.h>
    4142#include <stdbool.h>
    4243#include <stdint.h>
     
    115116        char *cname;
    116117        /** Host address */
    117         inet_addr_t addr;
     118        inet2_addr_t addr;
    118119} dns_host_info_t;
    119120
  • 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
  • uspace/srv/net/dnsrsrv/query.c

    rb49d872 r3e66428  
    128128
    129129                        info->cname = str_dup(rr->name);
    130                         info->addr.ipv4 = dns_uint32_t_decode(rr->rdata, rr->rdata_size);
    131                         log_msg(LOG_DEFAULT, LVL_DEBUG, "info->name = '%s' "
    132                             "info->addr = %x", info->cname, info->addr.ipv4);
    133 
     130                        inet2_addr_unpack(dns_uint32_t_decode(rr->rdata, rr->rdata_size),
     131                            &info->addr);
     132                       
    134133                        dns_message_destroy(msg);
    135134                        dns_message_destroy(amsg);
  • uspace/srv/net/dnsrsrv/transport.c

    rb49d872 r3e66428  
    5252
    5353/** Request timeout (microseconds) */
    54 #define REQ_TIMEOUT (5*1000*1000)
     54#define REQ_TIMEOUT (5 * 1000 * 1000)
    5555
    5656/** Maximum number of retries */
    5757#define REQ_RETRY_MAX 3
     58
     59inet2_addr_t dns_server_addr;
    5860
    5961typedef struct {
     
    7274static fid_t recv_fid;
    7375static int transport_fd = -1;
    74 inet_addr_t dns_server_addr;
    7576
    7677/** Outstanding requests */
     
    194195        addr.sin_family = AF_INET;
    195196        addr.sin_port = htons(DNS_SERVER_PORT);
    196         addr.sin_addr.s_addr = host2uint32_t_be(dns_server_addr.ipv4);
     197        inet2_addr_sockaddr_in(&dns_server_addr, &addr);
    197198
    198199        rc = dns_message_encode(req, &req_data, &req_size);
     
    204205        while (ntry < REQ_RETRY_MAX) {
    205206                rc = sendto(transport_fd, req_data, req_size, 0,
    206                     (struct sockaddr *)&addr, sizeof(addr));
     207                    (struct sockaddr *) &addr, sizeof(addr));
    207208                if (rc != EOK)
    208209                        goto error;
  • uspace/srv/net/dnsrsrv/transport.h

    rb49d872 r3e66428  
    3737#define TRANSPORT_H
    3838
    39 #include <inet/addr.h>
     39#include <inet/addr2.h>
    4040#include "dns_type.h"
     41
     42extern inet2_addr_t dns_server_addr;
    4143
    4244extern int transport_init(void);
     
    4446extern int dns_request(dns_message_t *, dns_message_t **);
    4547
    46 extern inet_addr_t dns_server_addr;
    47 
    48 
    4948#endif
    5049
Note: See TracChangeset for help on using the changeset viewer.