Changeset 45aa22c in mainline for uspace/app/inetcfg/inetcfg.c
- Timestamp:
- 2012-03-07T23:05:42Z (12 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- a88a6eac
- Parents:
- 0e25780
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/app/inetcfg/inetcfg.c
r0e25780 r45aa22c 38 38 #include <errno.h> 39 39 #include <inet/inetcfg.h> 40 #include <loc.h> 40 41 #include <stdio.h> 41 42 #include <str_error.h> … … 46 47 static void print_syntax(void) 47 48 { 48 printf("syntax: " NAME " xxx\n"); 49 printf("syntax: " NAME " create <addr>/<width> <link-name> <addr-name>\n"); 50 } 51 52 static int naddr_parse(const char *text, inet_naddr_t *naddr) 53 { 54 unsigned long a[4], bits; 55 char *cp = (char *)text; 56 int i; 57 58 for (i = 0; i < 3; i++) { 59 a[i] = strtoul(cp, &cp, 10); 60 if (*cp != '.') 61 return EINVAL; 62 ++cp; 63 } 64 65 a[3] = strtoul(cp, &cp, 10); 66 if (*cp != '/') 67 return EINVAL; 68 ++cp; 69 70 bits = strtoul(cp, &cp, 10); 71 if (*cp != '\0') 72 return EINVAL; 73 74 naddr->ipv4 = 0; 75 for (i = 0; i < 4; i++) { 76 if (a[i] > 255) 77 return EINVAL; 78 naddr->ipv4 = (naddr->ipv4 << 8) | a[i]; 79 } 80 81 if (bits < 1 || bits > 31) 82 return EINVAL; 83 84 naddr->bits = bits; 85 return EOK; 86 } 87 88 static int addr_create_static(int argc, char *argv[]) 89 { 90 char *aobj_name; 91 char *addr_spec; 92 char *link_name; 93 94 inet_naddr_t naddr; 95 sysarg_t link_id; 96 sysarg_t addr_id; 97 int rc; 98 99 if (argc < 3) { 100 printf(NAME ": Missing arguments.\n"); 101 print_syntax(); 102 return EINVAL; 103 } 104 105 if (argc > 3) { 106 printf(NAME ": Too many arguments.\n"); 107 print_syntax(); 108 return EINVAL; 109 } 110 111 addr_spec = argv[0]; 112 link_name = argv[1]; 113 aobj_name = argv[2]; 114 115 rc = loc_service_get_id(link_name, &link_id, 0); 116 if (rc != EOK) { 117 printf(NAME ": Service '%s' not found (%d).\n", link_name, rc); 118 return ENOENT; 119 } 120 121 rc = naddr_parse(addr_spec, &naddr); 122 if (rc != EOK) { 123 printf(NAME ": Invalid address format '%s'.\n", addr_spec); 124 return EINVAL; 125 } 126 127 rc = inetcfg_addr_create_static(aobj_name, &naddr, link_id, &addr_id); 128 if (rc != EOK) { 129 printf(NAME ": Failed creating static address '%s' (%d)\n", 130 "v4s", rc); 131 return 1; 132 } 133 134 return EOK; 49 135 } 50 136 … … 52 138 { 53 139 int rc; 54 inet_naddr_t naddr;55 sysarg_t addr_id;56 140 57 if (argc > 1) {58 printf(NAME ": Invalid argument '%s'.\n", argv[1]);141 if (argc < 2) { 142 printf(NAME ": Missing argument.\n"); 59 143 print_syntax(); 60 144 return 1; 61 145 } 62 63 printf("initialize\n");64 146 65 147 rc = inetcfg_init(); … … 70 152 } 71 153 72 printf("sleep\n"); 73 async_usleep(10*1000*1000); 74 printf("create static addr\n"); 75 76 rc = inetcfg_addr_create_static("v4s", &naddr, &addr_id); 77 if (rc != EOK) { 78 printf(NAME ": Failed creating static address '%s' (%d)\n", 79 "v4s", rc); 154 if (str_cmp(argv[1], "create") == 0) { 155 rc = addr_create_static(argc - 2, argv + 2); 156 if (rc != EOK) 157 return 1; 158 } else { 159 printf(NAME ": Unknown command '%s'.\n", argv[1]); 160 print_syntax(); 80 161 return 1; 81 162 } 82 163 83 printf("Success!\n");84 164 return 0; 85 165 }
Note:
See TracChangeset
for help on using the changeset viewer.