Changeset a35b458 in mainline for uspace/app/ping/ping.c
- Timestamp:
- 2018-03-02T20:10:49Z (7 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- f1380b7
- Parents:
- 3061bc1
- git-author:
- Jiří Zárevúcky <zarevucky.jiri@…> (2018-02-28 17:38:31)
- git-committer:
- Jiří Zárevúcky <zarevucky.jiri@…> (2018-03-02 20:10:49)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/app/ping/ping.c
r3061bc1 ra35b458 115 115 if (rc != EOK) 116 116 return ENOMEM; 117 117 118 118 char *adest; 119 119 rc = inet_addr_format(&dest_addr, &adest); … … 122 122 return ENOMEM; 123 123 } 124 124 125 125 printf("Received ICMP echo reply: from %s to %s, seq. no %u, " 126 126 "payload size %zu\n", asrc, adest, sdu->seq_no, sdu->size); 127 127 128 128 ping_signal_received(RECEIVED_SUCCESS); 129 129 130 130 free(asrc); 131 131 free(adest); … … 136 136 { 137 137 inetping_sdu_t sdu; 138 138 139 139 sdu.src = src_addr; 140 140 sdu.dest = dest_addr; … … 142 142 sdu.data = (void *) "foo"; 143 143 sdu.size = 3; 144 144 145 145 errno_t rc = inetping_send(&sdu); 146 146 if (rc != EOK) 147 147 printf("Failed sending echo request: %s: %s.\n", 148 148 str_error_name(rc), str_error(rc)); 149 149 150 150 return rc; 151 151 } … … 154 154 { 155 155 uint16_t seq_no = 0; 156 156 157 157 while ((repeat_count--) || (repeat_forever)) { 158 158 fibril_mutex_lock(&received_lock); 159 159 received = RECEIVED_NONE; 160 160 fibril_mutex_unlock(&received_lock); 161 161 162 162 (void) ping_send(++seq_no); 163 163 164 164 fibril_mutex_lock(&received_lock); 165 165 errno_t rc = fibril_condvar_wait_timeout(&received_cv, &received_lock, … … 167 167 received_t recv = received; 168 168 fibril_mutex_unlock(&received_lock); 169 169 170 170 if ((rc == ETIMEOUT) || (recv == RECEIVED_NONE)) 171 171 printf("Echo request timed out (seq. no %u)\n", seq_no); 172 172 173 173 if (recv == RECEIVED_INTERRUPT) 174 174 break; 175 175 176 176 if ((repeat_count > 0) || (repeat_forever)) { 177 177 fibril_mutex_lock(&received_lock); … … 180 180 recv = received; 181 181 fibril_mutex_unlock(&received_lock); 182 182 183 183 if (recv == RECEIVED_INTERRUPT) 184 184 break; 185 185 } 186 186 } 187 187 188 188 ping_signal_quit(); 189 189 return 0; … … 193 193 { 194 194 console_ctrl_t *con = console_init(stdin, stdout); 195 195 196 196 while (true) { 197 197 cons_event_t ev; 198 198 if (!console_get_event(con, &ev)) 199 199 break; 200 200 201 201 if ((ev.type == CEV_KEY) && (ev.ev.key.type == KEY_PRESS) && 202 202 ((ev.ev.key.mods & (KM_ALT | KM_SHIFT)) == 0) && … … 209 209 } 210 210 } 211 211 212 212 return 0; 213 213 } … … 221 221 const char *errmsg; 222 222 ip_ver_t ip_ver = ip_any; 223 223 224 224 errno_t rc = inetping_init(&ev_ops); 225 225 if (rc != EOK) { … … 228 228 goto error; 229 229 } 230 230 231 231 int c; 232 232 while ((c = getopt(argc, argv, short_options)) != -1) { … … 255 255 } 256 256 } 257 257 258 258 if (optind >= argc) { 259 259 printf("IP address or host name not supplied.\n"); … … 261 261 goto error; 262 262 } 263 263 264 264 host = argv[optind]; 265 265 266 266 /* Look up host */ 267 267 rc = inet_host_plookup_one(host, ip_ver, &dest_addr, NULL, &errmsg); … … 270 270 goto error; 271 271 } 272 272 273 273 /* Determine source address */ 274 274 rc = inetping_get_srcaddr(&dest_addr, &src_addr); … … 277 277 goto error; 278 278 } 279 279 280 280 rc = inet_addr_format(&src_addr, &asrc); 281 281 if (rc != EOK) { … … 283 283 goto error; 284 284 } 285 285 286 286 rc = inet_addr_format(&dest_addr, &adest); 287 287 if (rc != EOK) { … … 289 289 goto error; 290 290 } 291 291 292 292 if (asprintf(&sdest, "%s (%s)", host, adest) < 0) { 293 293 printf("Out of memory.\n"); 294 294 goto error; 295 295 } 296 296 297 297 printf("Sending ICMP echo request from %s to %s (Ctrl+Q to quit)\n", 298 298 asrc, sdest); 299 299 300 300 fid_t fid = fibril_create(transmit_fibril, NULL); 301 301 if (fid == 0) { … … 303 303 goto error; 304 304 } 305 305 306 306 fibril_add_ready(fid); 307 307 308 308 fid = fibril_create(input_fibril, NULL); 309 309 if (fid == 0) { … … 311 311 goto error; 312 312 } 313 313 314 314 fibril_add_ready(fid); 315 315 316 316 fibril_mutex_lock(&quit_lock); 317 317 while (!quit) 318 318 fibril_condvar_wait(&quit_cv, &quit_lock); 319 319 fibril_mutex_unlock(&quit_lock); 320 320 321 321 free(asrc); 322 322 free(adest); 323 323 free(sdest); 324 324 return 0; 325 325 326 326 error: 327 327 free(asrc);
Note:
See TracChangeset
for help on using the changeset viewer.