Changeset 8bf672d in mainline for uspace/lib/c/generic/inetcfg.c
- Timestamp:
- 2012-03-30T17:42:11Z (13 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 66a272f8
- Parents:
- 3b3c689
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/c/generic/inetcfg.c
r3b3c689 r8bf672d 238 238 } 239 239 240 int inetcfg_get_sroute_list(sysarg_t **sroutes, size_t *count) 241 { 242 return inetcfg_get_ids_internal(INETCFG_GET_SROUTE_LIST, 243 0, sroutes, count); 244 } 245 240 246 int inetcfg_link_get(sysarg_t link_id, inet_link_info_t *linfo) 241 247 { … … 274 280 } 275 281 282 int inetcfg_sroute_create(const char *name, inet_naddr_t *dest, 283 inet_addr_t *router, sysarg_t *sroute_id) 284 { 285 async_exch_t *exch = async_exchange_begin(inetcfg_sess); 286 287 ipc_call_t answer; 288 aid_t req = async_send_3(exch, INETCFG_SROUTE_CREATE, 289 dest->ipv4, dest->bits, router->ipv4, &answer); 290 sysarg_t retval = async_data_write_start(exch, name, str_size(name)); 291 292 async_exchange_end(exch); 293 294 if (retval != EOK) { 295 async_wait_for(req, NULL); 296 return retval; 297 } 298 299 async_wait_for(req, &retval); 300 *sroute_id = IPC_GET_ARG1(answer); 301 302 return retval; 303 } 304 305 int inetcfg_sroute_delete(sysarg_t sroute_id) 306 { 307 async_exch_t *exch = async_exchange_begin(inetcfg_sess); 308 309 int rc = async_req_1_0(exch, INETCFG_SROUTE_DELETE, sroute_id); 310 async_exchange_end(exch); 311 312 return rc; 313 } 314 315 int inetcfg_sroute_get(sysarg_t sroute_id, inet_sroute_info_t *srinfo) 316 { 317 ipc_call_t dreply; 318 sysarg_t dretval; 319 size_t act_size; 320 char name_buf[LOC_NAME_MAXLEN + 1]; 321 322 async_exch_t *exch = async_exchange_begin(inetcfg_sess); 323 324 ipc_call_t answer; 325 aid_t req = async_send_1(exch, INETCFG_SROUTE_GET, sroute_id, &answer); 326 aid_t dreq = async_data_read(exch, name_buf, LOC_NAME_MAXLEN, &dreply); 327 async_wait_for(dreq, &dretval); 328 329 async_exchange_end(exch); 330 331 if (dretval != EOK) { 332 async_wait_for(req, NULL); 333 return dretval; 334 } 335 336 sysarg_t retval; 337 async_wait_for(req, &retval); 338 339 if (retval != EOK) 340 return retval; 341 342 act_size = IPC_GET_ARG2(dreply); 343 assert(act_size <= LOC_NAME_MAXLEN); 344 name_buf[act_size] = '\0'; 345 346 srinfo->dest.ipv4 = IPC_GET_ARG1(answer); 347 srinfo->dest.bits = IPC_GET_ARG2(answer); 348 srinfo->router.ipv4 = IPC_GET_ARG3(answer); 349 srinfo->name = str_dup(name_buf); 350 351 return EOK; 352 } 353 354 int inetcfg_sroute_get_id(const char *name, sysarg_t *sroute_id) 355 { 356 async_exch_t *exch = async_exchange_begin(inetcfg_sess); 357 358 ipc_call_t answer; 359 aid_t req = async_send_0(exch, INETCFG_SROUTE_GET_ID, &answer); 360 sysarg_t retval = async_data_write_start(exch, name, str_size(name)); 361 362 async_exchange_end(exch); 363 364 if (retval != EOK) { 365 async_wait_for(req, NULL); 366 return retval; 367 } 368 369 async_wait_for(req, &retval); 370 *sroute_id = IPC_GET_ARG1(answer); 371 372 return retval; 373 } 374 276 375 /** @} 277 376 */
Note:
See TracChangeset
for help on using the changeset viewer.