-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy patharguments.c
More file actions
87 lines (72 loc) · 1.51 KB
/
arguments.c
File metadata and controls
87 lines (72 loc) · 1.51 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>
#include <arguments.h>
args_t arguments = {
.ip_address = NULL,
.port = 7,
.protocol = PROTOCOL_ICMP,
.payload_size = 32,
.timeoutMS = 4000,
.count = 4,
.interval = 1
};
/**
* parseArguments Parse command-line options and adjust arguments
* @params <int> argc : Number of arguments
* @params <char**> argv : Lists of arguments
* @flags MayNotReturn
*/
void parseArguments(int argc, char* argv[]){
int error = 0;
for(int i = 1; i < argc; i++){
if(argv[i][0] == '-'){
switch(argv[i][1]){
case 'm':
switch(argv[i][3]){
case PROTOCOL_TCP:
arguments.protocol = PROTOCOL_TCP;
break;
case PROTOCOL_UDP:
arguments.protocol = PROTOCOL_UDP;
break;
}
break;
case 'p':
arguments.port = atol(&argv[i][3]);
break;
case 's':
arguments.payload_size = atol(&argv[i][3]);
break;
case 't':
arguments.timeoutMS = atol(&argv[i][3]);
break;
case 'c':
arguments.count = atol(&argv[i][3]);
break;
case 'i':
arguments.interval = atol(&argv[i][3]);
break;;
case 'h':
print_help();
exit(EXIT_SUCCESS);
break;
default:
printf("argument::unknown %s\n", argv[i]);
error = 1;
}
} else {
arguments.ip_address = argv[i];
}
}
if(arguments.ip_address == NULL){
printf("arguments::mandatory No IP address provided\n");
print_help();
exit(EXIT_FAILURE);
}
if(error){
print_help();
exit(EXIT_FAILURE);
}
}