Changeset fa101c4 in mainline for uspace/app/inetcfg/inetcfg.c


Ignore:
Timestamp:
2012-03-08T22:30:19Z (12 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
637a3b4
Parents:
291c792
Message:

Address deletion (needs better synchronization).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/app/inetcfg/inetcfg.c

    r291c792 rfa101c4  
    4848static void print_syntax(void)
    4949{
    50         printf("syntax: " NAME " create <addr>/<width> <link-name> <addr-name>\n");
     50        printf("syntax:\n");
     51        printf("\t" NAME " create <addr>/<width> <link-name> <addr-name>\n");
     52        printf("\t" NAME " delete <link-name> <addr-name>\n");
    5153}
    5254
     
    143145        if (rc != EOK) {
    144146                printf(NAME ": Failed creating static address '%s' (%d)\n",
    145                     "v4s", rc);
     147                    aobj_name, rc);
     148                return EIO;
     149        }
     150
     151        return EOK;
     152}
     153
     154static int addr_delete(int argc, char *argv[])
     155{
     156        char *aobj_name;
     157        char *link_name;
     158        sysarg_t link_id;
     159        sysarg_t addr_id;
     160        int rc;
     161
     162        if (argc < 2) {
     163                printf(NAME ": Missing arguments.\n");
     164                print_syntax();
     165                return EINVAL;
     166        }
     167
     168        if (argc > 2) {
     169                printf(NAME ": Too many arguments.\n");
     170                print_syntax();
     171                return EINVAL;
     172        }
     173
     174        link_name = argv[0];
     175        aobj_name = argv[1];
     176
     177        rc = loc_service_get_id(link_name, &link_id, 0);
     178        if (rc != EOK) {
     179                printf(NAME ": Service '%s' not found (%d).\n", link_name, rc);
     180                return ENOENT;
     181        }
     182
     183        rc = inetcfg_addr_get_id(aobj_name, link_id, &addr_id);
     184        if (rc != EOK) {
     185                printf(NAME ": Address '%s' not found (%d).\n", aobj_name, rc);
     186                return ENOENT;
     187        }
     188
     189        rc = inetcfg_addr_delete(addr_id);
     190        if (rc != EOK) {
     191                printf(NAME ": Failed deleting address '%s' (%d)\n", aobj_name,
     192                    rc);
    146193                return EIO;
    147194        }
     
    223270                if (rc != EOK)
    224271                        return 1;
     272        } else if (str_cmp(argv[1], "delete") == 0) {
     273                rc = addr_delete(argc - 2, argv + 2);
     274                if (rc != EOK)
     275                        return 1;
    225276        } else {
    226277                printf(NAME ": Unknown command '%s'.\n", argv[1]);
Note: See TracChangeset for help on using the changeset viewer.