Changeset 98abd40 in mainline for uspace/app
- Timestamp:
- 2013-07-06T21:57:22Z (13 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- c8bb1633, cdc8a391
- Parents:
- b8e72fd1 (diff), 507c6f3 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)links above to see all the changes relative to each parent. - Location:
- uspace/app
- Files:
-
- 2 added
- 4 deleted
- 18 edited
-
bdsh/Makefile (modified) (2 diffs)
-
bdsh/cmds/modules/bdd/bdd.c (deleted)
-
bdsh/cmds/modules/bdd/bdd.h (deleted)
-
bdsh/cmds/modules/bdd/bdd_def.h (deleted)
-
bdsh/cmds/modules/bdd/entry.h (deleted)
-
bdsh/cmds/modules/help/help.c (modified) (3 diffs)
-
bdsh/cmds/modules/modules.h (modified) (2 diffs)
-
bdsh/cmds/modules/pwd/pwd.c (modified) (1 diff)
-
bdsh/cmds/modules/rm/rm.c (modified) (2 diffs)
-
bdsh/cmds/modules/sleep/sleep.c (modified) (1 diff)
-
bdsh/exec.c (modified) (1 diff)
-
blkdump/blkdump.c (modified) (9 diffs)
-
dnscfg/dnscfg.c (modified) (3 diffs)
-
edit/search_impl.h (modified) (2 diffs)
-
edit/sheet_impl.h (modified) (2 diffs)
-
inet/inet.c (modified) (5 diffs)
-
netecho/netecho.c (modified) (1 diff)
-
nettest1/nettest1.c (modified) (25 diffs)
-
nettest2/nettest2.c (modified) (25 diffs)
-
nettest3/nettest3.c (modified) (1 diff)
-
nterm/conn.c (modified) (3 diffs)
-
ping/ping.c (modified) (9 diffs)
-
ping6/Makefile (added)
-
ping6/ping6.c (added)
Legend:
- Unmodified
- Added
- Removed
-
uspace/app/bdsh/Makefile
rb8e72fd1 r98abd40 29 29 30 30 USPACE_PREFIX = ../.. 31 LIBS = $(LIBBLOCK_PREFIX)/libblock.a $(LIBCLUI_PREFIX)/libclui.a \ 32 $(LIBFMTUTIL_PREFIX)/libfmtutil.a 33 EXTRA_CFLAGS = -I$(LIBBLOCK_PREFIX) -I$(LIBCLUI_PREFIX) \ 34 -I$(LIBFMTUTIL_PREFIX) -I. -Icmds/ -Icmds/builtins -Icmds/modules 31 LIBS = $(LIBCLUI_PREFIX)/libclui.a $(LIBFMTUTIL_PREFIX)/libfmtutil.a 32 EXTRA_CFLAGS = -I$(LIBCLUI_PREFIX) -I$(LIBFMTUTIL_PREFIX) \ 33 -I. -Icmds/ -Icmds/builtins -Icmds/modules 35 34 BINARY = bdsh 36 35 … … 40 39 cmds/modules/mkfile/mkfile.c \ 41 40 cmds/modules/rm/rm.c \ 42 cmds/modules/bdd/bdd.c \43 41 cmds/modules/cat/cat.c \ 44 42 cmds/modules/touch/touch.c \ -
uspace/app/bdsh/cmds/modules/help/help.c
rb8e72fd1 r98abd40 98 98 builtin_t *cmd; 99 99 module_t *mod; 100 unsigned int i;101 100 102 101 printf("\n Bdsh built-in commands:\n"); … … 104 103 105 104 /* First, show a list of built in commands that are available in this mode */ 106 for (cmd = builtins; cmd->name != NULL; cmd++ , i++) {105 for (cmd = builtins; cmd->name != NULL; cmd++) { 107 106 if (is_builtin_alias(cmd->name)) 108 107 printf(" %-16s\tAlias for `%s'\n", cmd->name, … … 112 111 } 113 112 114 i = 0;115 116 113 /* Now, show a list of module commands that are available in this mode */ 117 for (mod = modules; mod->name != NULL; mod++ , i++) {114 for (mod = modules; mod->name != NULL; mod++) { 118 115 if (is_module_alias(mod->name)) 119 116 printf(" %-16s\tAlias for `%s'\n", mod->name, -
uspace/app/bdsh/cmds/modules/modules.h
rb8e72fd1 r98abd40 50 50 #include "mkfile/entry.h" 51 51 #include "rm/entry.h" 52 #include "bdd/entry.h"53 52 #include "cat/entry.h" 54 53 #include "touch/entry.h" … … 74 73 #include "mkfile/mkfile_def.h" 75 74 #include "rm/rm_def.h" 76 #include "bdd/bdd_def.h"77 75 #include "cat/cat_def.h" 78 76 #include "touch/touch_def.h" -
uspace/app/bdsh/cmds/modules/pwd/pwd.c
rb8e72fd1 r98abd40 55 55 } 56 56 57 memset(buff, 0, sizeof(buff));57 memset(buff, 0, PATH_MAX); 58 58 getcwd(buff, PATH_MAX); 59 59 -
uspace/app/bdsh/cmds/modules/rm/rm.c
rb8e72fd1 r98abd40 99 99 if (NULL == (rm->nwd = (char *) malloc(PATH_MAX))) 100 100 return 0; 101 memset(rm->nwd, 0, sizeof(rm->nwd));101 memset(rm->nwd, 0, PATH_MAX); 102 102 103 103 if (NULL == (rm->owd = (char *) malloc(PATH_MAX))) 104 104 return 0; 105 memset(rm->owd, 0, sizeof(rm->owd));105 memset(rm->owd, 0, PATH_MAX); 106 106 107 107 if (NULL == (rm->cwd = (char *) malloc(PATH_MAX))) 108 108 return 0; 109 memset(rm->cwd, 0, sizeof(rm->cwd));109 memset(rm->cwd, 0, PATH_MAX); 110 110 111 111 chdir("."); … … 298 298 break; 299 299 } 300 memset(buff, 0, sizeof(buff));300 memset(buff, 0, len); 301 301 snprintf(buff, len, "%s", argv[i]); 302 302 -
uspace/app/bdsh/cmds/modules/sleep/sleep.c
rb8e72fd1 r98abd40 67 67 uint64_t whole_seconds; 68 68 uint64_t frac_seconds; 69 c har *endptr;69 const char *endptr; 70 70 71 71 /* Check for whole seconds */ -
uspace/app/bdsh/exec.c
rb8e72fd1 r98abd40 83 83 /* We now have n places to look for the command */ 84 84 for (i = 0; search_dir[i] != NULL; i++) { 85 memset(found, 0, sizeof(found));85 memset(found, 0, PATH_MAX); 86 86 snprintf(found, PATH_MAX, "%s/%s", search_dir[i], cmd); 87 87 if (-1 != try_access(found)) { -
uspace/app/blkdump/blkdump.c
rb8e72fd1 r98abd40 1 1 /* 2 2 * Copyright (c) 2011 Martin Sucha 3 * Copyright (c) 201 0Jiri Svoboda3 * Copyright (c) 2013 Jiri Svoboda 4 4 * All rights reserved. 5 5 * … … 52 52 53 53 static void syntax_print(void); 54 static int print_blocks(aoff64_t block_offset, aoff64_t block_count, size_t block_size); 55 static int print_toc(void); 54 56 static void print_hex_row(uint8_t *data, size_t length, size_t bytes_per_row); 57 58 static bool relative = false; 59 static service_id_t service_id; 55 60 56 61 int main(int argc, char **argv) … … 59 64 int rc; 60 65 char *dev_path; 61 service_id_t service_id;62 66 size_t block_size; 63 67 char *endptr; … … 65 69 aoff64_t block_count = 1; 66 70 aoff64_t dev_nblocks; 67 uint8_t *data; 68 size_t data_offset; 69 aoff64_t current; 70 aoff64_t limit; 71 bool relative = false; 71 bool toc = false; 72 72 73 73 if (argc < 2) { … … 79 79 --argc; ++argv; 80 80 81 if (str_cmp(*argv, "--toc") == 0) { 82 --argc; ++argv; 83 toc = true; 84 goto devname; 85 } 86 81 87 if (str_cmp(*argv, "--relative") == 0) { 82 88 --argc; ++argv; … … 120 126 } 121 127 128 devname: 122 129 if (argc != 1) { 123 130 printf(NAME ": Error, unexpected argument.\n"); … … 153 160 printf("Device %s has %" PRIuOFF64 " blocks, %" PRIuOFF64 " bytes each\n", dev_path, dev_nblocks, (aoff64_t) block_size); 154 161 162 if (toc) 163 rc = print_toc(); 164 else 165 rc = print_blocks(block_offset, block_count, block_size); 166 167 block_fini(service_id); 168 169 return rc; 170 } 171 172 static int print_blocks(aoff64_t block_offset, aoff64_t block_count, size_t block_size) 173 { 174 uint8_t *data; 175 aoff64_t current; 176 aoff64_t limit; 177 size_t data_offset; 178 int rc; 179 155 180 data = malloc(block_size); 156 181 if (data == NULL) { 157 182 printf(NAME ": Error allocating data buffer of %" PRIuOFF64 " bytes", (aoff64_t) block_size); 158 block_fini(service_id);159 183 return 3; 160 184 } 161 185 162 186 limit = block_offset + block_count; 163 187 for (current = block_offset; current < limit; current++) { … … 168 192 return 3; 169 193 } 170 194 171 195 printf("---- Block %" PRIuOFF64 " (at %" PRIuOFF64 ") ----\n", current, current*block_size); 172 196 173 197 for (data_offset = 0; data_offset < block_size; data_offset += 16) { 174 198 if (relative) { … … 183 207 printf("\n"); 184 208 } 185 209 186 210 free(data); 187 188 block_fini(service_id); 211 return 0; 212 } 213 214 static int print_toc(void) 215 { 216 toc_block_t *toc; 217 218 toc = block_get_toc(service_id, 0); 219 if (toc == NULL) 220 return 1; 221 222 printf("TOC size: %" PRIu16 " bytes\n", toc->size); 223 printf("First session: %" PRIu8 "\n", toc->first_session); 224 printf("Last_session: %" PRIu8 "\n", toc->last_session); 189 225 190 226 return 0; -
uspace/app/dnscfg/dnscfg.c
rb8e72fd1 r98abd40 49 49 static void print_syntax(void) 50 50 { 51 printf("syntax:\n"); 52 printf("\t" NAME " set-ns <server-addr>\n"); 53 printf("\t" NAME " unset-ns\n"); 51 printf("Syntax:\n"); 52 printf("\t%s get-ns\n", NAME); 53 printf("\t%s set-ns <server-addr>\n", NAME); 54 printf("\t%s unset-ns\n", NAME); 54 55 } 55 56 56 57 static int dnscfg_set_ns(int argc, char *argv[]) 57 58 { 58 char *srv_addr;59 inet_addr_t addr;60 int rc;61 62 59 if (argc < 1) { 63 printf( NAME ": Missing arguments.\n");60 printf("%s: Missing arguments.\n", NAME); 64 61 print_syntax(); 65 62 return EINVAL; 66 63 } 67 64 68 65 if (argc > 1) { 69 printf( NAME ": Too many arguments.\n");66 printf("%s: Too many arguments.\n", NAME); 70 67 print_syntax(); 71 68 return EINVAL; 72 69 } 73 74 srv_addr = argv[0]; 75 76 rc = inet_addr_parse(srv_addr, &addr); 70 71 char *srv_addr = argv[0]; 72 73 inet_addr_t addr; 74 int rc = inet_addr_parse(srv_addr, &addr); 75 77 76 if (rc != EOK) { 78 printf( NAME ": Invalid address format '%s'.\n", srv_addr);79 return EINVAL;77 printf("%s: Invalid address format '%s'.\n", NAME, srv_addr); 78 return rc; 80 79 } 81 80 82 81 rc = dnsr_set_srvaddr(&addr); 83 82 if (rc != EOK) { 84 printf( NAME ": Failed settingserver address '%s' (%s)\n",85 srv_addr, str_error(rc));86 return EIO;83 printf("%s: Failed setting nameserver address '%s' (%s)\n", 84 NAME, srv_addr, str_error(rc)); 85 return rc; 87 86 } 88 87 89 88 return EOK; 90 89 } 91 90 92 static int dnscfg_unset_ns( int argc, char *argv[])91 static int dnscfg_unset_ns(void) 93 92 { 94 93 inet_addr_t addr; 95 int rc; 96 97 if (argc > 0) { 98 printf(NAME ": Too many arguments.\n"); 99 print_syntax(); 100 return EINVAL; 94 inet_addr_any(&addr); 95 96 int rc = dnsr_set_srvaddr(&addr); 97 if (rc != EOK) { 98 printf("%s: Failed unsetting server address (%s)\n", 99 NAME, str_error(rc)); 100 return rc; 101 101 } 102 103 addr.ipv4 = 0; 104 rc = dnsr_set_srvaddr(&addr); 105 if (rc != EOK) { 106 printf(NAME ": Failed unsetting server address (%s)\n", 107 str_error(rc)); 108 return EIO; 109 } 110 102 111 103 return EOK; 112 104 } … … 115 107 { 116 108 inet_addr_t addr; 117 char *addr_str; 118 int rc; 119 120 rc = dnsr_get_srvaddr(&addr); 109 int rc = dnsr_get_srvaddr(&addr); 121 110 if (rc != EOK) { 122 printf( NAME ": Failed getting DNS server address.\n");111 printf("%s: Failed getting DNS server address.\n", NAME); 123 112 return rc; 124 113 } 125 114 115 char *addr_str; 126 116 rc = inet_addr_format(&addr, &addr_str); 127 117 if (rc != EOK) { 128 printf( NAME ": Out of memory.\n");118 printf("%s: Out of memory.\n", NAME); 129 119 return rc; 130 120 } 131 132 printf(" Server: %s\n", addr_str);121 122 printf("Nameserver: %s\n", addr_str); 133 123 free(addr_str); 134 124 return EOK; … … 137 127 int main(int argc, char *argv[]) 138 128 { 139 int rc; 140 141 if (argc < 2) { 142 rc = dnscfg_print(); 143 if (rc != EOK) 144 return 1; 145 return 0; 146 } 147 148 if (str_cmp(argv[1], "set-ns") == 0) { 149 rc = dnscfg_set_ns(argc - 2, argv + 2); 150 if (rc != EOK) 151 return 1; 152 } else if (str_cmp(argv[1], "unset-ns") == 0) { 153 rc = dnscfg_unset_ns(argc - 2, argv + 2); 154 if (rc != EOK) 155 return 1; 156 } else { 157 printf(NAME ": Unknown command '%s'.\n", argv[1]); 129 if ((argc < 2) || (str_cmp(argv[1], "get-ns") == 0)) 130 return dnscfg_print(); 131 else if (str_cmp(argv[1], "set-ns") == 0) 132 return dnscfg_set_ns(argc - 2, argv + 2); 133 else if (str_cmp(argv[1], "unset-ns") == 0) 134 return dnscfg_unset_ns(); 135 else { 136 printf("%s: Unknown command '%s'.\n", NAME, argv[1]); 158 137 print_syntax(); 159 138 return 1; 160 139 } 161 162 140 163 141 return 0; 164 142 } -
uspace/app/edit/search_impl.h
rb8e72fd1 r98abd40 40 40 41 41 /** Search state */ 42 typedefstruct search {42 struct search { 43 43 /* Note: This structure is opaque for the user. */ 44 44 … … 49 49 void *client_data; 50 50 search_ops_t ops; 51 } search_t;51 }; 52 52 53 53 #endif -
uspace/app/edit/sheet_impl.h
rb8e72fd1 r98abd40 40 40 41 41 /** Sheet */ 42 typedefstruct sheet {42 struct sheet { 43 43 /* Note: This structure is opaque for the user. */ 44 44 … … 48 48 49 49 list_t tags; 50 } sheet_t;50 }; 51 51 52 52 #endif -
uspace/app/inet/inet.c
rb8e72fd1 r98abd40 44 44 #include <sys/types.h> 45 45 46 #define NAME "inet"46 #define NAME "inet" 47 47 48 48 static void print_syntax(void) … … 257 257 if (count > 0) 258 258 printf(" [Addr/Width] [Link-Name] [Addr-Name] [Def-MTU]\n"); 259 ainfo.name = linfo.name = astr = NULL; 259 ainfo.name = NULL; 260 linfo.name = NULL; 261 astr = NULL; 260 262 261 263 for (i = 0; i < count; i++) { … … 290 292 free(astr); 291 293 292 ainfo.name = linfo.name = astr = NULL; 294 ainfo.name = NULL; 295 linfo.name = NULL; 296 astr = NULL; 293 297 } 294 298 … … 329 333 printf(" [Dest/Width] [Router-Addr] [Route-Name]\n"); 330 334 331 srinfo.name = dest_str = router_str = NULL; 335 srinfo.name = NULL; 336 dest_str = NULL; 337 router_str = NULL; 332 338 333 339 for (i = 0; i < count; i++) { … … 360 366 free(router_str); 361 367 362 router_str = srinfo.name = dest_str = NULL; 368 router_str = NULL; 369 srinfo.name = NULL; 370 dest_str = NULL; 363 371 } 364 372 -
uspace/app/netecho/netecho.c
rb8e72fd1 r98abd40 380 380 address_in6.sin6_family = AF_INET6; 381 381 address_in6.sin6_port = htons(port); 382 address_in6.sin6_addr = in6addr_any; 382 383 address = (struct sockaddr *) &address_in6; 383 384 addrlen = sizeof(address_in6); -
uspace/app/nettest1/nettest1.c
rb8e72fd1 r98abd40 54 54 55 55 /** Echo module name. */ 56 #define NAME "Nettest1"56 #define NAME "nettest1" 57 57 58 58 /** Packet data pattern. */ 59 #define NETTEST1_TEXT "Networking test 1 - sockets"60 61 static int family = PF_INET;59 #define NETTEST1_TEXT "Networking test 1 - sockets" 60 61 static uint16_t family = AF_INET; 62 62 static sock_type_t type = SOCK_DGRAM; 63 static char *data;64 63 static size_t size = 27; 65 static int verbose = 0; 64 static bool verbose = false; 65 static int sockets = 10; 66 static int messages = 10; 67 static uint16_t port = 7; 66 68 67 69 static struct sockaddr *address; 68 70 static socklen_t addrlen; 69 71 70 static int sockets; 71 static int messages; 72 static uint16_t port; 72 static char *data; 73 73 74 74 static void nettest1_print_help(void) … … 114 114 int value; 115 115 int rc; 116 116 117 117 switch (argv[*index][1]) { 118 118 /* … … 120 120 */ 121 121 case 'f': 122 rc = arg_parse_name_int(argc, argv, index, &family, 0, socket_parse_protocol_family); 123 if (rc != EOK) 124 return rc; 122 rc = arg_parse_name_int(argc, argv, index, &value, 0, 123 socket_parse_protocol_family); 124 if (rc != EOK) 125 return rc; 126 127 family = (uint16_t) value; 125 128 break; 126 129 case 'h': … … 131 134 if (rc != EOK) 132 135 return rc; 136 133 137 break; 134 138 case 'n': … … 136 140 if (rc != EOK) 137 141 return rc; 142 138 143 break; 139 144 case 'p': … … 141 146 if (rc != EOK) 142 147 return rc; 148 143 149 port = (uint16_t) value; 144 150 break; … … 147 153 if (rc != EOK) 148 154 return rc; 155 149 156 size = (value >= 0) ? (size_t) value : 0; 150 157 break; 151 158 case 't': 152 rc = arg_parse_name_int(argc, argv, index, &value, 0, socket_parse_socket_type); 153 if (rc != EOK) 154 return rc; 159 rc = arg_parse_name_int(argc, argv, index, &value, 0, 160 socket_parse_socket_type); 161 if (rc != EOK) 162 return rc; 163 155 164 type = (sock_type_t) value; 156 165 break; … … 158 167 verbose = 1; 159 168 break; 169 160 170 /* 161 171 * Long options with double dash ('-') … … 163 173 case '-': 164 174 if (str_lcmp(argv[*index] + 2, "family=", 7) == 0) { 165 rc = arg_parse_name_int(argc, argv, index, & family, 9,175 rc = arg_parse_name_int(argc, argv, index, &value, 9, 166 176 socket_parse_protocol_family); 167 177 if (rc != EOK) 168 178 return rc; 179 180 family = (uint16_t) value; 169 181 } else if (str_lcmp(argv[*index] + 2, "help", 5) == 0) { 170 182 nettest1_print_help(); … … 182 194 if (rc != EOK) 183 195 return rc; 196 184 197 port = (uint16_t) value; 185 198 } else if (str_lcmp(argv[*index] + 2, "type=", 5) == 0) { … … 188 201 if (rc != EOK) 189 202 return rc; 203 190 204 type = (sock_type_t) value; 191 205 } else if (str_lcmp(argv[*index] + 2, "verbose", 8) == 0) { … … 200 214 return EINVAL; 201 215 } 202 216 203 217 return EOK; 204 218 } … … 211 225 static void nettest1_fill_buffer(char *buffer, size_t size) 212 226 { 213 size_t length; 214 215 length = 0; 227 size_t length = 0; 216 228 while (size > length + sizeof(NETTEST1_TEXT) - 1) { 217 229 memcpy(buffer + length, NETTEST1_TEXT, … … 219 231 length += sizeof(NETTEST1_TEXT) - 1; 220 232 } 221 233 222 234 memcpy(buffer + length, NETTEST1_TEXT, size - length); 223 235 buffer[size] = '\0'; … … 226 238 static int nettest1_test(int *socket_ids, int nsockets, int nmessages) 227 239 { 228 int rc;229 230 240 if (verbose) 231 241 printf("%d sockets, %d messages\n", nsockets, nmessages); 232 233 rc = sockets_create(verbose, socket_ids, nsockets, family, type);234 if (rc != EOK) 235 return rc; 236 242 243 int rc = sockets_create(verbose, socket_ids, nsockets, family, type); 244 if (rc != EOK) 245 return rc; 246 237 247 if (type == SOCK_STREAM) { 238 248 rc = sockets_connect(verbose, socket_ids, nsockets, address, … … 241 251 return rc; 242 252 } 243 253 244 254 rc = sockets_sendto_recvfrom(verbose, socket_ids, nsockets, address, 245 255 &addrlen, data, size, nmessages); 246 256 if (rc != EOK) 247 257 return rc; 248 258 249 259 rc = sockets_close(verbose, socket_ids, nsockets); 250 260 if (rc != EOK) 251 261 return rc; 252 262 253 263 if (verbose) 254 264 printf("\tOK\n"); 255 265 256 266 /****/ 257 267 258 268 rc = sockets_create(verbose, socket_ids, nsockets, family, type); 259 269 if (rc != EOK) 260 270 return rc; 261 271 262 272 if (type == SOCK_STREAM) { 263 273 rc = sockets_connect(verbose, socket_ids, nsockets, address, … … 266 276 return rc; 267 277 } 268 278 269 279 rc = sockets_sendto(verbose, socket_ids, nsockets, address, addrlen, 270 280 data, size, nmessages); 271 281 if (rc != EOK) 272 282 return rc; 273 283 274 284 rc = sockets_recvfrom(verbose, socket_ids, nsockets, address, &addrlen, 275 285 data, size, nmessages); 276 286 if (rc != EOK) 277 287 return rc; 278 288 279 289 rc = sockets_close(verbose, socket_ids, nsockets); 280 290 if (rc != EOK) 281 291 return rc; 282 292 283 293 if (verbose) 284 294 printf("\tOK\n"); 285 295 286 296 return EOK; 287 297 } … … 289 299 int main(int argc, char *argv[]) 290 300 { 291 struct sockaddr_in address_in;292 struct sockaddr_in6 address_in6;293 dnsr_hostinfo_t *hinfo;294 uint8_t *address_start;295 296 int *socket_ids;297 int index;298 struct timeval time_before;299 struct timeval time_after;300 301 int rc;302 303 sockets = 10;304 messages = 10;305 port = 7;306 307 301 /* 308 302 * Parse the command line arguments. Stop before the last argument 309 303 * if it does not start with dash ('-') 310 304 */ 311 for (index = 1; (index < argc - 1) || ((index == argc - 1) && (argv[index][0] == '-')); index++) { 305 int index; 306 int rc; 307 308 for (index = 1; (index < argc - 1) || ((index == argc - 1) && 309 (argv[index][0] == '-')); index++) { 312 310 /* Options should start with dash ('-') */ 313 311 if (argv[index][0] == '-') { … … 320 318 } 321 319 } 322 323 /* If not before the last argument containing the host */320 321 /* The last argument containing the host */ 324 322 if (index >= argc) { 325 printf(" Command line error: missing host name\n");323 printf("Host name missing.\n"); 326 324 nettest1_print_help(); 327 325 return EINVAL; 328 326 } 329 327 328 char *addr_s = argv[argc - 1]; 329 330 /* Interpret as address */ 331 inet_addr_t addr_addr; 332 rc = inet_addr_parse(addr_s, &addr_addr); 333 334 if (rc != EOK) { 335 /* Interpret as a host name */ 336 dnsr_hostinfo_t *hinfo = NULL; 337 rc = dnsr_name2host(addr_s, &hinfo); 338 339 if (rc != EOK) { 340 printf("Error resolving host '%s'.\n", addr_s); 341 return EINVAL; 342 } 343 344 addr_addr = hinfo->addr; 345 } 346 347 struct sockaddr_in addr; 348 struct sockaddr_in6 addr6; 349 uint16_t af = inet_addr_sockaddr_in(&addr_addr, &addr, &addr6); 350 351 if (af != family) { 352 printf("Address family does not match explicitly set family.\n"); 353 return EINVAL; 354 } 355 330 356 /* Prepare the address buffer */ 331 332 switch (family) { 333 case PF_INET: 334 address_in.sin_family = AF_INET; 335 address_in.sin_port = htons(port); 336 address = (struct sockaddr *) &address_in; 337 addrlen = sizeof(address_in); 338 address_start = (uint8_t *) &address_in.sin_addr.s_addr; 339 break; 340 case PF_INET6: 341 address_in6.sin6_family = AF_INET6; 342 address_in6.sin6_port = htons(port); 343 address = (struct sockaddr *) &address_in6; 344 addrlen = sizeof(address_in6); 345 address_start = (uint8_t *) &address_in6.sin6_addr.s6_addr; 357 358 switch (af) { 359 case AF_INET: 360 addr.sin_port = htons(port); 361 address = (struct sockaddr *) &addr; 362 addrlen = sizeof(addr); 363 break; 364 case AF_INET6: 365 addr6.sin6_port = htons(port); 366 address = (struct sockaddr *) &addr6; 367 addrlen = sizeof(addr6); 346 368 break; 347 369 default: … … 349 371 return EAFNOSUPPORT; 350 372 } 351 352 /* Parse the last argument which should contain the host/address */ 353 rc = inet_pton(family, argv[argc - 1], address_start); 354 if (rc != EOK) { 355 /* Try interpreting as a host name */ 356 rc = dnsr_name2host(argv[argc - 1], &hinfo); 357 if (rc != EOK) { 358 printf("Error resolving host '%s'.\n", argv[argc - 1]); 359 return rc; 360 } 361 362 address_in.sin_addr.s_addr = host2uint32_t_be(hinfo->addr.ipv4); 363 } 364 373 365 374 /* Check data buffer size */ 366 375 if (size <= 0) { … … 369 378 size = 1024; 370 379 } 371 380 372 381 /* 373 382 * Prepare data buffer. Allocate size bytes plus one for the … … 380 389 } 381 390 nettest1_fill_buffer(data, size); 382 391 383 392 /* Check socket count */ 384 393 if (sockets <= 0) { … … 387 396 sockets = 2; 388 397 } 389 398 390 399 /* 391 400 * Prepare socket buffer. Allocate count fields plus the terminating 392 401 * null (\0). 393 402 */ 394 socket_ids = (int *) malloc(sizeof(int) * (sockets + 1));403 int *socket_ids = (int *) malloc(sizeof(int) * (sockets + 1)); 395 404 if (!socket_ids) { 396 405 fprintf(stderr, "Failed to allocate receive buffer.\n"); 397 406 return ENOMEM; 398 407 } 408 399 409 socket_ids[sockets] = 0; 400 410 401 411 if (verbose) 402 412 printf("Starting tests\n"); 403 413 414 struct timeval time_before; 404 415 rc = gettimeofday(&time_before, NULL); 405 416 if (rc != EOK) { … … 407 418 return rc; 408 419 } 409 420 410 421 nettest1_test(socket_ids, 1, 1); 411 422 nettest1_test(socket_ids, 1, messages); 412 423 nettest1_test(socket_ids, sockets, 1); 413 424 nettest1_test(socket_ids, sockets, messages); 414 425 426 struct timeval time_after; 415 427 rc = gettimeofday(&time_after, NULL); 416 428 if (rc != EOK) { … … 418 430 return rc; 419 431 } 420 432 421 433 printf("Tested in %ld microseconds\n", tv_sub(&time_after, 422 434 &time_before)); 423 435 424 436 if (verbose) 425 437 printf("Exiting\n"); 426 438 427 439 return EOK; 428 440 } 429 441 430 431 442 /** @} 432 443 */ -
uspace/app/nettest2/nettest2.c
rb8e72fd1 r98abd40 55 55 56 56 /** Echo module name. */ 57 #define NAME "Nettest2"57 #define NAME "nettest2" 58 58 59 59 /** Packet data pattern. */ 60 #define NETTEST2_TEXT "Networking test 2 - transfer"61 62 static size_t size;63 static bool verbose;64 static sock_type_t type;65 static int sockets;66 static int messages;67 static int family;68 static uint16_t port ;60 #define NETTEST2_TEXT "Networking test 2 - transfer" 61 62 static uint16_t family = PF_INET; 63 static size_t size = 28; 64 static bool verbose = false; 65 static sock_type_t type = SOCK_DGRAM; 66 static int sockets = 10; 67 static int messages = 10; 68 static uint16_t port = 7; 69 69 70 70 static void nettest2_print_help(void) … … 107 107 static void nettest2_fill_buffer(char *buffer, size_t size) 108 108 { 109 size_t length; 110 111 length = 0; 109 size_t length = 0; 112 110 while (size > length + sizeof(NETTEST2_TEXT) - 1) { 113 111 memcpy(buffer + length, NETTEST2_TEXT, … … 115 113 length += sizeof(NETTEST2_TEXT) - 1; 116 114 } 117 115 118 116 memcpy(buffer + length, NETTEST2_TEXT, size - length); 119 117 buffer[size] = '\0'; … … 130 128 int value; 131 129 int rc; 132 130 133 131 switch (argv[*index][1]) { 134 132 /* … … 136 134 */ 137 135 case 'f': 138 rc = arg_parse_name_int(argc, argv, index, & family, 0,136 rc = arg_parse_name_int(argc, argv, index, &value, 0, 139 137 socket_parse_protocol_family); 140 138 if (rc != EOK) 141 139 return rc; 140 141 family = (uint16_t) value; 142 142 break; 143 143 case 'h': 144 144 nettest2_print_help(); 145 145 return EOK; 146 break;147 146 case 'm': 148 147 rc = arg_parse_int(argc, argv, index, &messages, 0); 149 148 if (rc != EOK) 150 149 return rc; 150 151 151 break; 152 152 case 'n': … … 154 154 if (rc != EOK) 155 155 return rc; 156 156 157 break; 157 158 case 'p': … … 159 160 if (rc != EOK) 160 161 return rc; 162 161 163 port = (uint16_t) value; 162 164 break; … … 165 167 if (rc != EOK) 166 168 return rc; 169 167 170 size = (value >= 0) ? (size_t) value : 0; 168 171 break; … … 172 175 if (rc != EOK) 173 176 return rc; 177 174 178 type = (sock_type_t) value; 175 179 break; … … 177 181 verbose = true; 178 182 break; 183 179 184 /* 180 185 * Long options with double dash ('-') … … 182 187 case '-': 183 188 if (str_lcmp(argv[*index] + 2, "family=", 7) == 0) { 184 rc = arg_parse_name_int(argc, argv, index, & family, 9,189 rc = arg_parse_name_int(argc, argv, index, &value, 9, 185 190 socket_parse_protocol_family); 186 191 if (rc != EOK) 187 192 return rc; 193 194 family = (uint16_t) value; 188 195 } else if (str_lcmp(argv[*index] + 2, "help", 5) == 0) { 189 196 nettest2_print_help(); … … 201 208 if (rc != EOK) 202 209 return rc; 210 203 211 port = (uint16_t) value; 204 212 } else if (str_lcmp(argv[*index] + 2, "type=", 5) == 0) { … … 207 215 if (rc != EOK) 208 216 return rc; 217 209 218 type = (sock_type_t) value; 210 219 } else if (str_lcmp(argv[*index] + 2, "verbose", 8) == 0) { … … 219 228 return EINVAL; 220 229 } 221 230 222 231 return EOK; 223 232 } … … 225 234 int main(int argc, char *argv[]) 226 235 { 227 struct sockaddr *address;228 struct sockaddr_in address_in;229 struct sockaddr_in6 address_in6;230 dnsr_hostinfo_t *hinfo;231 socklen_t addrlen;232 uint8_t *address_start;233 234 int *socket_ids;235 char *data;236 236 int index; 237 struct timeval time_before;238 struct timeval time_after;239 240 237 int rc; 241 242 size = 28; 243 verbose = false; 244 type = SOCK_DGRAM; 245 sockets = 10; 246 messages = 10; 247 family = PF_INET; 248 port = 7; 249 238 250 239 /* 251 240 * Parse the command line arguments. … … 255 244 for (index = 1; (index < argc - 1) || ((index == argc - 1) && 256 245 (argv[index][0] == '-')); ++index) { 257 258 246 /* Options should start with dash ('-') */ 259 247 if (argv[index][0] == '-') { … … 266 254 } 267 255 } 268 269 /* If not before the last argument containing the host */256 257 /* The last argument containing the host */ 270 258 if (index >= argc) { 271 printf(" Command line error: missing host name\n");259 printf("Host name missing.\n"); 272 260 nettest2_print_help(); 273 261 return EINVAL; 274 262 } 275 263 264 char *addr_s = argv[argc - 1]; 265 266 /* Interpret as address */ 267 inet_addr_t addr_addr; 268 rc = inet_addr_parse(addr_s, &addr_addr); 269 270 if (rc != EOK) { 271 /* Interpret as a host name */ 272 dnsr_hostinfo_t *hinfo = NULL; 273 rc = dnsr_name2host(addr_s, &hinfo); 274 275 if (rc != EOK) { 276 printf("Error resolving host '%s'.\n", addr_s); 277 return EINVAL; 278 } 279 280 addr_addr = hinfo->addr; 281 } 282 283 struct sockaddr_in addr; 284 struct sockaddr_in6 addr6; 285 uint16_t af = inet_addr_sockaddr_in(&addr_addr, &addr, &addr6); 286 287 if (af != family) { 288 printf("Address family does not match explicitly set family.\n"); 289 return EINVAL; 290 } 291 276 292 /* Prepare the address buffer */ 277 278 switch (family) { 279 case PF_INET: 280 address_in.sin_family = AF_INET; 281 address_in.sin_port = htons(port); 282 address = (struct sockaddr *) &address_in; 283 addrlen = sizeof(address_in); 284 address_start = (uint8_t *) &address_in.sin_addr.s_addr; 285 break; 286 case PF_INET6: 287 address_in6.sin6_family = AF_INET6; 288 address_in6.sin6_port = htons(port); 289 address = (struct sockaddr *) &address_in6; 290 addrlen = sizeof(address_in6); 291 address_start = (uint8_t *) &address_in6.sin6_addr.s6_addr; 293 294 struct sockaddr *address; 295 socklen_t addrlen; 296 297 switch (af) { 298 case AF_INET: 299 addr.sin_port = htons(port); 300 address = (struct sockaddr *) &addr; 301 addrlen = sizeof(addr); 302 break; 303 case AF_INET6: 304 addr6.sin6_port = htons(port); 305 address = (struct sockaddr *) &addr6; 306 addrlen = sizeof(addr6); 292 307 break; 293 308 default: … … 295 310 return EAFNOSUPPORT; 296 311 } 297 298 /* Parse the last argument which should contain the host/address */ 299 rc = inet_pton(family, argv[argc - 1], address_start); 300 if (rc != EOK) { 301 /* Try interpreting as a host name */ 302 rc = dnsr_name2host(argv[argc - 1], &hinfo); 303 if (rc != EOK) { 304 printf("Error resolving host '%s'.\n", argv[argc - 1]); 305 return rc; 306 } 307 308 address_in.sin_addr.s_addr = host2uint32_t_be(hinfo->addr.ipv4); 309 } 310 312 311 313 /* Check data buffer size. */ 312 314 if (size <= 0) { … … 315 317 size = 1024; 316 318 } 317 319 318 320 /* 319 321 * Prepare the buffer. Allocate size bytes plus one for terminating 320 322 * null character. 321 323 */ 322 data = (char *) malloc(size + 1);324 char *data = (char *) malloc(size + 1); 323 325 if (!data) { 324 326 fprintf(stderr, "Failed to allocate data buffer.\n"); 325 327 return ENOMEM; 326 328 } 327 329 328 330 /* Fill buffer with a pattern. */ 329 331 nettest2_fill_buffer(data, size); 330 332 331 333 /* Check socket count. */ 332 334 if (sockets <= 0) { … … 335 337 sockets = 2; 336 338 } 337 339 338 340 /* 339 341 * Prepare the socket buffer. 340 342 * Allocate count entries plus the terminating null (\0) 341 343 */ 342 socket_ids = (int *) malloc(sizeof(int) * (sockets + 1));344 int *socket_ids = (int *) malloc(sizeof(int) * (sockets + 1)); 343 345 if (!socket_ids) { 344 346 fprintf(stderr, "Failed to allocate receive buffer.\n"); 345 347 return ENOMEM; 346 348 } 349 347 350 socket_ids[sockets] = 0; 348 351 349 352 if (verbose) 350 353 printf("Starting tests\n"); 351 354 352 355 rc = sockets_create(verbose, socket_ids, sockets, family, type); 353 356 if (rc != EOK) 354 357 return rc; 355 358 356 359 if (type == SOCK_STREAM) { 357 360 rc = sockets_connect(verbose, socket_ids, sockets, … … 360 363 return rc; 361 364 } 362 365 363 366 if (verbose) 364 367 printf("\n"); 365 368 369 struct timeval time_before; 366 370 rc = gettimeofday(&time_before, NULL); 367 371 if (rc != EOK) { … … 369 373 return rc; 370 374 } 371 375 372 376 rc = sockets_sendto_recvfrom(verbose, socket_ids, sockets, address, 373 377 &addrlen, data, size, messages); 374 378 if (rc != EOK) 375 379 return rc; 376 380 381 struct timeval time_after; 377 382 rc = gettimeofday(&time_after, NULL); 378 383 if (rc != EOK) { … … 380 385 return rc; 381 386 } 382 387 383 388 if (verbose) 384 389 printf("\tOK\n"); 385 390 386 391 printf("sendto + recvfrom tested in %ld microseconds\n", 387 392 tv_sub(&time_after, &time_before)); 388 393 389 394 rc = gettimeofday(&time_before, NULL); 390 395 if (rc != EOK) { … … 392 397 return rc; 393 398 } 394 399 395 400 rc = sockets_sendto(verbose, socket_ids, sockets, address, addrlen, 396 401 data, size, messages); 397 402 if (rc != EOK) 398 403 return rc; 399 404 400 405 rc = sockets_recvfrom(verbose, socket_ids, sockets, address, &addrlen, 401 406 data, size, messages); 402 407 if (rc != EOK) 403 408 return rc; 404 409 405 410 rc = gettimeofday(&time_after, NULL); 406 411 if (rc != EOK) { … … 408 413 return rc; 409 414 } 410 415 411 416 if (verbose) 412 417 printf("\tOK\n"); 413 418 414 419 printf("sendto, recvfrom tested in %ld microseconds\n", 415 420 tv_sub(&time_after, &time_before)); 416 421 417 422 rc = sockets_close(verbose, socket_ids, sockets); 418 423 if (rc != EOK) 419 424 return rc; 420 425 421 426 if (verbose) 422 427 printf("\nExiting\n"); 423 428 424 429 return EOK; 425 430 } -
uspace/app/nettest3/nettest3.c
rb8e72fd1 r98abd40 83 83 return rc; 84 84 } 85 86 addr.sin_addr.s_addr = host2uint32_t_be(hinfo->addr.ipv4); 87 addr.sin_family = AF_INET; 85 86 uint16_t af = inet_addr_sockaddr_in(&hinfo->addr, &addr, NULL); 87 if (af != AF_INET) { 88 printf("Host '%s' not resolved as IPv4 address.\n", argv[1]); 89 return rc; 90 } 88 91 } 89 92 printf("result: rc=%d, family=%d, addr=%x\n", rc, -
uspace/app/nterm/conn.c
rb8e72fd1 r98abd40 75 75 int conn_open(const char *addr_s, const char *port_s) 76 76 { 77 struct sockaddr_in addr; 78 dnsr_hostinfo_t *hinfo = NULL; 79 int rc; 80 char *endptr; 81 82 addr.sin_family = AF_INET; 83 84 rc = inet_pton(addr.sin_family, addr_s, (uint8_t *)&addr.sin_addr); 77 int conn_fd = -1; 78 79 /* Interpret as address */ 80 inet_addr_t addr_addr; 81 int rc = inet_addr_parse(addr_s, &addr_addr); 82 85 83 if (rc != EOK) { 86 /* Try interpreting as a host name */ 84 /* Interpret as a host name */ 85 dnsr_hostinfo_t *hinfo = NULL; 87 86 rc = dnsr_name2host(addr_s, &hinfo); 87 88 88 if (rc != EOK) { 89 89 printf("Error resolving host '%s'.\n", addr_s); 90 90 goto error; 91 91 } 92 93 addr .sin_addr.s_addr = host2uint32_t_be(hinfo->addr.ipv4);92 93 addr_addr = hinfo->addr; 94 94 } 95 96 addr.sin_port = htons(strtol(port_s, &endptr, 10)); 95 96 struct sockaddr_in addr; 97 struct sockaddr_in6 addr6; 98 uint16_t af = inet_addr_sockaddr_in(&addr_addr, &addr, &addr6); 99 100 char *endptr; 101 uint16_t port = strtol(port_s, &endptr, 10); 97 102 if (*endptr != '\0') { 98 103 printf("Invalid port number %s\n", port_s); 99 104 goto error; 100 105 } 101 106 107 printf("Connecting to host %s port %u\n", addr_s, port); 108 102 109 conn_fd = socket(PF_INET, SOCK_STREAM, 0); 103 110 if (conn_fd < 0) 104 111 goto error; 105 106 printf("Connecting to host %s port %u\n", addr_s, ntohs(addr.sin_port)); 107 108 rc = connect(conn_fd, (struct sockaddr *)&addr, sizeof(addr)); 112 113 switch (af) { 114 case AF_INET: 115 addr.sin_port = htons(port); 116 rc = connect(conn_fd, (struct sockaddr *) &addr, sizeof(addr)); 117 break; 118 case AF_INET6: 119 addr6.sin6_port = htons(port); 120 rc = connect(conn_fd, (struct sockaddr *) &addr6, sizeof(addr6)); 121 break; 122 default: 123 printf("Unknown address family.\n"); 124 goto error; 125 } 126 109 127 if (rc != EOK) 110 128 goto error; 111 129 112 130 rcv_fid = fibril_create(rcv_fibril, NULL); 113 131 if (rcv_fid == 0) 114 132 goto error; 115 133 116 134 fibril_add_ready(rcv_fid); 117 135 118 136 return EOK; 119 137 120 138 error: 121 139 if (conn_fd >= 0) { … … 123 141 conn_fd = -1; 124 142 } 125 143 126 144 return EIO; 127 145 } … … 129 147 int conn_send(void *data, size_t size) 130 148 { 131 int rc; 132 133 rc = send(conn_fd, data, size, 0); 149 int rc = send(conn_fd, data, size, 0); 134 150 if (rc != EOK) 135 151 return EIO; 136 152 137 153 return EOK; 138 154 } -
uspace/app/ping/ping.c
rb8e72fd1 r98abd40 37 37 #include <errno.h> 38 38 #include <fibril_synch.h> 39 #include <net/socket_codes.h> 39 40 #include <inet/dnsr.h> 40 41 #include <inet/addr.h> … … 63 64 }; 64 65 65 static inet_addr_t src_addr;66 static inet_addr_t dest_addr;66 static addr32_t src; 67 static addr32_t dest; 67 68 68 69 static bool ping_repeat = false; … … 83 84 static int ping_ev_recv(inetping_sdu_t *sdu) 84 85 { 85 char *asrc, *adest; 86 int rc; 87 88 rc = inet_addr_format(&sdu->src, &asrc); 86 inet_addr_t src_addr; 87 inet_addr_set(sdu->src, &src_addr); 88 89 inet_addr_t dest_addr; 90 inet_addr_set(sdu->dest, &dest_addr); 91 92 char *asrc; 93 int rc = inet_addr_format(&src_addr, &asrc); 89 94 if (rc != EOK) 90 95 return ENOMEM; 91 92 rc = inet_addr_format(&sdu->dest, &adest); 96 97 char *adest; 98 rc = inet_addr_format(&dest_addr, &adest); 93 99 if (rc != EOK) { 94 100 free(asrc); 95 101 return ENOMEM; 96 102 } 103 97 104 printf("Received ICMP echo reply: from %s to %s, seq. no %u, " 98 105 "payload size %zu\n", asrc, adest, sdu->seq_no, sdu->size); 99 100 if (!ping_repeat) {106 107 if (!ping_repeat) 101 108 ping_signal_done(); 102 } 103 109 104 110 free(asrc); 105 111 free(adest); … … 112 118 int rc; 113 119 114 sdu.src = src _addr;115 sdu.dest = dest _addr;120 sdu.src = src; 121 sdu.dest = dest; 116 122 sdu.seq_no = seq_no; 117 123 sdu.data = (void *) "foo"; … … 202 208 203 209 /* Parse destination address */ 210 inet_addr_t dest_addr; 204 211 rc = inet_addr_parse(argv[argi], &dest_addr); 205 212 if (rc != EOK) { … … 210 217 goto error; 211 218 } 212 219 213 220 dest_addr = hinfo->addr; 214 221 } 215 222 223 uint16_t af = inet_addr_get(&dest_addr, &dest, NULL); 224 if (af != AF_INET) { 225 printf(NAME ": Destination '%s' is not an IPv4 address.\n", 226 argv[argi]); 227 goto error; 228 } 229 216 230 /* Determine source address */ 217 rc = inetping_get_srcaddr( &dest_addr, &src_addr);231 rc = inetping_get_srcaddr(dest, &src); 218 232 if (rc != EOK) { 219 233 printf(NAME ": Failed determining source address.\n"); 220 234 goto error; 221 235 } 222 236 237 inet_addr_t src_addr; 238 inet_addr_set(src, &src_addr); 239 223 240 rc = inet_addr_format(&src_addr, &asrc); 224 241 if (rc != EOK) { … … 226 243 goto error; 227 244 } 228 245 229 246 rc = inet_addr_format(&dest_addr, &adest); 230 247 if (rc != EOK) { … … 232 249 goto error; 233 250 } 234 251 235 252 if (hinfo != NULL) { 236 253 rc = asprintf(&sdest, "%s (%s)", hinfo->cname, adest); … … 287 304 dnsr_hostinfo_destroy(hinfo); 288 305 return 0; 306 289 307 error: 290 308 free(asrc);
Note:
See TracChangeset
for help on using the changeset viewer.
