Changes in uspace/srv/net/dnsrsrv/dnsrsrv.c [d8b47eca:959d2ec] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/net/dnsrsrv/dnsrsrv.c
rd8b47eca r959d2ec 84 84 } 85 85 86 static void dnsr_name2host_srv(dnsr_client_t *client, ipc_callid_t iid, 87 ipc_call_t *icall) 88 { 86 static void dnsr_name2host_srv(dnsr_client_t *client, ipc_callid_t callid, 87 ipc_call_t *call) 88 { 89 char *name; 90 dns_host_info_t *hinfo; 91 ipc_callid_t rcallid; 92 size_t size; 93 sysarg_t retval; 94 size_t act_size; 95 int rc; 96 89 97 log_msg(LOG_DEFAULT, LVL_DEBUG, "inet_get_srvaddr_srv()"); 90 91 char *name; 92 int rc = async_data_write_accept((void **) &name, true, 0, 98 99 rc = async_data_write_accept((void **) &name, true, 0, 93 100 DNS_NAME_MAX_SIZE, 0, NULL); 94 101 if (rc != EOK) { 95 async_answer_0(iid, rc); 96 return; 97 } 98 99 dns_host_info_t *hinfo; 102 async_answer_0(callid, rc); 103 return; 104 } 105 106 if (!async_data_read_receive(&rcallid, &size)) { 107 async_answer_0(rcallid, EREFUSED); 108 async_answer_0(callid, EREFUSED); 109 return; 110 } 111 100 112 rc = dns_name2host(name, &hinfo); 101 113 if (rc != EOK) { 102 async_answer_0(iid, rc); 103 return; 104 } 105 106 ipc_callid_t callid; 107 size_t size; 108 if (!async_data_read_receive(&callid, &size)) { 109 async_answer_0(callid, EREFUSED); 110 async_answer_0(iid, EREFUSED); 111 return; 112 } 113 114 if (size != sizeof(inet_addr_t)) { 115 async_answer_0(callid, EINVAL); 116 async_answer_0(iid, EINVAL); 117 return; 118 } 119 120 rc = async_data_read_finalize(callid, &hinfo->addr, size); 121 if (rc != EOK) { 114 async_answer_0(rcallid, rc); 122 115 async_answer_0(callid, rc); 123 async_answer_0(iid, rc); 124 return; 125 } 126 127 if (!async_data_read_receive(&callid, &size)) { 128 async_answer_0(callid, EREFUSED); 129 async_answer_0(iid, EREFUSED); 130 return; 131 } 132 133 size_t act_size = str_size(hinfo->cname); 116 return; 117 } 118 119 act_size = str_size(hinfo->cname); 134 120 if (act_size > size) { 135 async_answer_0(callid, EINVAL); 136 async_answer_0(iid, EINVAL); 137 return; 138 } 139 140 rc = async_data_read_finalize(callid, hinfo->cname, act_size); 141 if (rc != EOK) 142 async_answer_0(callid, rc); 143 144 async_answer_0(iid, (sysarg_t) rc); 145 121 async_answer_0(rcallid, EOVERFLOW); 122 async_answer_0(callid, EOVERFLOW); 123 return; 124 } 125 126 retval = async_data_read_finalize(rcallid, hinfo->cname, act_size); 127 async_answer_1(callid, retval, hinfo->addr.ipv4); 128 146 129 dns_hostinfo_destroy(hinfo); 147 130 } 148 131 149 static void dnsr_get_srvaddr_srv(dnsr_client_t *client, ipc_callid_t iid,150 ipc_call_t * icall)132 static void dnsr_get_srvaddr_srv(dnsr_client_t *client, ipc_callid_t callid, 133 ipc_call_t *call) 151 134 { 152 135 log_msg(LOG_DEFAULT, LVL_DEBUG, "inet_get_srvaddr_srv()"); 153 154 ipc_callid_t callid; 155 size_t size; 156 if (!async_data_read_receive(&callid, &size)) { 157 async_answer_0(callid, EREFUSED); 158 async_answer_0(iid, EREFUSED); 159 return; 160 } 161 162 if (size != sizeof(inet_addr_t)) { 163 async_answer_0(callid, EINVAL); 164 async_answer_0(iid, EINVAL); 165 return; 166 } 167 168 // FIXME locking 169 170 int rc = async_data_read_finalize(callid, &dns_server_addr, size); 171 if (rc != EOK) 172 async_answer_0(callid, rc); 173 174 async_answer_0(iid, rc); 175 } 176 177 static void dnsr_set_srvaddr_srv(dnsr_client_t *client, ipc_callid_t iid, 178 ipc_call_t *icall) 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) 179 141 { 180 142 log_msg(LOG_DEFAULT, LVL_DEBUG, "dnsr_set_srvaddr_srv()"); 181 182 ipc_callid_t callid; 183 size_t size; 184 if (!async_data_write_receive(&callid, &size)) { 185 async_answer_0(callid, EREFUSED); 186 async_answer_0(iid, EREFUSED); 187 return; 188 } 189 190 if (size != sizeof(inet_addr_t)) { 191 async_answer_0(callid, EINVAL); 192 async_answer_0(iid, EINVAL); 193 return; 194 } 195 196 // FIXME locking 197 198 int rc = async_data_write_finalize(callid, &dns_server_addr, size); 199 if (rc != EOK) { 200 async_answer_0(callid, rc); 201 async_answer_0(iid, rc); 202 } 203 204 async_answer_0(iid, (sysarg_t) rc); 143 144 dns_server_addr.ipv4 = IPC_GET_ARG1(*call); 145 146 async_answer_0(callid, EOK); 205 147 } 206 148
Note:
See TracChangeset
for help on using the changeset viewer.