Changeset 8bf672d in mainline for uspace/lib/c/generic/inetcfg.c


Ignore:
Timestamp:
2012-03-30T17:42:11Z (12 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
66a272f8
Parents:
3b3c689
Message:

Static route configuration.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/c/generic/inetcfg.c

    r3b3c689 r8bf672d  
    238238}
    239239
     240int 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
    240246int inetcfg_link_get(sysarg_t link_id, inet_link_info_t *linfo)
    241247{
     
    274280}
    275281
     282int 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
     305int 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
     315int 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
     354int 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
    276375/** @}
    277376 */
Note: See TracChangeset for help on using the changeset viewer.